From d3cb0e841e6585aa84a45f18bb30965db8d1a6aa Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 08 一月 2025 15:48:40 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/MobileController.java |  404 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 393 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index e0ce184..9e27f88 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -1,22 +1,26 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
+import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
 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.*;
 import com.zy.asrs.entity.result.MobileAdjustResult;
+import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
+import com.zy.common.model.WrkDto;
+import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
 
@@ -37,6 +41,8 @@
     @Autowired
     private OrderService orderService;
     @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
     private DocTypeService docTypeService;
     @Autowired
     private WrkMastService wrkMastService;
@@ -46,6 +52,33 @@
     private BasDevpService basDevpService;
     @Autowired
     private PackService packService;
+    @Autowired
+    private ManLocDetlMapper manLocDetlMapper;
+    @Autowired
+    private StaDescService staDescService;
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private MatService matService;
+    @Autowired
+    private BomMatService bomMatService;
+
+    // 鍟嗗搧涓婃灦
+    @RequestMapping("/mat/onSale/auth")
+    @ManagerAuth
+    public R matOnSale(@RequestBody CombParam combParam){
+        mobileService.onSale(combParam);
+        return R.ok("涓婃灦鎴愬姛");
+    }
+    // 鍟嗗搧涓嬫灦
+    @RequestMapping("/mat/offSale/auth")
+    //@ManagerAuth
+    public R matOffSale(@RequestBody OffSaleParam offSaleParam){
+        mobileService.offSale(offSaleParam);
+        return R.ok("涓嬫灦鎴愬姛");
+    }
+
+
 
     // 缁勬墭 ----------------------------------------------------------------------------------------------------
 
@@ -74,11 +107,104 @@
         return R.ok().add(orderDetls);
     }
 
+    @RequestMapping("/check/mergeStore/barcode")
+    @ManagerAuth
+    public R mergeStoreBarcode(@RequestParam String barcode){
+        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "娌℃湁浠诲姟锛岃妫�鏌ワ紒");
+        }
+        if (wrkMast.getIoType() != 104) {
+            throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "闈炲苟鏉垮嚭搴�");
+        }
+        if (wrkMast.getWrkSts() != 14L) {
+            throw new CoolException("褰撳墠鎵樼洏鐮�" + barcode + "鍑哄簱鏈畬鎴�");
+        }
+        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        return R.ok().add(wrkDetl.getBomCode());
+    }
+
     @RequestMapping("/comb/auth")
     @ManagerAuth(memo = "缁勬墭")
     public R comb(@RequestBody CombParam combParam){
         mobileService.comb(combParam, getUserId());
         return R.ok("缁勬墭鎴愬姛");
+    }
+
+    @RequestMapping("/comb/auth2")
+    @ManagerAuth(memo = "缁勬墭")
+    public R comb2(@RequestBody CombParam combParam){
+        mobileService.comb2(combParam, getUserId());
+        return R.ok("缁勬墭鎴愬姛");
+    }
+
+    @RequestMapping("/comb/auth3")
+    @ManagerAuth(memo = "缁勬墭")
+    public R comb3(@RequestBody CombParam combParam){
+        mobileService.comb3(combParam, getUserId());
+        return R.ok("缁勬墭鎴愬姛");
+    }
+
+    @RequestMapping("/check/fullplt/auth")
+    @ManagerAuth(memo = "妫�娴嬬墿鏂欐槸鍚︽湁鏈弧鎵樻墭鐩�")
+    public R checkFullplt(@RequestBody CombParam.CombMat combMat){
+        List<LocMast> locMasts = mobileService.checkFullplt(combMat, getUserId());
+        return R.ok().add(locMasts);
+    }
+
+
+    @RequestMapping("/merge/comb/auth")
+    @ManagerAuth(memo = "骞舵澘")
+    public R mergeComb(@RequestBody CombParam combParam){
+        mobileService.mergeComb(combParam, getUserId());
+        return R.ok("缁勬墭鎴愬姛");
+    }
+
+    @RequestMapping("/merge/out/auth")
+    @ManagerAuth(memo = "pda骞舵澘鍑哄簱")
+    public R mergeOut(@RequestParam String locNo,@RequestParam String staNo){
+        mobileService.mergeOut(locNo,staNo, getUserId());
+        return R.ok("鍑哄簱鎴愬姛");
+    }
+
+    @RequestMapping("/merge/comb2/auth")
+    @ManagerAuth(memo = "骞舵澘")
+    public R mergeComb2(@RequestBody CombParam combParam){
+        mobileService.mergeComb2(combParam, getUserId());
+        return R.ok("骞舵澘鎴愬姛");
+    }
+
+    @RequestMapping("/comb/checkBom")
+    @ManagerAuth(memo = "鏍¢獙Bom")
+    public R checkBom(@RequestBody CheckBom checkBom){
+        BomMat bomMat = new BomMat();
+        // 娌℃湁杈撳叆bom鍙锋甯哥粍鎵�
+        if (Cools.isEmpty(checkBom.getBomCode())) {
+            return R.ok();
+        }
+
+        if (Cools.isEmpty(checkBom.getMatnr())) {
+            return R.ok().add(bomMat);
+        } else {
+            // 妫�鏌ユ槸鍚﹀湪bom娓呭崟鍐�
+            bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("bom_num", checkBom.getBomCode()).eq("element_num", checkBom.getMatnr()));
+            if (Cools.isEmpty(bomMat)) {
+                throw new CoolException("褰撳墠鐗╂枡" + checkBom.getMatnr() + "涓嶅湪Bom娓呭崟鍐�");
+            } else {
+                // 妫�鏌ュ簱瀛樹腑鏄惁鏈夊綋鍓峛om鐨勭墿鏂�
+                Double bomQyt = locDetlService.getBomQyt(checkBom.getBomCode(), checkBom.getMatnr());
+                if (!Cools.isEmpty(bomQyt)) {
+                    bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt);
+                }
+                Double bomQty = wrkDetlService.getBomQty(checkBom.getBomCode(), checkBom.getMatnr());
+                if (!Cools.isEmpty(bomQty)) {
+                    bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQty);
+                }
+                // 妫�鏌ュ伐浣滄。涓槸鍚︽湁褰撳墠bom鐨勭墿鏂�
+
+            }
+        }
+        return R.ok().add(bomMat);
     }
 
     @RequestMapping("/pack/get/auth")
@@ -97,7 +223,7 @@
     @RequestMapping("/pack/comb/auth")
     @ManagerAuth(memo = "涓嬬嚎缁勬墭")
     public R packComb(@RequestBody CombParam combParam){
-        mobileService.packComb(combParam, getUserId());
+//        mobileService.packComb(combParam, getUserId());
         return R.ok("缁勬墭鎴愬姛");
     }
 
@@ -141,10 +267,20 @@
         if (wrkMast != null) {
             List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
             // 鍘婚櫎宸插嚭搴撶‘璁ょ殑鏄庣粏
-            wrkDetls.removeIf(wrkDetl -> wrkDetl.getInspect() == 1);
+            wrkDetls.removeIf(wrkDetl -> wrkDetl.getInspect() != null && wrkDetl.getInspect() != 0);
             return R.ok().add(Cools.add("wrkNo", wrkMast.getWrkNo()).add("ioType", wrkMast.getIoType()).add("list", wrkDetls));
         }
         return R.ok();
+    }
+
+    // 鏍规嵁搴撲綅鐮佸拰鍟嗗搧鐮佹悳绱㈠晢鍝�
+    @RequestMapping("/mat/find/auth")
+    public R find(@RequestParam(required = false) String locNo
+            , @RequestParam(required = false) String matnr){
+        //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr);
+        ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr);
+        return R.ok(manLocDetl);
+        //return R.ok(manLocDetlMapper.selectItem0(locNo, matnr));
     }
 
     /**
@@ -197,12 +333,46 @@
         if (Cools.isEmpty(list)) {
             return R.ok();
         }
-        // todo:luxiaotao 鎷f枡鍑哄簱鍙慨鏀瑰伐浣滄。鏄庣粏
         Set<Integer> wrkNos = new HashSet<>();
+        List<WrkDto> dtos = new ArrayList<>();
         for (WrkDetl wrkDetl : list) {
-            wrkNos.add(wrkDetl.getWrkNo());
-            wrkDetlService.updateInspect(wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+            if (wrkNos.contains(wrkDetl.getWrkNo())) {
+                for (WrkDto dto : dtos) {
+                    if (dto.getWrkNo().equals(wrkDetl.getWrkNo())) {
+                        dto.getWrkDetls().add(wrkDetl);
+                        break;
+                    }
+                }
+            } else {
+                wrkNos.add(wrkDetl.getWrkNo());
+                dtos.add(new WrkDto(wrkDetl.getWrkNo(), wrkDetl));
+            }
         }
+
+        for (WrkDto dto : dtos) {
+            WrkMast wrkMast = wrkMastService.selectById(dto.getWrkNo());
+            if (wrkMast != null) {
+                // 101
+                if (wrkMast.getIoType() == 101) {
+                    for (WrkDetl wrkDetl : dto.getWrkDetls()) {
+                        wrkDetlService.updateInspect(wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                    }
+                }
+                // 103
+                if (wrkMast.getIoType() == 103) {
+                    if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
+                        throw new CoolException("鎷f枡鍑哄簱纭澶辫触");
+                    }
+                    for (WrkDetl wrkDetl : dto.getWrkDetls()) {
+                        wrkDetl.setInspect(1);
+                        if (!wrkDetlService.insert(wrkDetl)) {
+                            throw new CoolException("鎷f枡鍑哄簱纭澶辫触");
+                        }
+                    }
+                }
+            }
+        }
+
         for (Integer wrkNo : wrkNos) {
             WrkMast wrkMast = wrkMastService.selectById(wrkNo);
             if (wrkMast.getWrkSts() == 14 && (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N"))) {
@@ -259,5 +429,217 @@
         return R.ok("鐩樼偣鎴愬姛");
     }
 
+    @PostMapping("/order/out/pakout/auth")
+    @ManagerAuth(memo = "璁㈠崟鍑哄簱")
+    public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
+        if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
+            return R.parse(BaseRes.PARAM);
+        }
+        mobileService.pakoutByOrder(param,getUserId());
+        return R.ok("鍑哄簱鎴愬姛");
+    }
+
+    //骞冲簱pda涓婃灦
+    @RequestMapping("/manDetl/in")
+    public R manDetlAdd(@RequestBody JSONObject json){
+        if (json == null){
+            return R.error("浼犲叆鏁版嵁涓虹┖");
+        }
+        return mobileService.manDetlIn(json);
+    }
+
+    //骞冲簱pda涓嬫灦
+    @RequestMapping("/manDetl/out")
+    public R manDetlDelete(@RequestBody JSONObject json){
+        if (json == null){
+            return R.error("浼犲叆鏁版嵁涓虹┖");
+        }
+        return mobileService.manDetlOut(json);
+    }
+
+    @RequestMapping("/loc/f/list")
+    @ManagerAuth(memo = "鑾峰彇鍦ㄥ簱搴撲綅")
+    public R locNoF(@RequestParam(required = false) String locNo){
+        Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", "F");
+        if (!Cools.isEmpty(locNo)) {
+            wrapper.like("loc_no", locNo);
+        }
+        List<LocMast> list = locMastService.selectList(wrapper);
+        return R.ok().add(list);
+    }
+
+    @RequestMapping("/pick/sta/list")
+    @ManagerAuth(memo = "鑾峰彇骞舵澘绔�")
+    public R pickSta(){
+        List<StaDesc> list = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no",104));
+        return R.ok().add(list);
+    }
+
+    @RequestMapping("/pick/mat/list")
+    @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡")
+    public R pickMats(@RequestParam(required = false) String matnr){
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().like("doc_name", "鍏ュ簱"));
+        ArrayList<Long> typeList = new ArrayList<>();
+        for (DocType docType : docTypes) {
+            typeList.add(docType.getDocId());
+        }
+
+        EntityWrapper<Order> wrapper = new EntityWrapper<>();
+        wrapper.eq("status", 1);
+        wrapper.in("doc_type", typeList);
+        List<Order> orders = orderService.selectList(wrapper);
+
+        ArrayList<Long> orderIds = new ArrayList<>();
+        for (Order order : orders) {
+            orderIds.add(order.getId());
+        }
+
+        //鎼滅储鏄庣粏
+        Wrapper<OrderDetl> wrapper1 = new EntityWrapper<OrderDetl>();
+        wrapper1.eq("status", 1);
+        wrapper1.in("order_id", orderIds);
+        if (!Cools.isEmpty(matnr)) {
+            wrapper1.like("matnr", matnr);
+        }
+
+        List<OrderDetl> list = orderDetlService.selectList(wrapper1);
+
+        ArrayList<PickMatParam> maps = new ArrayList<>();
+        for (OrderDetl orderDetl : list) {
+            //鍓╀綑鍙敤鏁伴噺
+            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+            if (count <= 0) {
+                continue;
+            }
+
+            PickMatParam matParam = new PickMatParam();
+            matParam.setMatnr(orderDetl.getMatnr());
+            matParam.setBatch(orderDetl.getBatch());
+            matParam.setOrderNo(orderDetl.getOrderNo());
+            matParam.setOrderId(orderDetl.getOrderId());
+            matParam.setCount(count);
+            matParam.setUseCount(0D);
+            maps.add(matParam);
+        }
+        return R.ok().add(maps);
+    }
+
+    @RequestMapping("/pick/in")
+    @ManagerAuth(memo = "骞舵澘鍏ュ簱")
+    @Transactional
+    public R pickConfirm(@RequestBody PickConfirmParam param){
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+        if (!locMast.getLocSts().equals("F")) {
+            return R.error("搴撲綅鐘舵�佷笉鏄湪搴�");
+        }
+
+        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                .eq("type_no", 104)
+                .eq("stn_no", param.getStaNo()));
+        if (staDesc == null) {
+            return R.error("绔欑偣涓嶅瓨鍦�");
+        }
+
+        //妫�楠屼紶鍙傛槸鍚﹀拰璁㈠崟鏄庣粏鍖归厤
+        for (PickMatParam matParam : param.getList()) {
+            Wrapper<OrderDetl> wrapper = new EntityWrapper<OrderDetl>()
+                    .eq("order_no", matParam.getOrderNo())
+                    .eq("status", 1)
+                    .eq("matnr", matParam.getMatnr());
+            if (!Cools.isEmpty(matParam.getBatch())) {
+                wrapper.eq("batch", matParam.getBatch());
+            }
+            OrderDetl orderDetl = orderDetlService.selectOne(wrapper);
+            if (orderDetl == null) {
+                return R.error("鐗╂枡鏁版嵁涓嶅瓨鍦�");
+            }
+
+            //鍓╀綑鍙敤鏁伴噺
+            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+            if (matParam.getCount() != count) {
+                return R.error("鐗╂枡鏁版嵁宸茶繃鏈�");
+            }
+
+            if (matParam.getUseCount() > count) {
+                return R.error("鍙敤鏁伴噺涓嶈冻");
+            }
+        }
+
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(104));
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
+        wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
+        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("Y"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setBarcode(locMast.getBarcode());
+        wrkMast.setAppeUser(getUserId()); // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(getUserId());
+        wrkMast.setModiTime(now);
+        wrkMast.setCrnNo(staDesc.getCrnNo());
+        if (!wrkMastService.insert(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + param.getLocNo());
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        for (PickMatParam matParam : param.getList()) {
+            EntityWrapper<Mat> wrapper = new EntityWrapper<>();
+            wrapper.eq("status", 1);
+            wrapper.eq("matnr", matParam.getMatnr());
+            Mat mat = matService.selectOne(wrapper);
+            if (mat == null) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鐗╂枡淇℃伅涓嶅瓨鍦細" + matParam.getMatnr());
+            }
+
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(mat);
+            wrkDetl.setOrderNo(matParam.getOrderNo());
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setZpallet(wrkMast.getBarcode());
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(matParam.getUseCount()); // 鏁伴噺
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(getUserId());
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(getUserId());
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+
+            //鏇存柊璁㈠崟宸ヤ綔鏁伴噺
+            orderDetlService.increaseWorkQtyByOrderNo(matParam.getOrderNo(), matParam.getMatnr(), matParam.getBatch(), matParam.getUseCount());
+        }
+        // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+        locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+        if (locMast.getLocSts().equals("F")) {
+            locMast.setLocSts("P");
+            locMast.setModiUser(getUserId());
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + param.getLocNo());
+            }
+        } else {
+            throw new CoolException(param.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+        }
+
+        return R.ok();
+    }
+
+    @RequestMapping("/adjustNew/v2/auth")
+    @ManagerAuth(memo = "琛ヨ揣")
+    public synchronized R adjustNewV2(@RequestBody MobileAdjustParam combParam){
+        mobileService.adjustNew(combParam, Boolean.TRUE, getUserId());
+        return R.ok("琛ヨ揣鎴愬姛");
+    }
 
 }

--
Gitblit v1.9.1