From d2adac4e369165ec523c23e7ffd19fc5775d43b5 Mon Sep 17 00:00:00 2001
From: mrzhssss <pro6@qq.com>
Date: 星期一, 11 四月 2022 08:14:14 +0800
Subject: [PATCH] Changes

---
 src/main/java/zy/cloud/wms/manager/controller/PickoutController.java |  158 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 150 insertions(+), 8 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java b/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
index 1e03a1c..ffabf05 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
@@ -6,10 +6,8 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.DateUtils;
-import zy.cloud.wms.manager.entity.Pickout;
-import zy.cloud.wms.manager.entity.PickoutDetl;
-import zy.cloud.wms.manager.service.PickoutDetlService;
-import zy.cloud.wms.manager.service.PickoutService;
+import zy.cloud.wms.manager.entity.*;
+import zy.cloud.wms.manager.service.*;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
@@ -27,6 +25,14 @@
     private PickoutService pickoutService;
     @Autowired
     private PickoutDetlService pickoutDetlService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private WaveDetlService waveDetlService;
+    @Autowired
+    private OrderDetlService orderDetlService;
 
     @RequestMapping(value = "/pickout/{id}/auth")
     @ManagerAuth
@@ -44,8 +50,11 @@
         EntityWrapper<Pickout> wrapper = new EntityWrapper<>();
         excludeTrash(param);
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        return R.ok(pickoutService.selectPage(new Page<>(curr, limit), wrapper));
+//        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.orderBy("wrk_sts",true);
+        Page<Pickout> pickoutPage = pickoutService.selectPage(new Page<>(curr, limit), wrapper);
+
+        return R.ok(pickoutPage);
     }
 
     private void convert(Map<String, Object> map, EntityWrapper wrapper){
@@ -82,9 +91,12 @@
     @ManagerAuth
     public R delete(@RequestParam(value="ids[]") Long[] ids){
          for (Long id : ids){
-            pickoutDetlService.delete(new EntityWrapper<PickoutDetl>()
+             Pickout picout = pickoutService.selectOne(new EntityWrapper<Pickout>()
+                     .eq("id", id));
+             pickoutDetlService.delete(new EntityWrapper<PickoutDetl>()
                     .eq("head_id",id));
             pickoutService.deleteById(id);
+            pickoutService.updateWaveStatus(picout.getWaveNo());
         }
         return R.ok();
     }
@@ -119,11 +131,141 @@
     @RequestMapping(value = "/pickout/check/column/auth")
     @ManagerAuth
     public R query(@RequestBody JSONObject param) {
-        Wrapper<Pickout> wrapper = new EntityWrapper<Pickout>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
+        Wrapper<Pickout> wrapper = new EntityWrapper<Pickout>()
+                .eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
         if (null != pickoutService.selectOne(wrapper)){
             return R.parse(BaseRes.REPEAT).add(getComment(Pickout.class, String.valueOf(param.get("key"))));
         }
         return R.ok();
     }
 
+    /**
+     * 鎵撳嵃瀹屾垚涔嬪悗,灏�'鏈墦鍗�'鐘舵�佹浛鎹负'鎷h揣涓�'
+     * @param pickout
+     * @return
+     */
+    @RequestMapping("/pickout/print/auth")
+    @ManagerAuth
+    public R printed(@RequestBody Pickout pickout){
+        /**
+         * 鎵撳嵃瀹屾垚,鍚戝悗鍙版洿鏂版暟鎹�
+         */
+        Date now = new Date();
+        pickout.setPrintTimes(pickout.getPrintTimes() + 1);
+        pickout.setUpdateTime(now);
+        pickout.setUpdateBy(getUserId().intValue());
+        pickout.setPickStaff(getUserId());
+        pickout.setPickStart(now);
+        pickout.setWrkSts(2L);
+        pickoutService.update(pickout,new EntityWrapper<Pickout>()
+                .eq("id",pickout.getId()));
+        return R.ok();
+    }
+
+    /**
+     * 鐐瑰嚮瀹屾垚鎸夐挳鏃�,灏嗙姸鎬佷粠'鎷h揣涓�'璋冩暣鑷�'宸插畬鎴�'
+     */
+    @RequestMapping("/pickout/done/auth")
+    @ManagerAuth
+    public R donePickOut(@RequestBody Pickout pickout){
+        HashSet<String> orderNos = new HashSet<>();
+        /**
+         * 鍙嶅啓鎷h揣鍗�
+         */
+        pickout.setWrkSts(3L);
+        pickout.setPickEnd(new Date());
+        pickoutService.update(pickout,new EntityWrapper<Pickout>()
+                .eq("id",pickout.getId()));
+        List<PickoutDetl> pickoutDetls = pickoutDetlService.selectList(new EntityWrapper<PickoutDetl>()
+                .eq("head_id", pickout.getId()));
+        if (Cools.isEmpty(pickoutDetls)) {
+            return R.error("鎵句笉鍒版嫞璐у崟鏄庣粏");
+        }
+        /**
+         * 鍙嶅啓娉㈡
+         */
+        Wave wave = waveService.selectOne(new EntityWrapper<Wave>()
+                .eq("wave_no", pickout.getWaveNo()));
+        if (Cools.isEmpty(wave)) {
+            return R.error("鎵句笉鍒板搴旀尝娆�");
+        }
+        wave.setStatus((short) 2);
+        waveService.update(wave,new EntityWrapper<Wave>()
+                .eq("id",wave.getId()));
+        List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
+                .eq("wave_id", wave.getId()));
+
+
+        if (Cools.isEmpty(waveDetls)) {
+            return R.error("鎵句笉鍒板搴旀尝娆℃槑缁�");
+        }
+
+        /**
+         * 鍙嶅啓鍑哄簱璁㈠崟
+         */
+        for (WaveDetl waveDetl : waveDetls) {
+            String[] split = waveDetl.getOrderNos().split(",");
+            for (String s : split) {
+                orderNos.add(s);
+            }
+        }
+
+        /**
+         * 寰幆鎵�鏈夋嫞璐у崟鏄庣粏,渚濇鍒嗛厤缁欐墍鏈夊嚭搴撳崟
+         */
+        for (PickoutDetl pickoutDetl : pickoutDetls) {
+            //鑾峰彇鏈娉㈡鐢熸垚鎷h揣鍗曚箣鍚�,璇ョ墿鏂欐�诲叡鎹′簡澶氬皯
+            Double anfme = pickoutDetl.getAnfme();
+            String matnr = pickoutDetl.getMatnr();
+            /**
+             * 鑾峰彇鎵�鏈夌殑鐗╂枡鐩稿悓,涓旇鍖呭惈鍦ㄦ尝娆℃槑缁嗛噷鐨勫嚭搴撹鍗�
+             */
+            List<OrderDetl> orderDetls = orderDetlService.selectOutList(matnr,new ArrayList<String>(orderNos));
+            for (OrderDetl orderDetl : orderDetls) {
+                /**
+                 * 濡傛灉鎷h揣鍗曠殑鍓╀綑鏁伴噺绛変簬0,浠h〃璇ョ墿鏂欏凡缁忓垎閰嶅畬鎴�,鐩存帴break
+                 */
+                if (anfme == 0.0 ){
+                    break;
+                }
+                /**
+                 * 濡傛灉鎷h揣鍗曠殑鏁伴噺澶т簬璇ュ嚭搴撳崟鐨勬暟閲�,鐩存帴鎶婂嚭搴撴墍闇�閲�(out_qty)鎷夋弧
+                 */
+                if (anfme >= (orderDetl.getAnfme() - orderDetl.getOutQty())){
+                    orderDetl.setOutQty(orderDetl.getAnfme());
+                    anfme = anfme - (orderDetl.getAnfme() - orderDetl.getOutQty());
+
+                    orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>()
+                            .eq("id",orderDetl.getId()));
+                    continue;
+                }
+                /**
+                 * 濡傛灉鎷h揣鍗曠殑鏁伴噺灏忎簬鍑哄簱鍗曠殑鏁伴噺,璇佹槑璇ユ嫞璐у崟鐨勭墿鏂欏凡缁忎笉澶熷垎浜�,灏�
+                 */
+                if (anfme < (orderDetl.getAnfme() - orderDetl.getOutQty())){
+                    orderDetl.setOutQty(anfme);
+                    anfme = 0.0;
+                    orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>()
+                            .eq("id",orderDetl.getId()));
+                }
+            }
+        }
+        for (String orderNo : orderNos) {
+            Order order = orderService.selectOne(new EntityWrapper<Order>()
+                    .eq("order_no", orderNo));
+            List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+                    .eq("order_no", orderNo));
+            for (OrderDetl orderDetl : orderDetls) {
+                if (orderDetl.getAnfme() == orderDetl.getOutQty()){
+                    break;
+                }
+            }
+            order.setSettle(4L);
+            orderService.update(order,new EntityWrapper<Order>()
+                    .eq("order_no",orderNo));
+        }
+
+        return R.ok();
+    }
+
 }

--
Gitblit v1.9.1