From d6cb644d0ccc0f73f68d60b3a43e82320d8c97f0 Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 23 六月 2025 08:57:04 +0800
Subject: [PATCH] 米多泉州wms功能完善

---
 src/main/java/com/zy/common/web/WcsController.java |  811 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 758 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 12fab6d..e070559 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -1,24 +1,33 @@
 package com.zy.common.web;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+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.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.entity.result.FindLocNoAttributeVo;
+import com.zy.asrs.mapper.LocMastMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
+import com.zy.common.web.param.CanningLineInLocParam;
 import com.zy.common.web.param.SearchLocParam;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
+import javax.annotation.Resource;
+import java.util.*;
 
 /**
  * Created by vincent on 2020/10/30
@@ -42,70 +51,681 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private  LocDetlService locDetlService;
+    @Autowired
+    private RowLastnoService rowLastnoService;
+    @Autowired
+    private WorkService workService;
+
+    @Resource
+    private LocMastMapper locMastMapper;
+
+    @Resource
+    private MatService matService;
+
+    @Resource
+    private ConfigService configService;
+
+    @Resource
+    private WrkMastMapper wrkMastMapper;
 
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
+    @Transactional
     public synchronized R getLocNo(@RequestBody SearchLocParam param) {
+        log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
         if (Cools.isEmpty(param.getIoType())) {
             return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
         }
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
-        List<WaitPakin> waitPakins = null;
+        WaitPakin waitPakin = null;
         if (param.getIoType() == 1) {
-            if (Cools.isEmpty(param.getBarcode())) {
-                return R.error("鏉$爜涓嶈兘涓虹┖");
-            }
-            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("barcode", param.getBarcode()));
-            if (Cools.isEmpty(waitPakins)) {
-                return R.error("鏉$爜鏁版嵁閿欒");
-            }
-            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
-            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
-            if (countLoc > 0 || countWrk > 0) {
-                return R.error("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");
-            }
+            // 鍏堝垱寤哄叆搴撻�氱煡妗�
+            waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount());
         }
-//        if (Cools.isEmpty(param.getLocType1())){
-//            return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
-//        }
+        if (Cools.isEmpty(param.getLocType1())){
+            return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
+        }
 
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+        sourceStaNo.setLocType1(param.getLocType1());
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
 
         StartupDto dto = null;
+
+        // 鍏ュ簱鏈夊紓甯稿嚭鍒板嚭搴撳彛1024
+        if(!Cools.isEmpty(param.getErrMsg())){
+            return exceptionIsOutOfTheWarehouse(param,sourceStaNo,waitPakin);
+        }
+
+        if(param.getIoType() == 1) {
+            List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag();
+            for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) {
+                if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 缃愯绾挎湁瑕佹《淇″彿骞朵笖褰撳墠妗舵槸缃愯绾胯鐨勬《
+                    if(waitPakin == null) {
+                        return R.error("鍏ュ簱閫氱煡妗d负绌�");
+                    } else {
+                        // <4 < 2 < 4
+                        int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
+//                        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wantBucket.getSite()));
+                        if(wantBucket.getSite() == 1071 && count < 4 || wantBucket.getSite() == 1064 && count < 2 || wantBucket.getSite() == 1078 && count < 4) {
+                            dto = startupFullPutStore(param,waitPakin,wantBucket); // 鐩翠緵缃愯绾夸换鍔�
+                            if (dto != null) {
+                                log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
+                                return R.ok().add(dto);
+                            }
+                        } else {
+                            log.warn("鐩翠緵鐏岃绾夸换鍔″凡婊★紝鍏ユ垚鍝佸簱,鍏ュ簱鐩爣绔欑偣{}锛屼换鍔℃暟锛歿}",wantBucket.getSite(),count);
+                        }
+                    }
+                }
+            }
+        }
+        // 1.姣嶆墭鐩橈紝2瀛愭墭鐩�
+        int flag = 0;
+        if(param.getIoType() == 10) {
+            flag = param.getBucketType() == 21 ? 1 : 2 ;
+        }
+
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
-                assert waitPakins != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                assert waitPakin != null;
+                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag());
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto);
+                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1, flag);
                 break;
             default:
                 break;
         }
-
+        log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
         return R.ok().add(dto);
     }
 
+    /**
+     * 鍏ュ簱寮傚父鍑哄埌鍑哄簱鍙�1024
+     */
+    @Transactional(propagation = Propagation.REQUIRED)
+    public R exceptionIsOutOfTheWarehouse(SearchLocParam param, BasDevp sourceStaNo,WaitPakin waitPakin) {
+
+        StartupDto dto = commonService.getLocNo(param,1024);
+        int workNo = dto.getWorkNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(2L);
+        wrkMast.setIoType(3); // 鍏ュ嚭搴撶姸鎬侊細3.绔欏埌绔�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(0); // 灏炬墭鏍囪瘑
+        wrkMast.setPdcType(waitPakin != null ? waitPakin.getMaktx() : ""); // 绌烘《绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setLocNo(param.getErrMsg()); // 寮傚父鎻忚堪浣撶幇鍦ㄧ洰鏍囧簱浣嶄笂
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        if(waitPakin != null) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(waitPakin);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+            // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                    .eq("zpallet", param.getBarcode());
+            WaitPakin setParam = new WaitPakin();
+            setParam.setLocNo(dto.getLocNo());
+            setParam.setIoStatus("Y");
+            setParam.setModiTime(now);
+            if (!waitPakinService.update(setParam, wrapper)) {
+                throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+            }
+        }
+
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)){
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        return R.ok(dto);
+    }
+
+    // 缃愯瀹屾垚鍏ュ簱
+    @PostMapping("/pakin/CanningLine/loc/v1")
+    @ResponseBody
+    @Transactional
+    public synchronized R inCanningLine(@RequestBody CanningLineInLocParam param) {
+        log.info("鏀跺埌WCS缃愯鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+        if (Cools.isEmpty(param.getWrkNo())) {
+            return R.error("宸ヤ綔鍙蜂笉鑳戒负绌�");
+        }
+        if (Cools.isEmpty(param.getSourceStaNo())) {
+            return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+        }
+
+        // 鏍规嵁浠诲姟鍙锋煡璇换鍔�
+        WrkMast wrkMast1 = wrkMastService.selectById(param.getWrkNo());
+        // 鏍规嵁浠诲姟鍙锋煡璇换鍔℃槑缁�
+        WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo()));
+
+        Mat mat = matService.selectByMatnr(param.getMatnr());
+        if (mat == null) {
+            log.error("缃愯瀹屾垚鍏ュ簱锛屽弽棣堢粰wcs鎴愬搧鏍囪瘑涓嶅瓨鍦細{}",param.getMatnr());
+            return R.error("缃愯瀹屾垚鍏ュ簱锛屽弽棣堢粰wcs鎴愬搧鏍囪瘑涓嶅瓨鍦細" + param.getMatnr());
+        }
+
+        // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙�
+        Config config = configService.selectConfigByCode("gzxfh" + param.getSourceStaNo());
+        boolean fhFlag = false;
+        int fhk = 0; // 鍙戣揣鍙�
+        if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
+            fhFlag = true;
+            fhk = Integer.parseInt(config.getValue());
+        }
+
+        Date now = new Date();
+        StartupDto dto;
+
+        // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090
+//        if ( !param.isTbFlag() || !param.isReinspection()) {
+//
+//            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
+//            WrkMast wrkMast = new WrkMast();
+//            wrkMast.setWrkNo(commonService.getWorkNo(0));
+//            wrkMast.setIoTime(now);
+//            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
+//            wrkMast.setWrkSts(2L);
+//            wrkMast.setIoPri(13D); // 浼樺厛绾�
+////            wrkMast.setCrnNo(dto.getCrnNo());
+//            wrkMast.setSourceStaNo(param.getSourceStaNo());
+//            wrkMast.setStaNo(1090);
+////            wrkMast.setLocNo(dto.getLocNo());
+//            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+//            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+////            wrkMast.setPicking("N"); // 鎷f枡
+////            wrkMast.setExitMk("N"); // 閫�鍑�
+////            wrkMast.setEmptyMk("N"); // 绌烘澘
+////            wrkMast.setLinkMis("Y");
+////            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+//            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+//            wrkMast.setAppeTime(now);
+//            wrkMastService.insert(wrkMast);
+//
+//            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
+//            WrkDetl wrkDetl = new WrkDetl();
+//            wrkDetl.sync(mat);
+//            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+//            wrkDetl.setAnfme(wrkDetl1.getAnfme());
+//            wrkDetl.setZpallet(wrkMast1.getBarcode());
+//            wrkDetl.setBatch(param.getBatch());
+//            wrkDetl.setManuDate(param.getManuDate());
+//            wrkDetl.setWeight(param.getWeight());
+//            wrkDetl.setManLength(param.getGrossWeight());
+//            wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲�
+//            wrkDetl.setInspect(param.isTbFlag()?1:0); // 璐存爣鎴愬姛
+//            wrkDetl.setIoTime(now);
+//            wrkDetl.setAppeTime(now);
+//            wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
+//            wrkDetlService.insert(wrkDetl);
+//
+//            dto = new StartupDto();
+//            dto.setWorkNo(wrkMast.getWrkNo());
+//            dto.setSourceStaNo(wrkMast.getSourceStaNo());
+//            dto.setStaNo(wrkMast.getStaNo());
+//        } else
+        if(fhFlag) { // 鐩存帴鍙戣揣
+            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(commonService.getWorkNo(0));
+            wrkMast.setIoTime(now);
+            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
+            wrkMast.setWrkSts(2L);
+            wrkMast.setIoPri(13D); // 浼樺厛绾�
+//            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(param.getSourceStaNo());
+            wrkMast.setStaNo(fhk);
+//            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+//            wrkMast.setPicking("N"); // 鎷f枡
+//            wrkMast.setExitMk("N"); // 閫�鍑�
+//            wrkMast.setEmptyMk("N"); // 绌烘澘
+//            wrkMast.setLinkMis("Y");
+//            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+            wrkMast.setAppeTime(now);
+            wrkMastService.insert(wrkMast);
+
+            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(mat);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setAnfme(wrkDetl1.getAnfme());
+            wrkDetl.setZpallet(wrkMast1.getBarcode());
+            wrkDetl.setBatch(param.getBatch());
+            wrkDetl.setManuDate(param.getManuDate());
+            wrkDetl.setWeight(param.getWeight());
+            wrkDetl.setManLength(param.getGrossWeight());
+            wrkDetl.setVolume(param.getCannedVolume()); // 缃愯閲�
+            wrkDetl.setInspect(1);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
+            wrkDetlService.insert(wrkDetl);
+
+            dto = new StartupDto();
+            dto.setWorkNo(wrkMast.getWrkNo());
+            dto.setSourceStaNo(wrkMast.getSourceStaNo());
+            dto.setStaNo(wrkMast.getStaNo());
+        } else  { // 妫�娴嬫垚鍔燂紝鍏ユ垚鍝佸簱
+                // 妫�绱㈠簱浣嶆潯浠�
+                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+                findLocNoAttributeVo.setMatnr(wrkDetl1.getMatnr());
+                findLocNoAttributeVo.setModel(wrkDetl1.getModel());
+
+                // 鍒嗛厤搴撲綅
+                dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1);
+
+                // 鍒涘缓鏂颁换鍔�
+                int workNo = dto.getWorkNo();
+                // 鐢熸垚宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(now);
+                wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+                wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+                wrkMast.setIoPri(13D); // 浼樺厛绾�
+                wrkMast.setCrnNo(dto.getCrnNo());
+                wrkMast.setSourceStaNo(dto.getSourceStaNo());
+                wrkMast.setStaNo(dto.getStaNo());
+                wrkMast.setLocNo(dto.getLocNo());
+                wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk("N"); // 绌烘澘
+                wrkMast.setLinkMis("Y");
+//            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+                wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+                wrkMast.setAppeTime(now);
+                wrkMastService.insert(wrkMast);
+
+                // 鐢熸垚宸ヤ綔妗f槑缁�
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(mat);
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setAnfme(wrkDetl1.getAnfme());
+                wrkDetl.setZpallet(wrkMast1.getBarcode());
+                wrkDetl.setBatch(param.getBatch());
+                wrkDetl.setManuDate(param.getManuDate());
+                wrkDetl.setWeight(param.getWeight());
+                wrkDetl.setManLength(param.getGrossWeight());
+                wrkDetl.setVolume(param.getCannedVolume());
+                wrkDetl.setInspect(1); // 璐存爣鎴愬姛
+                wrkDetl.setIoTime(now);
+                wrkDetl.setAppeTime(now);
+                log.warn("鎴愬搧缃愯瀹屾垚锛屾《绫诲瀷淇濆瓨锛屾柊浠诲姟鍙凤細{},鏃т换鍔″彿:{},鏃т换鍔℃《鍨�:{}",workNo,wrkMast1.getWrkNo(),wrkDetl1.getMaktx());
+                wrkDetl.setModel(wrkDetl1.getMaktx()); // 淇濆瓨绌烘《鍚嶇О
+                wrkDetlService.insert(wrkDetl);
+
+                // 鏇存柊鐩爣搴撲綅鐘舵��
+                LocMast locMast = locMastService.selectById(dto.getLocNo());
+                if (locMast.getLocSts().equals("O")) {
+                    locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    locMast.setModiTime(now);
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    log.error(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+                    throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+                }
+            }
+
+        // 瀹屾垚鏃т换鍔�(鐩翠緵缃愯绾夸换鍔℃墜鍔ㄥ畬鎴�)
+        if (wrkMast1.getIoType() == 3 && wrkMast1.getWrkSts() == 2) {
+            wrkMast1.setWrkSts(5L);
+            wrkMast1.setModiTime(now);
+            wrkMastService.updateById(wrkMast1);
+        } else if(wrkMast1.getIoType() == 101 && wrkMast1.getWrkSts() == 2) {
+            wrkMast1.setWrkSts(15L);
+            wrkMast1.setModiTime(now);
+            wrkMastService.updateById(wrkMast1);
+        } else {
+            log.error("缃愯瀹屾垚锛屽畬鎴愭棫浠诲姟澶辫触锛歿}",wrkMast1.getWrkNo());
+            return R.parse("缃愯瀹屾垚锛屽畬鎴愭棫浠诲姟澶辫触:"+wrkMast1.getWrkNo());
+        }
+
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        BasDevp basDevp = basDevpService.selectById(param.getSourceStaNo());
+        basDevp.setWrkNo(dto.getWorkNo());
+        basDevp.setModiTime(now);
+        if (!basDevpService.updateById(basDevp)) {
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        log.info("WCS缃愯鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, wrkMast1.getBarcode());
+        return R.ok(dto);
+    }
+
+    // 寮傚父鍙e叆搴擄紝鑾峰彇搴撲綅
+    @PostMapping("/pakin/abnormalMouthWarehousing/loc/v1")
+    @ResponseBody
+    @Transactional
+    public synchronized R abnormalMouthWarehousing(@RequestBody CanningLineInLocParam param) {
+        log.info("鏀跺埌WCS寮傚父鍙e叆搴撴帴鍙h姹�====>>鍏ュ弬:{}", param);
+        int wrkNo = param.getWrkNo();
+        Integer sourceStaNo = param.getSourceStaNo();
+        if (Cools.isEmpty(wrkNo)) {
+            return R.error("宸ヤ綔鍙蜂笉鑳戒负绌�");
+        }
+        if (Cools.isEmpty(sourceStaNo)) {
+            return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+        }
+
+        Date now = new Date();
+        StartupDto dto;
+
+        WrkMast wrkMast = wrkMastService.selectById(wrkNo);
+        if (wrkMast == null) {
+            throw new CoolException("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔★細" + wrkNo);
+        } else if (wrkMast.getLocNo() != null) {
+            throw new CoolException("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤锛�" + wrkMast.getLocNo());
+        }
+
+        if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱
+            wrkMast.setSourceStaNo(1090);
+            wrkMast.setStaNo(1024); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
+            wrkMastService.updateById(wrkMast);
+            return R.ok();
+        }
 
 
+        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+
+        // 妫�绱㈠簱浣嶆潯浠�
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr());
+        findLocNoAttributeVo.setModel(wrkDetl.getModel());
+
+        // 鍒嗛厤搴撲綅
+        dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1);
+
+        dto.setWorkNo(wrkMast.getWrkNo()); // 浣跨敤鍘熷伐浣滃彿
+        wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨� 1.鍏ュ簱
+        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMastService.updateById(wrkMast);
+
+        // 鏇存柊鐩爣搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(dto.getLocNo());
+        if (locMast.getLocSts().equals("O")) {
+            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+            locMast.setModiTime(now);
+            if (!locMastService.updateById(locMast)) {
+                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            log.error(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+        }
+
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        BasDevp basDevp = basDevpService.selectById(sourceStaNo);
+        basDevp.setWrkNo(dto.getWorkNo());
+        basDevp.setModiTime(now);
+        if (!basDevpService.updateById(basDevp)) {
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        log.info("WCS寮傚父鍙e叆搴撴帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, wrkMast.getBarcode());
+        return R.ok(dto);
+    }
+
+    @Transactional(propagation = Propagation.REQUIRED)
+    public WaitPakin comb(String barcode, int matnr,int bucketCount) {
+        if (Cools.isEmpty(barcode, matnr,bucketCount)) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+
+        // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+                eq("zpallet", barcode).eq("io_status", "N")) > 0) {
+            throw new CoolException(barcode + "鏁版嵁姝e湪杩涜鍏ュ簱");
+        }
+
+        if(barcode.length()!=8){
+            throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + barcode);
+        }
+
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode));
+        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",barcode));
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode));
+        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+            throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
+        }
+
+        Date now = new Date();
+
+        // 鏃犲崟缁勬墭
+//        if (Cools.isEmpty(param.getOrderNo())) {
+
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
+//            List<DetlDto> detlDtos = new ArrayList<>();
+//            param.getCombMats().forEach(elem -> {
+//                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
+//                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(),  elem.getAnfme());
+//                if (DetlDto.has(detlDtos, detlDto)) {
+//                    DetlDto one = DetlDto.findDto(detlDtos, detlDto);
+//                    assert one != null;
+//                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+//                } else {
+//                    detlDtos.add(detlDto);
+//                }
+//            });
+
+
+//            for (DetlDto detlDto : detlDtos) {
+                Mat mat = matService.selectByMatnr(String.valueOf(matnr));
+                if (Cools.isEmpty(mat)) {
+                    throw new CoolException(matnr + "鍟嗗搧妗f涓嶅瓨鍦�");
+                }
+//                // 鍒ゆ柇绌烘《绫诲瀷
+//                Config config = configService.selectConfigByCode("EmptyBucketType");
+//                if (config == null) {
+//                    log.info("閰嶇疆鍏ュ簱绌烘《绫诲瀷涓虹┖");
+//                    throw new CoolException("閰嶇疆鍏ュ簱绌烘《绫诲瀷涓虹┖");
+//                }
+//                String[] split = config.getValue().split("=");
+//                String bucketType = split[0];
+//                Integer sum = Integer.valueOf(split[1]);
+//                int count = bucketType.equals("IBC") ? 1 : 4;
+                WaitPakin waitPakin = new WaitPakin();
+                waitPakin.sync(mat);
+//                waitPakin.setBatch(detlDto.getBatch());
+                waitPakin.setZpallet(barcode);   // 鎵樼洏鐮�
+                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAnfme((double) bucketCount);  // 鏁伴噺
+                waitPakin.setStatus("Y");    // 鐘舵��
+                waitPakin.setAppeUser(29L);
+                waitPakin.setAppeTime(now);
+                waitPakin.setModiUser(29L);
+                waitPakin.setModiTime(now);
+                if (!waitPakinService.insert(waitPakin)) {
+                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+                }
+                return waitPakin;
+//            }
+            // 鍏宠仈缁勬墭
+//        } else {
+////            Order order = orderService.selectByNo(param.getOrderNo());
+//            Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo());
+//            if (Cools.isEmpty(order) || order.getSettle() > 2) {
+//                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+//            }
+//            // 鐢熸垚鍏ュ簱閫氱煡妗�
+//            List<DetlDto> detlDtos = new ArrayList<>();
+//            param.getCombMats().forEach(elem -> {
+//
+//                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+////                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+//                OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
+//                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3());
+//                if (elem.getAnfme() > orderDetl.getEnableQty()) {
+//                    throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+//                }
+//                // 淇敼璁㈠崟浣滀笟鏁伴噺
+////                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+////                    throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+////                }
+//                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
+//                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme());
+//                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),
+//                        elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(),  elem.getAnfme());
+//                if (DetlDto.has(detlDtos, detlDto)) {
+//                    DetlDto one = DetlDto.findDto(detlDtos, detlDto);
+//                    assert one != null;
+//                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+//                } else {
+//                    detlDtos.add(detlDto);
+//                }
+//            });
+//            for (DetlDto detlDto : detlDtos) {
+//                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+//                if (Cools.isEmpty(mat)) {
+//                    throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+//                }
+//                WaitPakin waitPakin = new WaitPakin();
+//                waitPakin.sync(mat);
+//                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+//                waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
+//                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+//                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+//                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
+//                waitPakin.setStatus("Y");    // 鐘舵��
+//                waitPakin.setAppeUser(userId);
+//                waitPakin.setAppeTime(now);
+//                waitPakin.setModiUser(userId);
+//                waitPakin.setModiTime(now);
+//                if (!waitPakinService.insert(waitPakin)) {
+//                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+//                }
+//            }
+////            orderService.updateSettle(order.getId(), 2L, userId);
+//            OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId);
+//        }
+
+    }
+
+    @PostMapping("/auto/emptyIn/v1")
+    @ResponseBody
+    public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto){
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(12, true);
+
+        // 妫�绱㈠簱浣�
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+
+        StartupDto dto = commonService.getLocNo( 10, 12, findLocNoAttributeVo, locTypeDto);
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(dto.getWorkNo());
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(1L);
+        wrkMast.setIoPri(13D);
+        wrkMast.setIoType(10);
+        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setFullPlt("N"); // 婊℃澘锛歂
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("Y"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setMemo("鑷姩绌烘墭鍏ュ簱");
+        return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:"+wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触");
+    }
+
+    // 鑷姩鍑虹┖妗�
+    @PostMapping("/autoOutEmptyBucket")
+    @ResponseBody
+    public R autoOutEmptyBucket(@RequestBody StockOutParam param){
+        workService.startupFullTakeStore(param, 29L);
+        return R.ok("鍑哄簱鍚姩鎴愬姛");
+    }
+
+    @PostMapping("auto/emptyOut/v1")
+    @ResponseBody
+    public R autoEmptyOut(@RequestBody Map<String,String> emptyPalletSite){
+        // 绌烘墭鐩樼被鍨�
+        String type = emptyPalletSite.get("flag");
+        // 鍑哄簱绔欑偣
+        Integer site = Integer.valueOf(emptyPalletSite.get("site"));
+
+        LocMast locMast;
+
+        // 鍏堟壘娴呭簱浣�
+        locMast = locMastMapper.queryLocMasterByLocStsAndRow(Arrays.asList(2, 3), type);
+
+        // 娴呭簱浣嶆病鏈夊垯鏌ヨ鎵�鏈�
+        if (locMast == null) {
+            locMast = locMastMapper.queryLocMasterByLocStsAndRow(null, type);
+        }
+
+        if (locMast == null) {
+            return R.error("搴撳瓨娌℃湁"+type+"绫诲瀷绌烘墭鐩�");
+        }
+
+        String locNo = locMast.getLocNo();
+
+        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+        emptyPlateOutParam.setOutSite(site);
+        emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locNo);}});
+        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
+        return R.ok(!Cools.isEmpty(wrkMast)? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+    }
 
     /**
      * 鍏ㄦ澘鍏ュ簱
      */
-    @Transactional
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
+    @Transactional(propagation = Propagation.REQUIRED)
+    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins,boolean tailSupportFlag) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-        List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
-        StartupDto dto = commonService.getLocNo(1, 1, devpNo, matNos, locTypeDto,0);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins);
+        StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo,waitPakins.getModel().equals("绌烘墭鐩�") ? 1 : 2);
         int workNo = dto.getWorkNo();
-
+        Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -123,33 +743,38 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑
+        wrkMast.setPdcType(waitPakins.getMatnr()); // 绌烘《绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(new Date());
-        wrkMast.setModiTime(new Date());
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
-        // 淇敼閫氱煡妗�
-        List<MatCodeCountDto> matDtos = new ArrayList<>();
-        waitPakins.forEach(elem -> {
-            // todo:luxiaotao 淇敼閫氱煡妗�
-//            matDtos.add(new MatCodeCountDto(elem.getBillNo(), elem.getSeqNo(), elem.getMatNo(), elem.getQty(),elem.getItemBatch(),elem.getOrderNo(),elem.getSpecs()));
-//
-//            //鏇存柊缁勬墭鏁版嵁鐘舵�佷负鍏ュ簱涓�
-//            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("barcode", elem.getBarcode())
-//                    .eq("bill_no", elem.getBillNo()).eq("seq_no", elem.getSeqNo()).eq("mat_no", elem.getMatNo());
-//            WaitPakin waitPakin = waitPakinService.selectOne(wrapper);
-//            waitPakin.setLocNo(dto.getLocNo());
-//            waitPakin.setIoStatus(1);//鍏ュ簱涓�
-//            waitPakinService.update(waitPakin, wrapper);
-        });
         // 鐢熸垚宸ヤ綔妗f槑缁�
-        wrkDetlService.createWorkDetail(workNo, matDtos, barcode, null);
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(waitPakins);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setIoTime(wrkMast.getIoTime());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                .eq("zpallet", barcode);
+        WaitPakin setParam = new WaitPakin();
+        setParam.setLocNo(dto.getLocNo());
+        setParam.setIoStatus("Y");
+        setParam.setModiTime(now);
+        if (!waitPakinService.update(setParam, wrapper)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        }
         // 鏇存柊婧愮珯鐐逛俊鎭�
         sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiTime(new Date());
+        sourceStaNo.setModiTime(now);
         if (!basDevpService.updateById(sourceStaNo)){
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
@@ -157,7 +782,7 @@
         LocMast locMast = locMastService.selectById(dto.getLocNo());
         if (locMast.getLocSts().equals("O")){
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-            locMast.setModiTime(new Date());
+            locMast.setModiTime(now);
             if (!locMastService.updateById(locMast)){
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
@@ -167,12 +792,90 @@
         return dto;
     }
 
+    /**
+     * 鐩翠緵缃愯绾�
+     */
+    @Transactional(propagation = Propagation.REQUIRED)
+    public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin,SearchLocParam.WantBucket wantBucket) {
+
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+
+//        // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷
+//        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9"));
+//
+//        // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱
+//        if (count > 10) {
+//             return null;
+//        }
+
+        StartupDto dto = commonService.getLocNo(param,wantBucket.getSite());
+        int workNo = dto.getWorkNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(2L);
+        wrkMast.setIoType(3); // 鍏ュ嚭搴撶姸鎬侊細3.绔欏埌绔�
+        wrkMast.setIoPri(13D); // 浼樺厛绾�
+//        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+//        wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+        wrkMast.setCtnType(param.isTailSupportFlag() ? 1 : 0); // 灏炬墭鏍囪瘑
+        wrkMast.setPdcType(waitPakin.getMatnr()); // 绌烘《绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        WrkDetl wrkDetl = new WrkDetl();
+        wrkDetl.sync(waitPakin);
+        wrkDetl.setWrkNo(wrkMast.getWrkNo());
+        wrkDetl.setIoTime(wrkMast.getIoTime());
+        wrkDetl.setAppeTime(now);
+        wrkDetl.setModiTime(now);
+        if (!wrkDetlService.insert(wrkDetl)) {
+            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+        }
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                .eq("zpallet", param.getBarcode());
+        WaitPakin setParam = new WaitPakin();
+        setParam.setLocNo(dto.getLocNo());
+        setParam.setIoStatus("Y");
+        setParam.setModiTime(now);
+        if (!waitPakinService.update(setParam, wrapper)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        }
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)){
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        return dto;
+    }
+
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto) {
+    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea, int flag) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-        StartupDto dto = commonService.getLocNo(1, 10, devpNo, null, locTypeDto,0);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+
+        StartupDto dto = commonService.getLocNoNew( 10, devpNo, findLocNoAttributeVo, locArea);
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -180,7 +883,7 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
+        wrkMast.setIoPri(14D); // 浼樺厛绾�
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
@@ -190,7 +893,9 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setPltType(flag); // 绌烘嫋绫诲瀷
+//        wrkMast.setBarcode(barcode);
+//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(new Date());
         wrkMast.setModiTime(new Date());

--
Gitblit v1.9.1