From 452d10d439e356d6bd618f0d09092af5c783f8f6 Mon Sep 17 00:00:00 2001 From: dangsn <dangsn@chicecm.com> Date: 星期四, 24 八月 2023 10:47:41 +0800 Subject: [PATCH] 新增设置最大流水号 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 274 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 235 insertions(+), 39 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 b20064a..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 @@ -2,52 +2,50 @@ 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.constant.MdmBtmTypeConstant; + import com.vci.ubcs.code.dto.CodeBasicSecDTO; -import com.vci.ubcs.code.entity.CodeBasicSec; -import com.vci.ubcs.code.entity.CodeClassify; -import com.vci.ubcs.code.entity.CodeClassifyValue; -import com.vci.ubcs.code.entity.CodeFixedValue; +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.CodeBasicSecVO; -import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO; -import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; +import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.code.wrapper.CodeBasicSecWrapper; import com.vci.ubcs.omd.cache.EnumCache; 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; import com.vci.ubcs.starter.util.UBCSCondition; import com.vci.ubcs.starter.util.UBCSSqlKeyword; -import com.vci.ubcs.starter.web.enumpck.NewAppConstantEnum; import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum; -import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject; -import com.vci.ubcs.starter.web.pagemodel.KeyValue; -import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO; +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; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,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; /** * 鐮佹鍩虹淇℃伅鏈嶅姟鎺ュ彛 @@ -104,6 +104,12 @@ */ @Resource private ICodeFixedValueService fixedValueService; + + /** + * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭� + */ + @Resource + private CodeSerialValueMapper serialValueMapper; /** * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉� @@ -165,8 +171,10 @@ Set<String> fixedSecOidSet = fixedSecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet()); // 閫氳繃澶栭敭杩涜鏌ヨ List<CodeFixedValue> fixedValueS = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet)); - // 鏍规嵁鏌ヨ鍑烘潵鐨刬d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 - deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0; + if(!fixedValueS.isEmpty()){ + // 鏍规嵁鏌ヨ鍑烘潵鐨刬d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 + deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0; + } } // 4銆佸啀鍒犻櫎鍒嗙被鐮佹 List<CodeBasicSec> classifySecList = deleteList.stream().filter(sec -> { @@ -177,8 +185,10 @@ Set<String> classifySecOidSet = classifySecList.stream().map(CodeBasicSec::getOid).collect(Collectors.toSet()); // 閫氳繃澶栭敭杩涜鏌ヨ List<CodeClassifyValue> fixedValueS = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet)); - // 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 - deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0; + if(!fixedValueS.isEmpty()){ + // 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎 + deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0; + } } return deletFlag; } @@ -241,7 +251,7 @@ codeBasicSecDO.setValueCutTypeText(EnumCache.getValue(EnumEnum.CODE_CUT_TYPE,codeBasicSecDTO.getValueCutType())); codeBasicSecDO.setCodeGetValueTypeText(EnumCache.getValue(EnumEnum.CODE_GET_VALUE_TYPE,codeBasicSecDTO.getCodeGetValueType())); //濉厖涓�浜涢粯璁ゅ�� - DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeBasicSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeBasicSecDO, MdmBtmTypeConstant.CODE_BASIC_SEC); //鎺掑簭鍙凤紝榛樿绛変簬褰撳墠宸叉湁鐨勬暟閲忓姞1 Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query() .lambda() @@ -261,7 +271,7 @@ //寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘ if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){ if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){ - throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆 鐨勫唴瀹�"); + throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆鐨勫唴瀹�"); } try{ //JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class); @@ -270,6 +280,8 @@ }catch (Throwable e){ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝鍙傜収閰嶇疆鐨勫唴瀹圭殑鏍煎紡涓嶆纭�,",new String[0],e); } + // 鍒ゆ柇鏄惁涓哄紩鐢ㄧ爜娈碉紝濡傛灉鏄簲鐢ㄧ爜娈电殑璇濓紝涓轰簡閫傞厤鍓嶇缁勪欢锛岃繖閲岃瀵硅〃杩涜澶勭悊涓�涓嬶紝鎸夌収浠ュ墠鐨勫弬鐓ф牸寮忚繘琛岃浆鎹� + codeBasicSecDO.setReferValueInfo(referConfigToUIUiTable(codeReferConfigVO)); if(codeReferConfigVO.getIsPersistence()=="true"){ codeReferConfigService.insert(codeReferConfigVO); } @@ -278,14 +290,59 @@ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){ DictBiz dictBiz = new DictBiz(); - dictBiz.setCode(MdmBtmTypeConstant.CODE_BASIC_SEC); - dictBiz.setDictKey("codefileseparator"); + dictBiz.setCode("codeFillSeparator"); + dictBiz.setDictKey(codeBasicSecDO.getCodeFillSeparator()); dictBiz.setDictValue(codeBasicSecDO.getCodeFillSeparator()); //浠庡師鏉ョ殑charService锛堝彲杈撳彲閫夛級鏇存敼涓鸿皟鐢╫md涓殑鎺ュ彛鏉ュ疄鐜� iDictBizClient.getCheck(dictBiz); //charService.save(MdmBtmTypeConstant.CODE_BASIC_SEC,"codefileseparator",codeBasicSecDO.getCodeFillSeparator(),sessionInfo); } return resBoolean; + } + + /** + * 灏唕eferconfig杞崲涓篔SON鏍煎紡鐨刄IFormReferVO + * @param codeReferConfig + * @return + */ + private String referConfigToUIUiTable(CodeReferConfigVO codeReferConfig){ + // 鎷疯礉涓轰互鍓嶇殑鑰佸璞� + UIReferConfigFormVO uiFormReferVO = new UIReferConfigFormVO(); + BeanUtil.copy(codeReferConfig,uiFormReferVO); + + // 琛ㄦ牸鐨勮嚜瀹氫箟瀹氫箟 + UITableConfigVO uiTableConfigVO = new UITableConfigVO(); + uiTableConfigVO.setPage(new UITablePageVO(codeReferConfig.getLimit(),1)); + // 鍒楄〃鐨勫垪鐨勪俊鎭浆鎹� + List<TableColVO> uiTableFieldVOs = new ArrayList<>(); + // 蹇�熸煡璇㈠垪 + List<TableColVO> queryColumns = new ArrayList<>(); + if(!CollectionUtils.isEmpty(codeReferConfig.getCodeShowFieldConfigVOS())){ + codeReferConfig.getCodeShowFieldConfigVOS().stream().forEach(showField ->{ + TableColVO tableColVO = new TableColVO(); + BeanUtil.copy(showField,tableColVO); + tableColVO.setSortField(showField.getAttrSortField()); + uiTableFieldVOs.add(tableColVO); + if(showField.getIsQuery().equals("true")){ + queryColumns.add(tableColVO); + } + }); + } + // 鏄剧ず鐨勫垪 + uiTableConfigVO.setCols(uiTableFieldVOs); + // 蹇�熸煡璇㈠垪 + uiTableConfigVO.setQueryColumns(queryColumns); + //set缁欒〃鏍奸厤缃睘鎬� + uiFormReferVO.setTableConfig(uiTableConfigVO); + // 绛涢�夋潯浠� + HashMap<String, String> whereMap = new HashMap<>(); + if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){ + codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{ + whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue()); + }); + } + uiFormReferVO.setWhere(whereMap); + return JSONObject.toJSONString(uiFormReferVO); } /** @@ -308,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("缂栫爜瑙勫垯涓嶅厑璁哥紪杈戞垨鍒犻櫎锛�"); @@ -321,22 +379,36 @@ //寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘ if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){ if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){ - throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆 鐨勫唴瀹�"); + throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐欏弬鐓ч厤缃殑鍐呭"); } try{ - JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class); + // JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class); + codeReferConfigVO = JSONObject.parseObject(codeBasicSecDO.getReferConfig(), CodeReferConfigVO.class); }catch (Throwable e){ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝鍙傜収閰嶇疆鐨勫唴瀹圭殑鏍煎紡涓嶆纭�,",new String[0],e); } + // 鍒ゆ柇鏄惁涓哄紩鐢ㄧ爜娈碉紝濡傛灉鏄簲鐢ㄧ爜娈电殑璇濓紝涓轰簡閫傞厤鍓嶇缁勪欢锛岃繖閲岃瀵硅〃杩涜澶勭悊涓�涓嬶紝鎸夌収浠ュ墠鐨勫弬鐓ф牸寮忚繘琛岃浆鎹� + codeBasicSecDO.setReferValueInfo(referConfigToUIUiTable(codeReferConfigVO)); + if(codeReferConfigVO.getIsPersistence()=="true"){ + 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())){ - //杩欏効鐩墠闇�瑕佹敼 2023/4/24 DictBiz dictBiz = new DictBiz(); - dictBiz.setCode(MdmBtmTypeConstant.CODE_BASIC_SEC); - dictBiz.setDictKey("codefileseparator"); + dictBiz.setCode("codeFillSeparator"); + dictBiz.setDictKey(codeBasicSecDO.getCodeFillSeparator()); dictBiz.setDictValue(codeBasicSecDO.getCodeFillSeparator()); //浠庡師鏉ョ殑charService锛堝彲杈撳彲閫夛級鏇存敼涓鸿皟鐢╫md涓殑鎺ュ彛鏉ュ疄鐜� iDictBizClient.getCheck(dictBiz); @@ -490,7 +562,7 @@ return null; } conditionMap.put("secType",(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())); - return refDataGridCodeBasicSec(query.setAscs("ordernum"),conditionMap); + return refDataGridCodeBasicSec(query.setAscs("orderNum"),conditionMap); } /** @@ -704,7 +776,6 @@ return codeBasicSecDO; } - /** * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭 * @@ -716,14 +787,10 @@ if(StringUtils.isBlank(ruleOid)){ return new ArrayList<>(); } -// Map<String,String> conditionMap = new HashMap<>(); -// conditionMap.put("pkCodeRule",ruleOid); -// PageHelper pageHelper = new PageHelper(-1); -// pageHelper.addDefaultAsc("ordernum"); - QueryWrapper<CodeBasicSec> wrapper = new QueryWrapper<>(); - wrapper.eq("pkCodeRule",ruleOid); - wrapper.orderByAsc("ordernum"); - List<CodeBasicSec> secDOList = baseMapper.selectList(wrapper);//.selectByCondition(conditionMap, pageHelper); + LambdaQueryWrapper<CodeBasicSec> wrapper = Wrappers.<CodeBasicSec>query().lambda() + .eq(CodeBasicSec::getPkCodeRule, ruleOid) + .orderByAsc(CodeBasicSec::getOrderNum); + List<CodeBasicSec> secDOList = baseMapper.selectList(wrapper);// return codeBasicSecDO2VOs(secDOList,true); } @@ -812,7 +879,10 @@ CodeBasicSec codeBasicSec = codeBasicSecMapper.selectOne(Wrappers.<CodeBasicSec>query().lambda() .eq(CodeBasicSec::getOid, codeBasicSecDO.getParentClassifySecOid()) .eq(CodeBasicSec::getSecType, codeBasicSecDO.getSecType())); - codeBasicSecVO.setParentClassifySecText(codeBasicSec.getName()); + if(Func.isNotEmpty(codeBasicSec)){ + codeBasicSecVO.setParentClassifySecOid(codeBasicSec.getOid()); + codeBasicSecVO.setParentClassifySecText(codeBasicSec.getName()); + } } //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽 if (true) { @@ -821,4 +891,130 @@ } 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