From 4470052c3b6bdeb18e45987f8aa293d1e93d0552 Mon Sep 17 00:00:00 2001
From: Ludc <2870569285@qq.com>
Date: 星期二, 18 十一月 2025 11:59:12 +0800
Subject: [PATCH] 所有文件上传接口增加文件安全校验逻辑。
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java | 227 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 199 insertions(+), 28 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 ea4666f..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
@@ -52,6 +52,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
+import java.rmi.ServerException;
import java.util.*;
import java.util.stream.Collectors;
@@ -114,7 +115,7 @@
/**
* 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉�
*/
- private static final String PARENT_FIELD_NAME = "parentclassifysecoid";
+ private static final String PARENT_FIELD_NAME = "parentClassifySecOid";
/**
* 涓婄骇鍒嗙被鐮佸�肩殑灞炴�у悕绉�
@@ -170,10 +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));
- if(!fixedValueS.isEmpty()){
+ List<CodeFixedValue> fixedValues = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query().lambda().in(CodeFixedValue::getCodeFixedSecOid,fixedSecOidSet));
+ if(!fixedValues.isEmpty()){
// 鏍规嵁鏌ヨ鍑烘潵鐨刬d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎
- deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0;
+ deletFlag = fixedValueMapper.deleteBatchIds(fixedValues.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()))>0;
}
}
// 4銆佸啀鍒犻櫎鍒嗙被鐮佹
@@ -184,10 +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));
- if(!fixedValueS.isEmpty()){
+ List<CodeClassifyValue> codeClassifyValues = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet));
+ if(!codeClassifyValues.isEmpty()){
// 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎
- deletFlag = fixedValueMapper.deleteBatchIds(fixedValueS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0;
+ deletFlag = codeClassifyValueMapper.deleteBatchIds(codeClassifyValues.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0;
}
}
return deletFlag;
@@ -229,7 +230,7 @@
* @return 鎵ц缁撴灉
* @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
*/
- @Override
+ @Override
@Transactional(rollbackFor = Exception.class)
public boolean addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeBasicSecDTO.getPkCodeRule(),"缂栫爜瑙勫垯鐨勪富閿�");
@@ -271,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);
@@ -282,7 +283,7 @@
}
// 鍒ゆ柇鏄惁涓哄紩鐢ㄧ爜娈碉紝濡傛灉鏄簲鐢ㄧ爜娈电殑璇濓紝涓轰簡閫傞厤鍓嶇缁勪欢锛岃繖閲岃瀵硅〃杩涜澶勭悊涓�涓嬶紝鎸夌収浠ュ墠鐨勫弬鐓ф牸寮忚繘琛岃浆鎹�
codeBasicSecDO.setReferValueInfo(referConfigToUIUiTable(codeReferConfigVO));
- if(codeReferConfigVO.getIsPersistence()=="true"){
+ if(Func.toBoolean(codeReferConfigVO.getIsPersistence())){
codeReferConfigService.insert(codeReferConfigVO);
}
}
@@ -323,8 +324,11 @@
BeanUtil.copy(showField,tableColVO);
tableColVO.setSortField(showField.getAttrSortField());
uiTableFieldVOs.add(tableColVO);
- if(showField.getIsQuery().equals("true")){
- queryColumns.add(tableColVO);
+ if(Func.toBoolean(showField.getIsQuery())){
+ TableColVO tableQueryColumns = new TableColVO();
+ BeanUtil.copy(showField,tableQueryColumns);
+ tableColVO.setSortField(showField.getAttrSortField());
+ queryColumns.add(tableQueryColumns);
}
});
}
@@ -334,6 +338,9 @@
uiTableConfigVO.setQueryColumns(queryColumns);
//set缁欒〃鏍奸厤缃睘鎬�
uiFormReferVO.setTableConfig(uiTableConfigVO);
+ //瀛楁鍚嶄笉涓�鑷达紝闇�瑕佹墜鍔╯et
+ uiFormReferVO.setMuti(Func.toBoolean(codeReferConfig.getIsMuti()));
+ uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType()));
// 绛涢�夋潯浠�
HashMap<String, String> whereMap = new HashMap<>();
if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){
@@ -354,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
@@ -393,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");
@@ -404,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();
@@ -574,30 +590,123 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException {
+ public R cloneCodeBasicSec(List<String> oidList, String pkCodeRule) throws ServiceException, ServerException {
boolean isLinked = checkIsLinked(pkCodeRule,null);
if (isLinked) {
return R.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
}
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("鍏嬮殕鐨勭爜娈典俊鎭笉瀛樺湪锛�");
}
- basicSecDOS.forEach(sec -> {
+ List<CodeBasicSec> codeClassifySec = new ArrayList<>();
+ Map<String,List<CodeFixedValue>> codeFixedValueMaps = new HashMap<>();
+ for (CodeBasicSec sec : basicSecDOS) {
CodeBasicSec newSecDO = new CodeBasicSec();
BeanUtilForVCI.copyPropertiesIgnoreCase(sec,newSecDO);
- newSecDO.setOid(VciBaseUtil.getPk());
- newSecDO.setNameOid(VciBaseUtil.getPk());
- newSecDO.setRevisionOid(VciBaseUtil.getPk());
- newSecDO.setId(newSecDO.getId() + "_copy");
- newSecDO.setName(newSecDO.getName() + "_copy");
+ 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())){
+ // 瀛樺偍鏃х殑鐮佹oid鍜屾柊鐨勭爜娈电殑oid鐨勫叧鑱斿叧绯�
+ codeClassifySec.add(newSecDO);
+ continue;
+ }
+ // 鏇存敼鍒涘缓鏃堕棿锛屼慨鏀规椂闂寸瓑榛樿鍊�
+ DefaultAttrAssimtUtil.addDefaultAttrAssimt(newSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC);
+ //鍥哄畾鐮佹
+ if(newSecDO.getSecType().equals(CodeSecTypeEnum.CODE_FIXED_SEC.getValue())){
+ // 鍥哄畾鐮佹瀛樺偍濂給id鍜岀爜鍊肩殑鍏宠仈鍏崇郴
+ codeFixedValueMaps.put(newSecDO.getOid(),fixedValueService.list(Wrappers.<CodeFixedValue>query()
+ .lambda().eq(CodeFixedValue::getCodeFixedSecOid, oldBasicOid)
+ ));
+ }
createList.add(newSecDO);
+ }
+ // 澶勭悊鍒嗙被鐮佹鐨刼id锛屽洜涓簅id鍏宠仈parentClassifyOid锛屼笌鐮佸�糲odeClassifyOid锛岀爜鍊煎張闇�瑕侀�氳繃鏃х殑鐮佹oid鏉ユ煡璇紝鎵�浠ヤ笉鑳界洿鎺ユ敼鍙榦id
+ changeParentOidAssnOid(codeClassifySec);
+ // 灏嗗鐞嗚繃鐨勫垎绫荤爜娈典篃娣诲姞杩涜鍋氭柊澧炲鐞嗙殑鐮佹闆嗗悎涓�
+ createList.addAll(codeClassifySec);
+ boolean resBoolean = true;
+ if(!createList.isEmpty()){
+ resBoolean = saveBatch(createList);
+ }
+ // 鏈�缁堣瀛樺叆鐮佸�艰〃涓殑锛岀爜鍊煎璞�
+ List<CodeFixedValue> codeFixedDOValues = new ArrayList<>();
+ // 鏋勯�犵爜鍊煎璞★紝涓庣爜娈典富閿叧鑱斿叧绯伙紝浠ュ強鏀瑰彉鍥哄畾鐮佸�肩殑oid
+ codeFixedValueMaps.forEach((key, value) -> {
+ value.stream().forEach(item -> {
+ item.setOid("");
+ item.setCodeFixedSecOid(key);
+ DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item);
+ codeFixedDOValues.add(item);
+ });
});
- boolean resBoolean = saveBatch(createList);
- //codeBasicSecMapper.insertBatch(createList);
- return resBoolean ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�");
+ boolean resFixed = true;
+ if(!codeFixedValueMaps.isEmpty()){
+ // 鍏嬮殕鍥哄畾鐮佸��
+ resFixed = fixedValueService.saveBatch(codeFixedDOValues);
+ }
+ return (resBoolean&&resFixed) ? R.data(resBoolean,"鍏嬮殕鐮佹淇℃伅鎴愬姛"):R.fail("鍏嬮殕鐮佹淇℃伅澶辫触锛�");
+ }
+
+ /**
+ * 鏀瑰彉鐮佹涓埗鍒嗙被鐮佹鍜屽瓙鍒嗙被鐮佹涔嬮棿鐨勫叧鑱攐id涓烘柊鐨刼id,骞朵笖涓嶇牬鍧忓垎绫荤爜鍊肩殑鍏宠仈鍏崇郴
+ * @param basicSecs
+ * @return
+ * @throws ServerException
+ */
+ @Override
+ public boolean changeParentOidAssnOid(List<CodeBasicSec> basicSecs) throws ServerException {
+ Map<String, List<CodeClassifyValue>> codeClassValues = new HashMap<>();
+ List<CodeClassifyValue> codeClassifyDOValues = new ArrayList<>();
+ HashMap<String, String> oidMap = new HashMap<>();
+ boolean resClone = false;
+ try {
+ // 閬嶅巻瀵硅薄鏁扮粍锛屼负姣忎釜瀵硅薄鐢熸垚鏂扮殑oid锛屽苟灏嗗師濮媜id鍜屾柊oid鐨勬槧灏勫叧绯诲瓨鍌ㄥ埌Map涓�
+ for (CodeBasicSec obj : basicSecs) {
+ String originalOid = obj.getOid();
+ String newOid = VciBaseUtil.getPk();
+ oidMap.put(originalOid, newOid);
+ }
+ // 閬嶅巻瀵硅薄鏁扮粍锛屾洿鏂版瘡涓璞$殑oid鍜宑odeClassifySecOid灞炴�у��
+ for (CodeBasicSec obj : basicSecs) {
+ String originalOid = obj.getOid();
+ String newOid = oidMap.get(originalOid);
+ // 鏂扮殑oid鍏宠仈瑕佸厠闅嗙爜鍊�
+ codeClassValues.put(newOid,codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query()
+ .lambda().eq(CodeClassifyValue::getCodeClassifySecOid, originalOid)));
+ obj.setOid(newOid);
+ String originalParentClassifyValueOid = obj.getParentClassifySecOid();
+ String newParentClassifyValueOid = oidMap.get(originalParentClassifyValueOid);
+ obj.setParentClassifySecOid(newParentClassifyValueOid);
+ }
+ codeClassValues.forEach((key, value) -> {
+ value.stream().forEach(item -> {
+ DefaultAttrAssimtUtil.updateDefaultAttrAssimt(item);
+ item.setCodeClassifySecOid(key);
+ codeClassifyDOValues.add(item);
+ });
+ });
+ resClone = codeClassifyValueService.cloneCodeClassifyVaue(codeClassifyDOValues);
+ }catch (Exception e){
+ throw new ServerException("鐖跺垎绫荤爜娈靛拰瀛愬垎绫荤爜娈礳lone杞崲oid鏃跺嚭閿欙細"+e.getCause());
+ }
+ return resClone;
}
/**
@@ -915,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);
@@ -959,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);
//鎸夋祦姘翠緷璧栭『搴忥紝澶勭悊娴佹按渚濊禆鐮佹鐨勫��
@@ -1017,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