From a75ed7b2ec701afa546895653903e9c1f35db2b1 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 26 十月 2023 12:09:51 +0800
Subject: [PATCH] 主数据添加 编码申请添加-ts时间戳bug
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 78 ++++++++++++++++++++++++++++++++++-----
1 files changed, 68 insertions(+), 10 deletions(-)
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 cf29925..85d050f 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
@@ -30,6 +30,8 @@
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -150,13 +152,14 @@
OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()))));
}
Map<String, Double> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
+ Double maxValue=serialDb;
if(thisUnitMaxMap.containsKey(secOid)){
- Double maxValue= thisUnitMaxMap.getOrDefault(secOid,new Double(-1));
- if(maxValue>serialDb){
- serialDb=maxValue;
+ maxValue= thisUnitMaxMap.getOrDefault(secOid,new Double(-1));
+ if(maxValue<serialDb){
+ maxValue=serialDb;
}
}
- thisUnitMaxMap.put(secOid,serialDb);
+ thisUnitMaxMap.put(secOid,maxValue);
maxSerialMap.put(serialUnitString,thisUnitMaxMap);
serialUnFileStringList.add(String.valueOf(serialDb));
});
@@ -170,7 +173,8 @@
allCodeDO.setCreateCodeBtm(cbo.getBtmname());
allCodeDO.setCreateCodeOid(cbo.getOid());
allCodeDO.setSerialUnit(serialUnitString);
- allCodeDO.setUnFillSerial(serialUnFileStringList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE)));
+ 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());
allCodeDOList.add(allCodeDO);
});
@@ -272,6 +276,31 @@
if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){
throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
}
+ QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+ wrapper.eq("CREATECODEBTM",addCodeDOs.get(0).getCreateCodeBtm());
+ wrapper.in("ID",addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+ List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+ List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
+ if(codeAllCodes.size()>takeBack.size()){
+ throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ addCodeDOs.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+ }
+ for (CodeAllCode codeAllCode : takeBack) {
+ codeAllCode.setTs(new Date());
+ codeAllCode.setLastModifyTime(new Date());
+ codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
+ Iterator<CodeAllCode> iterator = addCodeDOs.iterator();
+ while (iterator.hasNext()){
+ CodeAllCode next = iterator.next();
+ if(codeAllCode.getId().equals(next.getId())){
+ codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+ codeAllCode.setLcStatus(next.getLcStatus());
+ iterator.remove();
+ }
+ }
+ }
+ if(takeBack.size()>0){
+ codeAllCodeService.updateBatchById(takeBack);
+ }
codeAllCodeService.saveBatch(addCodeDOs);
}
mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
@@ -351,7 +380,33 @@
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))),
ArrayList::new));
if( distinctCodeAllCOdes.size() != allCodeDOList.size() ){
- throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+ throw new ServiceException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒");
+ }
+ QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>();
+ wrapper.eq("CREATECODEBTM",allCodeDOList.get(0).getCreateCodeBtm());
+ wrapper.in("ID",allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+ List<CodeAllCode> codeAllCodes = codeAllCodeService.selectByWrapper(wrapper);
+ List<CodeAllCode> takeBack = codeAllCodes.stream().filter(e -> e.getLcStatus().equals("TakeBack")).collect(Collectors.toList());
+ if(codeAllCodes.size()>takeBack.size()){
+ throw new ServiceException("鐢熸垚缂栫爜鏁版嵁ID宸叉湁鍘嗗彶璁板綍,璇风‘璁ゅ涓嬬敓鎴愮殑ID鏁版嵁锛�"+ allCodeDOList.stream().map(CodeAllCode::getId).collect(Collectors.toList()));
+ }
+
+ for (CodeAllCode codeAllCode : takeBack) {
+ codeAllCode.setTs(new Date());
+ codeAllCode.setLastModifyTime(new Date());
+ codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
+ Iterator<CodeAllCode> iterator = allCodeDOList.iterator();
+ while (iterator.hasNext()){
+ CodeAllCode next = iterator.next();
+ if(codeAllCode.getId().equals(next.getId())){
+ codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
+ codeAllCode.setLcStatus(next.getLcStatus());
+ iterator.remove();
+ }
+ }
+ }
+ if(takeBack.size()>0){
+ codeAllCodeService.updateBatchById(takeBack);
}
codeAllCodeService.saveBatch(allCodeDOList);
// iCodeWupinService.saveBatch(dataCBOList);
@@ -737,12 +792,14 @@
private String killFillChar(String s, String fillString,boolean left){
Integer index = 0;
String value = s;
+
if(left){
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
- if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
- index = i;
+ if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){
+ break;
}
+ index = i;
}
if(index >0){
value = value.substring(index);
@@ -751,9 +808,10 @@
//浠庡彸寰�宸︽壘
for (int i = s.length()-1; i >=0; i++) {
char c = s.charAt(i);
- if((new String(new char[]{c})).equalsIgnoreCase(fillString)){
- index = i;
+ if(!(new String(new char[]{c})).equalsIgnoreCase(fillString)){
+ break;
}
+ index = i;
}
if(index >0){
value = value.substring(0,index);
--
Gitblit v1.9.3