From 9e27b1b292872bd83b761091554fbd8db72b595e Mon Sep 17 00:00:00 2001
From: yangyang
Date: 星期四, 20 三月 2025 10:47:13 +0800
Subject: [PATCH] #优化 物料扩展字段修改优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java           |   33 +++++++++++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java |   16 ++++++++++++----
 2 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
index abf6c8a..d3cfffb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -87,4 +87,37 @@
         FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
         return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
     }
+
+    public static void updateFieldsValue(Map<String, Object> params) {
+        List<Fields> fields = getFieldsSta();
+        if (fields.isEmpty()) { return; }
+        Object fieldsIndex = params.get("fieldsIndex");
+        if (!Objects.isNull(fieldsIndex)) {
+            String index = fieldsIndex.toString();
+            FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
+            for (Fields field : fields) {
+                if (!Objects.isNull(params.get(field.getFields()))) {
+                    FieldsItem indexItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
+                            .eq(FieldsItem::getUuid, index)
+                            .eq(FieldsItem::getFieldsId, field.getId()));
+                    //濡傛灉瀛愯〃涓虹┖锛屾墽琛屾彃鍏ユ搷浣滐紝鍚﹀垯灏辨墽琛屼慨鏀规搷浣�
+                    if (Objects.isNull(indexItem)) {
+                        FieldsItem item = new FieldsItem();
+                        item.setUuid(index)
+                                .setFieldsId(field.getId())
+                                .setValue(params.get(field.getFields()).toString());
+                        if (fieldsItemService.save(item)) {
+                            throw new CoolException("鎵╁睍瀛楁淇敼澶辫触锛侊紒");
+                        }
+                    } else {
+                        indexItem.setValue(params.get(field.getFields()).toString());
+                        if (fieldsItemService.updateById(indexItem)) {
+                            throw new CoolException("鎵╁睍瀛楁淇敼澶辫触锛侊紒");
+                        }
+                    }
+                }
+            }
+
+        }
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
index 12ed36f..ca97031 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java
@@ -24,6 +24,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -83,15 +84,17 @@
             throw new CoolException("鐗╂枡鍒嗙粍涓嶈兘涓虹┖锛侊紒");
         }
 
+        Matnr matnr1 = JSONObject.parseObject(JSONObject.toJSONString(matnr), Matnr.class);
+
         /**
          * 鎵╁睍瀛楁瀛樺叆搴�
          */
+        String uuid16 = CommonUtil.randomUUID16();
         if (!FieldsUtils.getFieldsSta().isEmpty()) {
-            String uuid16 = CommonUtil.randomUUID16();
             FieldsUtils.saveFields(matnr, uuid16);
+            matnr1.setFieldsIndex(uuid16);
         }
 
-        Matnr matnr1 = JSONObject.parseObject(JSONObject.toJSONString(matnr), Matnr.class);
         matnr1.setCreateBy(getLoginUserId());
         matnr1.setUpdateBy(getLoginUserId());
 
@@ -104,12 +107,17 @@
     @PreAuthorize("hasAuthority('manager:matnr:update')")
     @OperationLog("Update 鐗╂枡淇℃伅琛�")
     @PostMapping("/matnr/update")
-    public R update(@RequestBody Matnr matnr) {
+    @Transactional(rollbackFor = Exception.class)
+    public R update(@RequestBody Map<String, Object> params) {
+
+        Matnr matnr = JSONObject.parseObject(JSONObject.toJSONString(params), Matnr.class);
         matnr.setUpdateBy(getLoginUserId());
-        matnr.setUpdateTime(new Date());
         if (!matnrService.updateById(matnr)) {
             return R.error("Update Fail");
         }
+        if (!Objects.isNull(params.get("fieldsIndex"))) {
+            FieldsUtils.updateFieldsValue(params);
+        }
         return R.ok("Update Success").add(matnr);
     }
 

--
Gitblit v1.9.1