Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -320,14 +320,16 @@ }, getFormData(form) { this.form = form; //屿§ç 段èµå¼ if (this.attrList) { this.attrList.forEach(item => { if (this.form.hasOwnProperty(item.referAttributeId)) { this.codeApplyForm[item.oid] = this.form[item.referAttributeId] ; this.codeApplyForm[item.oid] = this.form[item.referAttributeId]; } }) } }, //屿§ç 段èµå¼ attrListForm(attrListForm){ this.attrList=attrListForm; }, Source/UBCS-WEB/src/components/Theme/ThemeClassifyTreeform.vue
@@ -399,7 +399,6 @@ activeColor: "#13ce66", inactiveColor: "#ff4949", labelWidth:160, value:1, dicData: [{ label: 'å¦', value: 0 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -867,7 +867,7 @@ methods: { // switch switchChange(){ this.TreeAddform.isParticipateCheck = this.TreeAddform.codeKeyAttrValue ? 1 : 0; this.TreeAddform.isParticipateCheck = this.TreeAddform.codeKeyAttrValue === true ? 1 : 0; // console.log(this.TreeAddform.isParticipateCheck) }, //åå¨çä¸å¡ç±»åå ³é @@ -1154,10 +1154,14 @@ }, //æ èç¹åæ¶äºä»¶ TreeEscHandler() { this.TreeAddform = {}; this.TreeAddFormVisible = false; for (let key in this.TreeAddform) { if (key !== 'codeKeyAttrValue' && key !== 'isParticipateCheck') { this.TreeAddform[key] = ""; } } this.TreeAddform.codeKeyAttrValue = true; this.TreeAddform.isParticipateCheck = 1; this.TreeAddFormVisible = false; // å ³éå¼¹çªæ¸ ç©ºæ ¡éª this.$refs.myForm.clearValidate(); }, @@ -1371,7 +1375,7 @@ this.crudOid = '' } this.TreeList = res3.data.data; if(!this.TreeList.isParticipateCheck){ if(this.TreeList.isParticipateCheck === null || this.TreeList.isParticipateCheck === undefined ||this.TreeList.isParticipateCheck === ""){ this.$set(this.TreeList,"isParticipateCheck",1) return } Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
@@ -196,7 +196,10 @@ * èªå®ä¹çæµæ°´ç®æ³ç±» */ private String customCodeSerialClassText; /*** * èªå®ä¹æµæ°´ç±»å */ private String customCodeSerialType; /** * æ¯å¦èªå¨å¹é åç±»å¼ */ Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeCustomSerialDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.vci.ubcs.code.dto; import com.vci.ubcs.code.dto.datapush.BaseModelDTO; import com.vci.ubcs.code.entity.CodeBasicSec; import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO; import com.vci.ubcs.starter.revision.model.BaseModel; import lombok.Data; import java.util.List; @Data public class CodeCustomSerialDTO extends BaseModelDTO { //ç¼ç è§åç æ®µ private List<CodeBasicSecVO> codeBasicSecVOList; /*** * ç¼ç è§åid */ private String codeRuleOid; /** * å½åæ°æ®æµæ°´ */ private String currentFlowValue; /*** * æµå¤±ä¾èµ */ private String serialUnitString; /*** * å½åæµæ°´ç 段 */ private CodeBasicSecVO serialCodeCodeBasicSec; private BaseModel baseModel; } Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java
@@ -243,6 +243,10 @@ */ private String customCodeSerialClassText; /*** * èªå®ä¹æµæ°´ç±»å */ private String customCodeSerialType; /** * æ¯å¦èªå¨å¹é åç±»å¼ */ Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
@@ -204,6 +204,11 @@ */ private String customCodeSerialClassText; /*** * èªå®ä¹æµæ°´ç±»å */ private String customCodeSerialType; /** * æ¯å¦èªå¨å¹é åç±»å¼ */ Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
@@ -8,7 +8,10 @@ * @date 2022-2-17 */ public class CodeSerialAlgorithmVO extends BaseModel { /*** * */ private String serialType; /** * ç®æ³ç¼å· */ @@ -61,8 +64,15 @@ this.description = description; } public String getSerialType() { return serialType; } @Override public void setSerialType(String serialType) { this.serialType = serialType; } @Override public String toString() { return "CodeSerialAlgorithmVO{" + "id='" + id + '\'' + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java
@@ -1,34 +1,46 @@ package com.vci.ubcs.code.algorithm; import com.alibaba.nacos.common.utils.StringUtils; import com.vci.ubcs.code.annotation.MdmSerialAlgorithm; import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod; import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.code.dto.CodeCustomSerialDTO; import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO; import com.vci.ubcs.starter.exception.VciBaseException; import com.vci.ubcs.starter.web.util.VciBaseUtil; import java.util.List; /**** * èªå®ä¹ç½é©¬æµæ°´ç®æ³èªå®ä¹ç±» */ @MdmSerialAlgorithm(text = "èªå®ä¹ç½é©¬æµæ°´",description = "èªå®ä¹ç½é©¬æµæ°´ç®æ³") @MdmSerialAlgorithm(text = "èªå®ä¹ç½é©¬æµæ°´",serialType="custom_serial_roman",description = "èªå®ä¹ç½é©¬æµæ°´ç®æ³") public class CustomRomanSerialAlgorithmExample { /** * çæç½é©¬æµæ°´å·çæ¹æ³ * @return æµæ°´å·çä¿¡æ¯ */ @MdmSerialAlgorithmMethod public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){ public String serialGenerate(CodeCustomSerialDTO codeCustomSerialDTO){ // codeCustomSerialDTO.getSerialUnitString(); CodeBasicSecVO secVO= codeCustomSerialDTO.getSerialCodeCodeBasicSec(); String currentFlowValue=codeCustomSerialDTO.getCurrentFlowValue(); Double newThisSerialValue = 0d; if(StringUtils.isBlank(currentFlowValue)){ //第ä¸ä¸ªç¼ç newThisSerialValue = VciBaseUtil.getDouble(secVO.getSerialStart()); }else { //æµæ°´å·è¯å®æ¯æ°å //å°ç½é©¬æµæ°´è½¬ä¸ºæ°åæµæ°´ int arabicValue=VciBaseUtil.convertRomanToArabic(currentFlowValue); newThisSerialValue = (double)(arabicValue + secVO.getSerialStep()) ; } //è¦çæ¯å¦è¶ è¿æå¤§çæµæ°´å¼ if (newThisSerialValue >= secVO.getCodeFillLimit()) { throw new VciBaseException("æµæ°´å·å·²ç»è¶ è¿å 许çæå¤§æµæ°´å¼{0}", new String[]{secVO.getCodeFillLimit().toString()}); } //å°æ°åæµæ°´è½¬ä¸ºç½é©¬æµæ°´ String romanValue=VciBaseUtil.convertArabicToRoman(5); //å°ç½é©¬æµæ°´è½¬ä¸ºæ°åæµæ°´ int arabicValue=VciBaseUtil.convertRomanToArabic(romanValue); return ""; String romanValue=VciBaseUtil.convertArabicToRoman(newThisSerialValue.intValue()); return romanValue; } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
@@ -2,6 +2,7 @@ import com.vci.ubcs.code.annotation.MdmSerialAlgorithm; import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod; import com.vci.ubcs.code.dto.CodeCustomSerialDTO; import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.starter.revision.model.BaseModel; @@ -11,7 +12,7 @@ /** * æµæ°´ç®æ³çç¤ºä¾ */ @MdmSerialAlgorithm(text = "æµæ°´ç®æ³ç示ä¾",description = "请ä¸è¦ä½¿ç¨è¿ä¸ªç±»ï¼è¿ä¸ªç±»åªæ¯ç¤ºä¾ï¼ç¨äºæ¥çå¦ä½ç¼åæµæ°´ç®æ³") @MdmSerialAlgorithm(text = "æµæ°´ç®æ³ç示ä¾",serialType="",description = "请ä¸è¦ä½¿ç¨è¿ä¸ªç±»ï¼è¿ä¸ªç±»åªæ¯ç¤ºä¾ï¼ç¨äºæ¥çå¦ä½ç¼åæµæ°´ç®æ³") public class CustomSerialAlgorithmExample { /** @@ -19,7 +20,7 @@ * @return æµæ°´å·çä¿¡æ¯ */ @MdmSerialAlgorithmMethod public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){ public String serialGenerate(CodeCustomSerialDTO codeCustomSerialDTO){ return ""; } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,162 @@ package com.vci.ubcs.code.algorithm; import com.vci.ubcs.starter.annotation.VciEnum; import com.vci.ubcs.starter.web.enumpck.BaseEnum; import com.vci.ubcs.starter.web.util.VciBaseUtil; /*** * èªå®ä¹æµæ°´æä¸¾ */ @VciEnum(name ="customSerialEnum",text = "èªå®ä¹æµæ°´ç±»å",description = "") public enum CustomSerialEnum implements BaseEnum { /** * ç¼è¾ä¸ */ ROMAN("custom_serial_roman","ç½é©¬æµæ°´"); /** * æä¸¾çå¼ */ private String value; /** * æä¸¾æ¾ç¤ºææ¬ */ private String text; /** * æé 彿° * * @param value å¼ * @param text æ¾ç¤ºææ¬ */ private CustomSerialEnum(String value, String text) { this.value = value; this.text = text; } /** * è·åæä¸¾å¼ * * @return æä¸¾å¼ */ @Override public String getValue() { return value; } /** * 设置æä¸¾å¼ * * @param value æä¸¾å¼ */ public void setValue(String value) { this.value = value; } /** * è·åæä¸¾æ¾ç¤ºææ¬ * * @return æ¾ç¤ºææ¬ */ @Override public String getText() { return text; } /** * 设置æ¾ç¤ºææ¬ * * @param text æ¾ç¤ºææ¬ */ public void setText(String text) { this.text = text; } /** * æ ¹æ®æä¸¾ç±»å夿åºè¯¥è¿åä»ä¹æ ·ç±»åçæµæ°´ * ææ¶å äºç½é©¬ç±»åï¼å¦æåç»æå ¶ä»æµæ°´ç±»ååéè¦å¨æ¤å¤ç * @return æä¸¾å¼ */ public static Double getDoubleCustomSerialValue(String value,String customCodeSerialType) { Double serialValue=null; for (CustomSerialEnum wenum : CustomSerialEnum.values()) { if (wenum.getValue().equalsIgnoreCase(customCodeSerialType)) {//å¦æä¸ºç½é©¬ int newValue = VciBaseUtil.convertRomanToArabic(value); serialValue = new Double(newValue); break; } else { serialValue=Double.parseDouble(value); break; } } return serialValue; } /** * æ ¹æ®æä¸¾ç±»å夿åºè¯¥è¿åä»ä¹æ ·ç±»åçæµæ°´ * ææ¶å äºç½é©¬ç±»åï¼å¦æåç»æå ¶ä»æµæ°´ç±»ååéè¦å¨æ¤å¤ç * @return æä¸¾å¼ */ public static String getStringCustomSerialValue(Double value,String customCodeSerialType) { String serialValue=String.valueOf(value); for (CustomSerialEnum wenum : CustomSerialEnum.values()) { if (wenum.getValue().equalsIgnoreCase(customCodeSerialType)) {//å¦æä¸ºç½é©¬ String newValue=VciBaseUtil.convertArabicToRoman(value.intValue()); serialValue=newValue; break; }else{ break; } } return serialValue; } /** * æ ¹æ®åç§°è·å对åºçæä¸¾å¼ * * @param text åç§° * @return æä¸¾å¼ */ public static String getValueByText(String text) { for (CustomSerialEnum wenum : CustomSerialEnum.values()) { if (wenum.getText().equalsIgnoreCase(text)) { return wenum.getValue(); } } return ""; } /** * æ ¹æ®æä¸¾å¼è·ååç§° * * @param value æä¸¾å¼ * @return åç§° */ public static String getTextByValue(String value) { for (CustomSerialEnum wenum : CustomSerialEnum.values()) { if (wenum.getValue().equalsIgnoreCase(value)) { return wenum.getText(); } } return ""; } /** * æ ¹æ®æä¸¾å¼è·åæä¸¾å¯¹è±¡ * * @param value æä¸¾å¼ * @return æä¸¾å¯¹è±¡ï¼ä¸å卿¶åè¿ånull */ public static CustomSerialEnum forValue(String value) { for (CustomSerialEnum wenum : CustomSerialEnum.values()) { if (wenum.getValue().equalsIgnoreCase(value)) { return wenum; } } return null; } } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
@@ -34,4 +34,6 @@ * @return æè¿° */ String description() default ""; String serialType() default ""; } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
@@ -49,6 +49,7 @@ algorithmVO.setName(serialAlgorithm.text()); algorithmVO.setDescription(serialAlgorithm.description()); algorithmVO.setId(serialAlgorithm.value()); algorithmVO.setSerialType(serialAlgorithm.serialType()); if(StringUtils.isBlank(algorithmVO.getId())){ algorithmVO.setId(beanName); } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -983,10 +983,10 @@ // cbo.setLcStatus("Editing"); //// cbo.setLcStatus(lifeCycleVO.getStartStatus()); // } else { cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); // } } else { cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); } } @@ -3603,12 +3603,15 @@ for (int i = 0; i < threadSafeMaps.size(); i += MAX_IMPORT_NUM) { final int startIndex = i; final int endIndex = Math.min(i + MAX_IMPORT_NUM, threadSafeMaps.size()); executor.execute(() -> { List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex); // è°ç¨æå ¥æ°æ®åºçæ¹æ³ commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList); }); try { executor.execute(() -> { List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex); // è°ç¨æå ¥æ°æ®åºçæ¹æ³ commonsMapper.insertByBaseModel(tableName, threadSafeMaps.get(0), subList); }); }catch (Throwable e){ throw new ServiceException(e.getMessage()); } } // å ³éçº¿ç¨æ± Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -97,7 +97,7 @@ @Value("${batchadd.exportattr.type:åºæ¬ä¿¡æ¯}") public String BATCHADD_EXCEPORT_ATTR_TYPE; @Value("${batchadd.redis.time:6000000}") public int BATCHADD_REDIS_TIME; @Value("${batchadd.import_data_limit:5001}") @@ -2777,10 +2777,10 @@ // if (lifeCycleVO != null) { // cbo.setLcStatus(lifeCycleVO.getStartStatus()); // } else { cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); // } } else { cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); } } @@ -3150,7 +3150,7 @@ Integer userSecret = VciBaseUtil.getCurrentUserSecret(); cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret)); } cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); }else{ //æ¤æ¶è¿æ²¡æè½¬æ¢è·¯å¾ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath)); @@ -3208,7 +3208,7 @@ Integer userSecret = VciBaseUtil.getCurrentUserSecret(); cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret)); } cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); }else{ //æ¤æ¶è¿æ²¡æè½¬æ¢è·¯å¾ //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath)); @@ -4086,7 +4086,6 @@ } } } private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); oldDataMap.stream().forEach(dataMap->{ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -1,5 +1,7 @@ package com.vci.ubcs.code.service.impl; import com.vci.ubcs.code.algorithm.CustomSerialEnum; import com.vci.ubcs.code.dto.CodeCustomSerialDTO; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; @@ -36,15 +38,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -105,7 +108,7 @@ //ä¸»è¦æ¯ä¸ºäºå½å ¥æå¤§æµæ°´å·åallcode //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); List<CodeAllCode> allCodeDOList = new CopyOnWriteArrayList<>(); Map<String/**æµæ°´ä¾æ®**/, Map<String/**ç æ®µç主é®**/,Double/**æå¤§æµæ°´å·**/>> maxSerialMap = new HashMap<>(); Map<String/**æµæ°´ä¾æ®**/, ConcurrentHashMap<String/**ç æ®µç主é®**/,String/**æå¤§æµæ°´å·**/>> maxSerialMap = new ConcurrentHashMap<>(); // TODO å¤çº¿ç¨æµå¼åçé®é¢å·²ä¿®æ¹ dataCBOList.parallelStream().forEach(cbo->{ log.info("code:----->"+cbo.getId()); @@ -120,6 +123,7 @@ List<CodeBasicSecVO> secVOList = finalRuleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); Map<String/**ç æ®µç主é®**/,String/**ç æ®µçå¼**/> serialValueMap = new HashMap<>(); Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); Map<String,Integer> serialSecOidIndexMap=new HashMap<>(); for (int i = 0; i < secLengths.length; i++) { CodeBasicSecVO secVO = secVOList.get(i); String thisSecValue = ""; @@ -137,38 +141,57 @@ // } if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){ serialUnitList.add(thisSecValue); serialSecOidIndexMap.put(secVO.getOid(),i); } if(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue().equalsIgnoreCase(secVO.getSecType())){ serialValueMap.put(secVO.getOid(),thisSecValue); } } String serialUnitString = serialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : serialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE)); List<String> serialUnFileStringList = new ArrayList<>(); AtomicReference<String> newSerialUnitString = new AtomicReference<>(""); if(!CollectionUtils.isEmpty(serialValueMap)){ AtomicInteger index= new AtomicInteger(); serialValueMap.forEach((secOid,secValue)->{ //è¦çæ¯ä¸æ¯è¡¥ä½ç CodeBasicSecVO secVO = secVOMap.get(secOid); Double serialDb = null; List<String >newSerialUnitList=new ArrayList<>(); newSerialUnitList.addAll(serialUnitList); if(index.get() ==0){ if(serialSecOidIndexMap.containsKey(secOid)) { int num = serialSecOidIndexMap.get(secOid); newSerialUnitList.set(num, ""); } } String serialUnitString = newSerialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : newSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE)); newSerialUnitString.set(serialUnitString); index.getAndIncrement(); String serialDb = ""; // æªåæååç¼ä¹åçç æ®µ String subSecValue = killPriffixSuffix(secValue, secVO.getPrefixCode(), secVO.getSuffixCode()); if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){ //ä¸è¡¥ç //æææä¸æ¯æ°åç廿ï¼å 为å¯è½ä¼æ¯èæ°æ®ï¼æ°è§å serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); // serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); //serialDb = killUnNumberChar(subSecValue); serialDb=subSecValue; }else { //å·¦å³å¡«å çï¼æä»¬éè¦ serialDb = VciBaseUtil.getDouble(killUnNumberChar(killFillChar(subSecValue,secVO.getCodeFillSeparator(), OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())))); serialDb = killFillChar(subSecValue,secVO.getCodeFillSeparator(), OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())); } Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); Double maxValue=serialDb; Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(secValue,secVO.getCustomCodeSerialType()); ConcurrentHashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new ConcurrentHashMap<>()); Double maxValue=newSerialDb; if(thisUnitMaxMap.containsKey(secOid)){ maxValue= thisUnitMaxMap.getOrDefault(secOid,new Double(-1)); if(maxValue<serialDb){ maxValue=serialDb; String newMaxValue= thisUnitMaxMap.getOrDefault(secOid,""); maxValue=StringUtils.isBlank(newMaxValue)?-1:VciBaseUtil.getDouble(newMaxValue); if(maxValue<newSerialDb){ maxValue=newSerialDb; } } thisUnitMaxMap.put(secOid,maxValue); String newMaxValue=CustomSerialEnum.getStringCustomSerialValue(maxValue,secVO.getCustomCodeSerialType()); serialDb=CustomSerialEnum.getStringCustomSerialValue(newSerialDb,secVO.getCustomCodeSerialType()); thisUnitMaxMap.put(secOid,newMaxValue); maxSerialMap.put(serialUnitString,thisUnitMaxMap); serialUnFileStringList.add(String.valueOf(serialDb)); }); @@ -181,7 +204,7 @@ allCodeDO.setCodeClassifyTemplateOid(templateVO.getOid()); allCodeDO.setCreateCodeBtm(cbo.getBtmname()); allCodeDO.setCreateCodeOid(cbo.getOid()); allCodeDO.setSerialUnit(serialUnitString); allCodeDO.setSerialUnit(newSerialUnitString.get()); String unFillSerial =serialUnFileStringList.size()==1?serialUnFileStringList.get(0)+ SERIAL_VALUE_SPACE:serialUnFileStringList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE)); allCodeDO.setUnFillSerial(unFillSerial); allCodeDO.setLcStatus(cbo.getLcStatus()); @@ -204,7 +227,7 @@ if (!CollectionUtils.isEmpty(serialValueDOS)) { CodeSerialValue serialValueDO = serialValueDOS.get(0); log.info("oldmaxSerial--->"+serialValueDO.getMaxSerial()+"---- newmaxSerial---->"+maxSerial); if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<maxSerial){ if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<VciBaseUtil.getDouble(maxSerial)){ serialValueDO.setMaxSerial(String.valueOf(maxSerial)); DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO); editSerialValueList.add(serialValueDO); @@ -318,7 +341,16 @@ codeAllCodeService.saveBatch(addCodeDOs); } // try { mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); // æäº¤äºå¡ //transactionTemplate.getTransactionManager().commit(status); // }catch (Exception e){ // // åºç°å¼å¸¸æ¶åæ»äºå¡ // transactionTemplate.getTransactionManager().rollback(status); // } } return codeList; }else { @@ -382,10 +414,12 @@ allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");} ); Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus())); allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> { s.setLcStatus(statusMap.get(s.getOid())); }); //éè¿IDæ¥è¿è¡å»é List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors @@ -414,7 +448,7 @@ if(codeAllCode.getId().equals(next.getId())){ codeAllCode.setCreateCodeOid(next.getCreateCodeOid()); codeAllCode.setLcStatus(next.getLcStatus()); iterator.remove(); //iterator.remove(); } } } @@ -499,8 +533,21 @@ Map<String/**ç æ®µç主é®**/,Map<String/**æµæ°´ä¾æ®**/,CodeSerialValue>> maxSerialValueMap,List<String> thisSecValueList, Map<String/**ç æ®µç主é®**/,Map<String/**æµæ°´ä¾æ®**/, Double>> lastMaxSerialValueMap,boolean firstData){ if (!CollectionUtils.isEmpty(serialSecVOList)) { Map<String,String> secIdserialValueMap=new LinkedHashMap<>(); for (int j = 0; j < serialSecVOList.size(); j++) { CodeBasicSecVO secVO = serialSecVOList.get(j); String secVOValue=""; AtomicReference<String> newSerialUnitString= new AtomicReference<>(serialUnitString); if(j==0){ secVOValue=""; newSerialUnitString.set(serialUnitString.replace("${" + secVO.getOid() + "}", secVOValue)); }else{ CodeBasicSecVO upSecVO =serialSecVOList.get(j-1); secIdserialValueMap.forEach((key,vaule)->{ newSerialUnitString.set(serialUnitString.replace("${"+key+"}", vaule)); }); } if (attrSevIsSerialDepend || firstData) { //妿屿§ç æ®µä¹æ¯ä¾èµï¼åæ¯æ¬¡é½è¦æ¥è¯¢ï¼å¦æå±æ§ç æ®µä¸æ¯ä¾èµï¼ååªæ¥è¯¢ä¸æ¬¡ // Map<String, String> conditionMap = new HashMap<>(); @@ -509,8 +556,9 @@ // //è¿ä¸ªå段æ¯ä¸ºäºè§£å³å¤ä¸ªæµæ°´çé®é¢ // conditionMap.put("codeSecOid", secVO.getOid()); QueryWrapper<CodeSerialValue> codeSerialWrapper = new QueryWrapper<>(); codeSerialWrapper.eq("codeRuleOid", ruleVO.getOid()); codeSerialWrapper.eq("serialUnit", serialUnitString); codeSerialWrapper.eq("serialUnit", newSerialUnitString.get()); codeSerialWrapper.eq("codeSecOid", secVO.getOid()); List<CodeSerialValue> serialValueDOS = serialValueMapper.selectList(codeSerialWrapper); if (!CollectionUtils.isEmpty(serialValueDOS)) { @@ -520,25 +568,41 @@ maxSerialValueMap.put(secVO.getOid(), unitSerialMap); } } Double startValue = null; if(maxSerialValueMap.containsKey(secVO.getOid()) && maxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){ startValue = VciBaseUtil.getDouble(maxSerialValueMap.get(secVO.getOid()).get(serialUnitString).getMaxSerial()); String serialString=""; String thisSerialValue = ""; String startValue = null; if (maxSerialValueMap.containsKey(secVO.getOid()) && maxSerialValueMap.get(secVO.getOid()).containsKey(newSerialUnitString.get())) { startValue = maxSerialValueMap.get(secVO.getOid()).get(newSerialUnitString.get()).getMaxSerial(); } if(lastMaxSerialValueMap.containsKey(secVO.getOid()) && lastMaxSerialValueMap.get(secVO.getOid()).containsKey(serialUnitString)){ if (lastMaxSerialValueMap.containsKey(secVO.getOid()) && lastMaxSerialValueMap.get(secVO.getOid()).containsKey(newSerialUnitString.get())) { //说æå¤ä¸ªç³è¯·ï¼ä¹åå·²ç»å äºæµæ°´å·äº startValue = lastMaxSerialValueMap.get(secVO.getOid()).get(serialUnitString); startValue = lastMaxSerialValueMap.get(secVO.getOid()).get(newSerialUnitString.get()); } Double thisSerialValue = 0d; if (startValue == null) { //第ä¸ä¸ªç¼ç thisSerialValue = VciBaseUtil.getDouble(secVO.getSerialStart()); } else { //æµæ°´å·è¯å®æ¯æ°å thisSerialValue = startValue + (j + 1) * secVO.getSerialStep(); } //è¦çæ¯å¦è¶ è¿æå¤§çæµæ°´å¼ if (thisSerialValue >= secVO.getCodeFillLimit()) { throw new VciBaseException("æµæ°´å·å·²ç»è¶ è¿å 许çæå¤§æµæ°´å¼{0}",new String[]{secVO.getCodeFillLimit().toString()}); if(StringUtils.isNotBlank(secVO.getCustomCodeSerialClass())){//èªå®ä¹æµæ°´å¤ç String currentFlowValue=startValue; CodeCustomSerialDTO codeCustomSerialDTO=new CodeCustomSerialDTO(); codeCustomSerialDTO.setSerialUnitString(newSerialUnitString.get()); codeCustomSerialDTO.setSerialCodeCodeBasicSec(secVO); codeCustomSerialDTO.setCurrentFlowValue(startValue); codeCustomSerialDTO.setCodeBasicSecVOList(ruleVO.getSecVOList()); codeCustomSerialDTO.setCodeRuleOid(ruleVO.getOid()); codeCustomSerialDTO.setBaseModel(cbo); thisSerialValue=customCodeSerial(secVO.getCustomCodeSerialClass(),codeCustomSerialDTO); log.info(secVO.getCustomCodeSerialClassText()+"---->"+thisSerialValue); }else { Double newThisSerialValue = 0d; if (startValue == null) { //第ä¸ä¸ªç¼ç newThisSerialValue = VciBaseUtil.getDouble(secVO.getSerialStart()); } else { //æµæ°´å·è¯å®æ¯æ°å newThisSerialValue = Double.parseDouble(startValue) + (j + 1) * secVO.getSerialStep(); } //è¦çæ¯å¦è¶ è¿æå¤§çæµæ°´å¼ if (newThisSerialValue >= secVO.getCodeFillLimit()) { throw new VciBaseException("æµæ°´å·å·²ç»è¶ è¿å 许çæå¤§æµæ°´å¼{0}", new String[]{secVO.getCodeFillLimit().toString()}); } thisSerialValue=String.valueOf(newThisSerialValue.intValue()); } //è¦çè¡¥ä½çå 容 Integer fillLength = VciBaseUtil.getInt(secVO.getCodeFillLength()); @@ -548,6 +612,7 @@ } String serialString = String.valueOf(thisSerialValue.longValue()); serialString = fillString(fillLength, OsCodeFillTypeEnum.forValue(secVO.getCodeFillType()), serialString, secVO.getCodeFillSeparator()); for (int z = 0; z < thisSecValueList.size(); z++) { String secValue = thisSecValueList.get(z); if (secValue.equalsIgnoreCase("${" + secVO.getOid() + "}")) { @@ -555,11 +620,36 @@ thisSecValueList.set(z, joinPreffixAndSuffix(secVO, serialString)); } } Map<String, Double> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()); unitSerialMap.put(serialUnitString, thisSerialValue); secIdserialValueMap.put(secVO.getOid(),thisSerialValue);//è®°å½æµæ°´ç 段å½åçå¼ Map<String, String> unitSerialMap = lastMaxSerialValueMap.getOrDefault(secVO.getOid(), new HashMap<>()); unitSerialMap.put(newSerialUnitString.get(), String.valueOf(thisSerialValue)); lastMaxSerialValueMap.put(secVO.getOid(),unitSerialMap); } } } private String customCodeSerial(String className, CodeCustomSerialDTO codeCustomSerialDTO){ String result = ""; try { Class classInstance=Class.forName(className); Object obj =classInstance.newInstance(); Method method= classInstance.getMethod("serialGenerate",CodeCustomSerialDTO.class); method.setAccessible(Boolean.TRUE); //method.invoke(obj); Object o= method.invoke(obj,codeCustomSerialDTO); result= Func.isEmpty(o) ?"":o.toString(); } catch (ClassNotFoundException e) { throw new VciBaseException("æªæ¾å°èªå®ä¹æµæ°´ç®æ³ç±»æä»¶"); } catch (InvocationTargetException e) { throw new VciBaseException("æ§è¡èªå®ä¹æµæ°´ç®æ³å¤çæ¹æ³åºç°å¼å¸¸"); } catch (NoSuchMethodException e) { throw new VciBaseException("æªæ¾å°èªå®ä¹æµæ°´ç®æ³å¤çæ¹æ³"); } catch (IllegalAccessException e) { throw new VciBaseException("æ§è¡èªå®ä¹æµæ°´ç®æ³å¤çæ¹æ³åºç°å¼å¸¸"); } catch (InstantiationException e) { e.printStackTrace(); } return result; } /** @@ -759,7 +849,7 @@ * @param maxSerialValueMap 便®åå¨çæå¤§æµæ°´çå 容 */ private void saveSerialValue(CodeRuleVO ruleVO, Map<String/**ç æ®µç主é®**/,Map<String, Double>> lastMaxSerialValueMap, Map<String/**ç æ®µç主é®**/,Map<String, String>> lastMaxSerialValueMap, Map<String/**ç æ®µç主é®**/,Map<String, CodeSerialValue>> maxSerialValueMap){ List<CodeSerialValue> editSerialValueDOList = new ArrayList<>(); List<CodeSerialValue> addSerialValueDOList = new ArrayList<>(); Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -56,6 +56,7 @@ <result property="codeFillFlag" column="CODEFILLFLAG" jdbcType="VARCHAR"/> <result property="customCodeSerialClass" column="CUSTOMCODESERIALCLASS" jdbcType="VARCHAR"/> <result property="customCodeSerialClassText" column="CUSTOMCODESERIALCLASSTEXT" jdbcType="VARCHAR"/> <result property="customCodeSerialType" column="CUSTOMCODESERIALTYPE" jdbcType="VARCHAR"/> <result property="matchClassifyValueFlag" column="MATCHCLASSIFYVALUEFLAG" jdbcType="VARCHAR"/> <result property="parentClassifySecOid" column="PARENTCLASSIFYSECOID" jdbcType="VARCHAR"/> <result property="parentClassifySecText" column="b__name" jdbcType="VARCHAR"/>