流水值调整功能bug修改。历史数据导入多个流水时,最大流水起始值未正确更新bug修复
已修改4个文件
17 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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:本来是用来计算流水排序的,后面因为某些原因改用orderNum了
     */
    private Integer serialDependOrder;
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;
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本来是用来流水排序的,但是现在的逻辑是按照orderuNum排序的
            .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<>();
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除去
@@ -184,6 +185,8 @@
                                OsCodeFillTypeEnum.LEFT.getValue().equalsIgnoreCase(secVO.getCodeFillType()));
                        }
                        Double newSerialDb= CustomSerialEnum.getDoubleCustomSerialValue(serialDb,secVO.getCustomCodeSerialType());
                        //TODO: 20240822需要这块代码是同步性的,maxSerialMap这儿会因为线程受影响,修改后测试多次总数为5000条一次导入耗费时间为3分30秒左右
                        synchronized(this) {
                        HashMap<String, String> thisUnitMaxMap = maxSerialMap.getOrDefault(serialUnitString, new HashMap<>());
                        Double maxValue=newSerialDb;
                        if(thisUnitMaxMap.containsKey(secOid)){
@@ -198,6 +201,7 @@
                        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->{