From 367c66e0ab339e15d6ad881ace683cec7e11f2f7 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期二, 30 五月 2023 17:34:36 +0800
Subject: [PATCH] 1、主要完成传入业务类型与basemodel进行插入。 2、完成传入业务类型、oid进行查询返回list<basemodel>

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  514 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 360 insertions(+), 154 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 b938916..61d5c0e 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
@@ -3,25 +3,32 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 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.CodeAllCodeMapper;
 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.*;
 import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
-import com.vci.ubcs.code.vo.pagemodel.*;
 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.IBtmTypeClient;
+import com.vci.ubcs.omd.feign.IEnumClient;
+import com.vci.ubcs.omd.feign.IRevisionRuleClient;
+import com.vci.ubcs.omd.vo.BtmTypeVO;
+import com.vci.ubcs.omd.vo.EnumVO;
+import com.vci.ubcs.omd.vo.RevisionRuleVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
@@ -31,24 +38,35 @@
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.ubcs.starter.web.pagemodel.*;
 import com.vci.ubcs.starter.web.toolmodel.DateConverter;
-import com.vci.ubcs.starter.web.util.VciBaseUtil;
-import com.vci.ubcs.starter.web.util.VciDateUtil;
-import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO;
-import com.vci.ubcs.starter.web.util.WebUtil;
+import com.vci.ubcs.starter.web.util.*;
 import com.vci.ubcs.system.entity.DictBiz;
 import com.vci.ubcs.system.feign.IDictBizClient;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import oracle.sql.TIMESTAMP;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springframework.beans.BeanUtils;
+import org.springblade.core.tool.utils.StringPool;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.io.Serializable;
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
@@ -64,7 +82,7 @@
  * @date 2022-2-22
  */
 @Service
-public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupinEntity> implements MdmEngineService {
+public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupin> implements MdmEngineService {
 
 
 	/**
@@ -85,10 +103,15 @@
 	@Resource
 	private MdmProductCodeService productCodeService;
 	/**
-	 * 瀛楀吀鐨勬湇鍔�
+	 * 鍙緭鍙�夌殑鏈嶅姟
 	 */
 	@Resource
 	IDictBizClient iDictBizClient;
+	/**
+	 * 瀛楀吀鐨勬湇鍔�
+	 */
+	@Resource
+	IEnumClient enumClient;
 	/**
 	 * 鍏紡鐨勬湇鍔�
 	 */
@@ -112,6 +135,16 @@
 	 */
 	@Autowired
 	private ICodePhaseAttrService phaseAttrService;
+	/**
+	 * 涓氬姟绫诲瀷鐨勬湇鍔�
+	 */
+	@Autowired
+	private IBtmTypeClient btmTypeClient;
+	/**
+	 * 鐗堟湰瑙勫垯鐨勬湇鍔�
+	 */
+	@Resource
+	private IRevisionRuleClient revisionRuleClient;
 //
 	/**
 	 * 閫氱敤鏌ヨ
@@ -149,6 +182,9 @@
 	 */
 	@Autowired
 	private ICodeClassifyTemplateButtonService templateButtonService;
+
+	@Autowired
+	private ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService;
 //	/**
 //	 * 鐢ㄦ埛鏌ヨ鐨勬湇鍔�,闇�瑕侀棶涓�涓嬫槸鍚﹂渶瑕侀噸鍐欙紝浣跨敤鏌ヨ姝ゅ钩鍙扮殑鐢ㄦ埛琛�
 //	 */
@@ -169,6 +205,14 @@
 	 * 绌烘牸
 	 */
 	public static final String SPACE = " ";
+	/**
+	 * 缂撳瓨锝嬶絽锝�
+	 */
+	public static final String BTM_INIT_CACHE = "ubcs-code:btm";
+	/**
+	 *
+	 */
+	public static final String BTM_NAME = "btm:name";
 
 	/**
 	 * 瀵嗙骇鐨勫瓧娈�
@@ -242,19 +286,19 @@
 	 */
 	@Override
 	public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
-		List<KeyValue> comboboxKVs = null;
+		List<KeyValue> comboboxKVs = new ArrayList<>();
 		if (StringUtils.isNotBlank(attrVO.getEnumString())) {
 			comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
 		} else {
 //			comboboxKVs = enumService.getEnum(attrVO.getEnumid());
 //		 	Dict dict = new Dict();
 //			dict.setParentId(Long.valueOf(attrVO.getEnumid()));
-			R<List<DictBiz>> list = iDictBizClient.getList(attrVO.getEnumId());
+			R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId());
 			if(list.isSuccess()){
-				for (DictBiz datum : list.getData()) {
+				for (EnumVO datum : list.getData()) {
 					KeyValue keyValue = new KeyValue();
-					keyValue.setKey(datum.getDictKey());
-					keyValue.setValue(datum.getDictValue());
+					keyValue.setKey(datum.getItemValue());
+					keyValue.setValue(datum.getItemName());
 					comboboxKVs.add(keyValue);
 				}
 			}
@@ -305,7 +349,7 @@
 	 * @return 杩斿洖缂栫爜鐨勫唴瀹�
 	 */
 	@Override
-	public String addSaveCode(CodeOrderDTO orderDTO) {
+	public String addSaveCode(CodeOrderDTO orderDTO) throws Exception {
 		VciBaseUtil.alertNotNull(orderDTO, "缂栫爜鐢宠鐩稿叧鐨勫睘鎬у拰鐮佹鐨勫唴瀹归兘涓虹┖", orderDTO.getCodeClassifyOid(), "涓婚搴撳垎绫荤殑涓婚敭",
 			orderDTO.getTemplateOid(), "妯℃澘鐨勪富閿�", orderDTO.getCodeRuleOid(), "缂栫爜瑙勫垯鐨勪富閿�");
 		CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -329,14 +373,14 @@
 		switchDateAttrOnOrder(templateVO, orderDTO);
 		//9.鐢熸垚缂栫爜鐨勪俊鎭�
 //		ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
-		CodeWupinEntity cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
+		BaseModel cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
 //		//榛樿鐨勫睘鎬ч兘涓嶇敤浠庡墠绔嫹璐�
 //		//璁剧疆缂栫爜闇�瑕佺殑榛樿灞炴�х殑鍐呭
 		copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
 //		//TODO:鍥犱负榛樿鐨勫睘鎬ч兘涓嶆嫹璐濓紝鐩墠闆嗗洟鐮佸彨name锛屽苟娌℃湁浠嶥TO鎷疯礉鍒癱bo閲屻�傚鍔犱竴涓崟鐙鐞嗭紝浠ュ悗鍐嶇湅瑕佷笉瑕佽皟鏁�
 		cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
 //		//end -- modify by lihang @20220407
-		List<CodeWupinEntity> cboList = new ArrayList<>();
+		List<BaseModel> cboList = new ArrayList<>();
 
 		//澶囨敞
 		cbo.setDescription(orderDTO.getDescription());
@@ -347,8 +391,8 @@
 
 
 		List<String> charList = new ArrayList<>();
-		for (CodeWupinEntity wupinEntity : cboList) {
-			charList.add(wupinEntity.getId());
+		for (BaseModel baseModel : cboList) {
+			charList.add(baseModel.getId());
 		}
 		batchSaveSelectChar(templateVO, charList);
 		return codeList.size() > 0 ? codeList.get(0) : "";
@@ -561,7 +605,9 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 
 		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 " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
+			final String[] sql = {"select count(*) from pl_code_wupin t where 1 = 1 "};
 			conditionMap.forEach((key, value) -> {
 				sql[0] += " and " + key + " = " + value;
 			});
@@ -696,9 +742,9 @@
 	 * @param templateVO       妯℃澘鐨勬樉绀哄璞�
 	 * @param edit             鏄惁涓轰慨鏀�
 	 */
-	private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupinEntity cbo,
+	private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, BaseModel cbo,
 								CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
-								boolean edit) {
+								boolean edit)  {
 		String fullPath = "";
 		if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
 			fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
@@ -708,8 +754,8 @@
 		}
 
 //		BeanUtils.
-		BeanUtils.copyProperties(orderDTO.getData(),cbo);
-		cbo.setMaterialtype(Short.valueOf("1001"));
+//		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))) {
@@ -720,18 +766,23 @@
 //				}
 //			}
 //		});
+//		BeanMap beanMap = BeanMap.create(cbo);
+//		beanMap.putAll(orderDTO.getData());
+
 		try {
 
-			cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
-			cbo.setCodetemplateoid(templateVO.getOid());
-			cbo.setCodeclsfpath(fullPath);
-//			cbo.setMaterialclassify("model_type");
-//			cbo.setMaterialname(orderDTO.getData().get("materialname"));
-//			cbo.setShifoupihaoguanli("true");
-//			cbo.setKucunwl("true");
-//			cbo.setXiaoshouwl("false");
+			BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(BaseModel.class,orderDTO.getData()),cbo);
+			Map<String,String> data = new HashMap<>();
+			data.put(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
+			data.put(CODE_TEMPLATE_OID_FIELD,templateVO.getOid());
+			data.put(CODE_FULL_PATH_FILED,fullPath);
+			cbo.setData(data);
+//			cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
+//			cbo.setTemplateOid(templateVO.getOid());
+//			cbo.setCodeclsfpath(fullPath);
+			cbo.setTs(new Date());
 			if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
-				//鎵剧敓鍛藉懆鏈熺殑璧峰鐘舵�侊紝鎻掍釜鐐癸紝鐪嬬敓鍛藉懆鏈熸槸鍚﹂渶瑕佸垱寤�
+				//鍏堝啓鍥哄畾锛屽悗闈㈢敓鍛藉懆鏈熷ソ浜嗗湪缂栧啓
 				if (StringUtils.isNotBlank(cbo.getLctid())) {
 //					OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
 //					if (lifeCycleVO != null) {
@@ -746,7 +797,7 @@
 
 			}
 
-			int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString());
+			int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
 			//鎻掍釜鐐癸紝鍚庣画鐪嬪瘑绾ф湇鍔℃槸鍚﹀彲鐢�
 //			if (secret == 0 || !secretService.checkDataSecret(secret)) {
 			if (secret == 0 ) {
@@ -768,72 +819,65 @@
 	 * @throws VciBaseException 鍒濆鍖栧嚭閿欑殑鏄細鎶涘嚭寮傚父
 	 */
 	@Override
-	public CodeWupinEntity createCBOByBtmName(String btmName)
+	public BaseModel createCBOByBtmName(String btmName)
 		throws VciBaseException {
 		if(btmName!=null){
 			btmName = btmName.trim().toLowerCase();
 		}
-		String userid = AuthUtil.getUser().getUserName();
-//		if(!hasCreatedCbos.containsKey(btmName)){
-//			if(StringUtils.isEmpty(userid)){
-//				throw new VciBaseException(msgCodePrefix +"noHasUserid");
-//			}
-//			try {
-//				hasCreatedCbos.put(btmName, createBusinessObject(btmName));
-//			} catch (Exception e) {
-//				logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
-//				throw new VciBaseException(msgCodePrefix + "initBoError",new String[]{btmName});
-//			}
-//		}
-//		ClientBusinessObject cbo = cloneClientBusinessObject(hasCreatedCbos.get(btmName));
-
-		QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
-		btmWrapper.eq("ID",btmName);
-		CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper);
-//		OsBtmTypeVO btmTypeVO = btmService.getBtmById(boName);
-		String userName = AuthUtil.getUser().getUserName();
-		CodeWupinEntity wupinEntity = new CodeWupinEntity();
-		wupinEntity.setOid(null);
-//		bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
-//		bo.setNameoid((new ObjectUtility()).getNewObjectID36());
-		wupinEntity.setBtmname(btmName);
-		wupinEntity.setLastR(String.valueOf(1));
-		wupinEntity.setFirstR(String.valueOf(1));
-		wupinEntity.setFirstV(String.valueOf(1));
-		wupinEntity.setLastV(String.valueOf(1));
-		wupinEntity.setCreator(userName);
-		wupinEntity.setCreateTime(new Date());
-		wupinEntity.setLastModifier(userName);
-		wupinEntity.setLastModifyTime(new Date());
-		wupinEntity.setRevisionRule(btmTypeVO.getRevisionruleid());
-		wupinEntity.setVersionRule(String.valueOf(btmTypeVO.getVersionRule()));
-		if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
-			//鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
-//			OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
-			wupinEntity.setRevisionValue("1");
+		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;
+			});
+		} catch (Exception e) {
+			logger.error("鍒涘缓涓氬姟绫诲瀷瀵硅薄",e);
+			throw new VciBaseException("initBtmError",new String[]{btmName});
 		}
-
-		wupinEntity.setRevisionSeq(1);
-		wupinEntity.setVersionSeq(1);
-		//鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
-		wupinEntity.setVersionValue("1");
-		wupinEntity.setLctid("wupinLC");
-		wupinEntity.setLcStatus("Editing");
-		wupinEntity.setId("");
-		wupinEntity.setName("");
-		wupinEntity.setDescription("");
-		wupinEntity.setOwner(userName);
-		wupinEntity.setCheckinby(userName);
-		wupinEntity.setCopyFromVersion("");
-		wupinEntity.setMaterialtype((short) 1001);
-		wupinEntity.setCaigouwl("true");
-		wupinEntity.setShifoupihaoguanli("true");
-		wupinEntity.setKucunwl("true");
-		wupinEntity.setXiaoshouwl("false");
-		wupinEntity.setPassing("true");
+//		String userName = AuthUtil.getUser().getUserName();
+//		CodeWupin wupinEntity = new CodeWupin();
+//		wupinEntity.setOid(VciBaseUtil.getPk());
+////		bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
+////		bo.setNameoid((new ObjectUtility()).getNewObjectID36());
+//		wupinEntity.setBtmname(btmName);
+//		wupinEntity.setLastR(String.valueOf(1));
+//		wupinEntity.setFirstR(String.valueOf(1));
+//		wupinEntity.setFirstV(String.valueOf(1));
+//		wupinEntity.setLastV(String.valueOf(1));
+//		wupinEntity.setCreator(userName);
+//		wupinEntity.setCreateTime(new Date());
+//		wupinEntity.setLastModifier(userName);
+//		wupinEntity.setLastModifyTime(new Date());
+//		wupinEntity.setRevisionRule("numberversionrule");
+//		wupinEntity.setVersionRule("0");
+////		if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
+//			//
+////			OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
+//		wupinEntity.setRevisionValue("1");
+////		}
+//
+//		wupinEntity.setRevisionSeq(1);
+//		wupinEntity.setVersionSeq(1);
+//		//鎻掍釜鐐癸紝闇�瑕侀棶鍕囧摜鐗堟湰闂锛屽睍绀洪粯璁や负1
+//		wupinEntity.setVersionValue("1");
+//		wupinEntity.setLctid("wupinLC");
+//		wupinEntity.setLcStatus("Editing");
+//		wupinEntity.setId("");
+//		wupinEntity.setName("");
+//		wupinEntity.setDescription("");
+//		wupinEntity.setOwner(userName);
+//		wupinEntity.setCheckinby(userName);
+//		wupinEntity.setCopyFromVersion("");
+//		wupinEntity.setMaterialtype(1001);
+//		wupinEntity.setCaigouwl("true");
+//		wupinEntity.setShifoupihaoguanli("true");
+//		wupinEntity.setKucunwl("true");
+//		wupinEntity.setXiaoshouwl("false");
+//		wupinEntity.setPassing("true");
 
 //		this.initTypeAttributeValue(wupinEntity,btmTypeVO);
-		return wupinEntity;
+//		return wupinEntity;
 
 
 //		return cbo;
@@ -1222,8 +1266,8 @@
 		//娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙�
 		if (!CollectionUtils.isEmpty(conditionMap)) {
 			Map<String, String> andConditionMap = new HashMap<>();
-			andConditionMap.put("islastr", "1");
-			andConditionMap.put("islastv", "1");
+			andConditionMap.put("lastr", "1");
+			andConditionMap.put("lastv", "1");
 			if (StringUtils.isNotBlank(orderDTO.getOid())) {
 				andConditionMap.put("oid", QueryOptionConstant.NOTEQUAL + orderDTO.getOid());
 			}
@@ -1339,7 +1383,7 @@
 			maps.stream().forEach(map -> {
 				Map<String, String> data = new HashMap<>();
 				map.forEach((key, value) -> {
-					data.put(((String) key).toLowerCase(Locale.ROOT), (String) value);
+					data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
 				});
 				dataList.add(data);
 			});
@@ -1512,8 +1556,9 @@
 					referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
 					referVO.setTextField("name");
 				}
-
-				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+				//琛ㄩ渶瑕佹敼
+//				String referTable = VciBaseUtil.getTableName(referVO.getReferType());
+				String referTable = "pl_code_wupin";
 				String referTableNick = attrVO.getId() + "0";
 				String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
 				joinTableList.put(attrVO.getId(), left);
@@ -1601,7 +1646,9 @@
 			}
 			whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
 		}
-		String tableName = VciBaseUtil.getTableName(btmType);
+		//瑕佹敼锛岃〃鏄庤幏鍙栨湁闂
+//		String tableName = VciBaseUtil.getTableName(btmType);
+		String tableName = "pl_code_wupin";
 		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))
@@ -1842,9 +1889,9 @@
 		//鎵句笟鍔$被鍨嬶紝鐒跺悗浣跨敤涓婚敭鍘昏幏鍙栨暟鎹簱閲岀殑鏁版嵁
 //		List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
 
-		QueryWrapper<CodeWupinEntity> btmWrapper = new QueryWrapper<>();
+		QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>();
 		btmWrapper.eq("OID",orderDTO.getOid());
-		CodeWupinEntity cbo = codeWupinMapper.selectOne(btmWrapper);
+		CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper);
 
 //		CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
 //		CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
@@ -1939,7 +1986,7 @@
 			oidCollection.addAll(strings);
 		}
 
-		List<CodeWupinEntity> cboList = codeWupinMapper.selectBatchIds(oidCollection);
+		List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection);
 		//		List<ClientBusinessObject> cboList = new ArrayList<>();
 //		oidCollection.stream().forEach(oids -> {
 //			Map<String, String> conditionMap = new HashMap<>();
@@ -1950,15 +1997,15 @@
 		if (CollectionUtils.isEmpty(cboList)) {
 			throw new VciBaseException("鏁版嵁鍏ㄩ儴鍦ㄧ郴缁熶腑涓嶅瓨鍦�");
 		}
-		List<CodeWupinEntity> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
+		List<CodeWupin> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
 		if (!CollectionUtils.isEmpty(editCBOs)) {
-			CodeWupinEntity cbo = editCBOs.get(0);
+			CodeWupin cbo = editCBOs.get(0);
 			throw new VciBaseException("缂栫爜涓簕0}绛夊叡{1}鏉℃暟鎹殑鐘舵�佷笉鏄痆{2}]锛屼笉鍏佽鍒犻櫎", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()});
 		}
 
 		//鍙兘鍒犻櫎鑷繁鍒涘缓鐨勬暟鎹�
 		String userId = AuthUtil.getUser().getUserName();
-		for (CodeWupinEntity clientBusinessObject:cboList){
+		for (CodeWupin clientBusinessObject:cboList){
 			String creator = clientBusinessObject.getCreator();
 			if(!userId.equalsIgnoreCase(creator)){
 				throw new VciBaseException("缂栫爜涓�"+clientBusinessObject.getId()+"鐨勬暟鎹笉鏄綋鍓嶇敤鎴峰垱寤猴紝涓嶈兘鍒犻櫎锛�");
@@ -2047,12 +2094,13 @@
 		if (!classifyService.checkHasChild(codeClassifyOid)) {
 			conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
 		} else {
-			conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
-				+ " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
+			//琛ㄩ渶瑕佹敼
+//			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("islastr", "1");
-		conditionMap.put("islastv", "1");
+		conditionMap.put("lastr", "1");
+		conditionMap.put("lastv", "1");
 		return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
 //        List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList());
 //        //鍙傜収璁╁钩鍙扮洿鎺ユ煡璇㈠氨琛�
@@ -2160,17 +2208,21 @@
 	public R markDataPassing(String oid, String btmName, Boolean pass) {
 		VciBaseUtil.alertNotNull(oid, "涓氬姟鏁版嵁涓婚敭", btmName, "涓氬姟绫诲瀷", pass, "鏍囪绫诲瀷");
 		boolean flag = false;
-//		try {
-//			ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
+		try {
+//			QueryWrapper<CodeWupinEntity> wrapper = new QueryWrapper<>();
+//			wrapper.eq("oid",oid);
+			CodeWupin data = baseMapper.selectById(oid);
+			//			ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
 //			ClientBusinessObject data = operation.readBusinessObjectById(oid, btmName);
-//			if (data == null || StringUtils.isBlank(data.getOid())) {
-//				return BaseResult.fail(DATA_OID_NOT_EXIST);
-//			}
-//			data.setAttributeValue("passing", String.valueOf(pass));
+			if (data == null || StringUtils.isBlank(data.getOid())) {
+				return R.fail(DATA_OID_NOT_EXIST);
+			}
+			data.setPassing(String.valueOf(pass));
+			flag = SqlHelper.retBool(baseMapper.updateById(data));
 //			flag = operation.updateBuinessObject(data);
-//		} catch (VCIError e) {
-//			e.printStackTrace();
-//		}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 		if (flag) {
 			return R.success("鏍囪鎴愬姛锛�");
 		} else {
@@ -2431,7 +2483,7 @@
 			executionId = executionId.substring(0, executionId.lastIndexOf("."));
 		}
 		String sql = "select wm_concat(distinct (t.codetempattrOidArr)) codetempattroidarr\n" +
-			"from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE) + " t\n" +
+			"from pl_code_wupin t\n" +
 			"join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" +
 			"where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'";
 //		List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql);
@@ -2464,51 +2516,63 @@
 		}
 		List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid"));
 		Map<String, String> oidMap = new HashMap<>();
+		QueryWrapper<CodeWupin> wrapper = new QueryWrapper();
 		if (conditionMap.get("oid").contains(",")) {
-			oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
+//			oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
+			wrapper.in("oid",oidList);
 		} else {
-			oidMap.put("oid", conditionMap.get("oid"));
+//			oidMap.put("oid", conditionMap.get("oid"));
+			wrapper.in("oid",conditionMap.get("oid"));
 		}
 		if (CollectionUtils.isEmpty(oidMap)) {
 			throw new VciBaseException("涓氬姟鏁版嵁涓婚敭涓嶈兘涓虹┖");
 		}
 //		List<ClientBusinessObject> cbos = boService.queryCBO(btmType, oidMap);
-//		if (CollectionUtils.isEmpty(cbos)) {
-//			throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�");
-//		}
-//		ClientBusinessObject cbo = cbos.get(0);
-//		String templateOid = cbo.getAttributeValue("CODETEMPLATEOID");
+		List<CodeWupin> cbos = baseMapper.selectList(wrapper);
+		if (CollectionUtils.isEmpty(cbos)) {
+			throw new VciBaseException("鏈壘鍒颁笟鍔℃暟鎹�");
+		}
+		CodeWupin cbo = cbos.get(0);
+		String templateOid = cbo.getCodetemplateoid();
 //		Map<String, String> templateOidMap = new HashMap<>();
 //		templateOidMap.put("oid", templateOid);
+
+		QueryWrapper<CodeClassifyTemplate> codeClassifyTemplateWrapper = new QueryWrapper<>();
+		codeClassifyTemplateWrapper.eq("oid", templateOid);
+		List<CodeClassifyTemplate> templateDOList = templateService.list(codeClassifyTemplateWrapper);
+
 //		List<CodeClassifyTemplate> templateDOList = boService.queryObject(CodeClassifyTemplate.class, templateOidMap);
+		QueryWrapper<CodeClassifyTemplateAttr> codeClassifyTemplateAttrWrapper = new QueryWrapper<>();
+		codeClassifyTemplateAttrWrapper.eq("CLASSIFYTEMPLATEOID", templateOid);
 //		templateOidMap.clear();
 //		templateOidMap.put("CLASSIFYTEMPLATEOID",templateOid);
-//		List<CodeClassifyTemplateAttr> attrDOList = boService.queryObject(CodeClassifyTemplateAttr.class, templateOidMap);
-//		if (CollectionUtils.isEmpty(templateDOList)) {
-//			logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid);
-//			throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘");
-//		}
-//		CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
-//		templateVO.setAttributes(templateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
-//		try {
-//			if (oidList.size() > 1){
-//				DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
-//				List<Map<String,String>> allData = new ArrayList<>();
-//				oidList.forEach(oid -> {
-//					Map<String,String> condition = new HashMap<>();
-//					condition.put("oid",oid);
-//					DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
-//					allData.addAll(dataGrid.getData());
-//				});
-//				allDataGrid.setData(allData);
-//				return allDataGrid;
-//			}else {
-//				return queryGrid(btmType, templateVO, conditionMap, pageHelper);
-//			}
-//		} catch (Exception e) {
-//			System.out.println(e.getMessage());
+		List<CodeClassifyTemplateAttr> attrDOList = codeClassifyTemplateAttrService.list(codeClassifyTemplateAttrWrapper);
+//			boService.queryObject(CodeClassifyTemplateAttr.class, templateOidMap);
+		if (CollectionUtils.isEmpty(templateDOList)) {
+			logger.error("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘锛屾ā鏉夸富閿細" + templateOid);
+			throw new VciBaseException("鎵句笉鍒颁笟鍔℃暟鎹叧鑱旂殑妯℃澘");
+		}
+		CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
+		templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
+		try {
+			if (oidList.size() > 1){
+				DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
+				List<Map<String,String>> allData = new ArrayList<>();
+				oidList.forEach(oid -> {
+					Map<String,String> condition = new HashMap<>();
+					condition.put("oid",oid);
+					DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
+					allData.addAll(dataGrid.getData());
+				});
+				allDataGrid.setData(allData);
+				return allDataGrid;
+			}else {
+				return queryGrid(btmType, templateVO, conditionMap, pageHelper);
+			}
+		} catch (Exception e) {
+			System.out.println(e.getMessage());
 			return null;
-//		}
+		}
 	}
 	/**
 	 * 浣跨敤鍒嗙被鐨勪富閿幏鍙栬〃鏍肩殑瀹氫箟
@@ -2752,7 +2816,7 @@
 					kv.setValue(buttonVO.getClassifyButtonOidName());
 					kv.setAttributes(VciBaseUtil.objectToMap(buttonVO));
 					buttons.add(kv);
-					optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecutejs());
+					optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecuteJs());
 				});
 				optionFieldVO.setOptionJsMap(optionJsMap);
 				uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO);
@@ -2849,4 +2913,146 @@
 		}
 		return buttonVOList;
 	}
+
+	/**
+	 * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩稿叧鏁版嵁杩涜鎵归噺鎻掑叆鎿嶄綔
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param baseModels      澶勭悊鏁版嵁
+	 * @return 澶勭悊鎴愬姛鏁版嵁鏉℃暟
+	 */
+	@Override
+	public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) throws Exception {
+		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+		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.toString());
+			}
+		});
+		return commonsMapper.insertByBaseModel(listR.getData().get(0).getTableName(), maps.get(0), maps);
+	}
+
+	/**
+	 * 浼犲叆涓氬姟绫诲瀷浠ュ強鐩竜id闆嗗悎鏌ヨ鏁版嵁杩涜杩斿洖
+	 *
+	 * @param btmType 涓氬姟绫诲瀷
+	 * @param oids      闇�瑕佹煡璇㈢殑oid闆嗗悎 閫楀彿鍒嗗紑
+	 * @return 鏌ヨ鍑虹殑鏁版嵁
+	 */
+	@Override
+	public List<BaseModel> selectByTypeAndOid(String btmType, String oids) throws IllegalAccessException, NoSuchFieldException, InstantiationException, InvocationTargetException, IntrospectionException, SQLException {
+
+		//浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType));
+		if(listR.getData().size() == 0){
+			throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒");
+		}
+		//鏌ヨ鏁版嵁
+		List<Map> maps = commonsMapper.selectBySql("select * from " + listR.getData().get(0).getTableName() + " where oid in ("
+			+ VciBaseUtil.toInSql(oids.toString()) + ")");
+
+		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());
+					}
+				}
+			}
+			((BaseModel) obj).setData(map);
+			baseModels.add((BaseModel) obj);
+		}
+		return baseModels;
+	}
+
+
+	/**
+	 * 鏍规嵁涓氬姟绫诲瀷鍚嶇О鍒涘缓涓氬姟鏁版嵁婧愬璞�
+	 * @param boName 涓氬姟绫诲瀷鍚嶇О
+	 * @return 涓氬姟鏁版嵁瀵硅薄
+	 */
+	public BaseModel createBaseModel(String boName)  {
+		R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(boName));
+		String userName = AuthUtil.getUser().getUserName();
+		BaseModel bo = new BaseModel();
+		bo.setOid(VciBaseUtil.getPk());
+//		bo.setRevisionid(VciBaseUtil.getPk());
+//		bo.setNameoid(VciBaseUtil.getPk());
+		bo.setBtmname(boName);
+		bo.setLastR("1");
+		bo.setFirstR("1");
+		bo.setFirstV("1");
+		bo.setLastV("1");
+		bo.setCreator(userName);
+		bo.setCreateTime(new Date());
+		bo.setLastModifier(userName);
+		bo.setLastModifyTime(new Date());
+		bo.setRevisionRule(listR.getData().get(0).getRevisionRuleId());
+		bo.setVersionRule(String.valueOf(listR.getData().get(0).getVersionRule()));
+		if(StringUtils.isNotBlank(listR.getData().get(0).getRevisionRuleId())){
+			R<List<RevisionRuleVO>> revisionRuleVO = revisionRuleClient
+				.selectByIdCollection(Collections.singletonList(listR.getData().get(0).getRevisionRuleId()));
+			bo.setRevisionValue(revisionRuleVO.getData().get(0).getStartCode());
+		}
+		bo.setRevisionSeq(1);
+		bo.setVersionSeq(1);
+		bo.setVersionValue(getVersionValue(WebUtil.getInt(listR.getData().get(0).getVersionRule())));
+		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.setId("");
+		bo.setName("");
+		bo.setDescription("");
+		bo.setOwner(userName);
+//		bo.setCheckinby(userName);
+		bo.setCopyFromVersion("");
+//		this.initTypeAttributeValue(bo,btmTypeVO);
+		return bo;
+	}
+
+	/**
+	 * 鑾峰彇鐗堟鐨勫��
+	 * @param verRuleName 鐗堟鐨勮鍒�
+	 * @return 鐗堟鐨勫�硷紝娌℃湁瑙勫垯鍒欎负绌�
+	 */
+	private String getVersionValue(int verRuleName) {
+		if (verRuleName == 0) {
+			return "1";
+		} else if (verRuleName == 1) {
+			return "a";
+		} else if (verRuleName == 2) {
+			return "0";
+		}
+		return "";
+	}
 }

--
Gitblit v1.9.3