From e14d495581896374cc4be7ec929feb95005e6563 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 15 六月 2023 18:22:39 +0800
Subject: [PATCH] 修改系统管理、编码规则管理bug

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  402 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 279 insertions(+), 123 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 5f36b78..8565672 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
@@ -8,12 +8,12 @@
 import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
 import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
 import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
 import com.vci.ubcs.code.dto.CodeOrderDTO;
 import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
 import com.vci.ubcs.code.entity.*;
 import com.vci.ubcs.code.enumpack.*;
-import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
 import com.vci.ubcs.code.mapper.CodeWupinMapper;
 import com.vci.ubcs.code.mapper.CommonsMapper;
 import com.vci.ubcs.code.service.*;
@@ -21,9 +21,11 @@
 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.omd.feign.IAttributeClient;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
 import com.vci.ubcs.omd.feign.IEnumClient;
 import com.vci.ubcs.omd.feign.IRevisionRuleClient;
+import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.omd.vo.EnumVO;
 import com.vci.ubcs.omd.vo.RevisionRuleVO;
@@ -40,7 +42,11 @@
 import com.vci.ubcs.starter.web.toolmodel.DateConverter;
 import com.vci.ubcs.starter.web.util.*;
 import com.vci.ubcs.system.entity.DictBiz;
+import com.vci.ubcs.system.entity.Menu;
 import com.vci.ubcs.system.feign.IDictBizClient;
+import com.vci.ubcs.system.feign.ISysClient;
+import com.vci.ubcs.system.user.entity.User;
+import com.vci.ubcs.system.user.feign.IUserClient;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
 import oracle.sql.TIMESTAMP;
 import org.slf4j.Logger;
@@ -50,7 +56,9 @@
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringPool;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.Cache;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
@@ -69,6 +77,7 @@
 import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -90,28 +99,37 @@
 	 */
 	@Resource
 	private CodeClstemplateServiceImpl templateService;
-	/**
-	 * 妯℃澘鐨勬湇鍔�
-	 */
+
 	@Resource
-	private CodeOsbtmtypeMapper codeOsbtmtypeMapper;
-	@Resource
-	private CodeOsattributeServiceImpl attributeService;
+	private IAttributeClient attributeClient;
+
 	/**
 	 * 鐢熸垚缂栫爜鐨勬湇鍔�
 	 */
 	@Resource
 	private MdmProductCodeService productCodeService;
+
 	/**
 	 * 鍙緭鍙�夌殑鏈嶅姟
 	 */
 	@Resource
 	IDictBizClient iDictBizClient;
 	/**
+	 * 绯荤粺鐨勬湇鍔�
+	 */
+	@Resource
+	ISysClient iSysClient;
+	/**
+	 * 鐢ㄦ埛鏈嶅姟
+	 */
+	@Resource
+	IUserClient iUserClient;
+	/**
 	 * 瀛楀吀鐨勬湇鍔�
 	 */
 	@Resource
 	IEnumClient enumClient;
+
 	/**
 	 * 鍏紡鐨勬湇鍔�
 	 */
@@ -305,21 +323,32 @@
 		}
 		return comboboxKVs;
 	}
+
 	/**
 	 * 淇敼鐘舵��
 	 *
 	 * @param baseModelDTO 鏁版嵁浼犺緭瀵硅薄
 	 */
+	@Transactional
 	@Override
 	public void changeStatus(BaseModelDTO baseModelDTO) {
 		VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
 		List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
 //		List<ClientBusinessObject> cboList = boService.selectCBOByOidCollection(oids, baseModelDTO.getBtmname());
-		//鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
-		QueryWrapper<CodeOsbtmtypeEntity> wrapper = new QueryWrapper<>();
+		// TODO 鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
+		QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
 		wrapper.eq("BTMNAME",baseModelDTO.getBtmname());
 		wrapper.in("OID",oids);
-		List<CodeOsbtmtypeEntity> cboList = codeOsbtmtypeMapper.selectList(wrapper);
+		// TODO 寰呭畬鍠�
+		//鎻掍釜鐐� 涓氬姟绫诲瀷瀹屾垚鍚庨渶瑕佷慨鏀�
+//		QueryWrapper<BtmTypeVO> wrapper = new QueryWrapper<>();
+		List<BaseModel> baseModels = new ArrayList<>();
+		baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid());
+		if(baseModels.size() == 0){
+			throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�");
+		}
+		// 寰呭畬鍠�
+		List<BtmTypeVO> cboList =  null;  // btmTypeClient.selectList(wrapper);
 		//杩橀渶瑕佷慨鏀筧llCode鐨勭敓鍛藉懆鏈�
 //		Map<String, String> conditionMap = new HashMap<>();
 		QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>();
@@ -331,16 +360,29 @@
 //		List<ClientBusinessObject> codeCbos = boService.queryCBO(MdmBtmTypeConstant.CODE_ALL_CODE, conditionMap);
 		// 鍥炴敹闇�瑕佷笟鍔℃暟鎹垹闄�
 		if (CodeDefaultLC.TASK_BACK.getValue().equals(baseModelDTO.getLcStatus())) {
-//			BatchCBO batchCBO = new BatchCBO();
-//			batchCBO.getDeleteCbos().addAll(cboList);
-			codeOsbtmtypeMapper.deleteBatchIds(cboList);
-//			boService.persistenceBatch(batchCBO);
-		} else {
-//			lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
-		}
-//		lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
-	}
+			R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(baseModelDTO.getBtmname()));
+//			String referTable = listR.getData().get(0).getTableName();
+			commonsMapper.deleteByTaleAndOid(listR.getData().get(0).getTableName(),VciBaseUtil.toInSql(baseModelDTO.getOid()));
+			// BatchCBO batchCBO = new BatchCBO();
+			// batchCBO.getDeleteCbos().addAll(cboList);
 
+			// TODO 寰呭畬鍠�
+			//btmTypeClient.deleteBatchIds(cboList);
+
+			//boService.persistenceBatch(batchCBO);
+		} else {
+			for (BaseModel baseModel : baseModels) {
+				baseModel.setLcStatus(baseModelDTO.getLcStatus());
+			}
+			updateBatchByBaseModel(baseModelDTO.getBtmname(),baseModels);
+			// lifeCycleService.transCboStatus(cboList, baseModelDTO.getLcStatus());
+		}
+		for (CodeAllCode codeCbo : codeCbos) {
+			codeCbo.setLcStatus(baseModelDTO.getLcStatus());
+		}
+		codeAllCodeService.updateBatchById(codeCbos);
+		// lifeCycleService.transCboStatus(codeCbos, baseModelDTO.getLcStatus());
+	}
 
 	/**
 	 * 鐢宠鍗曚竴缂栫爜
@@ -605,9 +647,10 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 
 		if (!CollectionUtils.isEmpty(conditionMap)) {
-			//琛ㄩ渶瑕佹敼
 //			final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
-			final String[] sql = {"select count(*) from pl_code_wupin t where 1 = 1 "};
+			R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmtypeid()));
+//				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+			final String[] sql = {"select count(*) from "+ listR.getData().get(0).getTableName() +" t where 1 = 1 "};
 			conditionMap.forEach((key, value) -> {
 				sql[0] += " and " + key + " = " + value;
 			});
@@ -777,6 +820,11 @@
 			data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
 			data.put(CODE_FULL_PATH_FILED,fullPath);
 			cbo.setData(data);
+			cbo.setOid(VciBaseUtil.getPk());
+			cbo.setCreateTime(new Date());
+			cbo.setLastModifyTime(new Date());
+			cbo.setCreator(AuthUtil.getUser().getUserName());
+			cbo.setLastModifier(AuthUtil.getUser().getUserName());
 //			cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
 //			cbo.setTemplateOid(templateVO.getOid());
 //			cbo.setCodeclsfpath(fullPath);
@@ -789,7 +837,7 @@
 //						cbo.setLcStatus("Editing");
 ////						cbo.setLcStatus(lifeCycleVO.getStartStatus());
 //					} else {
-						cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
+					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
 //					}
 				} else {
 					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
@@ -798,7 +846,7 @@
 			}
 
 			int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
-			//鎻掍釜鐐癸紝鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
+			//鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
 //			if (secret == 0 || !secretService.checkDataSecret(secret)) {
 			if (secret == 0 ) {
 				Integer userSecret = VciBaseUtil.getCurrentUserSecret();
@@ -825,12 +873,14 @@
 			btmName = btmName.trim().toLowerCase();
 		}
 		try {
-			String keyPrefix = BTM_NAME.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
-			String finalBtmName = btmName;
-			return CacheUtil.get(BTM_INIT_CACHE, keyPrefix, btmName, () -> {
-				BaseModel baseModel = createBaseModel(finalBtmName);
-				return baseModel;
-			});
+			String keyPrefix = BTM_INIT_CACHE.concat(StringPool.COLON).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
+//			String finalBtmName = btmName;
+			Cache.ValueWrapper valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
+			if(valueWrapper == null){
+				CacheUtil.getCache(keyPrefix).put(keyPrefix.concat(String.valueOf(btmName)), createBaseModel(btmName));
+				valueWrapper = CacheUtil.getCache(keyPrefix).get(keyPrefix.concat(String.valueOf(btmName)));
+			}
+			return (BaseModel) valueWrapper.get();
 		} catch (Exception e) {
 			logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
 			throw new VciBaseException("initBtmError",new String[]{btmName});
@@ -937,15 +987,15 @@
 		}
 	}
 
-    @Override
-    public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
+	@Override
+	public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid) {
 		CodeClassifyTemplateVO templateVO = templateService.getObjectHasAttrByOid(templateOid);
 		MdmUIInfoVO uiInfoVO = new MdmUIInfoVO();
 		uiInfoVO.setTemplateVO(templateVO);
 		uiInfoVO.setFormDefineVO(wrapperFormDefineByTemplate(templateVO, codeClassifyOid));
 		wrapperResemble(templateVO, uiInfoVO);
 		return uiInfoVO;
-    }
+	}
 
 
 	/**
@@ -1064,6 +1114,7 @@
 		itemVO.setPrefix(attrVO.getPrefixValue());
 		itemVO.setSuffix(attrVO.getSuffixValue());
 		itemVO.setTooltips(attrVO.getExplain());
+		itemVO.setInputTip(attrVO.getInputTip());
 		itemVO.setSelectLibFlag(attrVO.getLibraryIdentification());
 		//鐪嬬湅鏄惁鏈夋灇涓�
 		if ((StringUtils.isNotBlank(attrVO.getEnumString())
@@ -1266,10 +1317,10 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 		if (!CollectionUtils.isEmpty(conditionMap)) {
 			Map<String, String> andConditionMap = new HashMap<>();
-			andConditionMap.put("lastr", "1");
-			andConditionMap.put("lastv", "1");
+			andConditionMap.put("t.lastr", "1");
+			andConditionMap.put("t.lastv", "1");
 			if (StringUtils.isNotBlank(orderDTO.getOid())) {
-				andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
+				andConditionMap.put("t.oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
 			}
 			conditionMap.putAll(andConditionMap);
 			PageHelper pageHelper = new PageHelper(-1);
@@ -1376,23 +1427,49 @@
 	public DataGrid<Map<String, String>> queryGrid(String btmType, CodeClassifyTemplateVO templateVO, Map<String, String> conditionMap, PageHelper pageHelper) {
 		CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmType, templateVO, conditionMap, pageHelper);
 //		List<Map> maps = boService.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
-		List<Map> maps = commonsMapper.selectBySql(sqlBO.getSqlHasPage());
+		List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage());
+
 		DataGrid<Map<String, String>> dataGrid = new DataGrid<>();
 		List<Map<String, String>> dataList = new ArrayList<>();
 		if (!CollectionUtils.isEmpty(maps)) {
 			maps.stream().forEach(map -> {
 				Map<String, String> data = new HashMap<>();
-				map.forEach((key, value) -> {
-					data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
-				});
+				for (String s : map.keySet()) {
+					data.put(s.toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
+				}
+//				map.forEach((key, value) -> {
+//					data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
+//				});
 				dataList.add(data);
 			});
+			wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), false);
+//			maps.stream().forEach(map -> {
+//				Map<String, String> data = new HashMap<>();
+////				map.forEach((key, value) -> {
+////					data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
+////				});
+//				for (String s : map.keySet()) {
+//					data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
+//				}
+//				dataList.add(data);
+//			});
 		}
+//		dataGrid.setData(dataList);
+//		if (!CollectionUtils.isEmpty(maps)) {
+//			wrapperData(maps, templateVO, sqlBO.getSelectFieldList(), false);
+//			maps.stream().forEach(map -> {
+//				Map<String, String> data = new HashMap<>();
+////				map.forEach((key, value) -> {
+////					data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
+////				});
+//				for (String s : map.keySet()) {
+//					data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
+//				}
+//				dataList.add(data);
+//			});
 		dataGrid.setData(dataList);
-		if (!CollectionUtils.isEmpty(dataList)) {
-			wrapperData(dataGrid.getData(), templateVO, sqlBO.getSelectFieldList(), false);
-			dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString()));
-		}
+		dataGrid.setTotal(Long.parseLong(commonsMapper.selectBySql(sqlBO.getSqlCount()).get(0).values().toArray()[0].toString()));
+//		}
 		return dataGrid;
 	}
 
@@ -1453,17 +1530,27 @@
 			}
 		});
 		if (!CollectionUtils.isEmpty(userIds)) {
+			Map<String, User> userVOMap = new HashMap<>();
+			for (String userId : userIds) {
+				if(!StringUtils.isNumeric(userId)){
+					continue;
+				}
+				User data = iUserClient.userInfoById(Long.valueOf(userId)).getData();
+				if(data != null){
+					userVOMap.put(String.valueOf(data.getId()),data);
+				}
+			}
 //			Map<String, SmUserVO> userVOMap = Optional.ofNullable(userQueryService.listUserByUserIds(userIds)).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-//			dataMap.stream().forEach(data -> {
-//				String creator = data.getOrDefault("creator", null);
-//				if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
-//					data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getName() + ")");
-//				}
-//				String lastmodifier = data.getOrDefault("lastmodifier", null);
-//				if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
-//					data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getName() + ")");
-//				}
-//			});
+			dataMap.stream().forEach(data -> {
+				String creator = data.getOrDefault("creator", null);
+				if (StringUtils.isNotBlank(creator) && userVOMap.containsKey(creator.toLowerCase(Locale.ROOT))) {
+					data.put("creator", creator + "(" + userVOMap.get(creator.toLowerCase(Locale.ROOT)).getRealName() + ")");
+				}
+				String lastmodifier = data.getOrDefault("lastmodifier", null);
+				if (StringUtils.isNotBlank(lastmodifier) && userVOMap.containsKey(lastmodifier.toLowerCase(Locale.ROOT))) {
+					data.put("lastmodifier", lastmodifier + "(" + userVOMap.get(lastmodifier.toLowerCase(Locale.ROOT)).getRealName() + ")");
+				}
+			});
 		}
 	}
 
@@ -1506,8 +1593,9 @@
 		//澶勭悊鏋氫妇鐨勫唴瀹癸紝涓轰簡鍏煎浠ュ墠鐨勬暟鎹�,濡傛灉鏁版嵁涓嶈兘浣跨敤鏋氫妇杞崲鐨勮瘽锛岄偅杩樻槸鏄剧ず浠ュ墠鐨勫��
 		if (!CollectionUtils.isEmpty(enumAttrVOs)) {
 			enumAttrVOs.stream().forEach(enumAttrVO -> {
+//				String attrId = enumAttrVO.getId().toUpperCase(Locale.ROOT);
 				String attrId = enumAttrVO.getId().toLowerCase(Locale.ROOT);
-				String oldValue = data.getOrDefault(attrId, null);
+				String oldValue = String.valueOf(data.getOrDefault(attrId, null));
 				if (StringUtils.isNotBlank(oldValue)) {
 					List<KeyValue> comboxKVs = listComboboxItems(enumAttrVO);
 					String newValue = oldValue;
@@ -1556,9 +1644,11 @@
 					referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
 					referVO.setTextField("name");
 				}
-				//琛ㄩ渶瑕佹敼
+				//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+				R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referVO.getReferType()));
 //				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
-				String referTable = "pl_code_wupin";
+				String referTable = listR.getData().get(0).getTableName();
+//				String referTable = "pl_code_classify";
 				String referTableNick = attrVO.getId() + "0";
 				String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
 				joinTableList.put(attrVO.getId(), left);
@@ -1574,11 +1664,20 @@
 				selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
 			});
 		}
-		Optional.ofNullable(attributeService.getDefaultAttributeVOMap()).orElseGet(() -> new HashMap<>()).keySet().stream().forEach(attrId -> {
-			if (!selectFieldList.contains(attrId) && !"secretgrade".equalsIgnoreCase(attrId)) {
-				selectFieldList.add(attrId);
+		R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType);
+//		Optional.ofNullable(allAttributeByBtmId.getData()).orElseGet(allAttributeByBtmId.getData().getAttributes()).stream().forEach(attrId -> {
+//			if (!selectFieldList.contains(attrId.getOid()) && !"secretgrade".equalsIgnoreCase(attrId.getOid())) {
+//				selectFieldList.add(attrId.getOid());
+//			}
+//		});
+		if(allAttributeByBtmId.getData() != null ){
+			for (BtmTypeAttributeVO attribute : allAttributeByBtmId.getData().getAttributes()) {
+				if (!selectFieldList.contains(attribute.getId()) && !"secretgrade".equalsIgnoreCase(attribute.getId())) {
+					selectFieldList.add(attribute.getId());
+				}
 			}
-		});
+		}
+
 		if (!selectFieldList.contains(CODE_FIELD)) {
 			selectFieldList.add(CODE_FIELD);
 		}
@@ -1646,9 +1745,10 @@
 			}
 			whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
 		}
-		//瑕佹敼锛岃〃鏄庤幏鍙栨湁闂
 //		String tableName = VciBaseUtil.getTableName(btmType);
-		String tableName = "pl_code_wupin";
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+//				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+		String tableName = listR.getData().get(0).getTableName();
 		String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
 			+ " from " + tableName + SPACE + "t" + SPACE
 			+ joinTableList.values().stream().collect(Collectors.joining(SPACE))
@@ -1781,9 +1881,10 @@
 	 */
 	private String getSqlByValue(String selectKey, String value, Map<String, CodeClassifyTemplateAttrVO> attrVOMap) {
 		StringBuilder sql = new StringBuilder();
-		if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
-			sql.append("t.");
-		}
+		// TODO 寰呭畬鍠�
+		//	if (!selectKey.contains(".") && (attrVOMap.containsKey(selectKey.toLowerCase(Locale.ROOT)) || attributeService.isDefaultAttr(selectKey) || selectKey.matches(RegExpConstant.LETTER))) {
+		//		sql.append("t.");
+		//	}
 		if (value.startsWith(QueryOptionConstant.IN)) {
 			sql.append(selectKey)
 				.append(SPACE)
@@ -2092,15 +2193,18 @@
 		//pageHelper.addDefaultDesc("createTime");
 		pageHelper.addDefaultDesc("id");
 		if (!classifyService.checkHasChild(codeClassifyOid)) {
-			conditionMap.put(CODE_CLASSIFY_OID_FIELD, 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)
-			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_classify where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
-				"' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
+
+			conditionMap.put("t."+CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from "+
+				btmTypeClient.selectByIdCollection(Collections.singletonList(MdmBtmTypeConstant.CODE_CLASSIFY))
+					.getData().get(0).getTableName() +" where lcstatus='" + FrameWorkDefaultValueConstant
+				.FRAMEWORK_DATA_ENABLED + "' start with parentCodeClassifyOid = '" + codeClassifyOid +
+				"' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
 		}
-		conditionMap.put("lastr", "1");
-		conditionMap.put("lastv", "1");
+		conditionMap.put("t.lastr", "1");
+		conditionMap.put("t.lastv", "1");
 		return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
 //        List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList());
 //        //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
@@ -2414,10 +2518,20 @@
 		CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(templateVO.getCodeclassifyoid());
 		String btmId = topClassifyVO.getBtmtypeid();
 		//鏌ヨ鏁版嵁
-		Map<String, String> conditionMap = WebUtil.getOidQuery(oid);
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("t.oid",oid);
 		CodeTemplateAttrSqlBO sqlBO = getSqlByTemplateVO(btmId, templateVO, conditionMap, new PageHelper(-1));
 		//鎴戜滑浣跨敤鍜屼笟鍔$被鍨嬬殑鏉ユ煡璇�
-		List<Map> cbos = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+		List<Map> cbosB = commonsMapper.selectBySql(sqlBO.getSqlUnPage());
+		List<Map<String,String>> cbos = new ArrayList<>();
+		cbosB.stream().forEach(map -> {
+			Map<String, String> data = new HashMap<>();
+			for (Object o : map.keySet()) {
+				data.put(((String) o).toLowerCase(Locale.ROOT), String.valueOf(map.get(o)));
+			}
+			cbos.add(data);
+		});
+
 //		List<ClientBusinessObject> cbos = boService.queryByOnlySql(sqlBO.getSqlUnPage());
 		if (CollectionUtils.isEmpty(cbos)) {
 			throw new VciBaseException("鏁版嵁鍦ㄧ郴缁熶腑涓嶅瓨鍦紝鏄惁鍥犱负淇敼杩囦笟鍔$被鍨嬶紵");
@@ -2430,7 +2544,7 @@
 		wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), true);
 		R<List<Map<String, String>>> result = R.data(Collections.singletonList(cbo));
 		//鎴戜滑瑕佺湅鏄惁涓嶆槸鍗囩増鐨勶紝鍗囩増鐨勮瘽锛岄渶瑕佸姣斾笉鐩哥瓑鐨勫睘鎬�
-		String copy = String.valueOf(cbo.get("COPYFROMVERSION"));
+		String copy = cbo.get("copyfromversion");
 //		if (StringUtils.isBlank(copy)) {
 //			copy = cbo.getAttributeValue("copyfromversion");
 //		}
@@ -2854,27 +2968,31 @@
 		MdmUIInfoVO uiInfoVO = getTableDefineByTemplateVO(getUsedTemplateByClassifyOid(codeClassifyOid));
 		uiInfoVO.setLeaf(classifyService.countChildrenByClassifyOid(codeClassifyOid) == 0);
 		if (StringUtils.isNotBlank(functionId) && !"~".equalsIgnoreCase(functionId)) {
+			List<Menu> buttonVOS = iSysClient.getMenuButtonByType(uiInfoVO.getTemplateVO().getBtmTypeId()).getData();
+
 			//鍔熻兘鎸夐挳鏈嶅姟杩樻湭瀹炵幇锛岀瓑瀹炵幇浜嗭紝鍦ㄨ繘琛岃皟鐢�
-			//List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
+//			List<SmOperationVO> operationVOS = operationService.listButtonByFunctionId(functionId);
 //			if (operationVOS == null) {
 //				operationVOS = new ArrayList<>();
 //			}
-			//鏌ヨ鎵╁睍鎸夐挳
+//			//鏌ヨ鎵╁睍鎸夐挳
 //			List<CodeButtonVO> buttonVOS = listButtonInToolbarByClassifyOid(codeClassifyOid);
-//			if (!CollectionUtils.isEmpty(buttonVOS)) {
-//				for (int i = 0; i < buttonVOS.size(); i++) {
-//					CodeButtonVO buttonVO = buttonVOS.get(i);
-//					SmOperationVO operationVO = new SmOperationVO();
-//					operationVO.setModuleNo(functionId);
-//					operationVO.setUniqueFlag(buttonVO.getId());
-//					operationVO.setName(buttonVO.getName());
-//					operationVO.setAlias(operationVO.getName());
-//					operationVO.setExecuteJs(buttonVO.getExecutejs());
-//					operationVO.setIconCls(buttonVO.getIconcls());
-//					operationVOS.add(operationVO);
-//				}
-//			}
-//			uiInfoVO.setButtons(operationVOS);
+			List<SmOperationVO> operationVOS = new ArrayList<>();
+			if (!CollectionUtils.isEmpty(buttonVOS)) {
+				for (int i = 0; i < buttonVOS.size(); i++) {
+					Menu buttonVO = buttonVOS.get(i);
+					SmOperationVO operationVO = new SmOperationVO();
+					operationVO.setModuleNo(functionId);
+					operationVO.setUniqueFlag(buttonVO.getCode());
+					operationVO.setName(buttonVO.getName());
+					operationVO.setAlias(buttonVO.getAlias());
+					operationVO.setOrderNo(String.valueOf(buttonVO.getSort()));
+//					operationVO.setExecuteJs(buttonVO.getExecuteJs());
+//					operationVO.setIconCls(buttonVO.getIconCls());
+					operationVOS.add(operationVO);
+				}
+			}
+			uiInfoVO.setButtons(operationVOS);
 		}
 		return uiInfoVO;
 	}
@@ -2922,7 +3040,7 @@
 	 * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
 	 */
 	@Override
-	public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
+	public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) {
 		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
 		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
 		if(listR.getData().size() == 0){
@@ -2948,7 +3066,7 @@
 	 * @return 鏌ヨ鍑虹殑鏁版嵁
 	 */
 	@Override
-	public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException {
+	public List<BaseModel> selectByTypeAndOid(String btmType, String oids)  {
 
 		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
 		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
@@ -2961,38 +3079,42 @@
 
 		List<BaseModel> baseModels = new ArrayList<>();
 		//灏嗘煡璇㈠埌鐨勬暟鎹浆鎹负basemodel锛屼娇鐢ㄧ殑鍙嶅皠鏂瑰紡鏉ヨ繘琛屽垱寤虹殑
-		for (Map map : maps) {
-			Object obj = BaseModel.class.newInstance();
-			BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
-			PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
-			for (PropertyDescriptor property : propertyDescriptors) {
-				Method setter = property.getWriteMethod();
-				if (setter != null) {
-					//oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
-					if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){
-						LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
-						ZoneId zoneId = ZoneId.systemDefault();
-						ZonedDateTime zdt = localDateTime.atZone(zoneId);
-						Date date = Date.from(zdt.toInstant());
-						setter.invoke(obj,date);
-						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());
-					}else if(map.get(property.getName().toUpperCase()) != null){
-						setter.invoke(obj, map.get(property.getName().toUpperCase()));
-						map.remove(property.getName().toUpperCase());
+		try{
+			for (Map map : maps) {
+				Object obj = BaseModel.class.newInstance();
+				BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
+				PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+				for (PropertyDescriptor property : propertyDescriptors) {
+					Method setter = property.getWriteMethod();
+					if (setter != null) {
+						//oracle鐨勬椂闂翠负TIMESTAMP鐨勶紝闇�瑕佽繘琛岃浆鎹㈡垚data锛屽惁鍒欏皢鎶ラ敊
+						if(map.get(property.getName().toUpperCase()) instanceof TIMESTAMP){
+							LocalDateTime localDateTime = ((TIMESTAMP) map.get(property.getName().toUpperCase())).toLocalDateTime();
+							ZoneId zoneId = ZoneId.systemDefault();
+							ZonedDateTime zdt = localDateTime.atZone(zoneId);
+							Date date = Date.from(zdt.toInstant());
+							setter.invoke(obj,date);
+							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());
+						}else if(map.get(property.getName().toUpperCase()) != null){
+							setter.invoke(obj, map.get(property.getName().toUpperCase()));
+							map.remove(property.getName().toUpperCase());
+						}
 					}
 				}
-			}
-			for (Object key : map.keySet()) {
-				map.put(key,String.valueOf(map.get(key)));
-			}
+				for (Object key : map.keySet()) {
+					map.put(key,String.valueOf(map.get(key)));
+				}
 
-			((BaseModel) obj).setData(map);
-			baseModels.add((BaseModel) obj);
+				((BaseModel) obj).setData(map);
+				baseModels.add((BaseModel) obj);
+			}
+		}catch (Exception e){
+			throw new VciBaseException("鏌ヨ澶辫触锛�" + e.getMessage());
 		}
 		return baseModels;
 	}
@@ -3007,7 +3129,7 @@
 		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
 		String userName = AuthUtil.getUser().getUserName();
 		BaseModel bo = new BaseModel();
-		bo.setOid(VciBaseUtil.getPk());
+//		bo.setOid(VciBaseUtil.getPk());
 //		bo.setRevisionid(VciBaseUtil.getPk());
 //		bo.setNameoid(VciBaseUtil.getPk());
 		bo.setBtmname(boName);
@@ -3032,7 +3154,7 @@
 		bo.setLctid(listR.getData().get(0).getLifeCycleId());
 //		if(StringUtils.isNotBlank(listR.getData().get(0).getLifeCycleId())){
 //			OsLifeCycleVO lifeCycleVO = lifeService.getLifeCycleById(listR.getData().get(0).getLifeCycleId());
-			bo.setLcStatus("Editing");
+		bo.setLcStatus("Editing");
 //		}
 		bo.setId("");
 		bo.setName("");
@@ -3059,4 +3181,38 @@
 		}
 		return "";
 	}
+
+	/**
+	 * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鏇存柊鎿嶄綔
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param baseModels      澶勭悊鏁版嵁
+	 * @return 澶勭悊鐘舵��
+	 */
+	@Override
+	public R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels) {
+		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+		if(listR.getData().size() == 0){
+			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+		}
+		//灏哹ean杞负map,mybatis缁熶竴澶勭悊
+		List<Map<String,String>> maps = new ArrayList<>();
+
+		baseModels.stream().forEach(model-> {
+			try {
+				maps.add(VciBaseUtil.convertBean2Map(model));
+			} catch (Exception e) {
+				throw new VciBaseException("绫诲瀷杞崲閿欒锛�" + e.getMessage());
+			}
+		});
+		try {
+			//娉ㄦ剰姝ゅ鏇存柊鎴愬姛鏄繑鍥炵殑-1
+			commonsMapper.updateBatchByBaseModel(listR.getData().get(0).getTableName(), maps);
+		}catch (Exception e){
+			return R.fail("鏇存柊澶辫触锛�"+e.getMessage());
+		}
+
+		return R.success("鏇存柊鎴愬姛锛�");
+	}
 }

--
Gitblit v1.9.3