From c84991603548ca07bdcb589bf61ab230a6fb9f3e Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 07 九月 2023 13:57:52 +0800
Subject: [PATCH] getCodeRuleByClassifyOid接口修改

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |   95 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 92 insertions(+), 3 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 721683a..825b051 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2739,13 +2739,102 @@
         String codeRuleOid = classifyVO.getCodeRuleOid();
         if (StringUtils.isBlank(codeRuleOid)) {
             //寰�涓婃壘
-            CodeClassifyFullInfoBO fullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
-            return getCodeRuleByClassifyFullInfo(fullInfo);
+			CodeRuleVO classifyFullInfoCodeRule = getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid));
+			return toCodeValueApplyStatus(classifyFullInfoCodeRule);
         }
         //鏌ヨ缂栫爜瑙勫垯
-        return ruleService.getObjectHasSecByOid(codeRuleOid);
+		CodeRuleVO objectHasSecByOid = ruleService.getObjectHasSecByOid(codeRuleOid);
+		return toCodeValueApplyStatus(objectHasSecByOid);
     }
 
+	/**
+	 * 缂栫爜鐢宠琛ㄥ崟锛岄殣钘忋�佸彲杈撱�佸彧璇昏浆鎹�
+	 * @param codeRuleVO
+	 * @return
+	 */
+	private CodeRuleVO toCodeValueApplyStatus(CodeRuleVO codeRuleVO){
+		if(codeRuleVO.getSecVOList().isEmpty()){
+			return codeRuleVO;
+		}
+		// 鍙緭鐮佹绫诲瀷
+		List<String> inputTypes = Arrays.asList(
+			CodeSecTypeEnum.CODE_FIXED_SEC.getValue(),
+			CodeSecTypeEnum.CODE_VARIABLE_SEC.getValue(),
+			CodeSecTypeEnum.CODE_CLASSIFY_SEC.getValue(),
+			CodeSecTypeEnum.CODE_REFER_SEC.getValue()
+		);
+		// 鍙鐮佹绫诲瀷
+		List<String> readOnlyTypes = Arrays.asList(
+			CodeSecTypeEnum.CODE_LEVEL_SEC.getValue(),
+			CodeSecTypeEnum.CODE_ATTR_SEC.getValue(),
+			CodeSecTypeEnum.CODE_DATE_SEC.getValue()
+		);
+		// 闅愯棌鐮佹绫诲瀷
+		/*List<String> hideType = Arrays.asList(
+			CodeSecTypeEnum.CODE_SERIAL_SEC.getValue()
+		);*/
+		// 褰撳墠瑙勫垯鐨勬墍鏈夌被鍨嬬爜娈�
+		List<String> secTypeList = codeRuleVO.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.toList());
+		// 鎯呭喌涓� 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷
+		boolean hasAllReadOnlyType =secTypeList.stream().allMatch(item -> readOnlyTypes.stream().anyMatch(item1-> item.equals(item1)));
+		// 鍏ㄩ儴鏄彧璇荤殑鐮佹绫诲瀷
+		if(hasAllReadOnlyType){
+			List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+				secVO.setCodeValueApplyStatus(3);
+				// 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+				if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+					try {
+						secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+					}catch (Exception e){
+						throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+					}
+				}
+				return secVO;
+			}).collect(Collectors.toList());
+			codeRuleVO.setSecVOList(basicSecVOS);
+			return codeRuleVO;
+		}
+		// 鎯呭喌浜� 鍏ㄩ儴閮芥槸鍙緭鍏ョ被鍨嬬殑
+		boolean hasAllInputType = secTypeList.stream().allMatch(item -> inputTypes.stream().anyMatch(item1-> item.equals(item1)));
+		if(hasAllInputType){
+			List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+				secVO.setCodeValueApplyStatus(1);
+				// 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+				if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+					try {
+						secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+					}catch (Exception e){
+						throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+					}
+				}
+				return secVO;
+			}).collect(Collectors.toList());
+			codeRuleVO.setSecVOList(basicSecVOS);
+			return codeRuleVO;
+		}
+		// 鎯呭喌涓夊寘鍚汉涓洪�夋嫨鐨勭爜娈碉紝鍙堟湁鍙绫诲瀷鐮佹鐨勶紝鎵�鏈夌爜娈甸兘瑕佹樉绀哄嚭鏉ワ紝鍙緭璁剧疆涓�1锛屽彧璇昏缃负2锛岄殣钘忚缃负3
+		List<CodeBasicSecVO> basicSecVOS = codeRuleVO.getSecVOList().stream().map(secVO -> {
+			if(inputTypes.contains(secVO.getSecType())){
+				secVO.setCodeValueApplyStatus(1);
+			}else if(readOnlyTypes.contains(secVO.getSecType())){
+				secVO.setCodeValueApplyStatus(2);
+			}else{
+				secVO.setCodeValueApplyStatus(3);
+			}
+			// 鏃ユ湡鐮佹璁剧疆榛樿鍊�
+			if (secVO.getSecType().equals(CodeSecTypeEnum.CODE_DATE_SEC.getValue())) {
+				try {
+					secVO.setCodeDateFormatStr(Func.format(new Date(),secVO.getCodeDateFormatStr()));
+				}catch (Exception e){
+					throw new ServiceException("鏃ユ湡鐮佹鏃ユ湡鏍煎紡閰嶇疆鏈夎锛屽鑷磋浆鎹㈠嚭閿欙細"+e.getMessage());
+				}
+			}
+			return secVO;
+		}).collect(Collectors.toList());
+		codeRuleVO.setSecVOList(basicSecVOS);
+		return codeRuleVO;
+	}
+
     /**
      * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
      *

--
Gitblit v1.9.3