Przeglądaj źródła

设备台账 - 修改本地编码后,更新无效,再查询还是之前的

lvxianyun 3 lat temu
rodzic
commit
3d6bd2e73f

+ 18 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmEquipmentController.java

@@ -2,6 +2,8 @@ package com.persagy.proxy.adm.controller;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.proxy.adm.model.AdmEquipment;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
@@ -12,6 +14,7 @@ import com.persagy.proxy.adm.utils.ObjectNameUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -86,6 +89,21 @@ public class AdmEquipmentController {
     public AdmResponse update(@RequestBody AdmCreateRequest<AdmEquipment> createRequest) throws Exception {
         List<AdmEquipment> vos = CollUtil.newArrayList(createRequest.getContent());
         //vos = service.doUpdateEuip(AdmContextUtil.toDmpContext(), AdmEquipment.class, vos);
+        //针对设备更新时,所有更新的字段都放到信息点中的情况特殊处理
+        if(CollUtil.isNotEmpty(vos)){
+            List<AdmEquipment> equipmentList = new ArrayList<>(vos.size());
+            vos.stream().forEach(equipment -> {
+                if(CollUtil.isNotEmpty(equipment.getInfos())){
+                    AdmEquipment admEquipment = new AdmEquipment();
+                    admEquipment.setId(equipment.getId());
+                    admEquipment.setInfos(equipment.getInfos());
+                    ObjectNode objectNode = JsonNodeUtils.toObjectNode(admEquipment, "infos", null);
+                    AdmEquipment admEquipmentNew = JsonNodeUtils.toEntity(objectNode, AdmEquipment.class, "infos");
+                    equipmentList.add(admEquipmentNew);
+                }
+            });
+            vos = equipmentList;
+        }
         vos = service.doUpdate(AdmContextUtil.toDmpContext(), AdmEquipment.class, vos);
         return AdmResponse.success(vos);
     }