From 46de46ed851dc909f0ff355e9c6e3422efb5b4ad Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 30 四月 2024 14:27:10 +0800
Subject: [PATCH] 集成代码调整

---
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java |  160 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 137 insertions(+), 23 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
index c2aaae4..df1435e 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java
@@ -1,7 +1,9 @@
 package com.vci.ubcs.code.applyjtcodeservice.feigh;
 
 import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.vci.ubcs.code.applyjtcodeservice.entity.*;
 import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
@@ -11,12 +13,15 @@
 import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
-import lombok.AllArgsConstructor;
+import com.vci.ubcs.starter.util.SaveLogUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.map.CaseInsensitiveMap;
 import org.jetbrains.annotations.NotNull;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.transaction.annotation.Transactional;
@@ -24,6 +29,7 @@
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -36,8 +42,13 @@
 @Data
 @Slf4j
 public class MdmInterJtClient implements IMdmInterJtClient {
-	@Value("${docking.apply.partCoe:10}")
-	public String partCoe;
+
+	@Value("${docking.apply.partCode:10}")
+	private String partCode;
+
+	@Value("#{'${docking.apply.jDataBtmNames:wupin}'.split(',')}")
+	private List<String> JDATABTMNAMES;
+
 	/**
 	 * 闆嗗洟鐢宠鍗曟湇鍔�
 	 */
@@ -57,10 +68,12 @@
 	 * 闆嗗洟鍒嗙被鐢宠鍗曟湇鍔�
 	 */
 	private final IDockingPreClassifyService dockingPreClassifyService;
+
 	/***
 	 * 灞炴�ф槧灏勬湇鍔�
 	 */
 	private final IDockingPreAttrMappingService dockingPreAttrMappingService;
+
 	/**
 	 * 闆嗗洟鍙栧�艰寖鍥寸敵璇峰崟鏈嶅姟
 	 */
@@ -73,6 +86,9 @@
 
 	@Autowired(required = false)
 	private IMdmEngineClient mdmEngineClient;
+
+	private final SaveLogUtil saveLogUtil;
+
 	/***
 	 * 鐢宠闆嗗洟缂栫爜
 	 * @return
@@ -112,9 +128,7 @@
 			return R.fail("闆嗗洟鐮佹暟鎹慨鏀瑰け璐ワ細"+e.getMessage());
 		}
 	}
-	/*
-	 * 涓绘暟鎹笟鍔℃湇鍔�
-	 */
+
 	/**
 	 * 鑾峰彇闆嗗洟闆嗗洟鐮侊紝璧嬪�煎埌涓绘暟鎹�
 	 * @param dockingReturnStoreVO
@@ -126,7 +140,6 @@
 		log.info("鑾峰彇闆嗗洟闆嗗洟鐮侊紝璧嬪�煎埌涓绘暟鎹� start");
 		try {
 			Map<String,List<BaseModel>> editObjectMap = new HashMap<>();
-
 			List<DockingPreApplyForm> dockingPreApplyFormList = new ArrayList();
 			//String classId = javaObject.getClassId();
 			//String sysName = javaObject.getSysName();
@@ -163,6 +176,8 @@
 				} else if ("9".equals(formState)) {
 					msg = "瀹℃牳涓�";
 				}
+				// 濡傛灉杩斿洖浜嗗鏌ユ剰瑙佸氨鐢ㄨ繑鍥炵殑
+				msg = Func.isNotBlank(mainData.getExamineOpinion()) ? msg+"锛屾剰瑙侊細"+mainData.getExamineOpinion():msg;
 				jcontent.put("applyId", applyId);
 				jcontent.put("formState", formState);
 				jcontent.put("customCoding", customCoding);
@@ -175,6 +190,7 @@
 				DockingPreApplyForm dockingPreApplyForm = oldDockingPreApplyFormList.get(0);
 				dockingPreApplyForm.setMsg(msg);
 				dockingPreApplyForm.setCode("1");
+				dockingPreApplyForm.setLastModifyTime(new Date());
 				if (res) {
 					dockingPreApplyForm.setGroupCode(customCoding);
 				}
@@ -183,18 +199,44 @@
 				dockingPreApplyFormList.add(dockingPreApplyForm);
 				String jdataid = dockingPreApplyForm.getDataOid();
 				String jdatabtmname = dockingPreApplyForm.getDataBtmName();
+				// 璺宠繃涓嶉渶瑕佸鐞嗛泦鍥㈣繑鐮佺殑鍒嗙被
+				if(!JDATABTMNAMES.contains(jdatabtmname)){
+					continue;
+				}
 				if (res) {
 					//姝ゅ闇�瑕佹煡璇笟鍔℃暟鎹紝鍘绘洿鏀�
-					BaseModel baseModel = new BaseModel();
-					String classOid=baseModel.getData().getOrDefault("CODECLSFID","");
-					if(partCoe.equals(classOid)){
-						baseModel.setId(10+customCoding);
+					R<List<BaseModel>> R = mdmEngineClient.selectByTypeAndOid(jdatabtmname,jdataid);
+					// TODO:鏂板涓氬姟閫昏緫锛岄渶瑕佹牴鎹泦鍥㈣繑鍥炵殑灞炴�ц繘琛屽垽鏂紝濡傛灉闆嗗洟瀵硅灞炴�ц繘琛屼簡淇敼缂栫爜绯荤粺涔熷氨闇�瑕佸灞炴�ц繘琛屼慨鏀�
+					if(R.isSuccess()){
+						List<BaseModel> newDatalist=new ArrayList<>();
+						List<BaseModel> oldDatalist=R.getData();
+						if(!CollectionUtils.isEmpty(oldDatalist)){
+							if(editObjectMap.containsKey(jdatabtmname)){
+								newDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
+							}
+							BaseModel baseModel=oldDatalist.get(0);
+							//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
+							baseModel.setLastModifyTime(new Date());
+							baseModel.getData().put("GROUPCODE",customCoding);
+							// 1銆佸彇鍒伴泦鍥㈣繑鍥炵殑ViewInfos涓紪鐮佽鍥句腑鐨勫睘鎬�
+							List<Map<String, Object>> viewValueList = mainData.getViewInfos().stream().filter(item -> item.getViewName().equals("缂栫爜瑙嗗浘")).map(DockingViewVO::getViewValue).findFirst().orElse(null);
+							// 2銆佹瘮瀵瑰睘鎬ф槸鍚﹀拰oldDatalist灞炴�т竴鑷达紝涓嶄竴鑷村氨闇�瑕佹洿鏀�
+							if(Func.isNotEmpty(viewValueList)){
+								// 3銆侀渶瑕佸皢闆嗗洟灞炴�ц浆鎹负鎴戜滑绯荤粺鐨勫睘鎬э紝鍐嶅拰鎴戜滑绯荤粺鐨勭幇鏈夊睘鎬ф瘮瀵�
+								String codeclsfid = VciBaseUtil.getMapStrValueIgnoreCase(baseModel.getData(),"CODECLSFID");
+								// 3.1銆侀�氳繃璇ユ潯鏁版嵁鐨勫垎绫籭d锛屾嬁鍒伴泦鍥㈠睘鎬ф槧灏勯厤缃紝鐢ㄦ潵灏嗛泦鍥㈢殑灞炴�ф槧灏勫埌鎴戜滑绯荤粺鐨勫睘鎬�
+								List<DockingPreAttrMapping> dockingPreAttrMappings = dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId, codeclsfid).eq(DockingPreAttrMapping::getViewName,"缂栫爜瑙嗗浘"));
+								if(Func.isNotEmpty(dockingPreAttrMappings)){
+									log.info("寮�濮嬭皟鐢╯ourceAttrKey2TargetKey鏂规硶銆�");
+									//鏍规嵁闆嗗洟灞炴�ф槧灏勫皢闆嗗洟杞埌鎴戜滑绯荤粺锛屽苟淇敼涓嶄竴鑷寸殑鍒版垜浠郴缁熶腑瀵瑰簲鐨勮鏉¤褰曠殑鍊�
+									sourceAttrKey2TargetKey(dockingPreAttrMappings, viewValueList.get(0), baseModel);
+								}
+							}
+							log.info("鐢宠鍗�:"+applyId+",闆嗗洟鐮侊細"+customCoding+"缂栫爜锛�"+baseModel.getId());
+							newDatalist.add(baseModel);
+							editObjectMap.put(jdatabtmname,newDatalist);
+						}
 					}
-					String btmeName=baseModel.getBtmname();
-					baseModel.getData().put("groupcode",customCoding);
-					log.info("鐢宠鍗�:"+applyId+",闆嗗洟鐮侊細"+customCoding+"缂栫爜锛�"+baseModel.getId());
-					editObjectMap.getOrDefault(btmeName,new ArrayList<>()).add(baseModel);
-
 				}
 			}
 			if(!CollectionUtils.isEmpty(editObjectMap)) {
@@ -203,13 +245,86 @@
 					mdmEngineClient.updateBatchBtypeDatas(btmName, modeList);
 				});
 			}
-			dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
+			if(!CollectionUtils.isEmpty(dockingPreApplyFormList)){
+				dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
+			}
+			saveLogUtil.operateLog("鐢宠鍗曠粨鏋滆繑鍥�",false, JSON.toJSONString(dockingReturnStoreVO.getMainData()));
 		}catch (Throwable e){
 			e.printStackTrace();
-			return R.fail("闆嗗洟鐮侀泦鎴愯祴鍊煎け璐�"+e);
+			saveLogUtil.operateLog("鐢宠鍗曠粨鏋滆繑鍥�",true,"閿欒淇℃伅锛�"+e.getMessage()+"\n"+ JSON.toJSONString(dockingReturnStoreVO.getMainData()));
+			return R.fail("闆嗗洟鐮侀泦鎴愯祴鍊煎け璐ワ紝鍘熷洜锛�"+e.getMessage());
 		}
 		log.info("鑾峰彇闆嗗洟闆嗗洟鐮侊紝璧嬪�煎埌涓绘暟鎹� end");
+
 		return R.success("闆嗗洟鐮佽祴鍊兼垚鍔�");
+	}
+
+	/**
+	 * 鏍规嵁闆嗗洟灞炴�ф槧灏勫皢闆嗗洟杞埌鎴戜滑绯荤粺
+	 * @param dockingPreAttrMappings
+	 * @param viewValueMap
+	 * @param baseModel
+	 */
+	private void sourceAttrKey2TargetKey(List<DockingPreAttrMapping> dockingPreAttrMappings,Map<String, Object> viewValueMap,BaseModel baseModel) throws ServiceException {
+		log.info("寮�濮嬫牴鎹泦鍥㈠睘鎬ф槧灏勶紝灏嗛泦鍥㈠睘鎬ц浆鎴愮紪鐮佺郴缁熷睘鎬э紝骞惰繘琛屾槸鍚︿慨鏀圭殑姣斿锛�");
+		//娣辨嫹璐濊褰曚笅鍘熷璞★紝濡傛灉鏈夋洿鏀圭敤鏉ユ斁鍦ㄦ棫涓氬姟鏁版嵁瀛楁锛坥ldbusinessdata锛変笂
+		BaseModel oldBaseModel = null;
+		try {
+			oldBaseModel = deepCopy(baseModel);
+		} catch (Exception e) {
+			log.error("璁板綍鏃х殑涓氬姟鏁版嵁鏃讹紝baseModel瀵硅薄娣辨嫹璐濆嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage());
+			e.printStackTrace();
+			throw new ServiceException("璁板綍鏃х殑涓氬姟鏁版嵁鏃讹紝baseModel瀵硅薄娣辨嫹璐濆嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage());
+		}
+		Map<String, Object> targetKeyMap = new CaseInsensitiveMap<>();
+		// 灏嗛泦鍥㈠睘鎬ц浆鎴愭垜浠郴缁熷睘鎬х殑map
+		dockingPreAttrMappings.stream().forEach(item->{
+			targetKeyMap.put(item.getTargetAttrKey(),viewValueMap.get(item.getSourceAttrKey()));
+		});
+		// 姣斿baseModel鐨刣ata涓殑灞炴�ф槸鍚﹀拰targetKeyMap涓嶄竴鑷达紝涓嶄竴鑷寸殑璇濆氨闇�瑕佸皢baseModel鐨刣ata涓殑瀵瑰簲key鐨剉alue鍊艰浆鎴愰泦鍥㈢殑
+		boolean isEdit = false;
+		// 蹇界暐澶у皬鍐�
+		Map caseInsensitiveMap = new CaseInsensitiveMap(baseModel.getData());
+		for (Map.Entry<String, Object> entry : targetKeyMap.entrySet()) {
+			String key = entry.getKey();
+			Object targetValue = entry.getValue();
+			String dataValue = String.valueOf(caseInsensitiveMap.get(key));
+			if (targetValue != null && !targetValue.equals(dataValue)) {
+				caseInsensitiveMap.put(key, targetValue.toString());
+				isEdit = true;
+			}
+		}
+		// 闆嗗洟瀵规垜浠郴缁熷睘鎬у仛浜嗚皟鏁达紝鎴戜滑闇�瑕佸鑰佺殑涓氬姟鏁版嵁鍋氳褰�
+		if (isEdit) {
+			log.info("闆嗗洟杩斿洖鐨勬暟鎹瓨鍦ㄥ樊寮傦紝寮�濮嬫墽琛屽缂栫爜绯荤粺basemodel瀵硅薄淇敼鎿嶄綔锛�");
+			// 娓呯┖鍘熷厛鐨刴ap锛屼娇鐢ㄦ柊鐨勪笉鍖哄垎key澶у皬鍐欑殑map
+			baseModel.getData().clear();
+			baseModel.getData().putAll(caseInsensitiveMap);
+			// 绉婚櫎鍘嗗彶鐨刼ldbusinessdata瀛楁锛屽惁鍒欎細瓒呴暱
+			oldBaseModel.getData().remove("oldbusinessdata");
+			baseModel.getData().put("oldbusinessdata", JSON.toJSONString(oldBaseModel));
+		}
+	}
+
+	/**
+	 * 娣辨嫹璐�
+	 * @param baseModel
+	 * @return
+	 * @throws ClassNotFoundException
+	 * @throws IOException
+	 */
+	public static BaseModel deepCopy(BaseModel baseModel) throws ClassNotFoundException, IOException {
+		ByteArrayOutputStream bos = new ByteArrayOutputStream();
+		ObjectOutputStream oos = new ObjectOutputStream(bos);
+		oos.writeObject(baseModel);
+		oos.close();
+
+		ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+		ObjectInputStream ois = new ObjectInputStream(bis);
+		BaseModel copy = (BaseModel) ois.readObject();
+		ois.close();
+
+		return copy;
 	}
 
 	/***
@@ -284,20 +399,20 @@
 			throw new Throwable("瀛樺偍瑙嗗浘妯″瀷鍑虹幇闂");
 		}
 	}
+
 	/***
 	 * 鑾峰彇鍒嗙被瑙嗗浘
 	 *
 	 * @param jclassObject
 	 * @throws Throwable
 	 */
-	private void getVilewMode(@NotNull DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list)
-		throws Throwable {
+	private void getVilewMode(@NotNull DockingClassifyVO jclassObject, List<DockingClassifyViewVO> list) throws Throwable {
 		String nodeLinkName = jclassObject.getNodeLinkName();
 		try {
 			String jclassId =StringUtils.isBlank(jclassObject.getId())?"":jclassObject.getId();
 			Map<String, DockingPreViewModel> jviewmodelMap = new HashMap<String, DockingPreViewModel>();
-			//Map<String, String> condtionMa = new HashMap<String, String>();
-		//	condtionMa.put("jsourceclsfid", jclassId);
+			// Map<String, String> condtionMa = new HashMap<String, String>();
+			// condtionMa.put("jsourceclsfid", jclassId);
 			List<DockingPreViewModel> dockingPreViewModelList= dockingPreViewModelService.list(Wrappers.<DockingPreViewModel>query().lambda().eq(DockingPreViewModel::getSourceClassifyId,false));// 鏍规嵁鍒嗙被鏌ヨ妯″瀷瑙嗗浘瀵硅薄
 			for (DockingPreViewModel dockingPreViewModel : dockingPreViewModelList) {
 				jviewmodelMap.put(dockingPreViewModel.getViewName(),dockingPreViewModel);
@@ -339,7 +454,6 @@
 			throw new Throwable("缁勭粐鍒嗙被" + nodeLinkName + "妯″瀷瑙嗗浘瀛樺偍鍑虹幇闂");
 		}
 	}
-
 
 	/***
 	 * 鑾峰彇妯″瀷瑙嗗浘灞炴��

--
Gitblit v1.9.3