From 469d41fe09ceec3dc5259d01a4060aac1448e09f Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 03 九月 2025 09:59:34 +0800
Subject: [PATCH] 完善订单组托可用数据显示功能

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java |  254 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 240 insertions(+), 14 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
index a38d839..c00b5f1 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
@@ -1,15 +1,19 @@
 package com.zy.asrs.wms.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zy.asrs.common.wms.entity.Mat;
-import com.zy.asrs.common.wms.service.MatService;
+import com.zy.asrs.common.utils.TreeUtils;
+import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.service.*;
 import com.zy.asrs.framework.annotations.ManagerAuth;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.domain.KeyValueVo;
 import com.zy.asrs.framework.common.DateUtils;
 import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.framework.exception.CoolException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -20,6 +24,16 @@
 
     @Autowired
     private MatService matService;
+    @Autowired
+    private TreeUtils treeUtils;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
 
     @RequestMapping(value = "/mat/{id}/auth")
     @ManagerAuth
@@ -27,28 +41,90 @@
         return R.ok(matService.getById(id));
     }
 
+    @RequestMapping(value = "/mat/auth")
+    @ManagerAuth
+    public R find(@RequestParam("matnr") String matnr) {
+        Mat one = matService.getOne(new LambdaQueryWrapper<Mat>()
+                .eq(Mat::getMatnr, matnr)
+                .eq(Mat::getHostId, getHostId()));
+        if (Cools.isEmpty(one)){
+            return R.error("鏈煡璇㈠埌鐩稿叧鐗╂枡");
+        }
+        return R.ok(one);
+    }
+
     @RequestMapping(value = "/mat/page/auth")
     @ManagerAuth
     public R page(@RequestParam(defaultValue = "1") Integer curr,
                   @RequestParam(defaultValue = "10") Integer limit,
                   @RequestParam(required = false) String condition,
-                  @RequestParam(required = false) String timeRange) {
-        LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
-        if (!Cools.isEmpty(condition)) {
-            wrapper.like(Mat::getId, condition);
-        }
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        QueryWrapper<Mat> wrapper = new QueryWrapper<>();
+//        convert(param, wrapper);
+        wrapper.eq("host_id", getHostId());
+//        if (!Cools.isEmpty(condition)) {
+//            wrapper.like(Mat::getId, condition);
+//        }
         if (!Cools.isEmpty(timeRange)) {
             String[] range = timeRange.split(RANGE_TIME_LINK);
-            wrapper.ge(Mat::getCreateTime, DateUtils.convert(range[0]));
-            wrapper.le(Mat::getCreateTime, DateUtils.convert(range[1]));
+            wrapper.ge("create_time", DateUtils.convert(range[0]));
+            wrapper.le("create_time", DateUtils.convert(range[1]));
         }
+        Object tagId = param.get("tag_id");
+        ArrayList<Long> nodes = new ArrayList<>();
+        if (Cools.isEmpty(tagId)) {
+            tagId = getOriginTag().getId();
+        }
+        treeUtils.getTagIdList(Long.parseLong(tagId.toString()), nodes);
+        wrapper.in("tag_id", nodes);
+        if (!Cools.isEmpty(param.get("matnr"))) {
+            wrapper.like("matnr", param.get("matnr"));
+        }
+        if (!Cools.isEmpty(param.get("maktx"))) {
+            wrapper.like("maktx", param.get("maktx"));
+        }
+        if (!Cools.isEmpty(param.get("decrees"))) {
+            wrapper.like("decrees", param.get("decrees"));
+        }
+//        if (!Cools.isEmpty(param.get("owner$"))) {
+//            wrapper.eq("owner", param.get("owner$"));
+//        }
+        param.remove("matnr");
+        param.remove("maktx");
+        param.remove("decrees");
+//        param.remove("owner$");
+        allLike(Mat.class, param.keySet(), wrapper, condition);
         return R.ok(matService.page(new Page<>(curr, limit), wrapper));
     }
+
+
+//    private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){
+//        for (Map.Entry<String, Object> entry : map.entrySet()){
+//            String val = String.valueOf(entry.getValue());
+//            if (val.contains(RANGE_TIME_LINK)){
+//                String[] dates = val.split(RANGE_TIME_LINK);
+//                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+//                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+//            } else {
+//                if (entry.getKey().equals("locNo")) {
+//                    wrapper.eq("loc_no", String.valueOf(entry.getValue()));
+//                } else {
+//                    wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+//                }
+//            }
+//        }
+//    }
 
 
     @RequestMapping(value = "/mat/add/auth")
     @ManagerAuth
     public R add(Mat mat) {
+        int count = matService.count(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, mat.getMatnr()));
+        if(count > 0){
+            return R.error("褰撳墠鐗╂枡鍙峰凡瀛樺湪");
+        }
+        mat.setHostId(getHostId());
         matService.save(mat);
         return R.ok();
     }
@@ -65,9 +141,15 @@
 
     @RequestMapping(value = "/mat/delete/auth")
     @ManagerAuth
-    public R delete(@RequestParam(value="ids[]") Long[] ids){
-         for (Long id : ids){
-            matService.removeById(id);
+    public R delete(@RequestParam String param){
+        List<Mat> list = JSONArray.parseArray(param, Mat.class);
+        if (Cools.isEmpty(list)){
+            return R.error();
+        }
+        for (Mat entity : list){
+            if (!matService.remove(new LambdaQueryWrapper<>(entity))) {
+                throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
         }
         return R.ok();
     }
@@ -77,6 +159,7 @@
     public R query(String condition) {
         LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
         wrapper.like(Mat::getId, condition);
+        wrapper.eq(Mat::getHostId, getHostId());
         Page<Mat> page = matService.page(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
         for (Mat mat : page.getRecords()){
@@ -93,11 +176,154 @@
     public R getDataKV(@RequestParam(required = false) String condition) {
         List<KeyValueVo> vos = new ArrayList<>();
         LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Mat::getHostId, getHostId());
         if (!Cools.isEmpty(condition)) {
-            wrapper.like(Mat::getId, condition);
+            wrapper.like(Mat::getMatnr, condition);
         }
-        matService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        matService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(item.getMatnr(), item.getId())));
         return R.ok().add(vos);
     }
 
+    @RequestMapping(value = "/mat/covert/{id}/auth")
+    @ManagerAuth
+    public R covert(@PathVariable("id") String id) {
+        Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getId, id).eq(Mat::getHostId, getHostId()));
+        if (mat == null) {
+            return R.ok();
+        }
+        OrderDetl orderDetl = new OrderDetl();
+        orderDetl.sync(mat);
+        orderDetl.setBatch("");
+        orderDetl.setAnfme(0.0D);
+        return R.ok().add(orderDetl);
+    }
+
+    @RequestMapping(value = "/mat/list/pda/page/auth")
+    @ManagerAuth
+    public R pdaPageList(@RequestParam(required = true)Long tagId,
+                         @RequestParam(defaultValue = "1")Integer curr,
+                         @RequestParam(defaultValue = "10")Integer limit){
+        LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Mat::getHostId, getHostId());
+        wrapper.orderBy(true, false,Mat::getCreateTime);
+        return R.ok().add(matService.page(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/mat/pad/search")
+    @ManagerAuth
+    public R padSearch(@RequestParam("matnr") String matnr) {
+        List<Mat> list = matService.list(new LambdaQueryWrapper<Mat>()
+                .like(Mat::getMatnr, matnr)
+                .eq(Mat::getHostId, getHostId()));
+        if (list.isEmpty()){
+            return R.error("鏈煡璇㈠埌鐩稿叧鐗╂枡");
+        }
+        return R.ok(list);
+    }
+
+    @RequestMapping(value = "/mat/pad/searchLoc")
+    @ManagerAuth
+    public R padSearchLoc(@RequestParam("matnr") String matnr) {
+        List<LocDetl> list = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getMatnr, matnr).eq(LocDetl::getHostId, getHostId()));
+
+        ArrayList<LocDetl> locDetls = new ArrayList<>();
+        for (LocDetl locDetl : list) {
+            LocMast one = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locDetl.getLocNo()).eq(LocMast::getHostId, locDetl.getHostId()));
+            if (one == null) {
+                continue;
+            }
+
+            if (!one.getLocSts().equals("F")) {
+                continue;
+            }
+
+            locDetls.add(locDetl);
+        }
+        return R.ok(locDetls);
+    }
+
+    @GetMapping("/mat/synchronous")
+    @ManagerAuth
+    public R synchronous(){
+        int wrkConut=wrkMastService.count(new LambdaQueryWrapper<WrkMast>());
+        if(wrkConut>0){
+            return R.error("鏈夊伐浣滀腑鐨勪换鍕欙紝绂佹鍚屾搴撳瓨淇℃伅");
+        }
+        List<Mat> mats=matService.list();
+        for (Mat mat:mats
+        ) {
+            List<LocDetl>locDetls=locDetlService.list(new LambdaQueryWrapper<LocDetl>()
+                    .eq(LocDetl::getMatnr,mat.getMatnr()));
+            for (LocDetl locDetl:locDetls
+            ) {
+                locDetl.setMaktx(mat.getMaktx());
+
+                if(!Cools.isEmpty(mat.getSpecs())){
+                    locDetl.setSpecs(mat.getSpecs());
+                }else{
+                    locDetl.setSpecs("");
+                }
+                if(!Cools.isEmpty(mat.getModel())){
+                    locDetl.setModel(mat.getModel());
+                }else {
+                    locDetl.setModel("");
+                }
+                if(!Cools.isEmpty(mat.getSku())){
+                    locDetl.setSku(mat.getSku());
+                }else {
+                    locDetl.setSku("");
+                }
+                //鍥惧彿
+                if(!Cools.isEmpty(mat.getImgNum())){
+                    locDetl.setItemNum(mat.getImgNum());
+                }else {
+                    locDetl.setItemNum("");
+                }
+//                if(!Cools.isEmpty(mat.getWeight())){
+//                    locDetl.setWeight(Double.parseDouble(mat.getWeight()));
+//                }else {
+//                    locDetl.setWeight(0.0);
+//                }
+//                if(!Cools.isEmpty(mat.getLength())){
+//                    locDetl.setLength(Double.parseDouble(mat.getLength()));
+//                }else {
+//                    locDetl.setLength(0.0);
+//                }
+                locDetlService.updateById(locDetl);
+            }
+        }
+        return R.ok();
+    }
+
+    @PostMapping("/mat/sync")
+    @ManagerAuth
+    public R synchronous(@RequestBody Mat data) {
+        // 妫�鏌ユ槸鍚︽湁浠诲姟涓娇鐢ㄤ簡璇ョ墿鏂�
+        int wrkCount = wrkDetlService.count(new LambdaQueryWrapper<WrkDetl>()
+                .eq(WrkDetl::getMatnr, data.getMatnr()));
+        if (wrkCount > 0) {
+            return R.error("璇ョ墿鏂欐鍦ㄨ浠诲姟浣跨敤锛岀姝㈠悓姝�");
+        }
+
+        // 鏌ヨ瀵瑰簲搴撳瓨鏄庣粏
+        List<LocDetl> locDetls = locDetlService.list(
+                new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getMatnr, data.getMatnr())
+        );
+
+        for (LocDetl locDetl : locDetls) {
+            locDetl.setMaktx(data.getMaktx());
+            locDetl.setSpecs(Cools.isEmpty(data.getSpecs()) ? "" : data.getSpecs());
+            locDetl.setModel(Cools.isEmpty(data.getModel()) ? "" : data.getModel());
+            locDetl.setSku(Cools.isEmpty(data.getSku()) ? "" : data.getSku());
+            locDetl.setItemNum(Cools.isEmpty(data.getImgNum()) ? "" : data.getImgNum());
+            // 鑻ラ渶瑕佸悓姝ラ噸閲忓拰闀垮害锛屽彇娑堟敞閲�
+            // locDetl.setWeight(Cools.isEmpty(data.getWeight()) ? 0.0 : Double.parseDouble(data.getWeight()));
+            // locDetl.setLength(Cools.isEmpty(data.getLength()) ? 0.0 : Double.parseDouble(data.getLength()));
+
+            locDetlService.updateById(locDetl);
+        }
+
+        return R.ok();
+    }
+
 }

--
Gitblit v1.9.1