From b46cf401da847d7cca6269c6b2ffb04f6f72691a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期日, 14 五月 2023 03:57:37 +0800
Subject: [PATCH] 新增应用码段下的参照配置界面,以及代码整合

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java |  203 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 165 insertions(+), 38 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 cd84de8..ed02a92 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,6 +2,7 @@
 
 import com.alibaba.cloud.commons.lang.StringUtils;
 import com.alibaba.fastjson.JSONObject;
+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;
@@ -10,29 +11,34 @@
 import com.vci.ubcs.code.entity.CodeBasicSec;
 import com.vci.ubcs.code.entity.CodeClassifyValue;
 import com.vci.ubcs.code.entity.CodeFixedValue;
-import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
+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.service.ICodeBasicSecService;
 import com.vci.ubcs.code.service.ICodeClassifyValueService;
+import com.vci.ubcs.code.service.ICodeFixedValueService;
 import com.vci.ubcs.code.service.ICodeRuleService;
 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.wrapper.CodeBasicSecWrapper;
-import com.vci.ubcs.com.vci.starter.exception.VciBaseException;
-import com.vci.ubcs.com.vci.starter.revision.service.RevisionModelUtil;
-import com.vci.ubcs.com.vci.starter.web.enumpck.OsCodeFillTypeEnum;
-import com.vci.ubcs.com.vci.starter.web.pagemodel.KeyValue;
-import com.vci.ubcs.com.vci.starter.web.pagemodel.UIFormReferVO;
-import com.vci.ubcs.com.vci.starter.web.util.BeanUtilForVCI;
-import com.vci.ubcs.com.vci.starter.web.util.VciBaseUtil;
-import com.vci.ubcs.com.vci.starter.web.util.WebUtil;
-import com.vci.ubcs.omd.entity.DictBizM;
-import com.vci.ubcs.omd.feign.IDictBizClient;
+import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.web.enumpck.OsCodeFillTypeEnum;
+import com.vci.ubcs.starter.web.pagemodel.KeyValue;
+import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO;
+import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+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.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 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;
@@ -42,7 +48,7 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
+import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*;
 
 /**
  * 鐮佹鍩虹淇℃伅鏈嶅姟鎺ュ彛
@@ -80,6 +86,12 @@
 
 	@Resource
 	private IDictBizClient iDictBizClient;
+
+	/**
+	 * 鍥哄畾鐮佹鐨勭爜鍊肩殑鏈嶅姟
+	 */
+	@Resource
+	private ICodeFixedValueService fixedValueService;
 
 	/**
 	 * 涓婂眰鍒嗙被鐮佹鐨勫睘鎬у悕绉�
@@ -159,8 +171,8 @@
 	 */
 	@Override
 	public KeyValue checkAttrNullableBySecType(CodeBasicSecDTO codeBasicSecDTO) {
-		VciBaseUtil.alertNotNull(codeBasicSecDTO.getSectype(), "鐮佹鍒嗙被");
-		String secType = codeBasicSecDTO.getSectype();
+		VciBaseUtil.alertNotNull(codeBasicSecDTO.getSecType(), "鐮佹鍒嗙被");
+		String secType = codeBasicSecDTO.getSecType();
 		HashMap<String, String> attrMap = JSONObject.parseObject(JSONObject.toJSONString(codeBasicSecDTO), HashMap.class);
 		Map<String, String> notNullableAttr = getNotNullableAttr(secType);
 		if (notNullableAttr == null) {
@@ -199,10 +211,17 @@
 		if (! "success".equals(attrKv.getKey())){
 			throw new VciBaseException(attrKv.getValue() + "涓嶈兘涓虹┖");
 		}
-
 		//灏咲TO杞崲涓篋O
 		CodeBasicSec codeBasicSecDO = new CodeBasicSec();
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDTO, codeBasicSecDO);
+		//text杞崲
+		codeBasicSecDO.setSecTypeText(CodeSecTypeEnum.getTextByValue(codeBasicSecDTO.getSecType()));
+		codeBasicSecDO.setCodeLevelTypeText(CodeLevelTypeEnum.getTextByValue(codeBasicSecDTO.getCodeLevelType()));
+		codeBasicSecDO.setCodeSecLengthTypeText(CodeSecLengthTypeEnum.getTextByValue(codeBasicSecDTO.getCodeSecLengthType()));
+		codeBasicSecDO.setValueCutTypeText(CodeCutTypeEnum.getValueByText(codeBasicSecDTO.getValueCutType()));
+		codeBasicSecDO.setCodeGetValueTypeText(CodeGetValueTypeEnum.getValueByText(codeBasicSecDTO.getCodeGetValueType()));
+		//濉厖涓�浜涢粯璁ゅ��
+		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeBasicSecDO,MdmBtmTypeConstant.CODE_BASIC_SEC);
 		//鎺掑簭鍙凤紝榛樿绛変簬褰撳墠宸叉湁鐨勬暟閲忓姞1
 		Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query()
 			.lambda()
@@ -232,7 +251,7 @@
 		boolean resBoolean = codeBasicSecMapper.insert(codeBasicSecDO) > 0;
 		//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 		if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
-			DictBizM dictBiz = new DictBizM();
+			DictBiz dictBiz = new DictBiz();
 			dictBiz.setCode(MdmBtmTypeConstant.CODE_BASIC_SEC);
 			dictBiz.setDictKey("codefileseparator");
 			dictBiz.setDictValue(codeBasicSecDO.getCodeFillSeparator());
@@ -260,6 +279,7 @@
 		}
 		//灏咲TO杞崲涓篋O
 		CodeBasicSec codeBasicSecDO = selectByOid(codeBasicSecDTO.getOid());
+		DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeBasicSecDO);
 		boolean status = codeRuleService.checkEditDelStatus(codeRuleService.getObjectByOid(codeBasicSecDO.getPkCodeRule()).getLcStatus());
 		boolean resBoolean;
 		if (!status){
@@ -287,7 +307,8 @@
 			resBoolean = codeBasicSecMapper.updateById(codeBasicSecDO)>0;
 			//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 			if(StringUtils.isNotBlank(codeBasicSecDO.getCodeFillSeparator())){
-				DictBizM dictBiz = new DictBizM();
+				//杩欏効鐩墠闇�瑕佹敼 2023/4/24
+				DictBiz dictBiz = new DictBiz();
 				dictBiz.setCode(MdmBtmTypeConstant.CODE_BASIC_SEC);
 				dictBiz.setDictKey("codefileseparator");
 				dictBiz.setDictValue(codeBasicSecDO.getCodeFillSeparator());
@@ -350,9 +371,46 @@
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
 	 */
 	@Override
-	public boolean deleteCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
+	public R deleteCodeBasicSec(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
 		VciBaseUtil.alertNotNull(codeBasicSecDTO, "鐮佹鍩虹淇℃伅鏁版嵁瀵硅薄", codeBasicSecDTO.getOid(), "鐮佹鍩虹淇℃伅鐨勪富閿�");
-		return this.codeBasicSecMapper.deleteById(codeBasicSecDTO.getOid())>0;
+		return this.deleteCodeBasicSecByPrimaryKey(codeBasicSecDTO.getOid());
+	}
+
+	/**
+	 * 涓婚敭鍒犻櫎鐮佹鍩虹淇℃伅
+	 *
+	 * @param oid 鐮佹鍩虹淇℃伅涓婚敭
+	 * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐�
+	 * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯�
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R deleteCodeBasicSecByPrimaryKey(String oid) throws VciBaseException {
+		CodeBasicSec codeBasicSecDO = selectByOid(oid);
+		boolean isLinked = checkIsLinked(codeBasicSecDO.getPkCodeRule(), oid);
+		if (isLinked) {
+			return R.fail("缂栫爜瑙勫垯宸茶寮曠敤锛屼笉鍏佽缂栬緫鎴栧垹闄�");
+		}
+		//鎵ц鍒犻櫎鎿嶄綔
+		boolean eftDeleteBasic = codeBasicSecMapper.deleteById(oid) > 0;
+		if (CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equals(codeBasicSecDO.getSecType())){
+			List<CodeFixedValue> fixedValueDOS = fixedValueMapper.selectList(Wrappers.<CodeFixedValue>query()
+				.lambda().eq(CodeFixedValue::getCodeFixedSecOid,codeBasicSecDO.getOid())
+			);
+			if(!CollectionUtils.isEmpty(fixedValueDOS)){
+				fixedValueMapper.deleteBatchIds(fixedValueDOS.stream().map(CodeFixedValue::getOid).collect(Collectors.toSet()));
+			}
+		}
+		if (CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue().equals(codeBasicSecDO.getSecType())){
+			List<CodeClassifyValue> classifyValueDOS = codeClassifyValueMapper.selectList(Wrappers.<CodeClassifyValue>query()
+				.lambda().eq(CodeClassifyValue::getCodeClassifySecOid,codeBasicSecDO.getOid())
+			);
+			if(!CollectionUtils.isEmpty(classifyValueDOS)) {
+				codeClassifyValueMapper.deleteBatchIds(classifyValueDOS.stream().map(CodeClassifyValue::getOid).collect(Collectors.toSet()));
+			}
+		}
+
+		return eftDeleteBasic ? R.success(DELETE_SUCCESS) : R.fail(DELETE_FAIL);
 	}
 
 	/**
@@ -405,7 +463,7 @@
 		if(Func.isEmpty(codeBasicSecVO.getPkCodeRule()) || Func.isBlank(codeBasicSecVO.getPkCodeRule())){
 			return null;
 		}
-		codeBasicSecVO.setSectype(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue());
+		codeBasicSecVO.setSecType(CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue());
 		return refDataGridCodeBasicSec(page,codeBasicSecVO);
 	}
 
@@ -484,9 +542,7 @@
 	@Transactional(rollbackFor = Exception.class)
 	public boolean upOrderNum(String oid) {
 		CodeBasicSec secDO = selectByOid(oid);
-		boolean resUpBoolean = false;
-		boolean	resDownBoolean = false;
-		if(secDO.getOrderNum() >1){
+		if(secDO.getOrderNum() > 1){
 			//绛変簬1鐨勬椂鍊欎笉鑳戒笂绉讳簡
 			//鎵炬瘮鑷繁灏忕殑
 			List<CodeBasicSec> lastSecDOs = codeBasicSecMapper.selectList(Wrappers.<CodeBasicSec>query()
@@ -495,18 +551,17 @@
 			);
 			if(!CollectionUtils.isEmpty(lastSecDOs)){
 				CodeBasicSec lastSec = lastSecDOs.get(0);
-				resDownBoolean = codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
+				codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
 					.lambda().set(CodeBasicSec::getOrderNum, lastSec.getOrderNum() + 1)
 					.eq(CodeBasicSec::getOid, lastSec.getOid())
-				) > 0;
+				);
 			}
-			secDO.setOrderNum(secDO.getOrderNum()-1);
-			resUpBoolean = codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
+			codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
 				.lambda().set(CodeBasicSec::getOrderNum, secDO.getOrderNum() - 1)
 				.eq(CodeBasicSec::getOid, secDO.getOid())
-			) > 0;
+			);
 		}
-		return resDownBoolean && resUpBoolean;
+		return true;
 	}
 
 	/**
@@ -518,29 +573,28 @@
 	@Transactional(rollbackFor = Exception.class)
 	public boolean downOrderNum(String oid) {
 		CodeBasicSec secDO = selectByOid(oid);
-		boolean resUpBoolean = false;
-		boolean	resDownBoolean = false;
 		Long total = codeBasicSecMapper.selectCount(Wrappers.<CodeBasicSec>query()
 			.lambda().eq(CodeBasicSec::getPkCodeRule,secDO.getPkCodeRule())
 		);
-		if(secDO.getOrderNum()  < total){
+		if(secDO.getOrderNum() < total){
 			//灏忎簬鎬绘暟鐨勬椂鍊欐墠涓嬬Щ
 			List<CodeBasicSec> lastSecDOs = codeBasicSecMapper.selectList(Wrappers.<CodeBasicSec>query()
-				.lambda().eq(CodeBasicSec::getOrderNum,String.valueOf(secDO.getOrderNum()+1))
+				.lambda().eq(CodeBasicSec::getOrderNum,secDO.getOrderNum()+1)
+				.eq(CodeBasicSec::getPkCodeRule,secDO.getPkCodeRule())
 			);
 			if(!CollectionUtils.isEmpty(lastSecDOs)){
 				CodeBasicSec lastSec = lastSecDOs.get(0);
-				resUpBoolean = codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
+				codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
 					.lambda().set(CodeBasicSec::getOrderNum, lastSec.getOrderNum() - 1)
 					.eq(CodeBasicSec::getOid, lastSec.getOid())
-				) > 0;
+				);
 			}
-			resDownBoolean = codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
+			codeBasicSecMapper.update(null, Wrappers.<CodeBasicSec>update()
 				.lambda().set(CodeBasicSec::getOrderNum, secDO.getOrderNum() + 1)
 				.eq(CodeBasicSec::getOid, secDO.getOid())
-			) > 0;
+			);
 		}
-		return resDownBoolean && resUpBoolean;
+		return true;
 	}
 
 	/**
@@ -621,4 +675,77 @@
 		return codeBasicSecDO;
 	}
 
+
+	/**
+	 * 浣跨敤瑙勫垯鐨勪富閿幏鍙栧搴旂殑鐮佹鍐呭
+	 *
+	 * @param ruleOid 瑙勫垯鐨勫唴瀹�
+	 * @return 鐮佹鐨勫唴瀹�
+	 */
+	@Override
+	public List<CodeBasicSecVO> listCodeBasicSecByRuleOid(String ruleOid) {
+		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.orderByAsc("ordernum");
+		List<CodeBasicSec> secDOList = codeBasicSecMapper.selectList(wrapper);//.selectByCondition(conditionMap, pageHelper);
+		return codeBasicSecDO2VOs(secDOList,true);
+	}
+
+	/**
+	 * 鎵归噺鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 *
+	 * @param codeBasicSecDOs 鏁版嵁瀵硅薄鍒楄〃
+	 * @param hasFixedValue 鏄惁鏈夊浐瀹氬��
+	 * @return 鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呬笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<CodeBasicSecVO> codeBasicSecDO2VOs(Collection<CodeBasicSec> codeBasicSecDOs, boolean hasFixedValue) throws VciBaseException {
+		List<CodeBasicSecVO> voList = new ArrayList<CodeBasicSecVO>();
+		if (!CollectionUtils.isEmpty(codeBasicSecDOs)) {
+			for (CodeBasicSec s : codeBasicSecDOs) {
+				CodeBasicSecVO vo = codeBasicSecDO2VO(s);
+				if (vo != null) {
+					voList.add(vo);
+				}
+			}
+		}
+		if(hasFixedValue && !CollectionUtils.isEmpty(voList)){
+			List<CodeBasicSecVO> fixedSecVOList = voList.stream().filter(s -> CodeSecTypeEnum.CODE_FIXED_SEC.getValue().equalsIgnoreCase(s.getSecType())).collect(Collectors.toList());
+			if(!CollectionUtils.isEmpty(fixedSecVOList)){
+				//鏌ヨ鍥哄畾鐮佺殑鐮佸��
+				Map<String, List<CodeFixedValueVO>> secValueMap = fixedValueService.listCodeFixedValueBySecOids(fixedSecVOList.stream().map(CodeBasicSecVO::getOid).collect(Collectors.toList()));
+				voList.stream().forEach(vo->{
+					vo.setFixedValueVOList(secValueMap.getOrDefault(vo.getOid(),null));
+				});
+			}
+		}
+		return voList;
+	}
+
+	/**
+	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
+	 *
+	 * @param codeBasicSecDO 鏁版嵁瀵硅薄
+	 * @return 鏄剧ず瀵硅薄
+	 * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public CodeBasicSecVO codeBasicSecDO2VO(CodeBasicSec codeBasicSecDO) throws VciBaseException {
+		CodeBasicSecVO vo = new CodeBasicSecVO();
+		if (codeBasicSecDO != null) {
+			BeanUtilForVCI.copyPropertiesIgnoreCase(codeBasicSecDO, vo);
+			//濡傛灉鏈塴cstatus鐨勭被鐨勮瘽
+			if (true) {
+				//vo.setLcStatusText({lcStatusFullClassName}.getTextByValue(vo.getLcStatus()));
+			}
+		}
+		return vo;
+	}
 }

--
Gitblit v1.9.3