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 | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 161 insertions(+), 16 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 c69312c..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 @@ -8,44 +8,44 @@ 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.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.*; 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.Condition; 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; @@ -56,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; /** * 鐮佹鍩虹淇℃伅鏈嶅姟鎺ュ彛 @@ -102,6 +104,12 @@ */ @Resource private ICodeFixedValueService fixedValueService; + + /** + * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭� + */ + @Resource + private CodeSerialValueMapper serialValueMapper; /** * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉� @@ -243,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() @@ -309,7 +317,7 @@ List<TableColVO> uiTableFieldVOs = new ArrayList<>(); // 蹇�熸煡璇㈠垪 List<TableColVO> queryColumns = new ArrayList<>(); - if(!codeReferConfig.getCodeShowFieldConfigVOS().isEmpty()){ + if(!CollectionUtils.isEmpty(codeReferConfig.getCodeShowFieldConfigVOS())){ codeReferConfig.getCodeShowFieldConfigVOS().stream().forEach(showField ->{ TableColVO tableColVO = new TableColVO(); BeanUtil.copy(showField,tableColVO); @@ -330,7 +338,7 @@ HashMap<String, String> whereMap = new HashMap<>(); if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){ codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{ - whereMap.put(srch.getFilterField()+"_"+srch.getFilterType(),srch.getFilterValue()); + whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue()); }); } uiFormReferVO.setWhere(whereMap); @@ -357,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("缂栫爜瑙勫垯涓嶅厑璁哥紪杈戞垨鍒犻櫎锛�"); @@ -367,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())){ @@ -385,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())){ @@ -545,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); } /** @@ -759,7 +776,6 @@ return codeBasicSecDO; } - /** * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭 * @@ -863,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) { @@ -872,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