From 69b3f1883104760eacc03ab9f1a72a958933c785 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期二, 17 十月 2023 12:03:10 +0800
Subject: [PATCH] 1、修改回收验证回收的改成发布的,里面的数据oid也要改成最新的的数据oid。

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 254 insertions(+), 37 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 9f583c8..6fb9ee9 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;
@@ -15,11 +16,13 @@
 import com.vci.ubcs.code.enumpack.*;
 import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.util.ClientBusinessObject;
 import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
 import com.vci.ubcs.code.vo.CodeReferConfigVO;
 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;
@@ -54,6 +57,7 @@
 import com.vci.ubcs.system.user.feign.IUserClient;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import oracle.sql.TIMESTAMP;
+import org.aspectj.apache.bcel.classfile.Code;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
@@ -421,7 +425,9 @@
 		cbo.setNameOid(VciBaseUtil.getPk());
 		cbo.setCreateTime(new Date());
 		cbo.setLastModifyTime(new Date());
-		cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));
+		//cbo.setCreator(String.valueOf(AuthUtil.getUser().getUserId()));銆�
+		// 瑕佹眰鏄剧ず璐﹀彿锛屾墍浠ュ仛浜嗘洿鏀�
+		cbo.setCreator(String.valueOf(AuthUtil.getUser().getAccount()));
 		cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
 		cbo.setTenantId(AuthUtil.getTenantId());
 		if(StringUtils.isNotBlank(orderDTO.getLcStatus())||StringUtils.isNotBlank(orderDTO.getData().get("lcStatus"))){
@@ -435,18 +441,11 @@
         //澶囨敞
         cbo.setDescription(orderDTO.getDescription());
         cboList.add(cbo);
-//
-//		cboList.add(cbo);
+
         List<String> codeList = productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), cboList);
 
-
-//		List<String> charList = new ArrayList<>();
-//		for (BaseModel baseModel : cboList) {
-//			charList.add(baseModel.getId());
-//		}
         batchSaveSelectChar(templateVO, cboList);
         return codeList.size() > 0 ? codeList.get(0) : "";
-//		return null;
     }
 
     /**
@@ -471,7 +470,7 @@
                 if (!CodeLevelTypeEnum.MIN.getValue().equalsIgnoreCase(attrVO.getClassifyInvokeLevel()) && !"min".equalsIgnoreCase(attrVO.getClassifyInvokeLevel())) {
                     //鎸囧畾浜嗗眰绾х殑
                     //娉ㄦ剰锛屽洜涓烘煡璇笂绾у垎绫诲嚭鏉ョ殑灞傜骇鏄�掑簭鐨勶紝鍗抽《灞傝妭鐐规槸鏈�澶х殑鍊�
-                    List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
+                    List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList());
                     int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel());
                     if (classifyVOS.size() >= level && level > 0) {
                         classifyVO = classifyVOS.get(level - 1);
@@ -730,7 +729,11 @@
 			}
 			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.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)) {
+					sql[0] += " and " + key + " is null";
+				}else{
+					sql[0] += " and " + key + " = " + value;
+				}
 			});
 			if (StringUtils.isNotBlank(orderDTO.getOid())) {
 				//淇敼鐨勬椂鍊欙紝闇�瑕佹帓闄よ嚜宸�
@@ -751,7 +754,29 @@
 		return dataList;
 	}
 
-    /**
+	/**
+	 * 鏍规嵁褰撳墠鐢宠缂栫爜鐨勫垎绫伙紝閫愬眰寰�涓婃牎楠屾槸鍚︾鍚堝睘浜庨厤缃殑涓殑鍒嗙被瀛愯妭鐐圭殑鍒�
+	 * 绫伙紝濡傛灉绗﹀悎锛屽垯璇ュ垎绫荤敵璇风殑缂栫爜涓洪泦鍥㈢爜杩斿洖true锛屽弽涔嬪垯涓轰紒涓氱紪鐮佽繑鍥瀎alse
+	 * @param parameter 浼犲叆鏁版嵁,classifyGroupCode:閰嶇疆鐨勪腑鐨勫垎绫婚《鑺傜偣锛宱id锛氶�夋嫨鑺傜偣鐨刼id
+	 */
+	@Override
+	public R checkGroupCode(Map<String, String> parameter) {
+		List<CodeClassify> codeClassifyList = classifyService.selectAllLevelParentByOid(parameter.get("oid"));
+		Set<String> configGroupCode = Arrays.stream(parameter.get("classifyGroupCode").split("#")).collect(Collectors.toSet());
+//		Boolean checkGroupFlag = false;//鏄惁鏌ヨ鍒伴厤缃殑椤跺眰鍒嗙被涓�
+		for (int i = codeClassifyList.size()-1; i >= 0; i--) {
+			if(configGroupCode.contains(codeClassifyList.get(i).getId())){
+//				checkGroupFlag = true;
+				return R.data("true");
+			}
+//			if(checkGroupFlag && parameter.get("nowApplyCode").equals(codeClassifyList.get(i).getId())){
+//				return R.data(true);
+//			}
+		}
+		return R.data("false");
+	}
+
+	/**
      * 灏佽鍏抽敭灞炴�х殑鏌ヨ璇彞
      *
      * @param value        褰撳墠鐨勫��
@@ -951,7 +976,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());
         }
     }
 
@@ -1329,6 +1354,7 @@
         }
         fieldVO.setOptionJsMap(eventJsMap);
         fieldVO.setStyle(attrVO.getTableDisplayStyle());
+        fieldVO.setTableDisplayFlag(attrVO.getTableDisplayFlag());
         //鍒楄〃閲屼笉鍏佽鐩存帴缂栬緫
         fieldVO.setDateFormate(attrVO.getCodeDateFormat());
         return fieldVO;
@@ -1369,6 +1395,10 @@
 		uiTableConfigVO.setQueryColumns(queryColumns);
 		//set缁欒〃鏍奸厤缃睘鎬�
 		uiFormReferVO.setTableConfig(uiTableConfigVO);
+		//瀛楁鍚嶄笉涓�鑷达紝闇�瑕佹墜鍔╯et
+
+		uiFormReferVO.setMuti(StringUtils.isBlank(codeReferConfig.getIsMuti())?false:true);
+		uiFormReferVO.setInitSort(new UIFieldSortVO(codeReferConfig.getSortField(),codeReferConfig.getSortType()));
 		// 绛涢�夋潯浠�
 		HashMap<String, String> whereMap = new HashMap<>();
 		if(!CollectionUtils.isEmpty(codeReferConfig.getCodeSrchCondConfigVOS())){
@@ -1916,7 +1946,7 @@
                     //璇存槑杩樻槸鍙傜収閲岄潰鐨勶紝鎴戜滑榛樿杩欑鎯呭喌涓嬮兘鏄瓧绗︿覆鍚э紝鍥犱负鍙傜収鐨勫睘鎬т笉涓�瀹氱敤鐨勫钩鍙扮殑灞炴�ф睜閲岀殑锛屾墍浠ュぇ閮ㄥ垎鎯呭喌涓嬶紝鏄剧ず鐨勫睘鎬ч兘鏄瓧绗︿覆鍚�
                     return referFieldMap.get(field) + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE;
                 } else {
-                    return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + getStringValueInWhere(field, value, attrVOMap) + "%'" + SPACE;
+                    return (field.contains(".") ? "" : "t.") + field + SPACE + "LIKE " + "'%" + value + "%'" + SPACE;
                 }
             } else if (key.endsWith("_notequal")) {
                 String field = UBCSSqlKeyword.getColumn(key, "_notequal");
@@ -1951,7 +1981,7 @@
                 if (referFieldMap.containsKey(field)) {
                     return referFieldMap.get(field) + SPACE + " >= " + value + SPACE;
                 } else {
-                    return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(value, field, attrVOMap) + SPACE;
+                    return (field.contains(".") ? "" : "t.") + field + SPACE + " >= " + getStringValueInWhere(field, value, attrVOMap) + SPACE;
                 }
             } else if (key.endsWith("_le")) {
                 //璇存槑鏄�<=鐨勩�傛垜浠渶瑕佸厛鑾峰彇涓�涓�
@@ -2036,7 +2066,7 @@
                 if (referFieldMap.containsKey(field)) {
                     return referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
                 } else {
-                    return (field.contains(".") ? "" : "t.") + field + SPACE + "= '" + getStringValueInWhere(field, value, attrVOMap) + "'" + SPACE;
+                    return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
                 }
             } else {
 //                if (referFieldMap.containsKey(key)) {
@@ -2333,8 +2363,11 @@
 //		cbo.getData().putAll(orderDTO.getData());
         cbo.setLastModifyTime(new Date());
         cbo.setLastModifier(String.valueOf(AuthUtil.getUser().getUserId()));
-        updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo));
-        batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
+		R r = updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), Collections.singletonList(cbo));
+		if(!r.isSuccess()){
+			throw new ServiceException(r.getMsg());
+		}
+		batchSaveSelectChar(templateVO, Collections.singletonList(cbo));
     }
 
     /**
@@ -2372,7 +2405,7 @@
         }
 
         //鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
-        String userId = String.valueOf(AuthUtil.getUser().getUserId());
+        String userId = String.valueOf(AuthUtil.getUser().getAccount());
         for (BaseModel clientBusinessObject : cboList) {
             String creator = clientBusinessObject.getCreator();
             if (!userId.equalsIgnoreCase(creator)) {
@@ -2411,7 +2444,6 @@
         //鎵鹃樁娈�
         return phaseAttrService.listAttrByTemplateOidAndPhaseId(templateVO.getOid(), phase);
     }
-
 
     /**
      * 璺緞涓婂寘鍚綋鍓嶅垎绫荤殑鎵�鏈夊垎绫讳俊鎭�
@@ -2738,12 +2770,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(),
+			CodeSecTypeEnum.CODE_DATE_SEC.getValue()
+		);
+		// 鍙鐮佹绫诲瀷
+		List<String> readOnlyTypes = Arrays.asList(
+			CodeSecTypeEnum.CODE_LEVEL_SEC.getValue(),
+			CodeSecTypeEnum.CODE_ATTR_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.setCodeDateValue(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.setCodeDateValue(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.setCodeDateValue(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;
+	}
 
     /**
      * 浣跨敤鍒嗙被鐨勫叏閮ㄤ俊鎭幏鍙栫紪鐮佽鍒�
@@ -2760,7 +2882,7 @@
         } else {
             if (CollectionUtils.isEmpty(fullInfoBO.getParentClassifyVOs())) {
                 //璇存槑宸茬粡鏄渶楂樺眰绾�,
-                throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
+                throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
             }
             List<CodeClassifyVO> parentClassifyVOList = fullInfoBO.getParentClassifyVOs().stream().sorted((o1, o2) -> o1.getDataLevel().compareTo(o2.getDataLevel())).collect(Collectors.toList());
             //浠庢渶楂樼殑level寮�濮嬭幏鍙�
@@ -2772,7 +2894,7 @@
                 }
             }
             if (StringUtils.isBlank(codeRuleOid)) {
-                throw new VciBaseException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
+                throw new ServiceException("褰撳墠涓婚搴撳垎绫伙紝浠ュ強瀹冪殑鎵�鏈夌殑涓婄骇鍒嗙被閮芥病鏈夎缃紪鐮佽鍒�");
             }
         }
         return ruleService.getObjectHasSecByOid(codeRuleOid);
@@ -3403,6 +3525,42 @@
         });
         return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps);
     }
+	/**
+	 * 浼犲叆涓氬姟绫诲瀷浠ュ強ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶�
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param ids      澶勭悊鏁版嵁
+	 * @return 鏌ヨ鍒版暟鎹殑鎬绘暟
+	 */
+    @Override
+    public Integer selectIdsCounts(String btmType, List<String> ids) {
+        //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+        if (!listR.isSuccess() || listR.getData().size() == 0) {
+            throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+        }
+		return commonsMapper.queryCountBySql("select count(*) from " +
+			listR.getData().get(0).getTableName() + " where id in ("+ ids.stream().map(s -> "'" + s + "'").collect(Collectors.joining(",")) +")");
+    }
+
+	/**
+	 * 浼犲叆涓氬姟绫诲瀷浠ュ強ID銆丱ID鏌ヨ涓氬姟琛ㄦ暟鎹槸鍚﹂噸澶�
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param id      澶勭悊鏁版嵁id
+	 * @param oid      澶勭悊鏁版嵁oid
+	 * @return 鏌ヨ鍒版暟鎹殑鎬绘暟
+	 */
+	@Override
+	public Integer selectIdAndOidCounts(String btmType, String id, String oid) {
+		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+		if (!listR.isSuccess() || listR.getData().size() == 0) {
+			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+		}
+		return commonsMapper.queryCountBySql("select count(*) from " +
+			listR.getData().get(0).getTableName() + " where id ='" + id + "' and oid <> '" + oid + "'");
+	}
 
     /**
      * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
@@ -3468,7 +3626,6 @@
         }
         return baseModels;
     }
-
 
     /**
      * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞�
@@ -3578,20 +3735,79 @@
 
         return R.success("鏇存柊鎴愬姛锛�");
     }
+	/**
+	 * 鏇存柊涓氬姟鏁版嵁鍚屾椂瀵圭爜鍊艰〃鏁版嵁鎿嶄綔鎺ュ彛
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param baseModels      澶勭悊鏁版嵁
+	 * @return 澶勭悊鐘舵��
+	 */
+	@Transactional(rollbackFor = VciBaseException.class)
+	@Override
+	public R<Integer> updateBatchBtypeDatas(String btmType, List<BaseModel> baseModels) {
 
-    /**
+		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+		if (!listR.isSuccess() || listR.getData().size() == 0) {
+			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+		}
+		//鑾峰彇褰撳墠涓氬姟绫诲瀷鎵�鏈夊瓧娈电敤鏉ュ仛瀵规瘮
+		R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getAllAttributeByBtmId(btmType);
+		if (!allAttributeByBtmId.isSuccess() || allAttributeByBtmId.getData().getAttributes().size() == 0) {
+			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲瀛楁淇℃伅锛岃妫�鏌ワ紒");
+		}
+		Set<String> existFild = allAttributeByBtmId.getData().getAttributes().stream().map(btmTypeAttributeVO -> {
+			return btmTypeAttributeVO.getId();
+		}).collect(Collectors.toSet());
+		if(!CollectionUtils.isEmpty(baseModels)){
+			List<String> oidList=baseModels.stream().filter(data-> com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(data.getOid())).map(BaseModel::getOid).distinct().collect(Collectors.toList());
+			LambdaQueryWrapper<CodeAllCode> lqw = new LambdaQueryWrapper<>();
+			lqw.in(CodeAllCode::getCreateCodeOid,oidList);
+			List<CodeAllCode> codeAllCodeList= codeAllCodeService.selectByWrapper(lqw);
+			Map<String, CodeAllCode> cboMap = codeAllCodeList.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getCreateCodeOid(), t -> t));
+			List<CodeAllCode> newCodeAllCodeList=new ArrayList<>();
+			//灏哹ean杞负map,mybatis缁熶竴澶勭悊
+			List<Map<String, String>> maps = new ArrayList<>();
+			try {
+				baseModels.stream().forEach(baseModel->{
+					String oid=baseModel.getOid();
+					try {
+						maps.add(VciBaseUtil.convertBean2Map(baseModel,existFild));
+					} catch (Exception e) {
+						throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage());
+					}
+					if(cboMap.containsKey(oid)){
+						CodeAllCode codeAllCode=	cboMap.get(oid);
+						codeAllCode.setId(baseModel.getId());
+						codeAllCode.setLastModifier(AuthUtil.getUser().getUserName());
+						codeAllCode.setLastModifyTime(new Date());
+						codeAllCode.setLcStatus(baseModel.getLcStatus());
+						newCodeAllCodeList.add(codeAllCode);
+					}
+				});
+				commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps);
+				codeAllCodeService.saveOrUpdateBatch(newCodeAllCodeList);
+			} catch (Exception e) {
+				throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage());
+			}
+
+		}
+		return R.success("鏇存柊鎴愬姛锛�");
+	}
+
+	/**
      * 鑾峰彇鍙傜収鐨勪俊鎭�
      *
      * @param referConfigVO 鍙傜収鐨勯厤缃�
      * @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());
         if (!allAttributeByBtmId.isSuccess()) {
-            throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒锛�");
+            throw new ServiceException("涓氬姟绫诲瀷feign鎺ュ彛璋冪敤閿欒;"+allAttributeByBtmId.getMsg());
         }
         if (Func.isEmpty(allAttributeByBtmId.getData())) {
             throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
@@ -3618,6 +3834,7 @@
         if (listR.getData().isEmpty()) {
             throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
         }
+		// TODO:鍙傜収閰嶇疆鐨勬ā绯婃煡璇㈣繃婊ゆ潯浠舵殏鏈鐞�
         String namesql = "";
         if (StringUtils.isNotBlank(baseQueryObject.getConditionMap().get("name"))) {
             String s = baseQueryObject.getConditionMap().get("name");
@@ -3667,27 +3884,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) {
@@ -3698,10 +3916,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;
@@ -3826,7 +4044,6 @@
         treeWrapperOptions.setParentOid(queryObject.getParentOid());
         return revisionModelUtil.doList2Trees(codeClassifies, treeWrapperOptions, null);
     }
-
 
     @Override
     public boolean checkUnAttrUnEdit(String attrName) {

--
Gitblit v1.9.3