From 96ccda8fecce548ca4b9041967aa99a9640a960e Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期二, 21 一月 2025 16:17:20 +0800
Subject: [PATCH] 分类码段取消校验
---
Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feigh/MdmInterJtClient.java | 122 +++++++++++++++++++++++++++++++++++-----
1 files changed, 107 insertions(+), 15 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 7ba6101..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
@@ -14,9 +14,10 @@
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.util.SaveLogUtil;
-import lombok.AllArgsConstructor;
+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;
@@ -28,7 +29,7 @@
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
-import javax.servlet.http.HttpServletRequest;
+import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
@@ -42,8 +43,11 @@
@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;
/**
* 闆嗗洟鐢宠鍗曟湇鍔�
@@ -136,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();
@@ -173,6 +176,7 @@
} else if ("9".equals(formState)) {
msg = "瀹℃牳涓�";
}
+ // 濡傛灉杩斿洖浜嗗鏌ユ剰瑙佸氨鐢ㄨ繑鍥炵殑
msg = Func.isNotBlank(mainData.getExamineOpinion()) ? msg+"锛屾剰瑙侊細"+mainData.getExamineOpinion():msg;
jcontent.put("applyId", applyId);
jcontent.put("formState", formState);
@@ -195,23 +199,42 @@
dockingPreApplyFormList.add(dockingPreApplyForm);
String jdataid = dockingPreApplyForm.getDataOid();
String jdatabtmname = dockingPreApplyForm.getDataBtmName();
+ // 璺宠繃涓嶉渶瑕佸鐞嗛泦鍥㈣繑鐮佺殑鍒嗙被
+ if(!JDATABTMNAMES.contains(jdatabtmname)){
+ continue;
+ }
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);
}
}
}
@@ -225,14 +248,83 @@
if(!CollectionUtils.isEmpty(dockingPreApplyFormList)){
dockingPreApplyFormService.saveOrUpdateBatch(dockingPreApplyFormList);
}
- saveLogUtil.operateLog("鐢宠鍗曠粨鏋滆繑鍥�",false,JSON.toJSONString(dockingReturnStoreVO.getMainData()));
+ saveLogUtil.operateLog("鐢宠鍗曠粨鏋滆繑鍥�",false, JSON.toJSONString(dockingReturnStoreVO.getMainData()));
}catch (Throwable e){
e.printStackTrace();
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;
}
/***
@@ -319,8 +411,8 @@
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);
--
Gitblit v1.9.3