From 0e3a6cac9b374fca07b94768f03ecd9ec389acc9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 24 四月 2024 17:17:40 +0800
Subject: [PATCH] 4、因日志记录的大字段信息太长导致卡顿,所以调整集成日志,操作日志,本地日志,修改表格列表不查询显示大字段,点击详情时才显示详细信息。 5、日志页面增加查询属性(页面显示的属性都加上),支持模糊查询。

---
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java |  100 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 93 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..320f739 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,9 +14,11 @@
 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;
+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;
@@ -28,6 +30,7 @@
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -197,20 +200,35 @@
 				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)){
+									log.info("寮�濮嬭皟鐢╯ourceAttrKey2TargetKey鏂规硶銆�");
+									//鏍规嵁闆嗗洟灞炴�ф槧灏勫皢闆嗗洟杞埌鎴戜滑绯荤粺锛屽苟淇敼涓嶄竴鑷寸殑鍒版垜浠郴缁熶腑瀵瑰簲鐨勮鏉¤褰曠殑鍊�
+									sourceAttrKey2TargetKey(dockingPreAttrMappings, viewValueList.get(0), baseModel);
+								}
+							}
 							log.info("鐢宠鍗�:"+applyId+",闆嗗洟鐮侊細"+customCoding+"缂栫爜锛�"+baseModel.getId());
-							oldDatalist.add(baseModel);
-							editObjectMap.put(jdatabtmname,oldDatalist);
+							newDatalist.add(baseModel);
+							editObjectMap.put(jdatabtmname,newDatalist);
 						}
 					}
 				}
@@ -234,6 +252,74 @@
 		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;
+	}
+
 	/***
 	 * 鎺ュ彈闆嗗洟鍒嗙被涓绘ā鍨嬫暟鎹�
 	 * @param dockingClassifyModelAttrVO

--
Gitblit v1.9.3