From 158ef0f443b9f36f8beb44853ed1f39449c45c1d Mon Sep 17 00:00:00 2001
From: yangyang
Date: 星期五, 21 三月 2025 10:55:37 +0800
Subject: [PATCH] #修改 1. 动态扩展字段优化 2. 物料优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java                    |   37 ++++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java         |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java                |    4 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java       |   43 +++++++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java |   20 ++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java          |    5 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocTypeController.java        |    3 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java                        |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java                      |    6 ++
 9 files changed, 85 insertions(+), 37 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 7b53065..0f7f8ae 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
@@ -118,23 +118,26 @@
             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("鎵╁睍瀛楁淇敼澶辫触锛侊紒");
+                Map<String, String> extendFields = (Map<String, String>) params.get("extendFields");
+                if (!Objects.isNull(extendFields)) {
+                    if (!Objects.isNull(extendFields.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(extendFields.get(field.getFields()).toString());
+                            if (!fieldsItemService.save(item)) {
+                                throw new CoolException("鎵╁睍瀛楁淇敼澶辫触锛侊紒");
+                            }
+                        } else {
+                            indexItem.setValue(extendFields.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/LocTypeController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocTypeController.java
index 5d498ce..f54383d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocTypeController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocTypeController.java
@@ -59,6 +59,9 @@
         if (Objects.isNull(locType.getName())) {
             throw new CoolException("搴撲綅绫诲瀷涓嶈兘涓虹┖锛侊紒");
         }
+        if (Objects.isNull(locType.getCode())) {
+            throw new CoolException("搴撲綅缂栫爜涓嶄负绌猴紒锛�");
+        }
         if (Objects.isNull(locType.getRegex())) {
             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 098d840..1a763ae 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
@@ -62,11 +62,10 @@
         return R.ok().add(matnrService.listByIds(Arrays.asList(ids)));
     }
 
-
     @PreAuthorize("hasAuthority('manager:matnr:list')")
     @GetMapping("/matnr/{id}")
     public R get(@PathVariable("id") Long id) {
-        return R.ok().add(matnrService.getById(id));
+        return R.ok(matnrService.selectMatnrById(id));
     }
 
     @PreAuthorize("hasAuthority('manager:matnr:save')")
@@ -105,6 +104,8 @@
             return R.error("Update Fail");
         }
         if (!FieldsUtils.getFieldsSta().isEmpty()) {
+            Matnr matnr1 = matnrService.getById(matnr.getId());
+            params.put("fieldsIndex", matnr1.getFieldsIndex());
             FieldsUtils.updateFieldsValue(params);
         }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java
index e23db73..ccb02ff 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java
@@ -28,6 +28,7 @@
     @Autowired
     private WarehouseAreasService warehouseAreasService;
 
+    @Autowired
     private LocService locService;
 
     @PreAuthorize("hasAuthority('manager:warehouseAreas:list')")
@@ -60,6 +61,25 @@
     @OperationLog("Create 搴撳尯淇℃伅琛�")
     @PostMapping("/warehouseAreas/save")
     public R save(@RequestBody WarehouseAreas warehouseAreas) {
+
+        if (Objects.isNull(warehouseAreas)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(warehouseAreas.getName())) {
+            throw new CoolException("搴撳尯鍚嶇О涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(warehouseAreas.getCode())) {
+            throw new CoolException("搴撳尯缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+
+        List<WarehouseAreas> list = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getName, warehouseAreas.getName()));
+        if (!list.isEmpty()) {
+            throw new CoolException("搴撳尯鍚嶇О宸插瓨鍦紒锛�");
+        }
+        if (!warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getCode, warehouseAreas.getCode())).isEmpty()) {
+            throw new CoolException("搴撳尯缂栫爜宸插瓨鍦紒锛�");
+        }
+
         warehouseAreas.setCreateBy(getLoginUserId());
         warehouseAreas.setUpdateBy(getLoginUserId());
         if (!warehouseAreasService.save(warehouseAreas)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java
index 5f755c4..c76d759 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocType.java
@@ -35,6 +35,12 @@
     private Long id;
 
     /**
+     * 缂栫爜
+     */
+    @ApiModelProperty("缂栫爜")
+    private String code;
+
+    /**
      * 鏍囪瘑
      */
     @ApiModelProperty(value= "鏍囪瘑")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
index 02bf4be..c697ea4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
@@ -388,7 +388,7 @@
         }
     }
 
-    public String getIsLabelMange$(){
+    public String getFlagLabelMange$(){
         if (null == this.flagLabelMange){ return null; }
         switch (this.flagLabelMange){
             case 0:
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
index 5cb7c0c..7849783 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
@@ -16,5 +16,7 @@
 
     R saveMatnrs(Map<String, Object> matnr);
 
-    IPage<Map<String, Object>> getMatnrPage(PageParam<Matnr, BaseParam> pageParam);
+    PageParam<Matnr, BaseParam> getMatnrPage(PageParam<Matnr, BaseParam> pageParam);
+
+    Matnr selectMatnrById(Long id);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
index 57391e6..b363b77 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -54,6 +54,8 @@
         boolean update = this.update(new LambdaUpdateWrapper<Loc>()
                 .in(Loc::getId, locs.getId())
                 .eq(Loc::getStatus, 1)
+                .set(!Objects.isNull(loc.getAreaId()), Loc::getAreaId, loc.getAreaId())
+                .set(!Objects.isNull(loc.getWarehouseId()), Loc::getWarehouseId, loc.getWarehouseId())
                 .set(!Objects.isNull(loc.getUseStatus()), Loc::getUseStatus, loc.getUseStatus())
                 .set(!Objects.isNull(loc.getType()), Loc::getType, loc.getType())
                 .set(!Objects.isNull(loc.getLength()), Loc::getLength, loc.getLength())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
index 1c875d1..95d8391 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
@@ -99,7 +99,7 @@
     }
 
     @Override
-    public IPage<Map<String, Object>> getMatnrPage(PageParam<Matnr, BaseParam> pageParam) {
+    public PageParam<Matnr, BaseParam> getMatnrPage(PageParam<Matnr, BaseParam> pageParam) {
         IPage<Map<String, Object>> reulst = this.baseMapper.selectMatnrs(pageParam, pageParam.buildWrapper(true));
         /**鑾峰彇鐗╂枡鍒嗛〉淇℃伅 */
         List<Map<String, Object>> mapList = reulst.getRecords();
@@ -110,17 +110,30 @@
                 }
             });
         }
-        List<Matnr> matnrs = JSONArray.parseArray(JSON.toJSONString(mapList), Matnr.class);
-//        PageParam<Matnr, BaseParam> page = this.page(pageParam, pageParam.buildWrapper(true));
-//        List<Matnr> records = page.getRecords();
-//        for (Matnr record : records) {
-//            if (!Objects.isNull(record.getFieldsIndex())) {
-//                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
-//                record.setExtendFields(fields);
-//            }
-//        }
-//        page.setRecords(records);
-        return reulst;
+
+        PageParam<Matnr, BaseParam> page = this.page(pageParam, pageParam.buildWrapper(true));
+        List<Matnr> records = page.getRecords();
+        for (Matnr record : records) {
+            if (!Objects.isNull(record.getFieldsIndex())) {
+                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
+                record.setExtendFields(fields);
+            }
+        }
+        page.setRecords(records);
+        return page;
+    }
+
+    @Override
+    public Matnr selectMatnrById(Long id) {
+        Matnr matnr = this.baseMapper.selectById(id);
+        if (Objects.isNull(matnr)) {
+            throw new CoolException("褰撳墠鐗╂枡涓嶅瓨鍦紒锛�");
+        }
+        if (!Objects.isNull(matnr.getFieldsIndex())) {
+            Map<String, String> fields = FieldsUtils.getFields(matnr.getFieldsIndex());
+            matnr.setExtendFields(fields);
+        }
+        return matnr;
     }
 
     /**
@@ -134,8 +147,6 @@
         Matnr matnr1 = JSONObject.parseObject(JSONObject.toJSONString(matnr), Matnr.class);
         if (Objects.isNull(matnr1.getCode())) {
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_MATNR_CODE, null);
-            System.out.println("=========>");
-            System.out.println(ruleCode);
             matnr1.setCode(ruleCode);
         }
         /**
@@ -146,9 +157,9 @@
             FieldsUtils.saveFields(matnr, uuid16);
             matnr1.setFieldsIndex(uuid16);
         }
-        if (!this.save(matnr1)) {
+        if (!this.saveOrUpdate(matnr1)) {
             return R.error("Save Fail");
         }
-        return R.ok("淇濆瓨鎴愬姛!!");
+        return R.ok(matnr1);
     }
 }

--
Gitblit v1.9.1