From 447d6b096de7957ab5777a6e01d190f02eb4fab1 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 24 四月 2024 17:17:58 +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 | 190 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 165 insertions(+), 25 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 113b4af..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
@@ -1,24 +1,36 @@
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;
import com.vci.ubcs.code.applyjtcodeservice.service.*;
import com.vci.ubcs.code.applyjtcodeservice.vo.*;
+import com.vci.ubcs.code.feign.IMdmEngineClient;
import com.vci.ubcs.starter.revision.model.BaseModel;
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;
+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;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
+import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
@@ -28,9 +40,13 @@
@NonDS
@ApiIgnore
@RestController
-@AllArgsConstructor
+@Data
@Slf4j
public class MdmInterJtClient implements IMdmInterJtClient {
+
+ @Value("${docking.apply.partCode:10}")
+ public String partCode;
+
/**
* 闆嗗洟鐢宠鍗曟湇鍔�
*/
@@ -51,6 +67,10 @@
*/
private final IDockingPreClassifyService dockingPreClassifyService;
+ /***
+ * 灞炴�ф槧灏勬湇鍔�
+ */
+ private final IDockingPreAttrMappingService dockingPreAttrMappingService;
/**
* 闆嗗洟鍙栧�艰寖鍥寸敵璇峰崟鏈嶅姟
@@ -62,6 +82,10 @@
*/
private final IGroupMdmInterService groupMdmInterService;
+ @Autowired(required = false)
+ private IMdmEngineClient mdmEngineClient;
+
+ private final SaveLogUtil saveLogUtil;
/***
* 鐢宠闆嗗洟缂栫爜
@@ -74,6 +98,22 @@
return R.fail("闆嗗洟鐮佺敵璇峰け璐ワ細"+e.getMessage());
}
}
+
+ /***
+ * 鏌ヨ闆嗗洟灞炴�ф槧灏�
+ * @param codeClassifyOid:缂栫爜鍒嗙被oid
+ * @return
+ */
+ @Override
+ public R<List<DockingPreAttrMappingVO>> list_mapping(String codeClassifyOid) {
+ List<DockingPreAttrMapping> dockingPreAttrMappings= dockingPreAttrMappingService.selectByWrapper(Wrappers.<DockingPreAttrMapping>query().lambda().eq(DockingPreAttrMapping::getTargetClassifyId,codeClassifyOid));
+ List<DockingPreAttrMappingVO> dockingPreAttrMappingVOList=new ArrayList<>();
+ if(!CollectionUtils.isEmpty(dockingPreAttrMappings)){
+ dockingPreAttrMappingVOList=dockingPreAttrMappingService.dockingPreAttrMappingDO2VOS(dockingPreAttrMappings,true);
+ }
+ return R.data(dockingPreAttrMappingVOList);
+ }
+
/***
* 鐢宠闆嗗洟缂栫爜鏁版嵁缁存姢
* @return
@@ -81,17 +121,11 @@
@Override
public R receiveEditApply(String oids, String btmName) {
try {
- return groupMdmInterService.applyGroupCode(oids,btmName);
+ return groupMdmInterService.receiveEditApply(oids,btmName);
}catch (Throwable e){
return R.fail("闆嗗洟鐮佹暟鎹慨鏀瑰け璐ワ細"+e.getMessage());
}
}
-
-
-
- /*
- * 涓绘暟鎹笟鍔℃湇鍔�
- */
/**
* 鑾峰彇闆嗗洟闆嗗洟鐮侊紝璧嬪�煎埌涓绘暟鎹�
@@ -103,8 +137,7 @@
public R getApplyGroupCode(DockingReturnStoreVO dockingReturnStoreVO) {
log.info("鑾峰彇闆嗗洟闆嗗洟鐮侊紝璧嬪�煎埌涓绘暟鎹� start");
try {
- List<BaseModel> editObjectList = new ArrayList();
-
+ Map<String,List<BaseModel>> editObjectMap = new HashMap<>();
List<DockingPreApplyForm> dockingPreApplyFormList = new ArrayList();
//String classId = javaObject.getClassId();
//String sysName = javaObject.getSysName();
@@ -141,6 +174,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);
@@ -153,30 +188,136 @@
DockingPreApplyForm dockingPreApplyForm = oldDockingPreApplyFormList.get(0);
dockingPreApplyForm.setMsg(msg);
dockingPreApplyForm.setCode("1");
+ dockingPreApplyForm.setLastModifyTime(new Date());
if (res) {
dockingPreApplyForm.setGroupCode(customCoding);
}
//杩斿洖缁撴灉淇℃伅
dockingPreApplyForm.setContent(jcontent.toJSONString());
dockingPreApplyFormList.add(dockingPreApplyForm);
+ String jdataid = dockingPreApplyForm.getDataOid();
+ String jdatabtmname = dockingPreApplyForm.getDataBtmName();
if (res) {
- String jdataid = dockingPreApplyForm.getDataOid();
- String jdatabtmname = dockingPreApplyForm.getDataBtmName();
//姝ゅ闇�瑕佹煡璇笟鍔℃暟鎹紝鍘绘洿鏀�
- BaseModel baseModel = new BaseModel();
- baseModel.setId(customCoding);
- log.info("鐢宠鍗�:"+applyId+",闆嗗洟鐮侊細"+customCoding+"缂栫爜锛�"+baseModel.getId());
- editObjectList.add(baseModel);
+ 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);
+ }
+ }
}
}
- dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
- //璋冪敤涓绘暟鎹湇鍔℃壒閲忎繚瀛樻帴鍙�
+ if(!CollectionUtils.isEmpty(editObjectMap)) {
+ //璋冪敤涓绘暟鎹湇鍔℃壒閲忎繚瀛樻帴鍙�
+ editObjectMap.forEach((btmName, modeList) -> {
+ mdmEngineClient.updateBatchBtypeDatas(btmName, modeList);
+ });
+ }
+ 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;
}
/***
@@ -251,20 +392,20 @@
throw new Throwable("瀛樺偍瑙嗗浘妯″瀷鍑虹幇闂");
}
}
+
/***
* 鑾峰彇鍒嗙被瑙嗗浘
*
* @param jclassObject
* @throws Throwable
*/
- private void getVilewMode(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);
@@ -272,7 +413,7 @@
for (DockingClassifyViewVO viewInfo : list) {
String viewName =StringUtils.isBlank(viewInfo.getViewName())?"":viewInfo.getViewName();
- String impactList = StringUtils.isBlank(viewInfo.getImpactList())?"":viewInfo.getImpactList();
+ String impactList = viewInfo.getImpactList() == null ? "" : viewInfo.getImpactList().get(0).get(0);
log.info("VilewMode:-------------->瑙嗗浘鍚嶇О:"+viewName);
log.info("VilewMode:-------------->褰卞搷缂栫爜椤�:"+impactList);
log.info("VilewMode:--------------> 闆嗗洟鍒嗙被涓婚敭:"+jclassId);
@@ -306,7 +447,6 @@
throw new Throwable("缁勭粐鍒嗙被" + nodeLinkName + "妯″瀷瑙嗗浘瀛樺偍鍑虹幇闂");
}
}
-
/***
* 鑾峰彇妯″瀷瑙嗗浘灞炴��
--
Gitblit v1.9.3