From 008c8cb7d9f55341374e37310ee399143d33e902 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 08 九月 2023 22:16:02 +0800
Subject: [PATCH] bug修改,前端代码打包

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  301 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 230 insertions(+), 71 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 37fd37a..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,8 @@
 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;
 import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
@@ -35,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;
@@ -422,6 +426,9 @@
 		cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
 		cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
 		cbo.setTenantId(AuthUtil.getTenantId());
+		if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
+			cbo.setLcStatus(StringUtils.isNotBlank(orderDTO.getLcStatus())?orderDTO.getLcStatus():orderDTO.getData().get("lcStatus"));
+		}
 //		//TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
         cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
 //		//end -- modify by lihang @20220407
@@ -549,10 +556,15 @@
         String value = null;
         if (VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(attrId)) {
             value = WebUtil.getStringValueFromObject(WebUtil.getValueFromField(WebUtil.getFieldForObject(attrId, orderDTO.getClass()).getName(), orderDTO));
-        } else {
+        	if(StringUtils.isBlank(value)){
+				value = orderDTO.getData().getOrDefault(attrId, "");
+			}
+		} 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;
     }
@@ -646,11 +658,10 @@
             }
             wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
         });
-		conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'");
 
         //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
-
         if (!CollectionUtils.isEmpty(conditionMap)) {
+			conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'");
 //			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
             R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
 //				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
@@ -659,7 +670,11 @@
             }
             final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "};
             conditionMap.forEach((key, value) -> {
-                sql[0] += " and " + key + " = " + value;
+				if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)) {
+					sql[0] += " and " + key + " is null";
+				}else{
+					sql[0] += " and " + key + " = " + value;
+				}
             });
             if (StringUtils.isNotBlank(orderDTO.getOid())) {
                 //淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
@@ -676,6 +691,67 @@
             }
         }
     }
+
+	/**
+	 * 鏍¢獙鍏抽敭灞炴��
+	 *
+	 * @param orderDTO         缂栫爜鐢宠鐨勭浉鍏崇殑淇℃伅
+	 */
+	@Override
+	public List<Map> checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) {
+		List<Map>dataList=new ArrayList<>();
+		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
+		CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+		//鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮�
+		CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo);
+		//娉ㄦ剰鐨勬槸keyRuleVO鍙兘涓虹┖锛岃〃绀轰笉浣跨敤瑙勫垯鎺у埗
+		//鑾峰彇鎵�鏈夌殑鍏抽敭灞炴��
+		Map<String, CodeClassifyTemplateAttrVO> ketAttrMap = templateVO.getAttributes().stream().filter(s -> VciBaseUtil.getBoolean(s.getKeyAttrFlag())).collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+		Map<String, String> conditionMap = new HashMap<>();
+		boolean trimAll = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
+		//鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖
+		boolean trim = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
+		boolean ignoreCase = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorecaseflag());
+		boolean ignoreWidth = keyRuleVO == null ? false : VciBaseUtil.getBoolean(keyRuleVO.getIgnorewidthflag());
+		ketAttrMap.forEach((attrId, attrVO) -> {
+			String value = getValueFromOrderDTO(orderDTO, attrId);
+			if (value == null) {
+				value = "";
+			}
+			wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+		});
+
+		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
+		if (!CollectionUtils.isEmpty(conditionMap)) {
+			conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'");
+//			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
+			R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId()));
+//				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+			if (!listR.isSuccess() || listR.getData().size() == 0) {
+				throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+			}
+			final String[] sql = {"select * from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "};
+			conditionMap.forEach((key, value) -> {
+				sql[0] += " and " + key + " = " + value;
+			});
+			if (StringUtils.isNotBlank(orderDTO.getOid())) {
+				//淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
+				sql[0] += " and oid != '" + orderDTO.getOid() + "'";
+			} else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
+				sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
+			}
+			sql[0] += " and lastR = '1' and lastV = '1' ";
+//			if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) {
+			dataList=commonsMapper.selectBySql(sql[0]);
+			if (!CollectionUtils.isEmpty(dataList)) {
+//				String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
+//				String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
+//				throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs);
+				return dataList;
+			}
+		}
+		return dataList;
+	}
 
     /**
      * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
@@ -696,7 +772,7 @@
         boolean ignoreSpace = trim || trimAll;
         if (StringUtils.isBlank(value)) {
             //涓虹┖鐨勬椂鍊欙紝涓嶈兘鐢≦ueryOperation.ISNULL锛屽钩鍙颁笉鐭ラ亾鍟ユ椂鍊欎笉澶勭悊杩欑浜�
-            conditionMap.put("t." + attrId, "null");
+			conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
         } else {
             if (keyRuleVO != null) {
                 String queryKey = "";
@@ -732,8 +808,12 @@
                 queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
                 conditionMap.put(queryKey, queryValue);
             } else {
-                //涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
-                conditionMap.put("t." + attrId, "'" +value+ "'");
+				if(StringUtils.isNotBlank(value)) {
+					//涓虹┖鐨勬椂鍊欎笉浠h〃涓嶆牎楠岋紝鍙槸涓嶅幓闄ょ浉鍏崇殑淇℃伅
+					conditionMap.put("t." + attrId, "'" + value + "'");
+				}else{
+					conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
+				}
             }
         }
     }
@@ -802,10 +882,6 @@
         } else {
             fullPath = classifyFullInfo.getCurrentClassifyVO().getOid();
         }
-
-//		BeanUtils.
-//		BeanUtils.copyProperties(orderDTO.getData(),cbo);
-//		cbo.setMaterialtype(Short.valueOf("1001"));
 		orderDTO.getData().forEach((key, value) -> {
 			if (!edit || (!checkUnAttrUnEdit(key) &&
 				!VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
@@ -816,9 +892,6 @@
 				}
 			}
 		});
-//		BeanMap beanMap = BeanMap.create(cbo);
-//		beanMap.putAll(orderDTO.getData());
-
         try {
 			Map<String, String> data = new HashMap<>();
             data.put(cbo.getData().containsKey(CODE_CLASSIFY_OID_FIELD.toUpperCase())?CODE_CLASSIFY_OID_FIELD.toUpperCase():CODE_CLASSIFY_OID_FIELD, classifyFullInfo.getCurrentClassifyVO().getOid());
@@ -880,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());
         }
     }
 
@@ -1258,6 +1331,7 @@
         }
         fieldVO.setOptionJsMap(eventJsMap);
         fieldVO.setStyle(attrVO.getTableDisplayStyle());
+        fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag());
         //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
         fieldVO.setDateFormate(attrVO.getCodeDateFormat());
         return fieldVO;
@@ -1300,7 +1374,7 @@
 		uiFormReferVO.setTableConfig(uiTableConfigVO);
 		// 绛涢�夋潯浠�
 		HashMap<String, String> whereMap = new HashMap<>();
-		if(!codeReferConfig.getCodeSrchCondConfigVOS().isEmpty()){
+		if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){
 			codeReferConfig.getCodeSrchCondConfigVOS().stream().forEach(srch->{
 				whereMap.put(srch.getFilterField()+srch.getFilterType(),srch.getFilterValue());
 			});
@@ -2393,16 +2467,18 @@
         if (conditionMap == null) {
             conditionMap = new HashMap<>();
         }
-        //pageHelper.addDefaultDesc("createTime");
-        pageHelper.addDefaultDesc("id");
+        pageHelper.addDefaultDesc("createTime");
+//        pageHelper.addDefaultDesc("id");
         if (!classifyService.checkHasChild(codeClassifyOid)) {
             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 )");
         }
@@ -2448,27 +2524,22 @@
         List<BaseModel> updateList = new ArrayList<>();
         // 搴旇閮芥槸涓�涓垎绫讳笅鐨勪笟鍔℃暟鎹紝鎵剧涓�鏉$殑灏辫
         CodeClassifyFullInfoBO topClassifyFullInfo = classifyService.getClassifyFullInfo(orderDTOList.get(0).getCodeClassifyOid());
-//		Map<String,String> cboOidMap = new HashMap<>();
         if (CollectionUtils.isEmpty(orderDTOMap.keySet())) {
             throw new VciBaseException(DATA_OID_NOT_EXIST);
         }
 
         List<BaseModel> cboList = selectByTypeAndOid(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), VciBaseUtil.array2String(orderDTOMap.keySet().toArray(new String[0])));
-//		cboOidMap.put("oid",QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(orderDTOMap.keySet().toArray(new String[0])) + ")");
-//		List<ClientBusinessObject> cboList = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), cboOidMap);
-        if (CollectionUtils.isEmpty(cboList)) {
+		if (CollectionUtils.isEmpty(cboList)) {
             throw new VciBaseException(DATA_OID_NOT_EXIST);
         }
-//		BatchCBO batchCBO = new BatchCBO();
-//		CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
-        Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+		Map<String, BaseModel> cboMap = cboList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
         orderDTOMap.keySet().stream().forEach(oid -> {
             CodeOrderDTO orderDTO = orderDTOMap.get(oid);
             CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
             CodeClassifyTemplateVO firstTemplateVO = templateService.getObjectHasAttrByOid(orderDTOMap.values().stream().findFirst().get().getTemplateOid());
             BaseModel cbo = cboMap.get(oid);
             String code = cbo.getId();
-            if (!cbo.getTs().toString().contains(orderDTO.getTs().toString())) {
+            if (!cbo.getTs().toString().contains(VciDateUtil.date2Str(orderDTO.getTs(), VciDateUtil.DateTimeFormat))) {
                 throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯");
             }
             if (!CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(cbo.getLcStatus()) && !orderDTO.isEditInProcess()) {
@@ -2494,21 +2565,13 @@
             //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
             cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
             cbo.setName(orderDTO.getName());
-//			try {
-//				cbo.setAttributeValue("id",code);
             cbo.setId(code);
             cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
-//				cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
-//				cbo.setAttributeValue("name", orderDTO.getName());
             cbo.setName(orderDTO.getName());
-//			} catch (VCIError e) {
-//				e.printStackTrace();
-//			}
-//			batchCBO.getUpdateCbos().add(cbo);
+
             updateList.add(cbo);
             batchSaveSelectChar(firstTemplateVO, cboList);
         });
-//		boService.persistenceBatch(batchCBO);
         updateBatchByBaseModel(topClassifyFullInfo.getTopClassifyVO().getBtmTypeId(), updateList);
         return R.success("鎿嶄綔鎴愬姛锛�");
     }
@@ -2614,17 +2677,10 @@
                 orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭");
 
         //闇�瑕佸崌鐗�
-//		ClientBusinessObjectOperation cboOperation = new ClientBusinessObjectOperation();
         BaseModel cbo = null;
-//		try {
-//			//cbo = cboOperation.createBusinessObjectVersion(oldCbo,VciBaseUtil.getCurrentUserId());
         cbo = reviseBusinessObject(oldCbo);
-//		} catch (VCIError e) {
-//			throw new VciBaseException("鍒濆鍖栫浉鍏崇殑鍐呭鍑虹幇浜嗛敊璇�", new String[0], e);
-//		}
         //1. 鍒ゆ柇蹇呰緭椤�
-        //CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
-        checkRequiredAttrOnOrder(templateVO, orderDTO);
+		checkRequiredAttrOnOrder(templateVO, orderDTO);
         //2.鍏堟敞鍏ワ紝鍐嶇粍鍚堬紝鏈�鍚庢牎楠�
         switchClassifyLevelOnOrder(templateVO, classifyFullInfo, orderDTO);
         //3.澶勭悊缁勫悎瑙勫垯銆傜粍鍚堣鍒欎笉鑳戒娇鐢ㄧ紪鐮佺殑灞炴�э紝鍥犱负缂栫爜鐨勭敓鎴愬彲鑳芥槸闇�瑕佸睘鎬х殑
@@ -2642,20 +2698,17 @@
         //浼佷笟鐮佸拰闆嗗洟鐮佺殑涓嶄慨鏀�
         cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
         cbo.setName(orderDTO.getName());
-//		try {
         cbo.setDescription(StringUtils.isBlank(orderDTO.getDescription()) ? "" : orderDTO.getDescription());
-//		cbo.setAttributeValueWithNoCheck("description", StringUtils.isBlank(orderDTO.getDescription())?"":orderDTO.getDescription());
         cbo.setName(orderDTO.getName());
-//		} catch (VCIError e) {
-//			e.printStackTrace();
-//		}
         //鏁版嵁鐨勬椂鍊欙紝缂栫爜鏄笉鍙樼殑
         cbo.setCreateTime(cbo.getCreateTime());
         cbo.setLastModifyTime(cbo.getLastModifyTime());
-//		List<ClientBusinessObject> cboList = new ArrayList<>();
-//		cboList.add(cbo);
+		cbo.setTenantId(AuthUtil.getTenantId());
+		oldCbo.setLastV("0");
+		oldCbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
+		oldCbo.setLastModifyTime(new Date());
         try {
-//			cboOperation.saveRevisionBuinessObject(cbo);
+			updateBatchByBaseModel(oldCbo.getBtmname(), Collections.singletonList(oldCbo));
             insertBatchByType(cbo.getBtmname(), Collections.singletonList(cbo));
         } catch (Exception vciError) {
             throw new VciBaseException("鏁版嵁鏇存敼淇濆瓨鍑洪敊浜�", new String[0], vciError);
@@ -2688,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;
+	}
 
     /**
      * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
@@ -3419,7 +3562,6 @@
         return baseModels;
     }
 
-
     /**
      * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞�
      *
@@ -3536,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());
@@ -3598,8 +3740,8 @@
         List<Map> maps = commonsMapper.selectBySql("select * from ( select rownum rn, t.* from (select * from " + listR.getData().get(0).getTableName() + SPACE
                 + (StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId()) ? (" where lastr = " + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastr").toString())
                 + " and lastv =" + VciBaseUtil.toInSql(baseQueryObject.getConditionMap().get("lastv").toString())) + " and" : "where") + SPACE + "1=1 "
-                + lcstatusSql + namesql + codesql + ") t where rownum <=" + num1 + ") where rn >=" + num2
-        );
+                + lcstatusSql + namesql + codesql + ") t "+ (baseQueryObject.getLimit()==-1?")": ("where rownum <=" + num1 + ") where rn >=" + num2)
+		));
         List<BaseModel> baseModels = new ArrayList<>();
         //灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑
         try {
@@ -3617,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) {
@@ -3648,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;
@@ -3777,7 +3920,6 @@
         return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null);
     }
 
-
     @Override
     public boolean checkUnAttrUnEdit(String attrName) {
         return (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName)
@@ -3839,4 +3981,21 @@
         return toBo;
 
     }
+
+	/**
+	 * 娴佺▼涓彉鏇寸姸鎬佸��
+	 * @param flowDTO
+	 * @return
+	 */
+	@Override
+	public R processChangeStatus(FlowStatusDTO flowDTO) {
+		flowDTO.getOids().forEach(s -> {
+			BaseModelDTO baseModel = new BaseModelDTO();
+			baseModel.setOid(s);
+			baseModel.setBtmname(flowDTO.getBtmType());
+			baseModel.setLcStatus(String.valueOf(flowDTO.getVariableMap().getOrDefault("statusValue","Auditing")));
+			changeStatus(baseModel);
+		});
+		return R.success("鎴愬姛");
+	}
 }

--
Gitblit v1.9.3