From d50dec2d9b92c103134ae4e313c7bbbe5c2f4432 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 24 四月 2024 16:39:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 7 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 c456a78..6bb3dad 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
@@ -14,6 +14,7 @@
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
 import com.vci.ubcs.starter.util.SaveLogUtil;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -197,20 +198,34 @@
 				if (res) {
 					//姝ゅ闇�瑕佹煡璇笟鍔℃暟鎹紝鍘绘洿鏀�
 					R<List<BaseModel>> R = mdmEngineClient.selectByTypeAndOid(jdatabtmname,jdataid);
+					// TODO:鏂板涓氬姟閫昏緫锛岄渶瑕佹牴鎹泦鍥㈣繑鍥炵殑灞炴�ц繘琛屽垽鏂紝濡傛灉闆嗗洟瀵硅灞炴�ц繘琛屼簡淇敼缂栫爜绯荤粺涔熷氨闇�瑕佸灞炴�ц繘琛屼慨鏀�
 					if(R.isSuccess()){
-						List<BaseModel> oldDatalist=new ArrayList<>();
-						List<BaseModel> newDatalist=R.getData();
-						if(!CollectionUtils.isEmpty(newDatalist)){
+						List<BaseModel> newDatalist=new ArrayList<>();
+						List<BaseModel> oldDatalist=R.getData();
+						if(!CollectionUtils.isEmpty(oldDatalist)){
 							if(editObjectMap.containsKey(jdatabtmname)){
-								oldDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
+								newDatalist=editObjectMap.getOrDefault(jdatabtmname,new ArrayList<>());
 							}
 							BaseModel baseModel=oldDatalist.get(0);
 							//DefaultAttrAssimtUtil.updateDefaultAttrAssimt(baseModel);
 							baseModel.setLastModifyTime(new Date());
-							baseModel.getData().put("groupcode",customCoding);
+							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)){
+									//鏍规嵁闆嗗洟灞炴�ф槧灏勫皢闆嗗洟杞埌鎴戜滑绯荤粺锛屽苟淇敼涓嶄竴鑷寸殑鍒版垜浠郴缁熶腑瀵瑰簲鐨勮鏉¤褰曠殑鍊�
+									sourceAttrKey2TargetKey(dockingPreAttrMappings, viewValueList.get(0), oldDatalist, baseModel);
+								}
+							}
 							log.info("鐢宠鍗�:"+applyId+",闆嗗洟鐮侊細"+customCoding+"缂栫爜锛�"+baseModel.getId());
-							oldDatalist.add(baseModel);
-							editObjectMap.put(jdatabtmname,oldDatalist);
+							newDatalist.add(baseModel);
+							editObjectMap.put(jdatabtmname,newDatalist);
 						}
 					}
 				}
@@ -234,6 +249,37 @@
 		return R.success("闆嗗洟鐮佽祴鍊兼垚鍔�");
 	}
 
+	/**
+	 * 鏍规嵁闆嗗洟灞炴�ф槧灏勫皢闆嗗洟杞埌鎴戜滑绯荤粺
+	 * @param dockingPreAttrMappings
+	 * @param viewValueMap
+	 * @param oldDatalist
+	 * @param baseModel
+	 */
+	private void sourceAttrKey2TargetKey(List<DockingPreAttrMapping> dockingPreAttrMappings,Map<String, Object> viewValueMap, List<BaseModel> oldDatalist,BaseModel baseModel){
+		Map<String, Object> targetKeyMap = new HashMap<>();
+		// 灏嗛泦鍥㈠睘鎬ц浆鎴愭垜浠郴缁熷睘鎬х殑map
+		dockingPreAttrMappings.stream().forEach(item->{
+			targetKeyMap.put(item.getTargetAttrKey(),viewValueMap.get(item.getSourceAttrKey()));
+		});
+		// 姣斿baseModel鐨刣ata涓殑灞炴�ф槸鍚﹀拰targetKeyMap涓嶄竴鑷达紝涓嶄竴鑷寸殑璇濆氨闇�瑕佸皢baseModel鐨刣ata涓殑瀵瑰簲key鐨剉alue鍊艰浆鎴愰泦鍥㈢殑
+		boolean isEdit = false;
+		for (Map.Entry<String, Object> entry : targetKeyMap.entrySet()) {
+			String key = entry.getKey();
+			Object targetValue = entry.getValue();
+			String dataValue = baseModel.getData().get(key);
+
+			if (targetValue != null && !targetValue.equals(dataValue)) {
+				baseModel.getData().put(key, targetValue.toString());
+				isEdit = true;
+			}
+		}
+		// 闆嗗洟瀵规垜浠郴缁熷睘鎬у仛浜嗚皟鏁达紝鎴戜滑闇�瑕佸鑰佺殑涓氬姟鏁版嵁鍋氳褰�
+		if (isEdit) {
+			baseModel.getData().put("oldbusinessdata", JSON.toJSONString(oldDatalist));
+		}
+	}
+
 	/***
 	 * 鎺ュ彈闆嗗洟鍒嗙被涓绘ā鍨嬫暟鎹�
 	 * @param dockingClassifyModelAttrVO

--
Gitblit v1.9.3