From a3b57a71be624c98bddbd1f5e3a52c9b9466986e Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 22 八月 2024 10:40:58 +0800 Subject: [PATCH] 流水值调整功能bug修改。历史数据导入多个流水时,最大流水起始值未正确更新bug修复 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 6 ++++-- Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java | 1 - Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 47 +++++++++++++++++++++++++---------------------- Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java | 3 +-- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java index 5c6d886..95ee245 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java @@ -237,7 +237,6 @@ */ private String customCodeSerialClass; - /** * 鑷畾涔夌殑娴佹按绠楁硶绫� */ @@ -291,7 +290,7 @@ private String displayFlag; /** - * 娴佹按渚濊禆椤哄簭 + * 娴佹按渚濊禆椤哄簭 TODO:鏈潵鏄敤鏉ヨ绠楁祦姘存帓搴忕殑锛屽悗闈㈠洜涓烘煇浜涘師鍥犳敼鐢╫rderNum浜� */ private Integer serialDependOrder; diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java index 2540662..3321606 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java @@ -19,7 +19,6 @@ import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; -import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddressList; diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java index f4ed16f..cf3caef 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java @@ -1069,7 +1069,8 @@ .eq(CodeBasicSec::getPkCodeRule,codeRuleOid) .in(CodeBasicSec::getOid,codeBasicSecOidList) .eq(CodeBasicSec::getSerialDependFlag,"true") - .orderByAsc(CodeBasicSec::getSerialDependOrder); + //TODO: SerialDependOrder鏈潵鏄敤鏉ユ祦姘存帓搴忕殑锛屼絾鏄幇鍦ㄧ殑閫昏緫鏄寜鐓rderuNum鎺掑簭鐨� + .orderByAsc(CodeBasicSec::getOrderNum); //.orderByAsc(CodeBasicSec::getSerialDependOrder); List<CodeBasicSec> codeBasicSecList = this.list(wrapper); //鎸夋祦姘翠緷璧栭『搴忥紝澶勭悊娴佹按渚濊禆鐮佹鐨勫�� @@ -1149,7 +1150,8 @@ .eq(CodeBasicSec::getPkCodeRule,codeRuleOid) .in(CodeBasicSec::getOid,codeBasicSecOidList) .eq(CodeBasicSec::getSerialDependFlag,"true") - .orderByAsc(CodeBasicSec::getSerialDependOrder); + .orderByAsc(CodeBasicSec::getOrderNum); //.orderByAsc(CodeBasicSec::getSerialDependOrder); + List<CodeBasicSec> codeBasicSecList = this.list(wrapper); //鎸夋祦姘翠緷璧栭『搴忥紝澶勭悊娴佹按渚濊禆鐮佹鐨勫�� List<String> serialDependValueList = new ArrayList<>(); diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java index f9c3efc..3955c10 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java @@ -51,6 +51,7 @@ import javax.servlet.http.HttpServletRequest; 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; @@ -117,7 +118,7 @@ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); String code = cbo.getId(); List<String> serialUnitList = new CopyOnWriteArrayList<>(); - String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD); + //String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD); String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#"); cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓 cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓 @@ -136,11 +137,11 @@ //鏈�鍚� thisSecValue = seclenghStr.contains("#")?code.substring(VciBaseUtil.getInt(secLengths[i-1]),code.length()):code; }else {*/ - int start = 0; - for (int j = 0; j < i; j++) { - start += VciBaseUtil.getInt(secLengths[j]); - } - thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i])); + int start = 0; + for (int j = 0; j < i; j++) { + start += VciBaseUtil.getInt(secLengths[j]); + } + thisSecValue = code.substring(start,start+VciBaseUtil.getInt(secLengths[i])); // } if(VciBaseUtil.getBoolean(secVO.getSerialDependFlag())){ serialUnitList.add(thisSecValue); @@ -154,7 +155,7 @@ List<String> serialUnFileStringList = new ArrayList<>(); AtomicReference<String> newSerialUnitString = new AtomicReference<>(""); if(!CollectionUtils.isEmpty(serialValueMap)){ - AtomicInteger index= new AtomicInteger(); + AtomicInteger index = new AtomicInteger(); serialValueMap.forEach((secOid,secValue)->{ //瑕佺湅鏄笉鏄ˉ浣嶇殑 CodeBasicSecVO secVO = secVOMap.get(secOid); @@ -175,7 +176,7 @@ if(OsCodeFillTypeEnum.NONE.getValue().equalsIgnoreCase(secVO.getCodeFillType())){ //涓嶈ˉ鐮� //鎶婃墍鏈変笉鏄暟瀛楃殑鍘绘帀锛屽洜涓哄彲鑳戒細鏄�佹暟鎹紝鏂拌鍒� - // serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); + //serialDb = VciBaseUtil.getDouble(killUnNumberChar(subSecValue)); //serialDb = killUnNumberChar(subSecValue); serialDb=subSecValue; }else { @@ -183,21 +184,24 @@ serialDb = killFillChar(subSecValue,secVO.getCodeFillSeparator(), OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType())); } - Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType()); - HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); - Double maxValue=newSerialDb; - if(thisUnitMaxMap.containsKey(secOid)){ - String newMaxValue= thisUnitMaxMap.getOrDefault(secOid,""); - maxValue=StringUtils.isBlank(newMaxValue)?-1:VciBaseUtil.getDouble(newMaxValue); - if(maxValue<newSerialDb){ - maxValue=newSerialDb; + Double newSerialDb = CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType()); + //TODO: 20240822闇�瑕佽繖鍧椾唬鐮佹槸鍚屾鎬х殑锛宮axSerialMap杩欏効浼氬洜涓虹嚎绋嬪彈褰卞搷锛屼慨鏀瑰悗娴嬭瘯澶氭鎬绘暟涓�5000鏉′竴娆″鍏ヨ�楄垂鏃堕棿涓�3鍒�30绉掑乏鍙� + synchronized(this) { + HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>()); + Double maxValue=newSerialDb; + if(thisUnitMaxMap.containsKey(secOid)){ + String newMaxValue = thisUnitMaxMap.getOrDefault(secOid,""); + maxValue = StringUtils.isBlank(newMaxValue)?-1:VciBaseUtil.getDouble(newMaxValue); + if(maxValue < newSerialDb){ + maxValue = newSerialDb; + } } + 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)); } - 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)); }); } CodeAllCode allCodeDO = new CodeAllCode(); @@ -273,7 +277,6 @@ allCodeWrapper.in("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDOs.stream().map(s->s.getId()).collect(Collectors.toList()).toArray(new String[0])) + ")"); List<CodeAllCode> existCodes = codeAllCodeService.selectByWrapper(allCodeWrapper); - if(!CollectionUtils.isEmpty(existCodes)){ existCodes.stream().forEach(existCode->{ -- Gitblit v1.9.3