From c14fedd8903487457ad0911e8afab47670be754e Mon Sep 17 00:00:00 2001 From: ludc Date: 星期二, 29 八月 2023 22:15:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 150 insertions(+), 2 deletions(-) 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 c198752..007bee9 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 @@ -3,18 +3,22 @@ import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.vci.ubcs.code.dto.CodeBasicSecDTO; +import com.vci.ubcs.code.dto.CodeOrderDTO; +import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.entity.*; import com.vci.ubcs.code.enumpack.*; import com.vci.ubcs.code.lifecycle.CodeRuleLC; import com.vci.ubcs.code.mapper.CodeBasicSecMapper; import com.vci.ubcs.code.mapper.CodeClassifyValueMapper; import com.vci.ubcs.code.mapper.CodeFixedValueMapper; +import com.vci.ubcs.code.mapper.CodeSerialValueMapper; import com.vci.ubcs.code.service.*; import com.vci.ubcs.code.vo.CodeReferConfigVO; import com.vci.ubcs.code.vo.pagemodel.*; @@ -23,6 +27,7 @@ import com.vci.ubcs.omd.enums.EnumEnum; import com.vci.ubcs.starter.enumpack.CodeTableNameEnum; import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.revision.service.RevisionModelUtil; import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; import com.vci.ubcs.starter.util.MdmBtmTypeConstant; @@ -32,6 +37,7 @@ import com.vci.ubcs.starter.web.pagemodel.*; import com.vci.ubcs.starter.web.util.BeanUtilForVCI; import com.vci.ubcs.starter.web.util.VciBaseUtil; +import com.vci.ubcs.starter.web.util.VciDateUtil; import com.vci.ubcs.starter.web.util.WebUtil; import com.vci.ubcs.system.entity.DictBiz; import com.vci.ubcs.system.feign.IDictBizClient; @@ -50,6 +56,8 @@ import java.util.stream.Collectors; import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*; +import static com.vci.ubcs.code.constant.MdmEngineConstant.EMPTY_SERIAL_UNIT; +import static com.vci.ubcs.code.constant.MdmEngineConstant.SERIAL_UNIT_SPACE; /** * 鐮佹鍩虹淇℃伅鏈嶅姟鎺ュ彛 @@ -96,6 +104,12 @@ */ @Resource private ICodeFixedValueService fixedValueService; + + /** + * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭� + */ + @Resource + private CodeSerialValueMapper serialValueMapper; /** * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉� @@ -351,6 +365,7 @@ DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeBasicSecDO); boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecDO.getPkCodeRule()).getLcStatus()); boolean resBoolean; + CodeReferConfigVO codeReferConfigVO = null; if (!status){ //杩斿洖閿欒淇℃伅 throw new VciBaseException("缂栫爜瑙勫垯涓嶅厑璁哥紪杈戞垨鍒犻櫎锛�"); @@ -361,7 +376,6 @@ && StringUtils.isBlank(codeBasicSecDO.getCodeFillSeparator())){ throw new VciBaseException("褰撹ˉ浣嶆柟寮忎负宸﹁ˉ浣嶆垨鑰呭彸琛ヤ綅鐨勬椂鍊欙紝琛ヤ綅瀛楃涓嶈兘涓虹┖"); } - CodeReferConfigVO codeReferConfigVO = null; //寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘ if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){ if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){ @@ -379,7 +393,16 @@ codeReferConfigService.insert(codeReferConfigVO); } } - revisionModelUtil.copyFromDTOIgnore(codeBasicSecDTO, codeBasicSecDO); + +// revisionModelUtil.copyFromDTOIgnore(codeBasicSecDTO, codeBasicSecDO);//姝ゅ鐨勬嫹璐濅細鎶妑eferValueInfo鐨勫�肩粰瑕嗙洊鎺夛紝闇�瑕侀噸鏂拌祴鍊� + BaseModel tempModel = new BaseModel(); + BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDO, tempModel); + BeanUtil.copyProperties(codeBasicSecDTO, codeBasicSecDO,"referValueInfo"); + BeanUtilForVCI.copyPropertiesIgnoreCase(tempModel, codeBasicSecDO); + codeBasicSecDO.setId(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("id", codeBasicSecDTO))); + codeBasicSecDO.setName(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("name", codeBasicSecDTO))); + codeBasicSecDO.setDescription(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("description", codeBasicSecDTO))); + resBoolean = codeBasicSecMapper.updateById(codeBasicSecDO)>0; //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){ @@ -869,4 +892,129 @@ return codeBasicSecVO; } + /** + * 鏍规嵁缂栫爜瑙勫垯涓婚敭鑾峰彇缂栫爜涓嬬殑娴佹按渚濊禆鐮佹 + * + * @param oid 缂栫爜瑙勫垯涓婚敭 + * @return + * @throws VciBaseException + */ + @Override + public CodeRuleVO getSerialNumberDepend(String oid) throws VciBaseException { + VciBaseUtil.alertNotNull(oid,"缂栫爜瑙勫垯涓婚敭"); + CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(oid); + if (codeRuleVO != null) { + //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽 + codeRuleVO.setLcStatusText(CodeRuleLC.getTextByValue(codeRuleVO.getLcStatus())); + + LambdaQueryWrapper<CodeBasicSec> wrapper = Wrappers.<CodeBasicSec>query().lambda() + .eq(CodeBasicSec::getPkCodeRule, codeRuleVO.getOid()) + .eq(CodeBasicSec::getSecType,CodeSecTypeEnum.CODE_SERIAL_SEC.getValue()); + CodeBasicSec codeBasicSec = this.getOne(wrapper); + if(codeBasicSec != null && VciBaseUtil.isNotNull(codeBasicSec.getOid())){ + wrapper = Wrappers.<CodeBasicSec>query().lambda() + .eq(CodeBasicSec::getPkCodeRule,codeRuleVO.getOid()) + .eq(CodeBasicSec::getSerialDependFlag,"true") + .orderByAsc(CodeBasicSec::getSerialDependOrder); + List<CodeBasicSec> codeBasicSecList = this.list(wrapper); + if(!CollectionUtils.isEmpty(codeBasicSecList)){ + List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecDO2VOs(codeBasicSecList); + //鏌ヨ鍥哄畾鐮佺殑鐮佸�� + Map<String, List<CodeFixedValueVO>> secValueMap = fixedValueService.listCodeFixedValueBySecOids(codeBasicSecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toList())); + codeBasicSecVOS.stream().forEach(vo->{ + vo.setFixedValueVOList(secValueMap.getOrDefault(vo.getOid(),null)); + }); + codeRuleVO.setSecVOList(codeBasicSecVOS); + } + }else{ + throw new VciBaseException(codeRuleVO.getName()+"缂栫爜瑙勫垯涓嬫棤娴佹按鐮佹锛屾棤娉曡缃渶澶ф祦姘村彿锛�"); + } + } + return codeRuleVO; + } + + /** + * 璁剧疆鏈�澶ф祦姘村彿 + * + * @param codeOrderDTO 缂栫爜鐢宠浼犺緭瀵硅薄 + * @return + * @throws VciBaseException + */ + @Override + public String setMaxSerialNumberForCodeRule(CodeOrderDTO codeOrderDTO) throws VciBaseException { + VciBaseUtil.alertNotNull(codeOrderDTO.getCodeRuleOid(),"缂栫爜瑙勫垯涓婚敭",codeOrderDTO.getMaxSecNum(),"鏈�澶ф祦姘村彿"); + List<CodeOrderSecDTO> codeOrderSecDTOList = codeOrderDTO.getSecDTOList(); + if(CollectionUtils.isEmpty(codeOrderSecDTOList)){ + throw new VciBaseException("鏈�澶ф祦姘村彿鐨勬祦姘翠緷璧栦笉鑳戒负绌猴紒"); + } + + String codeRuleOid = codeOrderDTO.getCodeRuleOid(); + int maxSecNum = codeOrderDTO.getMaxSecNum(); + + Map<String/**鐮佹涓婚敭*/,CodeOrderSecDTO/**鐮佹鐩稿叧淇℃伅*/> codeOrderSecDTOMap = codeOrderSecDTOList.stream().collect(Collectors.toMap(s -> s.getSecOid(), t -> t)); + List<String> codeBasicSecOidList = codeOrderSecDTOList.stream().map(s->s.getSecOid()).collect(Collectors.toList());//娴佹按渚濊禆鐮佹鐨勪富閿泦鍚� + + //鑾峰彇娴佹按渚濊禆鐮佹 + LambdaQueryWrapper<CodeBasicSec> wrapper = Wrappers.<CodeBasicSec>query().lambda() + .eq(CodeBasicSec::getPkCodeRule,codeRuleOid) + .in(CodeBasicSec::getOid,codeBasicSecOidList) + .eq(CodeBasicSec::getSerialDependFlag,"true") + .orderByAsc(CodeBasicSec::getSerialDependOrder); + List<CodeBasicSec> codeBasicSecList = this.list(wrapper); + + //鎸夋祦姘翠緷璧栭『搴忥紝澶勭悊娴佹按渚濊禆鐮佹鐨勫�� + List<String> serialDependValueList = new ArrayList<>(); + codeBasicSecList.stream().forEach(s->{ + CodeOrderSecDTO codeOrderSecDTO = codeOrderSecDTOMap.get(s.getOid()); + String serialDependValue = codeOrderSecDTO.getSecValue(); + if(s.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())){ + try { + Date date = VciDateUtil.str2Date(codeOrderSecDTO.getSecValue(),s.getCodeDateFormatStr()); + serialDependValue = VciDateUtil.date2Str(date,s.getCodeDateFormatStr()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + serialDependValueList.add(serialDependValue); + }); + + //鑾峰彇娴佹按鐮佹 + wrapper = Wrappers.<CodeBasicSec>query().lambda() + .eq(CodeBasicSec::getPkCodeRule,codeRuleOid) + .eq(CodeBasicSec::getSecType,CodeSecTypeEnum.CODE_SERIAL_SEC.getValue()) + .orderByAsc(CodeBasicSec::getSerialDependOrder); + CodeBasicSec codeBasicSec = this.getOne(wrapper); + + //鏍规嵁缂栫爜瑙勫垯鍜屾祦姘翠緷璧栵紝鑾峰彇鏈�澶ф祦姘村彿 + String serialUnitString = serialDependValueList.size() == 0 ? EMPTY_SERIAL_UNIT : serialDependValueList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE)); + LambdaQueryWrapper<CodeSerialValue> codeSerialWrapper = new LambdaQueryWrapper<>(); + codeSerialWrapper.eq(CodeSerialValue::getCodeRuleOid, codeRuleOid); + codeSerialWrapper.eq(CodeSerialValue::getSerialUnit, serialUnitString); + codeSerialWrapper.eq(CodeSerialValue::getCodeSecOid,codeBasicSec.getOid()); + codeSerialWrapper.orderByDesc(CodeSerialValue::getCreateTime); + List<CodeSerialValue> codeSerialValueList = serialValueMapper.selectList(codeSerialWrapper); + + //濡傛灉鏈�澶ф祦姘村彿涓嶄负绌猴紝璇存槑宸叉湁鏈�濂芥祦姘村彿锛屾洿鏂版渶澶ф祦姘村彿 + if(!CollectionUtils.isEmpty(codeSerialValueList)){ + CodeSerialValue codeSerialValue = codeSerialValueList.get(0); + int maxSerial = Double.valueOf(codeSerialValue.getMaxSerial()).intValue(); + //宸叉湁鐨勬渶澶ф祦姘村彿锛屽皬浜庤缃殑鏈�澶ф祦姘村彿锛屾洿鏂版渶澶ф祦姘村彿 + if(maxSerial < maxSecNum){ + codeSerialValue.setMaxSerial(String.valueOf(maxSecNum)); + serialValueMapper.updateById(codeSerialValue); + }else{ + maxSecNum = maxSerial; + } + }else{ + //濡傛灉鏈�澶ф祦姘村彿涓嶄负绌猴紝璇存槑鏃犳渶濂芥祦姘村彿锛屾柊澧炴渶澶ф祦姘村彿 + CodeSerialValue codeSerialValue = new CodeSerialValue(); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeSerialValue, MdmBtmTypeConstant.CODE_SERIAL_VALUE); + codeSerialValue.setCodeRuleOid(codeRuleOid); + codeSerialValue.setSerialUnit(serialUnitString); + codeSerialValue.setCodeSecOid(codeBasicSec.getOid()); + codeSerialValue.setMaxSerial(String.valueOf(maxSecNum)); + serialValueMapper.insert(codeSerialValue); + } + return String.valueOf(maxSecNum); + } } -- Gitblit v1.9.3