From 27cddefb0cb28da699954ba1a1756d6bcabafbbe Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期三, 05 三月 2025 17:41:29 +0800 Subject: [PATCH] 集成申码接口调整:当码值按照约定传表名为空的业务场景下传null校验问题和码值组装问题。 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 101 insertions(+), 13 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 00bc500..cf3caef 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 @@ -230,7 +230,7 @@ * @return 鎵ц缁撴灉 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 */ - @Override + @Override @Transactional(rollbackFor = Exception.class) public boolean addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException { VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeBasicSecDTO.getPkCodeRule(),"缂栫爜瑙勫垯鐨勪富閿�"); @@ -272,7 +272,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); @@ -361,10 +361,10 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean editSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException { + public boolean editSave(CodeBasicSecDTO codeBasicSecDTO) throws ServerException { VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄"); KeyValue attrKv = checkAttrNullableBySecType(codeBasicSecDTO); - if (! "success".equals(attrKv.getKey())){ + if (!"success".equals(attrKv.getKey())){ throw new VciBaseException(attrKv.getValue() + "涓嶈兘涓虹┖"); } //灏咲TO杞崲涓篋O @@ -400,8 +400,7 @@ codeReferConfigService.insert(codeReferConfigVO); } } - -// revisionModelUtil.copyFromDTOIgnore(codeBasicSecDTO, codeBasicSecDO);//姝ゅ鐨勬嫹璐濅細鎶妑eferValueInfo鐨勫�肩粰瑕嗙洊鎺夛紝闇�瑕侀噸鏂拌祴鍊� + // revisionModelUtil.copyFromDTOIgnore(codeBasicSecDTO, codeBasicSecDO);//姝ゅ鐨勬嫹璐濅細鎶妑eferValueInfo鐨勫�肩粰瑕嗙洊鎺夛紝闇�瑕侀噸鏂拌祴鍊� BaseModel tempModel = new BaseModel(); BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDO, tempModel); BeanUtil.copyProperties(codeBasicSecDTO, codeBasicSecDO,"referValueInfo"); @@ -411,6 +410,16 @@ codeBasicSecDO.setDescription(VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("description", codeBasicSecDTO))); resBoolean = codeBasicSecMapper.updateById(codeBasicSecDO)>0; + // 浠庡垎绫荤爜娈垫垨鍥哄畾鐮佹鏀逛负鍏朵粬鐮佹鏃讹紝鍒ゆ柇鐢ㄦ埛鏄惁閫夋嫨浜嗘竻绌虹爜鍊� + if(codeBasicSecDTO.getIsClearValue()){ + // 鍒嗙被鐮佸�兼竻绌� + if(codeBasicSecDTO.getSecType().equals(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())){ + codeClassifyValueService.deleteClassifyValueBySecOid(codeBasicSecDTO.getOid()); + }else { + //鍥哄畾鐮佸�兼竻绌� + fixedValueService.deleteFixedValueBySecOid(codeBasicSecDTO.getOid()); + } + } //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){ DictBiz dictBiz = new DictBiz(); @@ -588,6 +597,15 @@ } List<CodeBasicSec> createList = new ArrayList<>(); List<CodeBasicSec> basicSecDOS = codeBasicSecMapper.selectBatchIds(oidList); + /* 闇�瑕佹敞鎰忕殑鏄厠闅嗚繃鏉ョ殑鐮佹闇�瑕佸orderNum杩涜鎺掑簭锛屽惁鍒欎細鍑虹幇鎺掑簭涔辫烦鐨勬儏鍐� + 瀹炵幇鏂瑰紡鏄煡璇㈠嚭璇ヨ鍒欎笅鏍规嵁orderNum鎺掑簭鍚庣殑鏈�鍚庝竴涓爜娈� */ + LambdaQueryWrapper<CodeBasicSec> lastBasicWrapper = Wrappers.<CodeBasicSec>query() + .lambda().orderByDesc(CodeBasicSec::getOrderNum) + .eq(CodeBasicSec::getPkCodeRule,pkCodeRule) + .last("limit 1"); + CodeBasicSec lastCodeBasicSec = codeBasicSecMapper.selectOne(lastBasicWrapper); + // 鎺掑簭鍙蜂粠杩欏効寮�濮嬫帓 + int orderNum = Func.isEmpty(lastCodeBasicSec) || Func.isEmpty(lastCodeBasicSec.getOrderNum()) ? -1 : lastCodeBasicSec.getOrderNum(); if(basicSecDOS.isEmpty()){ return R.fail("鍏嬮殕鐨勭爜娈典俊鎭笉瀛樺湪锛�"); } @@ -599,6 +617,8 @@ String oldBasicOid = newSecDO.getOid(); newSecDO.setId(newSecDO.getId()); newSecDO.setName(newSecDO.getName()); + orderNum++; + newSecDO.setOrderNum(orderNum); newSecDO.setPkCodeRule(pkCodeRule); // 鍒ゆ柇鏄惁鏄垎绫荤爜娈�,涓氬姟閫昏緫绋嶅井澶嶆潅涓�鐐规墍浠ラ渶瑕佸厛鎻愬嚭鏉ュ崟鐙鐞� if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue())){ @@ -618,10 +638,13 @@ createList.add(newSecDO); } // 澶勭悊鍒嗙被鐮佹鐨刼id锛屽洜涓簅id鍏宠仈parentClassifyOid锛屼笌鐮佸�糲odeClassifyOid锛岀爜鍊煎張闇�瑕侀�氳繃鏃х殑鐮佹oid鏉ユ煡璇紝鎵�浠ヤ笉鑳界洿鎺ユ敼鍙榦id - boolean resChangeAssn = changeParentOidAssnOid(codeClassifySec); + changeParentOidAssnOid(codeClassifySec); // 灏嗗鐞嗚繃鐨勫垎绫荤爜娈典篃娣诲姞杩涜鍋氭柊澧炲鐞嗙殑鐮佹闆嗗悎涓� createList.addAll(codeClassifySec); - boolean resBoolean = saveBatch(createList); + boolean resBoolean = true; + if(!createList.isEmpty()){ + resBoolean = saveBatch(createList); + } // 鏈�缁堣瀛樺叆鐮佸�艰〃涓殑锛岀爜鍊煎璞� List<CodeFixedValue> codeFixedDOValues = new ArrayList<>(); // 鏋勯�犵爜鍊煎璞★紝涓庣爜娈典富閿叧鑱斿叧绯伙紝浠ュ強鏀瑰彉鍥哄畾鐮佸�肩殑oid @@ -633,9 +656,12 @@ codeFixedDOValues.add(item); }); }); - // 鍏嬮殕鍥哄畾鐮佸�� - boolean resFixed = fixedValueService.saveBatch(codeFixedDOValues); - return (resBoolean&&resFixed&&resChangeAssn) ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�"); + boolean resFixed = true; + if(!codeFixedValueMaps.isEmpty()){ + // 鍏嬮殕鍥哄畾鐮佸�� + resFixed = fixedValueService.saveBatch(codeFixedDOValues); + } + return (resBoolean&&resFixed) ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�"); } /** @@ -998,7 +1024,8 @@ wrapper = Wrappers.<CodeBasicSec>query().lambda() .eq(CodeBasicSec::getPkCodeRule,codeRuleVO.getOid()) .eq(CodeBasicSec::getSerialDependFlag,"true") - .orderByAsc(CodeBasicSec::getSerialDependOrder); + .orderByAsc(CodeBasicSec::getOrderNum); + //.orderByAsc(CodeBasicSec::getSerialDependOrder); List<CodeBasicSec> codeBasicSecList = this.list(wrapper); if(!CollectionUtils.isEmpty(codeBasicSecList)){ List<CodeBasicSecVO> codeBasicSecVOS = codeBasicSecDO2VOs(codeBasicSecList); @@ -1042,7 +1069,8 @@ .eq(CodeBasicSec::getPkCodeRule,codeRuleOid) .in(CodeBasicSec::getOid,codeBasicSecOidList) .eq(CodeBasicSec::getSerialDependFlag,"true") - .orderByAsc(CodeBasicSec::getSerialDependOrder); + //TODO: SerialDependOrder鏈潵鏄敤鏉ユ祦姘存帓搴忕殑锛屼絾鏄幇鍦ㄧ殑閫昏緫鏄寜鐓rderuNum鎺掑簭鐨� + .orderByAsc(CodeBasicSec::getOrderNum); //.orderByAsc(CodeBasicSec::getSerialDependOrder); List<CodeBasicSec> codeBasicSecList = this.list(wrapper); //鎸夋祦姘翠緷璧栭『搴忥紝澶勭悊娴佹按渚濊禆鐮佹鐨勫�� @@ -1100,4 +1128,64 @@ } return String.valueOf(maxSecNum); } + + /*** + * 鏍规嵁娴佹按渚濊禆鑾峰彇鏈�澶ф祦姘村彿 + * @param codeOrderDTO 缂栫爜鐢宠浼犺緭瀵硅薄 + * @return + */ + @Override + public Double getMaxSerialNumberForCodeRule(CodeOrderDTO codeOrderDTO) { + Double maxSerialNumber=0.0; + VciBaseUtil.alertNotNull(codeOrderDTO.getCodeRuleOid(),"缂栫爜瑙勫垯涓婚敭"); + List<CodeOrderSecDTO> codeOrderSecDTOList=codeOrderDTO.getSecDTOList(); + if(CollectionUtils.isEmpty(codeOrderSecDTOList)){ + throw new VciBaseException("鏈�澶ф祦姘村彿鐨勬祦姘翠緷璧栦笉鑳戒负绌猴紒"); + } + String codeRuleOid = codeOrderDTO.getCodeRuleOid(); + 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::getOrderNum); //.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)){ + maxSerialNumber=StringUtils.isBlank(codeSerialValueList.get(0).getMaxSerial())?0:Double.parseDouble(codeSerialValueList.get(0).getMaxSerial()); + } + return maxSerialNumber; + } } -- Gitblit v1.9.3