From c7bf4b8773f888fd5be613b7bb6fb8ae4a47b028 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 23 四月 2024 16:53:57 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/ManPakOutController.java |  419 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 407 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ManPakOutController.java b/src/main/java/com/zy/asrs/controller/ManPakOutController.java
index 39ce18a..10eafa2 100644
--- a/src/main/java/com/zy/asrs/controller/ManPakOutController.java
+++ b/src/main/java/com/zy/asrs/controller/ManPakOutController.java
@@ -5,13 +5,15 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
-import com.core.common.SpringUtils;
+import com.core.common.*;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.OrderDomainParam;
+import com.zy.asrs.entity.param.PakOutDTO;
 import com.zy.asrs.service.*;
+import com.zy.common.CodeRes;
+import com.zy.common.config.AdminInterceptor;
+import com.zy.common.utils.BarcodeUtils;
+import com.zy.common.utils.QrCode;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -20,6 +22,10 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -48,9 +54,21 @@
         EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>();
         excludeTrash(param);
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
-            wrapper.orderBy("create_time",false);
-        }
+
+        return R.ok(manPakOutService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/ManPakOut/list/auth1")
+    @ManagerAuth
+    public R list1(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert1(param, wrapper);
+
         return R.ok(manPakOutService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
@@ -64,12 +82,48 @@
         EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>();
         excludeTrash(param);
         convert(param, wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
-            wrapper.orderBy("create_time",false);
+
+        String docnum = String.valueOf(param.get("doc_num"));
+        if (Cools.isEmpty(docnum) || docnum.equals("null")) {
+            docnum = null;
         }
-        wrapper.isNotNull("name");
-        Page<ManPakOut> manPakOutPage = manPakOutService.selectPage(new Page<>(curr, limit), wrapper);
-        return R.ok(manPakOutPage);
+        Date stime = null;
+        Date etime = null;
+        if(param.get("create_time") != null){
+            String[] dates = param.get("create_time").toString().split(RANGE_TIME_LINK);
+            stime = DateUtils.convert(dates[0]);
+            etime = DateUtils.convert(dates[1]);
+        }
+
+        Long userId = getUserId();
+        if(getUser().getRoleId() == 2 || getUser().getRoleId() == 24){
+            userId = null;
+        }
+
+        String custName = Cools.isEmpty(param.get("cust_name")) ? "" : param.get("cust_name").toString();
+
+        List<PakOutDTO> pakOutDTOS = manPakOutService.selectPakOut(docnum, stime, etime, curr, limit,userId,custName);
+        for (PakOutDTO pakOutDTO:pakOutDTOS){
+            List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", pakOutDTO.getDoc_num()));
+            for (ManPakOut manPakOut:manPakOuts){
+                if (manPakOut.getCount() < manPakOut.getAnfme()){
+                        pakOutDTO.setStatus(0);
+                        break;
+                }
+            }
+            if (pakOutDTO.getStatus() == null){
+                pakOutDTO.setStatus(1);
+            }
+
+        }
+
+        int count = manPakOutService.selectPakOutCount(docnum, stime, etime,curr, limit,userId,custName);
+        Page<PakOutDTO> page = new Page<>();
+        // 鏈�鍚庢寜鐘舵�佹湭鍑哄簱->宸插嚭搴撴帓搴�
+//        page.setRecords(pakOutDTOS.stream().sorted(Comparator.comparingInt(PakOutDTO::getStatus)).collect(Collectors.toList()));
+        page.setRecords(pakOutDTOS);
+        page.setTotal(count);
+        return R.ok(page);
     }
 
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
@@ -83,6 +137,306 @@
                 wrapper.like(entry.getKey(), val);
             }
         }
+    }
+
+    private <T> void convert1(Map<String, Object> map, EntityWrapper<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 {
+                wrapper.eq(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/ManPakOut/add/auth")
+    @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�")
+    @Transactional
+    public R manPakOutAdd(@RequestBody OrderDomainParam param){
+        if (Cools.isEmpty(param)){
+            return R.error("鏁版嵁寮傚父");
+        }
+        if (!Cools.isEmpty(param.getOrderNo())){
+            Order order = orderService.selectOne(new EntityWrapper<Order>()
+                    .eq("order_no", param.getOrderNo())
+            );
+            if (Cools.isEmpty(order)){
+                return R.error("鍗曟嵁涓嶅瓨鍦�");
+            }
+            List<OrderDetl> orderDetls =orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+                    .eq("order_no", param.getOrderNo())
+            );
+            if (Cools.isEmpty(orderDetls)){
+                return R.error("鍗曟嵁鏄庣粏涓虹┖");
+            }
+            for (OrderDetl orderDetl : orderDetls){
+                List<ManLocDetl> manLocDetls=null;
+                try{
+                    if (Cools.isEmpty(orderDetl.getBatch())){
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>()
+                                .eq("matnr",orderDetl.getMatnr())
+                        );
+                    }else {
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>()
+                                .eq("matnr",orderDetl.getMatnr())
+                                .eq("batch",orderDetl.getBatch())
+                        );
+                    }
+                }catch (Exception e){
+                    return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                }
+
+                if (!Cools.isEmpty(manLocDetls)){
+                    for (ManLocDetl manLocDetl:manLocDetls){
+                        Double statusAnfme = 0.0;
+                        if (Cools.isEmpty(manLocDetl.getStatus())){
+                            manLocDetl.setStatus(1);
+                        }
+                        try{
+                            if (manLocDetl.getStatus$().equals("绂佺敤")){
+                                if (Cools.isEmpty(manLocDetl.getBatch())){
+                                    List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>()
+                                            .eq("loc_no", manLocDetl.getLocNo())
+                                            .eq("matnr", manLocDetl.getMatnr())
+                                            .eq("status",0)
+                                    );
+                                    if (!Cools.isEmpty(manPakOuts)){
+                                        for (ManPakOut manPakOut:manPakOuts){
+                                            statusAnfme=statusAnfme+manPakOut.getAnfme();
+                                        }
+                                    }
+                                }else {
+                                    List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>()
+                                            .eq("loc_no", manLocDetl.getLocNo())
+                                            .eq("matnr", manLocDetl.getMatnr())
+                                            .eq("batch",manLocDetl.getBatch())
+                                            .eq("status",0)
+                                    );
+                                    if (!Cools.isEmpty(manPakOuts)){
+                                        for (ManPakOut manPakOut:manPakOuts){
+                                            statusAnfme=statusAnfme+manPakOut.getAnfme();
+                                        }
+                                    }
+                                }
+                            }
+                        }catch (Exception e){
+                            return R.error("鏌ヨ搴撳瓨绂佺敤鏁伴噺澶辫触");
+                        }
+                        Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>()
+                                .eq("loc_no", manLocDetl.getLocNo())
+                                .eq("matnr", manLocDetl.getMatnr());
+                        if (orderDetl.getAnfme() > manLocDetl.getAnfme()-statusAnfme){
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                manLocDetl.setStatus(0);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else if (orderDetl.getAnfme()-manLocDetl.getAnfme()-statusAnfme==0){
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                manLocDetl.setStatus(0);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else if (orderDetl.getAnfme()<manLocDetl.getAnfme()-statusAnfme){
+                            Double a=manLocDetl.getAnfme();
+                            manLocDetl.setAnfme(orderDetl.getAnfme());
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                                manLocDetl.setStatus(0);
+                                manLocDetl.setAnfme(a);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else {
+                            return R.error("绯荤粺鍑洪敊,璇疯仈绯荤鐞嗗憳");
+                        }
+                        if (orderDetl.getAnfme()==0){
+                            break;
+                        }
+                    }
+                    if (orderDetl.getAnfme()!=0){
+                        ManLocDetl manLocDetl=new ManLocDetl();
+                        manLocDetl.setAnfme(0.0);
+                        manLocDetl.setMatnr(orderDetl.getMatnr());
+                        manLocDetl.setMaktx(orderDetl.getMaktx());
+                        manLocDetl.setMemo(orderDetl.getMemo()+"搴撳瓨涓嶈冻");
+                        if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                            continue;
+                        }else {
+                            return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                        }
+                    }
+                }else {
+                    ManLocDetl manLocDetl=new ManLocDetl();
+                    manLocDetl.setAnfme(0.0);
+                    manLocDetl.setMatnr(orderDetl.getMatnr());
+                    manLocDetl.setMaktx(orderDetl.getMaktx());
+                    manLocDetl.setMemo(orderDetl.getMemo()+"鏃犲簱瀛�");
+                    if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                        continue;
+                    }else {
+                        return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                    }
+                }
+
+
+            }
+            orderService.updateSettle(order.getId(),(long)2,null);
+        }else {
+            return R.error("鍗曟嵁缂栧彿寮傚父");
+        }
+        return R.ok("鎷h揣鍗曟坊鍔犳垚鍔�");
+    }
+    private R addPakOUT(ManLocDetl manLocDetl,String OrderNo){
+        ManPakOut manPakOut=new ManPakOut();
+        manPakOut.setWrkNo(OrderNo+"-"+System.currentTimeMillis());
+        manPakOut.setWrkSts((long)1);
+        manPakOut.setAnfme(manLocDetl.getAnfme());
+        manPakOut.setLocNo(manLocDetl.getLocNo());
+        manPakOut.setNodeId(manLocDetl.getNodeId());
+        manPakOut.setMatnr(manLocDetl.getMatnr());
+        manPakOut.setMaktx(manLocDetl.getMaktx());
+        manPakOut.setSpecs(manLocDetl.getSpecs());
+        manPakOut.setUnit(manLocDetl.getUnit());
+        manPakOut.setBarcode(manLocDetl.getBarcode());
+        manPakOut.setDocNum(OrderNo);
+        manPakOut.setStatus(0);
+        manPakOut.setCreateTime(new Date());
+        if (!Cools.isEmpty(manLocDetl.getBatch())){
+            manPakOut.setBatch(manLocDetl.getBatch());
+            manPakOut.setUpdateTime(new Date());
+        }else {
+            manPakOut.setUpdateTime(manLocDetl.getModiTime());//鐢ㄤ簬璇嗗埆璐х墿
+        }
+
+        manPakOut.setMemo(manLocDetl.getMemo());
+        if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",OrderNo)))){
+            manPakOut.setName(manLocDetl.getMaktx());
+        }
+        try{
+            if (!manPakOutService.insert(manPakOut)){
+                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }catch (Exception e){
+            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        return R.ok();
+
+    }
+
+    @RequestMapping("/manPakOut/finish")
+    public R finish(@RequestBody ManPakOut manPakOut){
+        Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>()
+                .eq("loc_no", manPakOut.getLocNo())
+                .eq("matnr", manPakOut.getMatnr());
+        try{
+            if (Cools.isEmpty(manPakOut.getBatch())){
+                List<ManLocDetl> manLocDetls = manLocDetlService.selectList(wrapper);
+                Double anfme=manPakOut.getAnfme();
+                for (ManLocDetl manLocDetl:manLocDetls){
+                    if (anfme<manLocDetl.getAnfme()){
+                        manLocDetl.setAnfme(manLocDetl.getAnfme()-anfme);
+                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                        anfme=0.0;
+                    }else if (anfme>=manLocDetl.getAnfme()){
+                        manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch()));
+                        anfme=anfme-manLocDetl.getAnfme();
+                    }
+                    if (anfme==0.0){
+                        break;
+                    }
+                }
+            }else {
+                ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper.eq("batch", manPakOut.getBatch()));
+                if (manPakOut.getAnfme()<manLocDetl.getAnfme()){
+                    manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getAnfme());
+                    manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                }else if (manPakOut.getAnfme()-manLocDetl.getAnfme()==0){
+                    manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch()));
+                }
+            }
+        }catch (Exception e){
+            return R.error("鏇存柊搴撳瓨鏁伴噺澶辫触");
+        }
+
+
+        ManPakOut out = Cools.isEmpty(manPakOut.getBatch())? manPakOutService.selectOne(new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr()))
+                :manPakOutService.selectOne(new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr())
+                .eq("batch",manPakOut.getBatch()));
+        out.setWrkSts(manPakOut.getWrkSts());
+        out.setZpallet(manPakOut.getZpallet());
+        out.setAnfme(manPakOut.getAnfme());
+        out.setNodeId(manPakOut.getNodeId());
+        out.setLocNo(manPakOut.getLocNo());
+        out.setMatnr(manPakOut.getMatnr());
+        out.setMaktx(manPakOut.getMaktx());
+        out.setBatch(manPakOut.getBatch());
+        out.setStatus(manPakOut.getStatus());
+        boolean update =Cools.isEmpty(manPakOut.getBatch())? manPakOutService.update(out, new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr()))
+                :manPakOutService.update(out, new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr())
+                .eq("batch",manPakOut.getBatch()));
+        try {
+            Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", manPakOut.getDocNum()));
+            List<ManPakOut> pakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", order.getOrderNo()));
+            if (Cools.isEmpty(pakOuts)){
+                return R.error("鏌ヨ鎷h揣鍗曟槑缁嗗け璐�");
+            }else {
+                Long settle = order.getSettle();
+                for (ManPakOut pakOut:pakOuts){
+                    if (pakOut.getStatus()==0 || pakOut.getStatus()==8){
+                        order.setSettle(settle);
+                        break;
+                    }else {
+                        order.setSettle(4L);
+                    }
+                }
+            }
+            orderService.updateSettle(order.getId(),order.getSettle(),(long)9527);
+        }catch (Exception e){
+            return R.error("鏇存柊璁㈠崟鐘舵�佸け璐�");
+        }
+        return update? R.ok("鏇存柊鎴愬姛") : R.error("鏇存柊澶辫触");
     }
 
     @RequestMapping("/manPakOut/notIssued")
@@ -101,4 +455,45 @@
         }
         return R.ok(orders1);
     }
+
+    public static void main(String[] args) {
+        ManPakOutService bean = SpringUtils.getBean(ManPakOutService.class);
+        ManPakOut out = bean.selectOne(null);
+        System.out.println("JSON.toJSONString(out) = " + JSON.toJSONString(out));
+    }
+
+    @RequestMapping(value = "/ManPakOut/print/auth")
+    @ManagerAuth(memo = "璁㈠崟缂栫爜鎵撳嵃")
+    public R manPakOutPrint(@RequestParam(value = "param[]") String[] param) {
+        if(Cools.isEmpty(param)) {
+            return R.parse(CodeRes.EMPTY);
+        }
+        List<ManPakOut> res = new ArrayList<>();
+        for (String orderNo : param){
+            res = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo));
+        }
+        return R.ok().add(res);
+    }
+    @RequestMapping(value = "/ManPakOut/code/auth")
+//    @ManagerAuth(memo = "鐗╂枡缂栫爜鏉″舰鐮佽幏鍙�(type:1(鏉″舰鐮�);2(浜岀淮鐮�)")
+    public R manPakOutCodeBarcode(@RequestParam(defaultValue = "2") Integer type
+            , @RequestParam String param
+            , HttpServletResponse response) throws Exception {
+        AdminInterceptor.cors(response);
+        if (Cools.isEmpty(param)){
+            return R.parse(BaseRes.EMPTY);
+        }
+        BufferedImage img;
+        if (type == 1) {
+            img = BarcodeUtils.encode(param);
+        } else {
+            img = QrCode.createImg(param);
+        }
+        if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
+            throw new IOException("Could not write an image of format jpg");
+        }
+        response.getOutputStream().flush();
+        response.getOutputStream().close();
+        return R.ok();
+    }
 }

--
Gitblit v1.9.1