ludc
2023-12-05 ee68ec1a404b8df679a8cb76ab6eab59979c0b9d
赋默认值方法修改
已修改5个文件
194 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -4,6 +4,7 @@
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import java.text.ParseException;
@@ -65,6 +66,52 @@
    }
    /**
     * 当在多线程流中调用时,获取不到请求头信息,
     * 所以得在多线程流外面获取到request
     * @param object 继承了BaseModel的实体对象
     * @param <T>   返回值的类型
     * @param btmName  业务类型
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T addDefaultAttrAssimt(T object, String btmName, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            baseModel.setOid(VciBaseUtil.getPk());
            baseModel.setCreateTime(new Date());
            baseModel.setNameOid(VciBaseUtil.getPk());
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            baseModel.setBtmname(btmName);
            String account = Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount();
            baseModel.setCreator(account);
            baseModel.setFirstR("1");
            baseModel.setFirstV("1");
            baseModel.setLastR("1");
            baseModel.setLastV("1");
            baseModel.setRevisionSeq(1);
            // TODO:目前只有编码规则中有用到,后期需要去掉这段代码的话,就把他加在编码规则新增中去
            if(Func.isBlank(baseModel.getOwner())){
                // 设置所有者
                baseModel.setOwner(Func.isNotEmpty(user) ? user.getUserId().toString():AuthUtil.getUserId().toString());
            }
            baseModel.setVersionSeq(1);
            baseModel.setVersionRule("0");
            baseModel.setVersionValue("1");
            baseModel.setRevisionOid(VciBaseUtil.getPk());
            baseModel.setLastModifier(account);
            baseModel.setRevisionValue("1");
            baseModel.setRevisionRule("1");
            baseModel.setTenantId(Func.isNotEmpty(user) ? user.getTenantId():AuthUtil.getTenantId());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
        return (T)baseModel;
    }
    /**
     * 修改时填充默认值
     * @param object 继承了BaseModel的实体对象
     * @param <T>   返回值的类型
@@ -80,6 +127,28 @@
            // String userId = AuthUtil.getUserId().toString();
            // 要求改成账号
            baseModel.setLastModifier(AuthUtil.getUser().getAccount());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
        return (T)baseModel;
    }
    /**
     * 修改时填充默认值:多线程流中调用
     * @param object 继承了BaseModel的实体对象
     * @param <T>   返回值的类型
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T updateDefaultAttrAssimt(T object, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            baseModel.setLastModifyTime(new Date());
            baseModel.setTs(new Date());
            // 用户id
            // String userId = AuthUtil.getUserId().toString();
            // 要求改成账号
            baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
        }catch (VciBaseException e){
            e.printStackTrace();
        }
@@ -164,6 +233,84 @@
        return (T)baseModel;
    }
    /**
     * 新增时填充默认值:多线程流中调用
     * @param object 继承了BaseModel的实体对象
     * @param <T>   返回值的类型
     * @return
     * @throws VciBaseException
     */
    public static <T extends BaseModel> T copplyDefaultAttrAssimt(Map<String,String> dataMap, T object, BladeUser user) throws VciBaseException {
        BaseModel baseModel = object;
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            baseModel.setOid(dataMap.getOrDefault("OID",""));
            baseModel.setId(dataMap.getOrDefault("ID",""));
            Map<String,Object> newDataMap=new HashMap<>();
            /*for (String key:dataMap.keySet()){
                Object value=dataMap.get(key);
                newDataMap.put(key.toLowerCase(Locale.ROOT),value);
            }*/
            /*    dataMap.forEach((key,value)->{
                newDataMap.put(key.toLowerCase(Locale.ROOT),value);
            });*/
            //baseModel.setData((Map)newDataMap);
            Object createTimeObj=dataMap.getOrDefault("CREATETIME","");
            if(createTimeObj!=null) {
                String createTime = createTimeObj.toString();
                baseModel.setCreateTime(chageStringToDate(createTime));
            }
            baseModel.setNameOid(dataMap.getOrDefault("NAMEOID",""));
            Object lastModifyTimeObj=dataMap.getOrDefault("LASTMODIFYTIME","");
            if(lastModifyTimeObj!=null) {
                String lastModifyTime = lastModifyTimeObj.toString();
                baseModel.setLastModifyTime(chageStringToDate(lastModifyTime));
            }
            Object tsObj=dataMap.getOrDefault("TS","");
            if(tsObj!=null) {
                String ts = tsObj.toString();
                baseModel.setTs(chageStringToDate(ts));
            }
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            //用户id ; 要求改成了账号
            // String userId = AuthUtil.getUserId().toString();
            baseModel.setBtmname(dataMap.getOrDefault("BTMNAME",""));
            baseModel.setCreator(dataMap.getOrDefault("CREATOR",""));
            baseModel.setFirstR(dataMap.getOrDefault("FIRSTR",""));
            baseModel.setFirstV(dataMap.getOrDefault("FIRSTV",""));
            baseModel.setLastR(dataMap.getOrDefault("LASTR",""));
            baseModel.setLastV(dataMap.getOrDefault("LASTV",""));
            Object revisionseq =dataMap.getOrDefault("REVISIONSEQ","");
            if(revisionseq!=null){
                baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString()));
            }
            baseModel.setOwner(dataMap.getOrDefault("OWNER",""));
            Object versionseq =dataMap.getOrDefault("VERSIONSEQ","");
            if(versionseq!=null){
                baseModel.setVersionSeq(chageStringToInt(versionseq.toString()));
            }
            baseModel.setVersionRule(dataMap.getOrDefault("VERSIONRULE",""));
            baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            baseModel.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUser().getAccount());
            baseModel.setLcStatus(dataMap.getOrDefault("LCSTATUS",""));
            baseModel.setName(dataMap.getOrDefault("NAME",""));
            baseModel.setTenantId(dataMap.getOrDefault("TENADTID",""));
            baseModel.setDescription(dataMap.getOrDefault("DESCRIOTION",""));
            baseModel.setCopyFromVersion(dataMap.getOrDefault("COPYFROMVERSION",""));
            Object secretgrade=dataMap.get("SECRETGRADE");
            if(secretgrade!=null){
                baseModel.setSecretGrade(chageStringToInt(secretgrade.toString()));
            }
        }catch (VciBaseException e){
            e.printStackTrace();
            throw e;
        }
        return (T)baseModel;
    }
    private static int chageStringToInt(String value){
        int newValue=0;
        if(StringUtils.isNotBlank(value)){
@@ -184,4 +331,5 @@
        }
        return date;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmProductCodeService.java
@@ -5,6 +5,7 @@
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
import com.vci.ubcs.starter.revision.model.BaseModel;
import org.springblade.core.secure.BladeUser;
import java.util.Collection;
import java.util.List;
@@ -20,7 +21,7 @@
     * @param dataCBOList 业务数据
     */
    List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO,
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception;
                                        CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList, BladeUser user) throws Exception;
    /**
        * 回收码值
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -68,6 +68,7 @@
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.annotation.OperateLog;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
@@ -505,6 +506,7 @@
        CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
        CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
        CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
        final BladeUser user = AuthUtil.getUser();
        //1.判断规则中除了流水码段,是否有其他码段
        checkSecValueOnOrder(ruleVO, orderDTO);
        //2.判断必输项
@@ -535,13 +537,13 @@
        //cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));、
        if(authUser) {
            // 要求显示账号,所以做了更改
            cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
            cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getAccount()));
            cbo.setCreator(String.valueOf(user.getAccount()));
            cbo.setLastModifier(String.valueOf(user.getAccount()));
        }else{
            cbo.setCreator(orderDTO.getCreator());
            cbo.setLastModifier(orderDTO.getLastModifier());
        }
        cbo.setTenantId(AuthUtil.getTenantId());
        cbo.setTenantId(user.getTenantId());
        if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
            cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus"));
        }
@@ -554,7 +556,7 @@
        cbo.setDescription(orderDTO.getDescription());
        cboList.add(cbo);
        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
        List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList,user);
        batchSaveSelectChar(templateVO, cboList);
        return codeList.size() > 0 ? codeList.get(0) : "";
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -58,6 +58,7 @@
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Workbook;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
@@ -1206,6 +1207,7 @@
                    //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
                    List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
                    CodeClassifyTemplateVO finalTemplateVO = templateVO;
                    final BladeUser user = AuthUtil.getUser();
                    ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> {
                        //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
                        List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
@@ -1222,7 +1224,7 @@
                        if (!CollectionUtils.isEmpty(thisCbos)) {
                            try {
                                // TODO 多线程流问题
                                productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList);
                                productCodeService.productCodeAndSaveData(classifyFullInfo, finalTemplateVO, ruleVOMap.get(ruleOid), null, dataCBOList,user);
                                importCount.add(dataCBOList.size());
                            } catch (Throwable e) {
                                log.error("批量产生编码的时候出错了", e);
@@ -1674,7 +1676,7 @@
                createRedisDatas(uuid + "-ok",templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap,true);
            }else {
                uuid="";
                final BladeUser user = AuthUtil.getUser();
                //要把以上的错误的都抛出后,再继续处理时间和组合规则
                needSaveCboList = cboList.stream().filter(cbo -> {
                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -1694,7 +1696,7 @@
                        dataCBOIdList.add(baseModel.getOid());
                    });
                    try {
                        codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
                        codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList,user);
                        //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                        engineService.batchSaveSelectChar(templateVO, dataCBOList);
                    } catch (Exception e) {
@@ -2109,7 +2111,8 @@
                }).collect(Collectors.toList());
                List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
                Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap;
                // TODO: 多线程流套多线程流,有坑,我把这儿改了
                // TODO: 多线程流套多线程流,有坑,我把这儿改成单线程了
                final BladeUser user = AuthUtil.getUser();
                ruleRowIndexMap.keySet().stream().forEach(ruleOid -> {
                    List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>();
                    List<String> rowIndexList = ruleRowIndexMap.get(ruleOid);
@@ -2121,7 +2124,7 @@
                            dataCBOList.add(baseModel);
                        });
                        try {
                            productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList);
                            productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
                        } catch (Throwable e) {
                            //success=false;
                            log.error("批量产生编码的时候出错了", e);
@@ -2134,6 +2137,7 @@
                    engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
                });
            }else {
                final BladeUser user = AuthUtil.getUser();
                List<BaseModel> dataCBOList=new ArrayList<>();
                List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> {
                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
@@ -2147,7 +2151,7 @@
                        dataCBOList.add(baseModel);
                    });
                    try {
                        productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                        productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
                    } catch (Exception e) {
                        log.error("批量产生编码的时候出错了", e);
                        needSaveCboList.stream().forEach(cbo -> {
@@ -2455,6 +2459,7 @@
            List<String>allNeedSaveCboList=new ArrayList<>();
            List<BaseModel> dataCBOList=new ArrayList<>();
            final BladeUser user = AuthUtil.getUser();
            needSaveCboList.stream().forEach(clientBusinessObject -> {
                BaseModel baseModel=new BaseModel();
                BeanUtil.convert(clientBusinessObject,baseModel);
@@ -2464,7 +2469,7 @@
            });
            try {
                List<String>applyGroupCodeIdList=new ArrayList<>();
                productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
                //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                engineService.batchSaveSelectChar(templateVO, dataCBOList);
                // if(!isProcess){
@@ -4260,6 +4265,7 @@
        Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>();
        // 查询不需要参与关键属性校验的除自己以外的所有分类oid
        final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
        final BladeUser user = AuthUtil.getUser();
        List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> {
            //每行都得查询.如果其中出现了错误,我们就直接抛出异常,其余的显示
            //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
@@ -4285,7 +4291,7 @@
                    List<BaseModel> newCboList = new ArrayList<>();
                    newDataList.stream().forEach(stringStringMap -> {
                        BaseModel baseModel=new BaseModel();
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel);
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,user);
                        baseModel.setData(stringStringMap);
                        newCboList.add(baseModel);
                    });
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -36,6 +36,7 @@
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.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.WebUtil;
@@ -98,7 +99,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList) throws Exception {
    public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList,BladeUser user) throws Exception {
        dataCBOList = dataCBOList.stream().sorted(((o1, o2) -> o1.getCreateTime().compareTo(o2.getCreateTime()))).collect(Collectors.toList());
        List<String> codeList = new ArrayList<>();
        final CodeRuleVO finalRuleVO = ruleVO;
@@ -203,7 +204,7 @@
                    });
                }
                CodeAllCode allCodeDO = new CodeAllCode();
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE);
                DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCodeDO, MdmBtmTypeConstant.CODE_ALL_CODE,user);
                allCodeDO.setCodeClassifyOid(classifyFullInfoBO.getCurrentClassifyVO().getOid());
                allCodeDO.setCodeRuleOid(finalRuleVO.getOid());
                allCodeDO.setId(cbo.getId());
@@ -236,13 +237,13 @@
                        log.info("oldmaxSerial--->"+serialValueDO.getMaxSerial()+"---- newmaxSerial---->"+maxSerial);
                        if(VciBaseUtil.getDouble(serialValueDO.getMaxSerial())<VciBaseUtil.getDouble(maxSerial)){
                            serialValueDO.setMaxSerial(String.valueOf(maxSerial));
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO);
                            DefaultAttrAssimtUtil.updateDefaultAttrAssimt(serialValueDO,user);
                            editSerialValueList.add(serialValueDO);
                        }
                    }else{
                        //没有
                        CodeSerialValue serialValueDO = new CodeSerialValue();
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE);
                        DefaultAttrAssimtUtil.addDefaultAttrAssimt(serialValueDO, MdmBtmTypeConstant.CODE_SERIAL_VALUE,user);
                        serialValueDO.setCodeRuleOid(finalRuleVO.getOid());
                        serialValueDO.setSerialUnit(serialUnit);
                        serialValueDO.setCodeSecOid(secOid);
@@ -418,7 +419,7 @@
            saveSerialValue( finalRuleVO, lastMaxSerialValueMap, maxSerialValueMap);
            allCodeDOList.stream().forEach(
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
                allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode",user);allCode.setLctid("codeAllCodeLC");}
            );