From 53d628adb1082d7df51dc1a2151505f17b1de9a2 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 11 九月 2023 14:59:07 +0800
Subject: [PATCH] bug修改,规则克隆接口修改

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  136 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 117 insertions(+), 19 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 6b46856..b813fe5 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
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.vci.ubcs.code.applyjtcodeservice.vo.BaseModelVO;
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
 import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
@@ -20,6 +21,7 @@
 import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
 import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
 import com.vci.ubcs.code.vo.pagemodel.*;
+import com.vci.ubcs.code.wrapper.BaseMdodelWrapper;
 import com.vci.ubcs.flow.core.dto.FlowStatusDTO;
 import com.vci.ubcs.flow.core.feign.IMDMIFlowAttrClient;
 import com.vci.ubcs.flow.core.vo.ProcessStageAttrVO;
@@ -36,6 +38,7 @@
 import com.vci.ubcs.starter.revision.model.TreeQueryObject;
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
+import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
 import com.vci.ubcs.starter.util.UBCSSqlKeyword;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.constant.RegExpConstant;
@@ -559,7 +562,9 @@
 		} else {
             //璇存槑鏄嚜琛岄厤缃殑
             //鍓嶇蹇呴』瑕佷紶閫掑皬鍐欑殑灞炴��
-            value = orderDTO.getData().getOrDefault(attrId, "");
+			String orDefault = orderDTO.getData().getOrDefault(attrId, "");
+			value = Func.isBlank(orDefault) ? orderDTO.getData()
+				.getOrDefault(attrId.toUpperCase(Locale.ROOT), ""):orDefault;
         }
         return value;
     }
@@ -692,6 +697,7 @@
 	 *
 	 * @param orderDTO         缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
 	 */
+	@Override
 	public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) {
 		List<Map>dataList=new ArrayList<>();
 		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -947,7 +953,7 @@
             return (BaseModel) valueWrapper.get();
         } catch (Exception e) {
             logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄", e);
-            throw new VciBaseException("initBtmError", new String[]{btmName});
+            throw new ServiceException("initBtmError:"+"涓氬姟绫诲瀷锛�"+btmName+":"+e.getMessage());
         }
     }
 
@@ -1325,6 +1331,7 @@
         }
         fieldVO.setOptionJsMap(eventJsMap);
         fieldVO.setStyle(attrVO.getTableDisplayStyle());
+        fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag());
         //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
         fieldVO.setDateFormate(attrVO.getCodeDateFormat());
         return fieldVO;
@@ -2466,10 +2473,12 @@
             conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
         } else {
 //			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
-
+			List<BtmTypeVO> classifyData = btmTypeClient.selectByIdCollection(Collections.singletonList(MdmBtmTypeConstant.CODE_CLASSIFY)).getData();
+			if(Func.isEmpty(classifyData)){
+				throw new ServiceException("涓氬姟绫诲瀷涓嫳鏂囧悕绉板拰鏌ヨ鏉′欢閰嶇疆涓嶄竴鑷达紝璇蜂慨鏀逛笟鍔$被鍨嬩腑鍒嗙被琛ㄨ嫳鏂囧悕绉颁负"+MdmBtmTypeConstant.CODE_CLASSIFY);
+			}
             conditionMap.put("t." + CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " +
-                    btmTypeClient.selectByIdCollection(Collections.singletonList("classify"))
-                            .getData().get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant
+				classifyData.get(0).getTableName() + " where lcstatus='" + FrameWorkDefaultValueConstant
                     .FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid +
                     "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
         }
@@ -2732,12 +2741,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);
+		codeRuleVO.setIsShowHideStatus(hasAllReadOnlyType ? "readOnly":(hasAllInputType ? "input":"readAndInput"));
+		return codeRuleVO;
+	}
 
     /**
      * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
@@ -3463,7 +3562,6 @@
         return baseModels;
     }
 
-
     /**
      * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞�
      *
@@ -3580,7 +3678,7 @@
      * @return 鍒楄〃鏁版嵁
      */
     @Override
-    public IPage<BaseModel> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException {
+    public IPage<BaseModelVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException {
         //checkReferConfig(referConfigVO);
         //浣跨敤涓氬姟绫诲瀷鏌ヨ
         R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(referConfigVO.getReferType());
@@ -3661,27 +3759,28 @@
                             ZonedDateTime zdt = localDateTime.atZone(zoneId);
                             Date date = Date.from(zdt.toInstant());
                             setter.invoke(obj, date);
-                            map.remove(property.getName().toUpperCase());
+                            //map.remove(property.getName().toUpperCase());
                         } //oracle鐨勬暟瀛椾负BigDecimal鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚Integer锛屽惁鍒欏皢鎶ラ敊
                         else if (map.get(property.getName().toUpperCase()) instanceof BigDecimal
                                 && ("Integer").equals(setter.getParameterTypes()[0].getSimpleName())) {
                             setter.invoke(obj, ((BigDecimal) map.get(property.getName().toUpperCase())).intValue());
-                            map.remove(property.getName().toUpperCase());
+                            //map.remove(property.getName().toUpperCase());
                         } else if (map.get(property.getName().toUpperCase()) != null) {
 							if(setter.getParameterTypes()[0].getSimpleName().equals("String")){
 								setter.invoke(obj, map.get(property.getName().toUpperCase()) == null ? null:String.valueOf(map.get(property.getName().toUpperCase())));
 							}else{
 								setter.invoke(obj, map.get(property.getName().toUpperCase()));
 							}
-                            map.remove(property.getName().toUpperCase());
+                            //map.remove(property.getName().toUpperCase());
                         }
                     }
                 }
                 for (Object key : map.keySet()) {
                     map.put(key, String.valueOf(map.get(key)));
                 }
-
-                ((BaseModel) obj).setData(map);
+				Map<String, String> newMap = new HashMap<>();
+				map.forEach((key, value) -> newMap.put(String.valueOf(key).toLowerCase(), String.valueOf(value)));
+				((BaseModel) obj).setData(newMap);
                 baseModels.add((BaseModel) obj);
             }
         } catch (Exception e) {
@@ -3692,10 +3791,10 @@
                 + "and lastv = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 "
                 + lcstatusSql + namesql + codesql
         );
-        IPage<BaseModel> objectDataGrid = new Page<>();
+        IPage<BaseModelVO> objectDataGrid = new Page<>();
         objectDataGrid.setPages(baseQueryObject.getPage());
         objectDataGrid.setCurrent(baseQueryObject.getPage());
-        objectDataGrid.setRecords(baseModels);
+        objectDataGrid.setRecords(BaseMdodelWrapper.build().listVO(baseModels));
         objectDataGrid.setSize(baseQueryObject.getLimit());
         objectDataGrid.setTotal(total);
         return objectDataGrid;
@@ -3820,7 +3919,6 @@
         treeWrapperOptions.setParentOid(queryObject.getParentOid());
         return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null);
     }
-
 
     @Override
     public boolean checkUnAttrUnEdit(String attrName) {

--
Gitblit v1.9.3