From 087511862a295eda0cf808a92f2ed2df348d54ff Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期五, 26 五月 2023 19:00:23 +0800
Subject: [PATCH] 动态表单

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java |  434 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 418 insertions(+), 16 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
index 2bff19f..66b5da9 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingPreAttrMappingServiceImpl.java
@@ -1,28 +1,43 @@
 package com.vci.ubcs.code.service.impl;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vci.ubcs.code.entity.DockingPreAttrMapping;
-import com.vci.ubcs.code.entity.DockingPreAttrRange;
-import com.vci.ubcs.code.entity.DockingPreMetaAttr;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
+import com.vci.ubcs.code.entity.*;
+import com.vci.ubcs.code.feign.IMdmInterJtClient;
 import com.vci.ubcs.code.mapper.DockingPreAttrMappingMapper;
-import com.vci.ubcs.code.service.IDockingPreAttrMappingService;
-import com.vci.ubcs.code.service.IDockingPreAttrRangeService;
-import com.vci.ubcs.code.service.IDockingPreMetaAttrService;
+import com.vci.ubcs.code.service.*;
+import com.vci.ubcs.code.vo.pagemodel.BaseModelVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrMappingVO;
 import com.vci.ubcs.code.vo.pagemodel.DockingPreAttrRangeVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingGroupDataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingMainData;
+import com.vci.ubcs.code.vo.webserviceModel.group.DockingViewVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.ResultDataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.DataObjectVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.DataVO;
+import com.vci.ubcs.code.vo.webserviceModel.group.result.ResultDataObject;
 import com.vci.ubcs.code.wrapper.DockingPreAttrMappingWrapper;
 import com.vci.ubcs.code.wrapper.DockingPreAttrRangeWrapper;
 import com.vci.ubcs.starter.exception.VciBaseException;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
+import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /***
@@ -32,31 +47,70 @@
  */
 @Service
 public class DockingPreAttrMappingServiceImpl extends ServiceImpl<DockingPreAttrMappingMapper, DockingPreAttrMapping> implements IDockingPreAttrMappingService {
+
+
+
+	@Value("${docking.apply.unitCode:410-MDM}")
+	public String dockingApplyUnitCode;
+	@Autowired(required = false)
+	private  IMdmInterJtClient mdmInterJtClient;
+
 	/***
 	 * 闆嗗洟鍒嗙被灞炴�у睘鎬ф槧灏勯厤缃湇鍔�
 	 */
 	@Autowired(required = false)
-	DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
+	private DockingPreAttrMappingMapper dockingPreAttrMappingMapper;
+
+	/***
+	 * 涓氬姟鏁版嵁灞炴�ф湇鍔�
+	 */
+	@Autowired(required = false)
+	private MdmEngineService mdmEngineService;
+
 	/***
 	 * 闆嗗洟灞炴�ф湇鍔�
 	 */
 	@Autowired(required = false)
-	IDockingPreMetaAttrService dockingPreMetaAttrService;
+	private IDockingPreMetaAttrService dockingPreMetaAttrService;
 	/***
 	 * 灞炴�у彇鍊艰寖鍥存湇鍔�
 	 */
 	@Autowired(required = false)
-	IDockingPreAttrRangeService dockingPreAttrRangeService;
+	private IDockingPreAttrRangeService dockingPreAttrRangeService;
+
+
+	/***
+	 * 闆嗗洟鍒嗙被鏈嶅姟
+	 */
+	@Autowired(required = false)
+	private IDockingPreClassifyService dockingPreClassifyService;
+
+	/***
+	 * 鐢宠鍗曟湇鍔�
+	 */
+	@Autowired(required = false)
+	private IDockingPreApplyFormService dockingPreApplyFormService;
+
+
+	/***
+	 * 妯″瀷瑙嗗浘鍗曟湇鍔�
+	 */
+	@Autowired(required = false)
+	private IDockingPreViewModelService dockingPreViewModelService;
+
+
 	/***
 	 * 鏍规嵁涓绘暟鎹垎绫讳富閿幏鍙栧垎绫讳俊鎭厤缃�
 	 * @param codeClassifyId
 	 * @return
 	 */
 	@Override
-	public List<DockingPreAttrMappingVO> getdockingAttrMappingsByCodeclassId(String codeClassifyId) {
+	public List<DockingPreAttrMappingVO> getDockingAttrMappingsByCodeClassifyId(String codeClassifyId,String sourceClassifyId) {
+		VciBaseUtil.alertNotNull(codeClassifyId,"涓绘暟鎹垎绫讳富閿�");
+		//VciBaseUtil.alertNotNull(sourceClassifyId,"闆嗗洟鍒嗙被涓婚敭");
 		//棣栧厛鑾峰彇鍒嗙被妯℃澘灞炴�э紝鐒跺悗涓庡睘鎬ч厤缃潗姣旇緝锛屼互闃茶鏈夊鍒犲睘鎬х殑鍙兘
-		List<DockingPreMetaAttr> dockingPreMetaAttrList=	dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,codeClassifyId));
-		List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, codeClassifyId));
+		List<DockingPreMetaAttr> dockingPreMetaAttrList=	dockingPreMetaAttrService.selectByWrapper(Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getSourceClassifyId,sourceClassifyId));
+		List<DockingPreAttrMapping> dockingPreAttrMappings=this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getSourceClassifyId, sourceClassifyId).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
 		Map<String/**灞炴�т富閿�**/, DockingPreAttrMapping> dockingPreAttrMappingMap = dockingPreAttrMappings.stream().filter(cbo -> cbo != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getMetaListId(), t -> t));
 
 		List<DockingPreAttrMapping> newDockingPreAttrMappingList=new ArrayList<>();
@@ -66,6 +120,7 @@
 			if(dockingPreAttrMappingMap.containsKey(attrOid)){
 				dockingPreAttrMapping=	dockingPreAttrMappingMap.get(attrOid);
 			}else{
+				DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreAttrMapping, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
 				dockingPreAttrMapping.setMetaListId(dockingPreMetaAttr.getOid());//灞炴�т富閿�
 				dockingPreAttrMapping.setSourceAttrKey(dockingPreMetaAttr.getEnglishName());//鑻辨枃鍚嶇О
 				dockingPreAttrMapping.setSourceAttrName(dockingPreMetaAttr.getChineseName());//涓枃鍚嶇О
@@ -165,6 +220,120 @@
 		}
 		return dockingPreAttrMappingVOList;
 	}
+	private String code="";
+
+	private String msg="";
+
+	/***
+	 * 鍍忛泦鍥㈢敵璇烽泦鍥㈢爜
+	 * @param oids
+	 * @param btmName
+	 * @return
+	 * @throws Exception
+	 */
+	@Override
+	@Transactional
+	public R applyGroupCode(String oids, String btmName) throws VciBaseException {
+		List<BaseModel> updateCbos=new ArrayList<BaseModel>();
+		List<DockingPreApplyForm> dockingPreAttrMappings=new ArrayList<>();
+		VciBaseUtil.alertNotNull(oids,"閫夋嫨鐨勬暟鎹�");
+		VciBaseUtil.alertNotNull(btmName,"涓氬姟绫诲瀷");
+		//List<BaseModelVO> codeWupins=mdmEngineService.listByIds(VciBaseUtil.str2List(oids));
+		List<BaseModelVO> dataModelList = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(dataModelList)) {
+			DockingGroupDataVO dockingGroupDataVO = new DockingGroupDataVO();
+			//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+			Map<String, DockingPreApplyForm> addDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
+			Map<String, DockingPreApplyForm> editDockingPreApplyFormMap = new HashMap<String, DockingPreApplyForm>();
+			Map<String, BaseModelVO> baseModelVOMap = new HashMap<String, BaseModelVO>();
+			//缁勭粐鏁版嵁
+			dockingGroupDataVO = queryApplycodeDataObjects(dataModelList, addDockingPreApplyFormMap, editDockingPreApplyFormMap, baseModelVOMap);
+			ResultDataObject resultDataObject = mdmInterJtClient.receiveAddApply(dockingGroupDataVO);
+			code = resultDataObject.getCode();
+			msg = resultDataObject.getMsg();
+			if ("1".equals(resultDataObject.getCode())) {//缁撴灉姝g‘鐨勬儏鍐�
+				List<DataObjectVO> dataObjectVOList = resultDataObject.getData();
+				dataObjectVOList.stream().forEach(dataObject -> {
+					boolean isEditDatas = false;
+					String code2 = dataObject.getCode();
+					DataVO data2 = dataObject.getData();
+					String applyId = data2.getApplyId();//鐢宠鍗昳d
+					String customCoding = StringUtils.isBlank(data2.getCustomCoding()) ? "" : data2.getCustomCoding();//闆嗗洟鐮佹
+					msg = dataObject.getMsg();
+					if (code2.equals("1")) {//缁撴灉姝g‘鐨勬儏鍐�
+						if (!"".equals(customCoding)) {
+							isEditDatas = true;
+						}
+					}
+					//闇�瑕佷慨鏀圭殑鐢宠鍗曟暟鎹�
+					if (editDockingPreApplyFormMap.containsKey(applyId)) {
+						DockingPreApplyForm dockingPreApplyForm = editDockingPreApplyFormMap.get(applyId);
+						dockingPreApplyForm.setCode(code2);
+						dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+						dockingPreApplyForm.setGroupCode(customCoding);
+						ObjectMapper mp = new ObjectMapper();
+						String writeValueAsString = null;
+						try {
+							writeValueAsString = mp.writeValueAsString(dataObject);
+							dockingPreApplyForm.setContent(writeValueAsString);
+						} catch (JsonProcessingException e) {
+						}
+					}
+					//鏂板鐨勭敵璇峰崟鏁版嵁
+					if (addDockingPreApplyFormMap.containsKey(applyId)) {
+						DockingPreApplyForm dockingPreApplyForm = addDockingPreApplyFormMap.get(applyId);
+						dockingPreApplyForm.setCode(code2);
+						dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+						dockingPreApplyForm.setGroupCode(customCoding);
+						ObjectMapper mp = new ObjectMapper();
+						String writeValueAsString = null;
+						try {
+							writeValueAsString = mp.writeValueAsString(dataObject);
+							dockingPreApplyForm.setContent(writeValueAsString);
+						} catch (JsonProcessingException e) {
+						}
+					}
+					//濡傛灉鏈夐泦鍥㈢爜鍒欐洿鏂版暟鎹�
+					if (isEditDatas) {
+						if (baseModelVOMap.containsKey(applyId)) {
+							BaseModelVO baseModelVO = baseModelVOMap.get(applyId);
+							BaseModel baseModel = new BaseModel();
+							BeanUtilForVCI.copyDeclaredIgnoreCase(baseModelVO, baseModel);
+							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
+							DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
+							baseModelVO.setId(customCoding);
+							updateCbos.add(baseModel);//鏇存柊鏁版嵁闆嗗洟code
+						}
+					}
+				});
+			} else {
+				editDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
+					dockingPreApplyForm.setCode("2");
+					dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+					dockingPreApplyForm.setContent("");
+					dockingPreApplyForm.setGroupCode("");
+					DefaultAttrAssimtUtil.updateDefaultAttrAssimt(dockingPreApplyForm);
+				});
+				addDockingPreApplyFormMap.forEach((key, dockingPreApplyForm) -> {
+					dockingPreApplyForm.setCode("2");
+					dockingPreApplyForm.setMsg("鐢宠锛�" + msg);
+					dockingPreApplyForm.setContent("");
+					dockingPreApplyForm.setGroupCode("");
+					DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingPreApplyForm, MdmBtmTypeConstant.DOCKING_PRE_JAPPLYFORM);
+				});
+			}
+			if (editDockingPreApplyFormMap.size() > 0) {
+				dockingPreAttrMappings.addAll(editDockingPreApplyFormMap.values());//娣诲姞鐢宠鍗曟暟鎹�
+			}
+			if (addDockingPreApplyFormMap.size() > 0) {
+				dockingPreAttrMappings.addAll(addDockingPreApplyFormMap.values());//闇�瑕佷慨鏀圭殑鐢宠鍗曟暟鎹�
+			}
+			//淇濆瓨琛ㄥ崟鏁版嵁
+			dockingPreApplyFormService.saveOrUpdateBatch(dockingPreAttrMappings);
+			//mdmEngineService.saveBatch(updateCbos);//淇濆瓨鏁版嵁
+		}
+		return R.success("鐢宠鎺ュ彛璋冪敤鎴愬姛");
+	}
 
 	/***
 	 * 瀵硅薄杞崲
@@ -184,4 +353,237 @@
 			}
 			return dockingPreAttrMappingVOList;
 		}
+
+
+	/**
+	 * 缁勭粐鏁版嵁
+	 * */
+	private DockingGroupDataVO queryApplycodeDataObjects(List<BaseModelVO> codeWupins,Map<String,DockingPreApplyForm>   addDockingPreApplyFormMap,Map<String,DockingPreApplyForm>  editDockingPreApplyFormMap,Map<String,BaseModelVO>  codeWupinMap) throws VciBaseException{
+		try {
+			String curUserName = AuthUtil.getUser().getUserName();
+			//鐢宠鐨勬暟鎹�
+			List<DockingMainData> mainDataList=new ArrayList<DockingMainData>();
+			for (BaseModelVO dataBusinessObject : codeWupins) {
+				String format = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
+				String codeclsfid = dataBusinessObject.getData().getOrDefault("codeclsfid","");
+				String btmName = dataBusinessObject.getBtmname();
+				String oid = dataBusinessObject.getOid();
+
+				DockingPreApplyForm dockingPreApplyForm = new DockingPreApplyForm();
+
+				String dataOid = dataBusinessObject.getOid();
+				Map<String, String> conditionsMap = new HashMap<String, String>();
+				List<DockingPreApplyForm> applyFormObjects = dockingPreApplyFormService.list(Wrappers.<DockingPreApplyForm>query().lambda().eq(DockingPreApplyForm::getDataOid, dataOid).eq(DockingPreApplyForm::getOperationType, "1"));
+				String apllyCode = "";
+				if (!CollectionUtils.isEmpty(applyFormObjects)) {
+					dockingPreApplyForm = applyFormObjects.get(0);
+					apllyCode = dockingPreApplyForm.getId();
+					editDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+				} else {
+					apllyCode = dockingApplyUnitCode + "-" + format;
+					dockingPreApplyForm.setId(apllyCode);
+					dockingPreApplyForm.setName("");
+					dockingPreApplyForm.setOperationType("2");
+					dockingPreApplyForm.setDescription(dataBusinessObject.getDescription());//鑾峰彇鏁版嵁鎻忚堪淇℃伅
+					dockingPreApplyForm.setDataOid(oid);
+					dockingPreApplyForm.setDataBtmName(btmName);
+					addDockingPreApplyFormMap.put(apllyCode, dockingPreApplyForm);//鐢宠鍗曞拰鐢宠鍗曞璞″叧绯�
+				}
+
+				codeWupinMap.put(apllyCode, dataBusinessObject);//鐢宠鍗曞拰瀵瑰簲鏁版嵁鍏崇郴
+				conditionsMap = new HashMap<String, String>();
+				conditionsMap.put("jtargetclsfid", codeclsfid);//瑙嗗浘oid
+
+				List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid));
+				if (CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
+					throw new Exception("鏍规嵁鎵�閫夌殑鏁版嵁锛屾病鏈夋壘鍒板搴旂殑闆嗗洟鍒嗙被璁剧疆锛岃鏍稿!");
+				}
+				String jsourceclsfid = dockingPreAttrMappingList.get(0).getSourceClassifyId();
+				//鑾峰彇鏁版嵁妯″瀷鍒嗙被淇℃伅
+				DockingPreClassify dockingPreClassify = dockingPreClassifyService.getById(jsourceclsfid);
+				DockingMainData mainData = new DockingMainData();
+				mainData.setApplyEntId(dockingApplyUnitCode);//鐢宠鍗曚綅浠g爜
+				mainData.setApplyId(apllyCode);//鐢宠鍗曞彿
+				mainData.setClassName(dockingPreClassify.getGetNodeLinkName());//鍒嗙被鍚嶇О
+				mainData.setCreateBy(curUserName);//
+				mainData.setSecretLevel("鍐呴儴");//瀵嗙骇锛岄粯璁や负鍐呴儴
+				mainData.setViewInfos(getviewInfos(dockingPreClassify, dataBusinessObject));//鑾峰彇瑙嗗浘妯″瀷
+				mainDataList.add(mainData);
+			}
+			//鏍规嵁鏁版嵁妯″瀷锛岀粍缁囨墍闇�瑕佹暟鎹�
+			DockingGroupDataVO postParameters=new DockingGroupDataVO();
+			postParameters.setSysName("420-CODE");//绯荤粺鏍囪瘑
+			postParameters.setMainData(mainDataList);//
+			return postParameters;
+		} catch (Throwable e) {
+			// TODO Auto-generated catch block
+			throw new VciBaseException("鏌ヨ鏁版嵁鍑洪敊"+e);
+		}
+	}
+
+	/**
+	 * 鑾峰彇妯″瀷瑙嗗浘
+	 * @param dockingPreClassify
+	 * @param dataBusinessObject
+	 * @throws VciBaseException
+	 */
+	private List<DockingViewVO>getviewInfos(DockingPreClassify dockingPreClassify,BaseModelVO dataBusinessObject) throws Throwable{
+		List<DockingViewVO> viewInfoList=new ArrayList<>();
+		String jclassOid=	dockingPreClassify.getOid();
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+		conditionsMap.put("jsourceclsfid",jclassOid);
+		conditionsMap.put("jviewname","缂栫爜瑙嗗浘");//鐢宠鍙紶缂栫爜瑙嗗浘
+		//鏍规嵁鍒嗙被鏌ヨ妯″瀷瑙嗗浘瀵硅薄
+		List<DockingPreViewModel> dockingPreViewModels= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,jclassOid).eq(DockingPreViewModel::getViewName,"缂栫爜瑙嗗浘"));
+		for (DockingPreViewModel dockingPreViewModel : dockingPreViewModels) {
+			//缁勭粐鏁版嵁灞炴�т俊鎭�
+			DockingViewVO viewInfo=new DockingViewVO();
+			viewInfo.setViewName(dockingPreViewModel.getViewName());//瑙嗗浘鍚嶇О
+			viewInfo.setViewValue(getViewValueList(dockingPreViewModel,jclassOid,dataBusinessObject));//瑙嗗浘
+			viewInfoList.add(viewInfo);
+		}
+		return viewInfoList;
+	}
+
+	/***
+	 * 鑾峰彇閰嶇疆淇℃伅
+	 * @param dockingPreViewModel
+	 * @param jclassOid
+	 * @param dataBusinessObject
+	 * @return
+	 * @throws VciBaseException
+	 */
+	private List<Map<String, Object>> getViewValueList(DockingPreViewModel dockingPreViewModel,String jclassOid,BaseModelVO dataBusinessObject) throws Throwable{
+		//鏋勯�犳ā鍨嬭鍥炬暟鎹�
+		List<Map<String, Object>> viewValueList=new ArrayList<Map<String,Object>>();
+		String oid = dockingPreViewModel.getOid();
+		Map<String,String> dataValueMap=dataBusinessObject.getData();
+		String codeClassifyId=dataValueMap.get("codeclsfid");
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+
+
+
+		List<DockingPreAttrMapping> dockingPreAttrMappingList = this.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda()
+			.eq(DockingPreAttrMapping::getSourceClassifyId, jclassOid).eq(DockingPreAttrMapping::getTargetClassifyId, codeClassifyId));
+		if(CollectionUtils.isEmpty(dockingPreAttrMappingList)) {
+			return viewValueList;
+		}
+
+		Map<String,DockingPreAttrMapping> jintegmappconfigMap=new HashMap<String, DockingPreAttrMapping>();
+		for (DockingPreAttrMapping businessObject : dockingPreAttrMappingList) {
+			jintegmappconfigMap.put(businessObject.getSourceAttrKey(), businessObject);
+		}
+		List<DockingPreMetaAttr> dockingPreMetaAttrList= dockingPreMetaAttrService.selectByWrapper(
+			Wrappers.<DockingPreMetaAttr>query().lambda().eq(DockingPreMetaAttr::getViewModelId,dockingPreViewModel.getOid())
+				.eq(DockingPreMetaAttr::getSourceClassifyId,dockingPreViewModel.getSourceClassifyId()));
+
+		Map<String,Object> viewValueMap=new HashMap<String,Object>();
+		for (DockingPreMetaAttr dockingPreMetaAttr : dockingPreMetaAttrList) {
+			String jenglishname=dockingPreMetaAttr.getEnglishName();////闆嗗洟閰嶇疆灞炴��
+			if(jintegmappconfigMap.containsKey(jenglishname)){
+				DockingPreAttrMapping dockingPreAttrMapping=jintegmappconfigMap.get(jenglishname);
+				String attrId = dockingPreAttrMapping.getTargetAttrId();//缂栫爜灞炴�d
+				String jtargetattrkey = dockingPreAttrMapping.getTargetAttrKey();//缂栫爜灞炴�d
+				Object newVaue=null;
+				if(StringUtils.isNotBlank(jtargetattrkey)){
+					getAttrRange(dockingPreMetaAttr);//鑾峰彇瀛楁鍙栧�艰寖鍥�
+					String value=dataValueMap.get(jtargetattrkey)==null?"":dataValueMap.getOrDefault(jtargetattrkey,"");
+					newVaue = getVaue(dockingPreMetaAttr, value);
+				}else{
+					newVaue = getVaue(dockingPreMetaAttr, "");
+				}
+				if(newVaue==null||"".equals(newVaue)){
+					newVaue= dockingPreMetaAttr.getDefaultValue();
+				}
+				viewValueMap.put(jenglishname, newVaue);
+			}
+		}
+
+		viewValueList.add(viewValueMap);
+		return viewValueList;
+	}
+
+	/***
+	 * 鑾峰彇灞炴�ф灇涓炬槧灏勯厤缃�
+	 */
+	Map<String,Map<String,DockingPreAttrRange>> attrRangeMap=new HashMap<String, Map<String,DockingPreAttrRange>>();
+	private void getAttrRange(DockingPreMetaAttr jmetaatter) throws Throwable{
+
+		String jmetalistoid = jmetaatter.getOid();
+		if(attrRangeMap.containsKey(jmetalistoid)) {
+			return;
+		}
+		Map<String,String>conditionsMap=new HashMap<String, String>();
+		conditionsMap.put("jmetalistid", jmetalistoid);//瑙嗗浘oid
+		List<DockingPreAttrRange> dockingPreAttrRangeList = dockingPreAttrRangeService.selectByWrapper(Wrappers.<DockingPreAttrRange>query().lambda().eq(DockingPreAttrRange::getMetaListId, jmetalistoid));
+		if (CollectionUtils.isEmpty(dockingPreAttrRangeList)) {
+			return;
+		}
+		Map<String, DockingPreAttrRange> rangeMap = new HashMap<String, DockingPreAttrRange>();
+		rangeMap = dockingPreAttrRangeList.stream().collect(Collectors.toMap(s -> s.getNumTextValue(), t -> t, (o1, o2) -> o2));
+		attrRangeMap.put(jmetalistoid, rangeMap);
+
+	}
+	/****
+	 * 鍊肩被鍨嬭浆鎹�
+	 * @param jmetaatter
+	 * @param value
+	 * @return
+	 * @throws Throwable
+	 */
+	private Object getVaue(DockingPreMetaAttr jmetaatter,String value) throws Throwable{
+		//jmetadatatype	鍏冩暟鎹被鍨嬶紙1 瀛楃鍨�, 2 鏁村瀷, 3 闀挎暣鍨�, 4 鍗曠簿搴�, 5 鍙岀簿搴�,6 鏃ユ湡鍨�, 7 鏃堕棿鍨�, 8 甯冨皵鍨�, 9 鏂囦欢, 10澶嶅悎鍨嬶級
+		int jmetadatatype = jmetaatter.getMetaDataType();
+		String jmetalistoid = jmetaatter.getOid();
+		Map<String, DockingPreAttrRange> rangeMap=new HashMap<String, DockingPreAttrRange>();
+		if(attrRangeMap.containsKey(jmetalistoid)){
+			rangeMap = attrRangeMap.get(jmetalistoid);
+			if(rangeMap.containsKey(value)){
+				DockingPreAttrRange dockingPreAttrRange = rangeMap.get(value);
+				value=dockingPreAttrRange.getNumText();//灏嗙紪鐮佸睘鎬у煙鍊艰浆鎹㈡垚闆嗗洟瀵瑰簲鐨勫煙鍊�
+			}
+		}
+
+		if(jmetadatatype==1){//1 瀛楃鍨�
+			return StringUtils.isBlank(value)?"":value;
+		}else if(jmetadatatype==2){//2 鏁村瀷
+			return StringUtils.isBlank(value)?null:Integer.parseInt(value);
+		}else if(jmetadatatype==3){//3 闀挎暣鍨�
+			return StringUtils.isBlank(value)?null:Long.parseLong(value);
+		}else if(jmetadatatype==4){//4 鍗曠簿搴�,
+			return StringUtils.isBlank(value)?null:Float.parseFloat(value);
+		}else if(jmetadatatype==5){// 5 鍙岀簿搴�
+			return StringUtils.isBlank(value)?null:Double.parseDouble(value);
+		}else if(jmetadatatype==6){//6 鏃ユ湡鍨�
+			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
+			if(StringUtils.isBlank(value)) {
+				return null;
+			}else {
+				try {
+					return simpleDateFormat.parse(value);
+				} catch (ParseException e) {
+					throw new VciBaseException("date", new String[]{"鏃ユ湡鏍煎紡杞崲閿欒"});
+				}
+			}
+		}else if(jmetadatatype==7){//7 鏃堕棿鍨�
+			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
+			if(StringUtils.isBlank(value)) {
+				return null;
+			}else{
+				try {
+					return simpleDateFormat.parse(value);
+				} catch (ParseException e) {
+					throw new VciBaseException("date", new String[]{"鏃ユ湡鏍煎紡杞崲閿欒"});
+				}
+			}
+		}else	if(jmetadatatype==8){//8 甯冨皵鍨�
+			return value;
+		}else if(jmetadatatype==9){//9 鏂囦欢,
+			return value;
+		}else if(jmetadatatype==10){//10澶嶅悎鍨�
+			return value;//绗﹀悎鍨嬫槸浠�涔堜笢涓滃浣曞鐞�
+		}
+		return value;
+	}
+
 }

--
Gitblit v1.9.3