From cb19fbb1b76402c87849bb055010701a66efc623 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期二, 23 四月 2024 00:17:23 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/OrderDetlMapper.xml                    |   17 ++++
 src/main/java/com/zy/asrs/controller/AgvLocDetlController.java   |   53 +++++++++++++
 src/main/java/com/zy/asrs/entity/AgvLocDetl.java                 |    7 +
 src/main/java/com/zy/asrs/entity/param/PickParam.java            |   37 +++++++++
 src/main/java/com/zy/asrs/service/OrderDetlService.java          |    3 
 src/main/java/com/zy/asrs/controller/AgvMobileController.java    |    9 ++
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java |    7 -
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |   64 ++++++++++++++++
 src/main/java/com/zy/asrs/service/AgvMobileService.java          |    6 +
 10 files changed, 196 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
index f98d3f4..5964a6e 100644
--- a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -9,8 +9,10 @@
 import com.core.common.R;
 import com.zy.asrs.entity.AgvLocDetl;
 import com.zy.asrs.entity.Mat;
+import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.service.AgvLocDetlService;
 import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.OrderDetlService;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -31,6 +33,8 @@
     private AgvLocDetlService agvLocDetlService;
     @Autowired
     private MatService matService;
+    @Autowired
+    private OrderDetlService orderDetlService;
 
     @RequestMapping(value = "/locDetl/list/auth")
     @ManagerAuth
@@ -72,6 +76,55 @@
         return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
+    @RequestMapping(value = "/locDetl/list/auth/v2")
+    @ManagerAuth
+    public R listV2(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param,
+                  @RequestParam(required = false)Boolean unreason){
+        if (!Cools.isEmpty(unreason) && unreason) {
+
+            return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>()
+                    .where(" DATALENGTH( batch ) != 11 or\n" +
+                            "            batch LIKE '%[a-z]%'")));
+        }
+        param.remove("unreason");
+        String row = "";
+        EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
+        if (param.get("row") != null) {
+            String chooseRow = (String) param.get("row");
+            if (chooseRow.length() == 1) {
+                row = "0" + chooseRow;
+                param.remove("row");
+            }else {
+                row = chooseRow;
+                param.remove("row");
+            }
+        }
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(AgvLocDetl.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!row.equals("")){
+            wrapper.and()
+                    .where("loc_no like '" +row +"%'");
+        }
+        Page<AgvLocDetl> agvLocDetlPage = agvLocDetlService.selectPage(new Page<>(curr, limit), wrapper);
+        for (AgvLocDetl record : agvLocDetlPage.getRecords()) {
+            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", record.getThreeCode()).eq("matnr", record.getMatnr()).ne("order_no", record.getOrderNo()));
+            if (orderDetl.getAnfme() - orderDetl.getQty() > 0) {
+                record.setStock(orderDetl.getAnfme() - orderDetl.getQty());
+            } else {
+                record.setStock(-1D);
+            }
+            record.setOrderNo(orderDetl.getOrderNo());
+        }
+        return R.ok(agvLocDetlPage);
+    }
+
     @RequestMapping(value = "/locDetl/statis/auth")
     @ManagerAuth(memo = "AGV搴撳瓨鏄庣粏缁熻")
     public R statis(@RequestParam(defaultValue = "1")Integer curr,
diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
index d1f5b6f..b72ee5f 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.entity.param.AgvMobileStartPakin;
 import com.zy.asrs.entity.param.AgvMobileStartParam;
 import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.entity.param.PickParam;
 import com.zy.asrs.service.*;
 import com.zy.common.web.BaseController;
 import lombok.Synchronized;
@@ -58,6 +59,14 @@
         return R.ok();
     }
 
+    //    鍐嶆鎷f枡
+    @RequestMapping("/pick/again/auth")
+//    @ManagerAuth(memo = "缁勬墭")
+    public R pickAgain(@RequestBody PickParam pickParams){
+        agvMobileService.pickAgain(pickParams, 1l);
+        return R.ok("缁勬墭鎴愬姛");
+    }
+
     /*
     缁戝畾鎵樼洏鏉$爜涓庢殏瀛樹綅
      */
diff --git a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
index 1ea03d2..d130781 100644
--- a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
@@ -161,6 +161,13 @@
     @ApiModelProperty(value= "搴撳瓨鍐荤粨{1:姝e父,0:鍐荤粨}")
     private Integer stockFreeze;
 
+    /**
+     * 搴撳瓨鏁伴噺
+     */
+    @ApiModelProperty(value= "鍙嚭鏁伴噺")
+    @TableField(exist = false)
+    private Double stock;
+
     public String getLocNo$(){
         LocMastService service = SpringUtils.getBean(LocMastService.class);
         LocMast locMast = service.selectById(this.locNo);
diff --git a/src/main/java/com/zy/asrs/entity/param/PickParam.java b/src/main/java/com/zy/asrs/entity/param/PickParam.java
new file mode 100644
index 0000000..6c3c83f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PickParam.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PickParam {
+
+    // 宸ヤ綔鍙�
+    private Integer wrkNo;
+
+    private String locNo;
+
+    // 鎷f枡鏁伴噺
+    private List<Pick> picks;
+
+    @Data
+    public static class Pick {
+
+        // 鐗╂枡缂栧彿
+        private String matnr;
+
+        // 鍗曟嵁缂栧彿
+        private String orderNo;
+
+        //閿�鍞鍗曞彿
+        private String threeCode;
+
+        //閿�鍞鍗曞彿
+        private String suppCode;
+
+        // 鎷f枡鏁伴噺
+        private Double count;
+
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 4aa30a4..c5de0d9 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -45,4 +45,6 @@
 
     List<OrderDetl> selectByMatnr(@Param("matnr") String matnr);
 
+    List<OrderDetl> getPakoutDetlPage(Map<String, Object> map);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvMobileService.java b/src/main/java/com/zy/asrs/service/AgvMobileService.java
index 6ff52ac..0afc65d 100644
--- a/src/main/java/com/zy/asrs/service/AgvMobileService.java
+++ b/src/main/java/com/zy/asrs/service/AgvMobileService.java
@@ -3,6 +3,7 @@
 import com.zy.asrs.entity.AgvBasDevp;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.PickParam;
 
 import java.util.List;
 
@@ -14,6 +15,11 @@
     String comb(CombParam param, Long userId);
 
     /**
+     * 缁勬墭
+     */
+    String pickAgain(PickParam pickParams, Long userId);
+
+    /**
      * 鐩樼偣
      */
     void adjust(MobileAdjustParam param, Long userId);
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 9dbd0ea..eb0b734 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -12,8 +12,6 @@
 
     Page<OrderDetl> getPakoutPage(Page<OrderDetl> page);
 
-    Page<OrderDetl> getPakoutDetlPage(Page<OrderDetl> page);
-
     OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode);
 
     OrderDetl selectItem(String orderNo, String matnr, String batch, String csocode, String isoCode);
@@ -38,4 +36,5 @@
 
     public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq);
 
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 03ff560..66c5915 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.PickParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
 import lombok.extern.slf4j.Slf4j;
@@ -44,6 +45,8 @@
     private AgvWrkMastService agvWrkMastService;
     @Autowired
     private AgvWorkService agvWorkService;
+    @Autowired
+    private AgvWrkDetlService agvWrkDetlService;
 
 
     /*
@@ -90,6 +93,65 @@
     }
 
     /*
+    缁勬墭 + 缁戝畾鏆傚瓨浣�
+     */
+    @Override
+    @Transactional
+    public String pickAgain(PickParam pickParams, Long userId) {
+        Date now = new Date();
+        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo()));
+
+        for (PickParam.Pick pick : pickParams.getPicks()) {
+            if (pick.getCount().equals(0D)) continue;
+            AgvWrkDetl wrkDetl = new AgvWrkDetl();
+            Mat mat = matService.selectByMatnr(pick.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(pick.getMatnr() + "鍟嗗搧涓嶅瓨鍦�");
+            }
+            wrkDetl.sync(mat);
+            wrkDetl.setWrkNo(pickParams.getWrkNo());
+            wrkDetl.setOrderNo(pick.getOrderNo());
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(pick.getCount()); // 鏁伴噺
+            wrkDetl.setSuppCode(pick.getSuppCode()); // 鎵樼洏鏉$爜
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiUser(userId);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setThreeCode(pick.getThreeCode());
+            agvWrkDetlService.insert(wrkDetl);
+
+            // 鏇存柊璁㈠崟
+            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()));
+            orderDetl.setQty(orderDetl.getQty() + pick.getCount());
+            if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){
+                throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+pick.getOrderNo()+pick.getMatnr());
+            }
+        }
+        //  纭鏄惁鍏ㄩ儴鍑哄簱
+        int sameNumber = 0;
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo()));
+        for (AgvLocDetl agvLocDetl : agvLocDetls) {
+            for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+                if (agvLocDetl.getMatnr().equals(agvWrkDetl.getMatnr())
+                    && agvLocDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())
+                    && agvLocDetl.getSuppCode().equals(agvWrkDetl.getSuppCode())
+                    && agvLocDetl.getAnfme().equals(agvWrkDetl.getAnfme())) {
+                    sameNumber++;
+                }
+            }
+        }
+        if (agvLocDetls.size() == sameNumber) {
+            AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
+            agvWrkMast.setIoType(101);
+            agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
+        }
+
+
+        return "缁勬墭鎴愬姛锛岀粦瀹氱珯鐐规垚鍔�";
+    }
+
+    /*
     AGV鏃犲崟缁勬墭
      */
     private void NoOrderComb(CombParam param, Long userId){
@@ -102,6 +164,8 @@
         });
     }
 
+
+
     /*
     AGV鏈夊崟缁勬墭
      */
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 6b14423..0f8c4b7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -31,13 +31,6 @@
     }
 
     @Override
-    public Page<OrderDetl> getPakoutDetlPage(Page<OrderDetl> page) {
-        page.setRecords(baseMapper.getPakoutPage(page.getCondition()));
-        page.setTotal(baseMapper.getPakoutPageCount(page.getCondition()));
-        return page;
-    }
-
-    @Override
     public OrderDetl selectItem(Long orderId, String matnr, String batch, String csocode, String isoCode) {
         return this.baseMapper.selectItem(orderId,matnr,batch,csocode,isoCode);
     }
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index b1ffd1a..92bf0a8 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -282,4 +282,21 @@
         and matnr = #{matnr}
     </select>
 
+    <select id="getPakoutDetlPage" resultMap="BaseResultMap">
+        select * from
+        (
+        select
+        ROW_NUMBER() over (order by mo.create_time desc) as row,
+        mod.*
+        from man_order_detl mod
+        inner join man_order mo on mod.order_id = mo.id
+        inner join man_doc_type mdt on mo.doc_type = mdt.doc_id
+        where 1=1
+        and mo.settle &lt;= 2
+        and mo.status = 1
+        and mdt.pakout = 1
+        <include refid="pakOutPageCondition"></include>
+        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+    </select>
+
 </mapper>

--
Gitblit v1.9.1