From 5cc480f1c323058e99b56ca0d05fed031c24acd8 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 13 十月 2023 11:25:00 +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 | 337 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 290 insertions(+), 47 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 5a5262d..a415202 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,58 +2,63 @@
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.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.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;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
+import java.rmi.ServerException;
import java.util.*;
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,9 +107,15 @@
private ICodeFixedValueService fixedValueService;
/**
+ * 娴佹按鍙风殑鐩稿叧鐨勪俊鎭�
+ */
+ @Resource
+ private CodeSerialValueMapper serialValueMapper;
+
+ /**
* 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉�
*/
- private static final String PARENT_FIELD_NAME = "parentclassifysecoid";
+ private static final String PARENT_FIELD_NAME = "parentClassifySecOid";
/**
* 涓婄骇鍒嗙被鐮佸�肩殑灞炴�у悕绉�
@@ -160,9 +171,11 @@
// 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈�
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;
+ 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;
+ }
}
// 4銆佸啀鍒犻櫎鍒嗙被鐮佹
List<CodeBasicSec> classifySecList = deleteList.stream().filter(sec -> {
@@ -172,9 +185,11 @@
// 灏嗚浣滀负鍒犻櫎鏉′欢鐨勫�兼斁鍦ㄤ竴涓泦鍚堥噷闈�
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;
+ List<CodeClassifyValue> codeClassifyValues = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query().lambda().in(CodeClassifyValue::getCodeClassifySecOid,classifySecOidSet));
+ if(!codeClassifyValues.isEmpty()){
+ // 鏍规嵁鏌ヨ鍑烘潵鐨勪富閿甶d鎵ц鍥哄畾鐮佹鎵ц鍒犻櫎
+ deletFlag = codeClassifyValueMapper.deleteBatchIds(codeClassifyValues.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()))>0;
+ }
}
return deletFlag;
}
@@ -237,7 +252,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()
@@ -267,8 +282,8 @@
throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝鍙傜収閰嶇疆鐨勫唴瀹圭殑鏍煎紡涓嶆纭�,",new String[0],e);
}
// 鍒ゆ柇鏄惁涓哄紩鐢ㄧ爜娈碉紝濡傛灉鏄簲鐢ㄧ爜娈电殑璇濓紝涓轰簡閫傞厤鍓嶇缁勪欢锛岃繖閲岃瀵硅〃杩涜澶勭悊涓�涓嬶紝鎸夌収浠ュ墠鐨勫弬鐓ф牸寮忚繘琛岃浆鎹�
- codeBasicSecDO.setReferValueInfo(referConfigTOUIUiTable(codeReferConfigVO));
- if(codeReferConfigVO.getIsPersistence()=="true"){
+ codeBasicSecDO.setReferValueInfo(referConfigToUIUiTable(codeReferConfigVO));
+ if(Func.toBoolean(codeReferConfigVO.getIsPersistence())){
codeReferConfigService.insert(codeReferConfigVO);
}
}
@@ -291,7 +306,7 @@
* @param codeReferConfig
* @return
*/
- private String referConfigTOUIUiTable(CodeReferConfigVO codeReferConfig){
+ private String referConfigToUIUiTable(CodeReferConfigVO codeReferConfig){
// 鎷疯礉涓轰互鍓嶇殑鑰佸璞�
UIReferConfigFormVO uiFormReferVO = new UIReferConfigFormVO();
BeanUtil.copy(codeReferConfig,uiFormReferVO);
@@ -303,14 +318,17 @@
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);
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);
}
});
}
@@ -320,11 +338,14 @@
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()){
codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{
- whereMap.put(srch.getFilterField()+"_"+srch.getFilterType(),srch.getFilterValue());
+ whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue());
});
}
uiFormReferVO.setWhere(whereMap);
@@ -351,6 +372,7 @@
DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeBasicSecDO);
boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecDO.getPkCodeRule()).getLcStatus());
boolean resBoolean;
+ CodeReferConfigVO codeReferConfigVO = null;
if (!status){
//杩斿洖閿欒淇℃伅
throw new VciBaseException("缂栫爜瑙勫垯涓嶅厑璁哥紪杈戞垨鍒犻櫎锛�");
@@ -363,16 +385,31 @@
}
//寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘
if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
- if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
- throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆 鐨勫唴瀹�");
+ if(StringUtils.isBlank(codeBasicSecDTO.getReferConfig())){
+ throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐欏弬鐓ч厤缃殑鍐呭");
}
try{
- JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
+ // JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
+ codeReferConfigVO = JSONObject.parseObject(codeBasicSecDTO.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())){
@@ -532,7 +569,7 @@
return null;
}
conditionMap.put("secType",(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue()));
- return refDataGridCodeBasicSec(query.setAscs("ordernum"),conditionMap);
+ return refDataGridCodeBasicSec(query.setAscs("orderNum"),conditionMap);
}
/**
@@ -544,7 +581,7 @@
*/
@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("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
@@ -554,20 +591,102 @@
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());
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;
}
/**
@@ -746,7 +865,6 @@
return codeBasicSecDO;
}
-
/**
* 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭
*
@@ -758,14 +876,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);
}
@@ -854,7 +968,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) {
@@ -863,4 +980,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