From e98e114ff8765ca1ffbd6dda167e35d18b72f5d4 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 24 三月 2025 16:34:07 +0800
Subject: [PATCH] 代码优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java                  |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java        |   15 -
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrGroupServiceImpl.java     |   32 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrGroupService.java              |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java |  115 +++++++++++++++-
 rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java                                    |   20 ++
 /dev/null                                                                                           |   23 ---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocAreaMatRelaController.java    |   82 ++++++++++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocTypeRela.java                     |   38 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasController.java    |    8 
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictTypeController.java           |   14 +
 rsf-server/src/main/resources/application.yml                                                       |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictDataController.java           |   15 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocAreaMatsParam.java     |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocAreaMatRelaService.java          |   14 ++
 15 files changed, 334 insertions(+), 62 deletions(-)

diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java
index 6123a36..008d82d 100644
--- a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java
+++ b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java
@@ -48,6 +48,26 @@
         return result;
     }
 
+    public static <T, R> List<T> getAllTree(List<T> data, R parentId, Function<? super T, ? extends R> parentIdMapper, Function<? super T, ? extends R> idMapper, BiConsumer<T, List<T>> consumer) {
+        List<T> result = new ArrayList<>();
+        for (T datum : data) {
+            R dParentId = parentIdMapper.apply(datum);
+            R dId = idMapper.apply(datum);
+            if (dParentId.equals(dId)) {
+                List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer);
+                if (!children.isEmpty()) {
+                    consumer.accept(datum, children);
+                }
+                result.add(datum);
+            }
+            if (dParentId.equals(dId)) {
+                continue;
+            }
+        }
+        return result;
+    }
+
+
     public static <T> void treeRemove(List<T> list, String condition, Function<? super T, ? extends String> fetcher, Function<T, List<T>> childrenGetter) {
         Iterator<T> iterator = list.iterator();
         while (iterator.hasNext()) {
diff --git a/rsf-server/src/main/java/asnOrderItemLog.sql b/rsf-server/src/main/java/asnOrderItemLog.sql
deleted file mode 100644
index 367ed6d..0000000
--- a/rsf-server/src/main/java/asnOrderItemLog.sql
+++ /dev/null
@@ -1,43 +0,0 @@
--- save asnOrderItemLog record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.asnOrderItemLog', '0', '/manager/asnOrderItemLog', 'asnOrderItemLog', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query Asn order logs', '', '1', 'manager:asnOrderItemLog:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create Asn order logs', '', '1', 'manager:asnOrderItemLog:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update Asn order logs', '', '1', 'manager:asnOrderItemLog:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete Asn order logs', '', '1', 'manager:asnOrderItemLog:remove', '3', '1', '1');
-
--- locale menu name
-asnOrderItemLog: 'AsnOrderItemLog',
-
--- locale field
-asnOrderItemLog: {
-    asnId: "asnId",
-    asnCode: "asnCode",
-    platItemId: "platItemId",
-    poDetlId: "poDetlId",
-    poCode: "poCode",
-    fieldsIndex: "fieldsIndex",
-    matnrId: "matnrId",
-    matnrCode: "matnrCode",
-    maktx: "maktx",
-    anfme: "anfme",
-    stockUnit: "stockUnit",
-    purQty: "purQty",
-    purUnit: "purUnit",
-    qty: "qty",
-    splrCode: "splrCode",
-    splrBatch: "splrBatch",
-    splrName: "splrName",
-    qrcode: "qrcode",
-    trackCode: "trackCode",
-    barcode: "barcode",
-    packName: "packName",
-    ntyStatus: "ntyStatus",
-},
-
--- ResourceContent
-import asnOrderItemLog from './asnOrderItemLog';
-
-case 'asnOrderItemLog':
-    return asnOrderItemLog;
diff --git a/rsf-server/src/main/java/asnOrderLog.sql b/rsf-server/src/main/java/asnOrderLog.sql
deleted file mode 100644
index 8ba0442..0000000
--- a/rsf-server/src/main/java/asnOrderLog.sql
+++ /dev/null
@@ -1,32 +0,0 @@
--- save asnOrderLog record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.asnOrderLog', '0', '/manager/asnOrderLog', 'asnOrderLog', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query Asn order logs', '', '1', 'manager:asnOrderLog:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create Asn order logs', '', '1', 'manager:asnOrderLog:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update Asn order logs', '', '1', 'manager:asnOrderLog:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete Asn order logs', '', '1', 'manager:asnOrderLog:remove', '3', '1', '1');
-
--- locale menu name
-asnOrderLog: 'AsnOrderLog',
-
--- locale field
-asnOrderLog: {
-    code: "code",
-    poCode: "poCode",
-    poId: "poId",
-    type: "type",
-    wkType: "wkType",
-    anfme: "anfme",
-    qty: "qty",
-    logisNo: "logisNo",
-    arrTime: "arrTime",
-    rleStatus: "rleStatus",
-    ntyStatus: "ntyStatus",
-},
-
--- ResourceContent
-import asnOrderLog from './asnOrderLog';
-
-case 'asnOrderLog':
-    return asnOrderLog;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocAreaMatRelaController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocAreaMatRelaController.java
index 9c60d37..cd7a388 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocAreaMatRelaController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocAreaMatRelaController.java
@@ -16,6 +16,7 @@
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -60,10 +61,9 @@
     @OperationLog("Create loc areas mats rela")
     @PostMapping("/locAreaMatRela/save")
     public R save(@RequestBody LocAreaMatRela locAreaMatRela) {
+
         locAreaMatRela.setCreateBy(getLoginUserId());
-        locAreaMatRela.setCreateTime(new Date());
         locAreaMatRela.setUpdateBy(getLoginUserId());
-        locAreaMatRela.setUpdateTime(new Date());
         if (!locAreaMatRelaService.save(locAreaMatRela)) {
             return R.error("Save Fail");
         }
@@ -82,10 +82,53 @@
         return R.ok("Update Success").add(locAreaMatRela);
     }
 
-    @PreAuthorize("hasAuthority('manager:locAreaMatRela:remove')")
+    @ApiOperation("鍒犻櫎鐗╂枡鍒嗙粍")
+    @GetMapping("/locAreaMatRela/group")
+    @PreAuthorize("hasAuthority('manager:locAreaMatRela:update')")
+    public R remByGroup(@RequestBody Map<String, Object> map) {
+        if (Objects.isNull(map)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(map.get("groupId").toString())) {
+            throw new CoolException("搴撲綅绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(map.get("areaMatId").toString())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (locAreaMatRelaService.removeByGroupId(map)) {
+            return R.ok();
+        } else {
+            return R.error("鍒犻櫎澶辫触锛侊紒");
+        }
+    }
+
+    @ApiOperation("鍒犻櫎搴撲綅绫诲瀷")
+    @GetMapping("/locAreaMatRela/locType/remove")
+    @PreAuthorize("hasAuthority('manager:locAreaMatRela:update')")
+    public R removByLocType(@RequestBody Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒锛�");
+        }
+        if (!StringUtils.isBlank(param.get("locTypeId").toString())) {
+            throw new CoolException("搴撲綅绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(param.get("areaMatId").toString())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (locAreaMatRelaService.removeByLocType(param)) {
+            return R.ok();
+        } else {
+            return R.ok("鍒犻櫎澶辫触锛侊紒");
+        }
+    }
+
+    @PreAuthorize("hasAuthority('manager:locAreaMatRela:list')")
     @OperationLog("Delete loc areas mats rela")
     @PostMapping("/locAreaMatRela/remove/{ids}")
     public R remove(@PathVariable Long[] ids) {
+        if (Objects.isNull(ids)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
         if (!locAreaMatRelaService.removeByIds(Arrays.asList(ids))) {
             return R.error("Delete Fail");
         }
@@ -107,6 +150,27 @@
     }
 
     @PreAuthorize("hasAuthority('manager:locAreaMatRela:list')")
+    @ApiOperation("鑾峰彇搴撳尯鐗╂枡鍒嗙粍")
+    @GetMapping("/locAreaMatRela/groups/{id}")
+    public R getAreaMatGroup(@PathVariable Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok(locAreaMatRelaService.getAllGroups(id));
+    }
+
+    @PreAuthorize("hasAuthority('manager:locAreaMatRela:list')")
+    @ApiOperation("鑾峰彇搴撳尯搴撲綅绫诲瀷")
+    @GetMapping("/locAreaMatRela/locType/{id}")
+    public R getAreaMatLocType(@PathVariable Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return R.ok(locAreaMatRelaService.getAllLocType(id));
+    }
+
+
+    @PreAuthorize("hasAuthority('manager:locAreaMatRela:list')")
     @PostMapping("/locAreaMatRela/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
         ExcelUtil.build(ExcelUtil.create(locAreaMatRelaService.list(), LocAreaMatRela.class), response);
@@ -122,12 +186,12 @@
         if (Objects.isNull(param.getAreaId())) {
             throw new CoolException("搴撳尯涓嶈兘涓虹┖锛侊紒");
         }
-//        if (Objects.isNull(param.getTypeId()) || Objects.isNull(param.getLocId()) || param.getLocId().isEmpty() || param.getTypeId().isEmpty()) {
-//            throw new CoolException("搴撲綅绫诲瀷鎴栧簱浣嶄笉鑳戒负绌猴紒锛�");
-//        }
-//        if (Objects.isNull(param.getGroupId()) || Objects.isNull(param.getMatnrId()) || param.getMatnrId().isEmpty()) {
-//            throw new CoolException("鐗╂枡鎴栫墿鏂欏垎绫讳笉鑳戒负绌猴紒锛�");
-//        }
+        if (Objects.isNull(param.getWarehouseId())) {
+            throw new CoolException("浠撳簱涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(param.getAreaMatId())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
         return locAreaMatRelaService.binMatnrs(param);
     }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
index fbc7197..2b745ee 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrGroupController.java
@@ -23,6 +23,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Api(tags = "鐗╂枡鍒嗙粍")
 @RestController
@@ -141,18 +142,12 @@
     @PreAuthorize("hasAuthority('manager:matnrGroup:list')")
     @PostMapping("/matnrGroup/tree")
     public R tree(@RequestBody(required = false) Map<String, Object> map) {
-        List<MatnrGroup> matnrs = new ArrayList<>();
         if (Objects.isNull(map)) {
-            matnrs = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>().orderByAsc(MatnrGroup::getCode));
-        } else {
-            if (Objects.isNull(map.get("condition"))) {
-                return R.ok("condition鍙傛暟涓嶈兘涓虹┖锛侊紒");
-            }
-            matnrs = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>()
-                    .like(MatnrGroup::getName, map.get("condition")).orderByAsc(MatnrGroup::getCode));
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<MatnrGroup> treeData = Utils.toTreeData(matnrs, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren);
-        return R.ok().add(treeData);
+        List<MatnrGroup> matnrs = matnrGroupService.getTreeData(map);
+
+        return R.ok().add(matnrs);
     }
 
 
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 51afd7f..79b7975 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
@@ -98,15 +98,15 @@
             throw new CoolException("鏁版嵁閿欒锛氫粨搴撳簱鍖轰笉瀛樺湪锛侊紒");
         }
         if (!warehouseAreas.getName().equals(areas.getName())) {
-            List<WarehouseAreas> areasList = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getName, areas.getName()));
+            List<WarehouseAreas> areasList = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getName, warehouseAreas.getName()));
             if (!areasList.isEmpty()) {
-                throw new CoolException("浠撳簱鍚嶅凡瀛樺湪锛侊紒");
+                throw new CoolException("鍚嶇О宸插瓨鍦紒锛�");
             }
         }
         if (!warehouseAreas.getCode().equals(areas.getCode())) {
-            List<WarehouseAreas> areasList = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getCode, areas.getCode()));
+            List<WarehouseAreas> areasList = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getCode, warehouseAreas.getCode()));
             if (!areasList.isEmpty()) {
-                throw new CoolException("浠撳簱缂栫爜宸插瓨鍦紒锛�");
+                throw new CoolException("缂栫爜宸插瓨鍦紒锛�");
             }
         }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocAreaMatsParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocAreaMatsParam.java
index 514452a..fb65e10 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocAreaMatsParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocAreaMatsParam.java
@@ -26,6 +26,12 @@
     @ApiModelProperty("搴撳尯ID")
     private Long areaId;
 
+    @ApiModelProperty("浠撳簱ID")
+    private Long warehouseId;
+
+    @ApiModelProperty("涓诲崟ID")
+    private Long areaMatId;
+
     @ApiModelProperty("搴撲綅绫诲瀷")
     private List<Long> typeId;
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java
index e086af8..98f25fe 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocAreaMatRela.java
@@ -45,6 +45,12 @@
     private Long areaId;
 
     /**
+     * 涓诲崟ID
+     */
+    @ApiModelProperty("涓诲崟ID")
+    private Long areaMatId;
+
+    /**
      * 缂栧彿
      */
     @ApiModelProperty(value= "缂栧彿")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocTypeRela.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocTypeRela.java
index f26a29b..80a51e7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocTypeRela.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocTypeRela.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.vincent.rsf.server.manager.service.LocService;
+import com.vincent.rsf.server.manager.service.WarehouseService;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,6 +18,7 @@
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 
 @Data
 @Accessors(chain = true)
@@ -50,4 +53,39 @@
         this.typeId = typeId;
     }
 
+//    /**
+//     * @author Ryan
+//     * @description 鑾峰彇搴撲綅
+//     * @param
+//     * @return
+//     * @time 2025/3/24 10:28
+//     */
+//    public String getLocId$() {
+//        if (this.warehouseId == null) { return null; }
+//        WarehouseService warehouseService = SpringUtils.getBean(WarehouseService.class);
+//        Warehouse warehouse = warehouseService.getById(this.warehouseId);
+//        if (Objects.isNull(warehouse)) {
+//            return null;
+//        }
+//        return warehouse.getName();
+//    }
+
+    /**
+     * @author Ryan
+     * @description 鑾峰彇搴撳尯鍚嶇О
+     * @param
+     * @return
+     * @time 2025/3/24 10:27
+     */
+    public String getAreaId$() {
+        if (this.locId == null) { return null; }
+        LocService locService = SpringUtils.getBean(LocService.class);
+        Loc byId = locService.getById(this.locId);
+        if (Objects.isNull(byId)) {
+            return null;
+        }
+        return  byId.getCode();
+    }
+
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocAreaMatRelaService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocAreaMatRelaService.java
index a8d0b3c..d9feb2c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocAreaMatRelaService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocAreaMatRelaService.java
@@ -4,8 +4,22 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.manager.controller.params.LocAreaMatsParam;
 import com.vincent.rsf.server.manager.entity.LocAreaMatRela;
+import com.vincent.rsf.server.manager.entity.LocType;
+import com.vincent.rsf.server.manager.entity.LocTypeRela;
+import com.vincent.rsf.server.manager.entity.MatnrGroup;
+
+import java.util.List;
+import java.util.Map;
 
 public interface LocAreaMatRelaService extends IService<LocAreaMatRela> {
 
     R binMatnrs(LocAreaMatsParam param);
+
+    Boolean removeByGroupId(Map<String, Object> params);
+
+    boolean removeByLocType(Map<String, Object> params);
+
+    List<MatnrGroup> getAllGroups(Long id);
+
+    List<LocType> getAllLocType(Long id);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrGroupService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrGroupService.java
index 8344c66..a4cbed1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrGroupService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrGroupService.java
@@ -3,7 +3,11 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vincent.rsf.server.manager.entity.MatnrGroup;
 
+import java.util.List;
+import java.util.Map;
+
 
 public interface MatnrGroupService extends IService<MatnrGroup> {
 
+    List<MatnrGroup> getTreeData(Map<String, Object> map);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
index dce36e7..1521faa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocAreaMatRelaServiceImpl.java
@@ -4,20 +4,17 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.controller.params.LocAreaMatsParam;
-import com.vincent.rsf.server.manager.entity.LocTypeRela;
-import com.vincent.rsf.server.manager.entity.Matnr;
+import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.mapper.LocAreaMatRelaMapper;
-import com.vincent.rsf.server.manager.entity.LocAreaMatRela;
-import com.vincent.rsf.server.manager.service.LocAreaMatRelaService;
+import com.vincent.rsf.server.manager.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.vincent.rsf.server.manager.service.LocService;
-import com.vincent.rsf.server.manager.service.LocTypeRelaService;
-import com.vincent.rsf.server.manager.service.MatnrService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -31,7 +28,13 @@
     private LocService locService;
 
     @Autowired
+    private MatnrGroupService matnrGroupService;
+
+    @Autowired
     private LocTypeRelaService locTypeRelaService;
+
+    @Autowired
+    private LocTypeService locTypeService;
 
 
     /**
@@ -73,6 +76,7 @@
                     for (Matnr matnrId : matnrIds) {
                         LocAreaMatRela locAreaMatRela = new LocAreaMatRela();
                         locAreaMatRela
+                                .setAreaMatId(param.getAreaMatId())
                                 .setAreaId(param.getAreaId())
                                 .setLocId(locId)
                                 .setLocTypeId(typeId)
@@ -94,6 +98,7 @@
                     LocAreaMatRela locAreaMatRela = new LocAreaMatRela();
                     locAreaMatRela
                             .setAreaId(param.getAreaId())
+                            .setAreaMatId(param.getAreaMatId())
                             .setLocId(locTypeRela.getLocId())
                             .setLocTypeId(locTypeRela.getTypeId())
                             .setMatnrId(matnr.getId())
@@ -107,4 +112,100 @@
         }
         return R.ok("缁戝畾鎴愬姛锛侊紒");
     }
+
+    /**
+     * @author Ryan
+     * @description 绉婚櫎鐗╂枡鍒嗙粍涓嬬粦瀹氬叧绯�
+     * @param
+     * @return
+     * @time 2025/3/24 13:33
+     */
+    @Override
+    public Boolean removeByGroupId(Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("鐗╂枡鍒嗙粍ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(param.get("groupId").toString())) {
+            throw new CoolException("鐗╂枡鍒嗙被涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!StringUtils.isBlank(param.get("areaMatId").toString())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!this.remove(new LambdaQueryWrapper<LocAreaMatRela>()
+                .eq(LocAreaMatRela::getAreaMatId, Long.parseLong(param.get("areaMatId").toString()))
+                .eq(LocAreaMatRela::getGroupId, Long.parseLong(param.get("groupId").toString())))) {
+            throw new CoolException("鍒犻櫎澶辫触锛侊紒");
+        }
+
+        return true;
+    }
+
+    /**
+     * @author Ryan
+     * @description 绉婚櫎搴撲綅绫诲瀷缁戝畾鍏崇郴
+     * @param
+     * @return
+     * @time 2025/3/24 13:32
+     */
+    @Override
+    public boolean removeByLocType(Map<String, Object> param) {
+        if (Objects.isNull(param)) {
+            throw new CoolException("搴撲綅绫诲瀷ID涓嶈兘涓虹┖锛侊紒");
+        }
+        if (!this.remove(new LambdaQueryWrapper<LocAreaMatRela>()
+                        .eq(LocAreaMatRela::getAreaMatId, Long.parseLong(param.get("areaMatId").toString()))
+                .eq(LocAreaMatRela::getLocTypeId, Long.parseLong(param.get("locTypeId").toString())))) {
+            throw new CoolException("鍒犻櫎澶辫触锛侊紒");
+        }
+
+        return true;
+    }
+
+    /**
+     * @author Ryan
+     * @description 鑾峰彇鐗╂枡鍒嗙粍
+     * @param
+     * @return
+     * @time 2025/3/24 13:32
+     */
+    @Override
+    public List<MatnrGroup> getAllGroups(Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        List<LocAreaMatRela> locAreaMatRelas = this.list(new LambdaQueryWrapper<LocAreaMatRela>().eq(LocAreaMatRela::getAreaMatId, id));
+        if (locAreaMatRelas.isEmpty()) {
+            throw new CoolException("搴撳尯缁戝畾鐗╂枡涓虹┖锛侊紒");
+        }
+        List<Long> longList = locAreaMatRelas.stream().map(LocAreaMatRela::getGroupId).collect(Collectors.toList());
+        List<MatnrGroup> groups = matnrGroupService.list(new LambdaQueryWrapper<MatnrGroup>().in(MatnrGroup::getId, longList));
+        if (groups.isEmpty()) {
+            throw new CoolException("鏁版嵁閿欒锛氱墿鏂欏垎缁勪笉瀛樺湪锛侊紒");
+        }
+        return groups;
+    }
+
+    /**
+     * @author Ryan
+     * @description 鑾峰彇缁戝畾搴撲綅鐗╂枡
+     * @param
+     * @return
+     * @time 2025/3/24 13:36
+     */
+    @Override
+    public List<LocType> getAllLocType(Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
+        List<LocAreaMatRela> locAreaMatRelas = this.list(new LambdaQueryWrapper<LocAreaMatRela>().eq(LocAreaMatRela::getAreaMatId, id));
+        if (locAreaMatRelas.isEmpty()) {
+            throw new CoolException("搴撳尯缁戝畾鐗╂枡涓虹┖锛侊紒");
+        }
+        List<Long> longList = locAreaMatRelas.stream().map(LocAreaMatRela::getLocTypeId).collect(Collectors.toList());
+        List<LocType> list = locTypeService.list(new LambdaQueryWrapper<LocType>().in(LocType::getId, longList));
+        if (list.isEmpty()) {
+            throw new CoolException("鏁版嵁閿欒锛氬簱浣嶇被鍨嬩笉瀛樺湪锛侊紒");
+        }
+        return list;
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrGroupServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrGroupServiceImpl.java
index 515ae19..65b0fe6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrGroupServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrGroupServiceImpl.java
@@ -2,16 +2,48 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.common.utils.Utils;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.mapper.MatnrGroupMapper;
 import com.vincent.rsf.server.manager.entity.MatnrGroup;
 import com.vincent.rsf.server.manager.service.MatnrGroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service("matnrGroupService")
 public class MatnrGroupServiceImpl extends ServiceImpl<MatnrGroupMapper, MatnrGroup> implements MatnrGroupService {
 
+    @Override
+    public List<MatnrGroup> getTreeData(Map<String, Object> map) {
+        List<MatnrGroup> matnrs = new ArrayList<>();
+        if (Objects.isNull(map)) {
+            matnrs = this.list(new LambdaQueryWrapper<MatnrGroup>().orderByAsc(MatnrGroup::getCode));
+        } else {
+            if (Objects.isNull(map.get("condition"))) {
+                 throw new CoolException("condition鍙傛暟涓嶈兘涓虹┖锛侊紒");
+            }
+            if (!StringUtils.isBlank(map.get("condition").toString())) {
+                List<MatnrGroup> groups = this.list(new LambdaQueryWrapper<MatnrGroup>()
+                        .like(MatnrGroup::getName, map.get("condition"))
+                        .orderByAsc(MatnrGroup::getCode));
+                List<Long> collect = groups.stream().map(MatnrGroup::getId).collect(Collectors.toList());
+                List<MatnrGroup> list = this.list(new LambdaQueryWrapper<MatnrGroup>().in(MatnrGroup::getId, collect));
+                matnrs.addAll(list);
+                List<MatnrGroup> treeData = Utils.toTreeData(matnrs, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren);
+                return treeData;
+            } else {
+                matnrs = this.list(new LambdaQueryWrapper<MatnrGroup>().orderByAsc(MatnrGroup::getCode));
+            }
+        }
+        List<MatnrGroup> treeData = Utils.toTreeData(matnrs, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren);
+        return treeData;
+    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictDataController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictDataController.java
index fdf23e4..f450eb6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictDataController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictDataController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
@@ -55,10 +56,20 @@
     @OperationLog("Create 瀛楀吀鏁版嵁闆�")
     @PostMapping("/dictData/save")
     public R save(@RequestBody DictData dictData) {
+        if (Objects.isNull(dictData.getLabel())) {
+            throw new CoolException("鍒悕涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(dictData.getValue())) {
+            throw new CoolException("鍊间笉鑳戒负绌猴紒锛�");
+        }
+        if (Objects.isNull(dictData.getDictTypeCode())) {
+            throw new CoolException("缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(dictData.getDictTypeId())) {
+            throw new CoolException("涓诲崟ID涓嶈兘涓虹┖锛侊紒");
+        }
         dictData.setCreateBy(getLoginUserId());
-        dictData.setCreateTime(new Date());
         dictData.setUpdateBy(getLoginUserId());
-        dictData.setUpdateTime(new Date());
         if (!dictDataService.save(dictData)) {
             return R.error("Save Fail");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictTypeController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictTypeController.java
index 1e06e7c..a705dd9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictTypeController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/DictTypeController.java
@@ -61,13 +61,15 @@
         if (Objects.isNull(dictType.getName())) {
             throw new CoolException("瀛楀吀鍚嶇О涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(dictType.getDescription())) {
-            throw new CoolException("瀛楀吀鎻忚堪涓嶈兘涓虹┖锛侊紒");
-        }
         if (Objects.isNull(dictType.getCode())) {
             throw new CoolException("瀛楀吀缂栫爜涓嶈兘涓虹┖锛侊紒");
         }
-
+        if (!dictTypeService.list(new LambdaQueryWrapper<DictType>().eq(DictType::getCode, dictType.getCode())).isEmpty()) {
+            throw new CoolException("缂栫爜涓嶈兘閲嶅锛侊紒");
+        }
+        if (!dictTypeService.list(new LambdaQueryWrapper<DictType>().eq(DictType::getName, dictType.getName())).isEmpty()) {
+            throw new CoolException("鍚嶇О涓嶈兘閲嶅锛侊紒");
+        }
         if (!dictTypeService.save(dictType)) {
             return R.error("Save Fail");
         }
@@ -78,8 +80,10 @@
     @OperationLog("Update 鏁版嵁瀛楀吀")
     @PostMapping("/dictType/update")
     public R update(@RequestBody DictType dictType) {
+        if (Objects.isNull(dictType)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
         dictType.setUpdateBy(getLoginUserId());
-        dictType.setUpdateTime(new Date());
         if (!dictTypeService.updateById(dictType)) {
             return R.error("Update Fail");
         }
diff --git a/rsf-server/src/main/java/locArea.sql b/rsf-server/src/main/java/locArea.sql
deleted file mode 100644
index 8db2b48..0000000
--- a/rsf-server/src/main/java/locArea.sql
+++ /dev/null
@@ -1,25 +0,0 @@
--- save locArea record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.locArea', '0', '/manager/locArea', 'locArea', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query loc areas', '185', '1', 'manager:locArea:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create loc areas', '185', '1', 'manager:locArea:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update loc areas', '185', '1', 'manager:locArea:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete loc areas', '185', '1', 'manager:locArea:remove', '3', '1', '1');
-
--- locale menu name
-locArea: 'LocArea',
-
--- locale field
-locArea: {
-    name: "name",
-    code: "code",
-    areaId: "areaId",
-    locId: "locId",
-},
-
--- ResourceContent
-import locArea from './locArea';
-
-case 'locArea':
-    return locArea;
diff --git a/rsf-server/src/main/java/locAreaMat.sql b/rsf-server/src/main/java/locAreaMat.sql
deleted file mode 100644
index 90977b6..0000000
--- a/rsf-server/src/main/java/locAreaMat.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- save locAreaMat record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.locAreaMat', '0', '/test/locAreaMat', 'locAreaMat', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query loc areas mats', '195', '1', 'test:locAreaMat:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create loc areas mats', '195', '1', 'test:locAreaMat:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update loc areas mats', '195', '1', 'test:locAreaMat:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete loc areas mats', '195', '1', 'test:locAreaMat:remove', '3', '1', '1');
-
--- locale menu name
-locAreaMat: 'LocAreaMat',
-
--- locale field
-locAreaMat: {
-    code: "code",
-    depict: "depict",
-},
-
--- ResourceContent
-import locAreaMat from './locAreaMat';
-
-case 'locAreaMat':
-    return locAreaMat;
diff --git a/rsf-server/src/main/java/locAreaMatRela.sql b/rsf-server/src/main/java/locAreaMatRela.sql
deleted file mode 100644
index 5c5e032..0000000
--- a/rsf-server/src/main/java/locAreaMatRela.sql
+++ /dev/null
@@ -1,27 +0,0 @@
--- save locAreaMatRela record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.locAreaMatRela', '0', '/manager/locAreaMatRela', 'locAreaMatRela', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query loc areas mats rela', '', '1', 'manager:locAreaMatRela:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create loc areas mats rela', '', '1', 'manager:locAreaMatRela:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update loc areas mats rela', '', '1', 'manager:locAreaMatRela:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete loc areas mats rela', '', '1', 'manager:locAreaMatRela:remove', '3', '1', '1');
-
--- locale menu name
-locAreaMatRela: 'LocAreaMatRela',
-
--- locale field
-locAreaMatRela: {
-    areaId: "areaId",
-    code: "code",
-    matnrId: "matnrId",
-    groupId: "groupId",
-    locTypeId: "locTypeId",
-    locId: "locId",
-},
-
--- ResourceContent
-import locAreaMatRela from './locAreaMatRela';
-
-case 'locAreaMatRela':
-    return locAreaMatRela;
diff --git a/rsf-server/src/main/java/locAreaRela.sql b/rsf-server/src/main/java/locAreaRela.sql
deleted file mode 100644
index d6eb58e..0000000
--- a/rsf-server/src/main/java/locAreaRela.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- save locAreaRela record
--- mysql
-insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.locAreaRela', '0', '/manager/locAreaRela', 'locAreaRela', '0' , '0', '1' , '1');
-
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query loc areas rela', '', '1', 'manager:locAreaRela:list', '0', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create loc areas rela', '', '1', 'manager:locAreaRela:save', '1', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update loc areas rela', '', '1', 'manager:locAreaRela:update', '2', '1', '1');
-insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete loc areas rela', '', '1', 'manager:locAreaRela:remove', '3', '1', '1');
-
--- locale menu name
-locAreaRela: 'LocAreaRela',
-
--- locale field
-locAreaRela: {
-    locAreaId: "locAreaId",
-    locId: "locId",
-},
-
--- ResourceContent
-import locAreaRela from './locAreaRela';
-
-case 'locAreaRela':
-    return locAreaRela;
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index dbc54f3..b6c0ce1 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -31,8 +31,8 @@
     :banner: false
     db-config:
       id-type: auto
-      logic-delete-value: 1
-      logic-not-delete-value: 0
+#      logic-delete-value: 1
+#      logic-not-delete-value: 0
 
 super:
   pwd: xltys1995

--
Gitblit v1.9.1