From dd76858f35bb4fdd76d5976465e9bd96267b0f0b Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期三, 06 五月 2026 09:50:53 +0800
Subject: [PATCH] 初始化

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  366 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 360 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 3d9a670..e1b19df 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,25 +3,29 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.OpenOrderCompleteParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.entity.param.OpenOrderPakoutParam;
-import com.zy.asrs.entity.param.PackParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.entity.result.OpenOrderCompeteResult;
 import com.zy.asrs.entity.result.StockVo;
 import com.zy.asrs.mapper.TagMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.common.model.DetlDto;
+import com.zy.common.model.LocTypeDto;
+import com.zy.common.model.StartupDto;
+import com.zy.common.service.CommonService;
 import com.zy.common.utils.NodeUtils;
+import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -51,6 +55,243 @@
     private TagService tagService;
     @Autowired
     private TagMapper tagMapper;
+
+    @Resource
+    private WrkMastMapper wrkMastMapper;
+
+    @Autowired
+    private BasDevpService basDevpService;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Autowired
+    private WrkDetlService wrkDetlService;
+
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private ConfigService configService;
+
+    @Override
+    public R queryMatByBatch(String batch) {
+
+        int countL = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("batch", batch));
+        if (countL > 0) {
+            throw new CoolException("搴撳瓨閲岄潰瀛樺湪璇ユ壒鍙凤細" + batch);
+        }
+
+        int countW = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("batch", batch));
+        if (countW > 0) {
+            throw new CoolException("姝e湪鎵ц浠诲姟涓瓨鍦ㄨ鎵瑰彿锛�" + batch);
+        }
+
+        int countP = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("batch", batch));
+        if (countP > 0) {
+            throw new CoolException("鍏ュ簱閫氱煡妗d腑瀛樺湪璇ユ壒鍙凤細" + batch);
+        }
+
+        return R.ok("璇ユ壒鍙峰彲鐢�");
+    }
+
+    @Override
+    public R synCallowWarehousing() {
+
+//        Config outModel = configService.selectConfigByCode("outModel");
+//        if (outModel.getValue().equals("Y")) {
+//            // 娌℃湁鍒�305鐨勫嚭搴撲换鍔�(305鐨勫嚭搴撲换鍔′紭鍏�)
+//        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101)
+//                .eq("sta_no", 305));
+//        if (count > 0) {
+//            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305));
+//            if (basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("Y") && basDevp.getWrkNo() > 6000 && basDevp.getWrkNo() <= 9000) {
+//                log.info("鍑哄簱杞繍鏋跺埌杈�305");
+//                return R.ok("鍑哄簱杞繍鏋跺埌杈�305");
+//            }
+//            return R.parse("鍑哄簱浠诲姟鎵ц涓�");
+//        }
+//            outModel.setValue("N");
+//            configService.updateById(outModel);
+//        }
+        return R.ok();
+    }
+    @Autowired
+    private WaitPakinService waitPakinService;
+    @Override
+    public R syncWarehousing(CombParam param) {
+
+        Long userId = 9999L;
+
+        // 鍙傛暟闈炵┖鍒ゆ柇
+        if (Cools.isEmpty(param.getCombMats())) {
+            throw new CoolException("鏁版嵁涓嶅畬鏁达紝璇锋鏌ヨ姹傚弬鏁�");
+        }
+//
+//        Config outModel = configService.selectConfigByCode("outModel");
+//        if (outModel.getValue().equals("Y")) {
+//            throw new CoolException("305涓嶅厑璁稿叆搴�");
+//        }
+
+        for (CombParam.CombMat combMat : param.getCombMats()) {
+            String batch = combMat.getBatch();
+            int countL = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("batch", batch));
+            int countW = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("batch", batch));
+            if (countW > 0) {
+                return R.ok("宸插瓨鍦ㄤ换鍔�");
+            }
+            int countP = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("batch", batch));
+            if (countL > 0 || countW > 0 || countP > 0) {
+                throw new CoolException("璇ユ壒鍙峰凡缁忓瓨鍦�===>>" + batch);
+            }
+            WaitPakin waitPakin = new WaitPakin();
+            Date now = new Date();
+            waitPakin.sync(combMat);
+            waitPakin.setBarcode("");
+            waitPakin.setZpallet(""); // 鎵樼洏鐮�
+            waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+            waitPakin.setAnfme(1.0);  // 鏁伴噺
+            waitPakin.setStatus("Y");    // 鐘舵��
+            waitPakin.setAppeUser(userId);
+            waitPakin.setAppeTime(now);
+            waitPakin.setModiUser(userId);
+            waitPakin.setModiTime(now);
+
+            // 婧愮珯鐐圭姸鎬佹娴�
+            Integer inStaNo = combMat.getInStaNo(); // 鍏ュ簱绔欑偣
+//            BasDevp sourceStaNo = basDevpService.checkSiteStatus(305, true);
+            BasDevp sourceStaNo = basDevpService.checkSiteStatus(inStaNo, true);
+
+            // 闀垮害>3500鏀惧搴撲綅
+            sourceStaNo.setLocType2((short) (waitPakin.getLength() > 4600 ? 2 : 1));
+            LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+
+            // 瀵绘壘搴撲綅
+            StartupDto dto = commonService.getLocNo(sourceStaNo, locTypeDto, 1);
+
+            int workNo = dto.getWorkNo();
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setWhsType(1);
+            wrkMast.setIoTime(new Date());
+            wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+            wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+            wrkMast.setIoPri(15D); // 浼樺厛绾�
+            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(dto.getSourceStaNo());
+            wrkMast.setStaNo(dto.getStaNo());
+            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setBarcode(""); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("Y");
+            wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+            // 鎿嶄綔浜哄憳鏁版嵁
+            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("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+//            // 鏇存柊婧愮珯鐐逛俊鎭�
+//            sourceStaNo.setWrkNo(workNo);
+//            sourceStaNo.setModiTime(now);
+//            if (!basDevpService.updateById(sourceStaNo)) {
+//                throw new CoolException("鏇存柊婧愮珯澶辫触");
+//            }
+
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            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 {
+                throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            }
+        }
+
+        return R.ok();
+    }
+
+    @Override
+    public R agvAskOpen(AgvAskOpenParam param) {
+        if (param.getFlag() == 0) { // 鍑哄簱璇锋眰wms寮�闂�
+            Integer staNo = param.getStaNo(); // 闇�瑕佸紑銆佸叧闂ㄧ殑绔欑偣
+//            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305));
+            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staNo));
+            if (basDevp.getWrkNo() > 6000 && basDevp.getWrkNo() <= 9000 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")
+                    && basDevp.getOutEnable().equals("Y")) { // 鍑哄簱宸ヤ綔妗�
+                WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo());
+                if (wrkMast.getWhsType() == null) {
+                    throw new CoolException("娌℃湁閫氱煡agv杩囨潵鍙栬揣");
+                } else if (wrkMast.getWhsType() == 1) {
+                    WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", basDevp.getWrkNo()));
+                    if (wrkDetl.getMatnr().equals(param.getMatnr()) && wrkDetl.getBatch().equals(param.getBatch())) {
+                        wrkMast.setWhsType(2);
+                        wrkMastService.updateById(wrkMast);
+                        return R.ok("鐗╂枡鏍¢獙鎴愬姛锛岄┈涓婂紑闂�");
+                    } else {
+                        throw new CoolException("缂栫爜+鎵瑰彿鏍¢獙澶辫触锛�" + param.getBatch());
+                    }
+                } else if (wrkMast.getWhsType() == 2) {
+                    return R.ok("椹笂寮�闂�");
+                } else if (wrkMast.getWhsType() == 3) {
+                    return R.ok("宸插紑闂�");
+                }else {
+                    return R.error("宸ヤ綔妗e綋鍓嶇姸鎬佹湁璇�");
+                }
+            } else {
+                return R.error("涓嶆弧瓒冲嚭搴撴潯浠�");
+            }
+        } else if(param.getFlag() == 1) { // 鍏ュ簱璇锋眰wms寮�闂�
+//            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305));
+            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", param.getStaNo()));
+            if (basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("Y")
+                    && basDevp.getInEnable().equals("Y") && basDevp.getWrkNo() <= 3000) { // 鍏ュ簱搴曞骇
+                WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo());
+                if (wrkMast == null || wrkMast.getWhsType() == null) {
+                    throw new CoolException("娌℃湁鍏ュ簱浠诲姟");
+                } else if (wrkMast.getWhsType() == 1) {
+                    WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                    if (wrkDetl.getMatnr().equals(param.getMatnr()) && wrkDetl.getBatch().equals(param.getBatch())) {
+                        wrkMast.setWhsType(2);
+                        wrkMastService.updateById(wrkMast);
+                        return R.ok("鐗╂枡鏍¢獙鎴愬姛锛岄┈涓婂紑闂�");
+                    } else {
+                        throw new CoolException("缂栫爜+鎵瑰彿鏍¢獙澶辫触锛�" + param.getBatch());
+                    }
+                } else if (wrkMast.getWhsType() == 2) {
+                    return R.ok("椹笂寮�闂�");
+                } else if (wrkMast.getWhsType() == 3) {
+                    return R.ok("宸插紑闂�");
+                }else {
+                    return R.error("宸ヤ綔妗e綋鍓嶇姸鎬佹湁璇�");
+                }
+            } else {
+                return R.error("搴曞骇杩樻湭杈惧埌");
+            }
+        }
+        return R.error("鍑哄叆搴撴爣璇嗛敊璇細" + param.getFlag());
+    }
 
     @Override
     @Transactional
@@ -187,8 +428,12 @@
     @Transactional
     public void pakoutOrderCreate(OpenOrderPakoutParam param) {
         Order order = orderService.selectByNo(param.getOrderNo());
+        // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
         if (!Cools.isEmpty(order)) {
-            throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+            if (order.getSettle() > 1L) {
+                throw new CoolException(param.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+            }
+            orderService.remove(order.getId());
         }
         DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
         Date now = new Date();
@@ -334,7 +579,7 @@
         pack = new Pack(
                 param.getBarcode(),    // 鏉$爜[闈炵┖]
                 analyse.getMatnr(),    // 鍟嗗搧缂栧彿
-                analyse.getBarcode(),    // 鎵瑰彿
+                analyse.getBarcode(),    // 搴忓垪鐮�
                 1L,    // 璁㈠崟鐘舵��
                 1,    // 鐘舵��
                 now,    // 娣诲姞鏃堕棿
@@ -434,4 +679,113 @@
         }
     }
 
+    @Override
+    @Transactional
+    public void syncMat(MatSyncParam param) {
+        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) {
+            throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
+        }
+
+        for(MatSyncParam.MatParam matParam : param.getMatDetails()){
+            if(Cools.isEmpty(matParam.getMatnr())){
+                throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖");
+            }
+
+            Date now = new Date();
+            Mat mat = matService.selectByMatnr(matParam.getMatnr());
+            if (mat == null) {
+                mat = new Mat();
+                // 鍒嗙被
+                Long tagId;
+                // 涓�绾у垎绫�
+                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
+                    Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2);
+                    if (priTag == null) {
+                        Tag top = tagService.getTop();
+                        NodeUtils nodeUtils = new NodeUtils();
+                        nodeUtils.executePath(top.getId());
+                        priTag = new Tag(
+                                null,    // 缂栧彿
+                                matParam.getGroupCode(),    // 鍚嶇О
+                                top.getId(),    // 鐖剁骇
+                                top.getName(),    // 鐖剁骇鍚嶇О
+                                nodeUtils.path.toString(),    // 鍏宠仈璺緞
+                                nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+                                0,    // 绫诲瀷
+                                null,    // 璐熻矗浜�
+                                null,    // 鍥剧墖
+                                null,    // 绠�瑕佹弿杩�
+                                null,    // 鏁伴噺
+                                2,    // 绛夌骇
+                                null,    // 鎺掑簭
+                                1,    // 鐘舵��
+                                now,    // 娣诲姞鏃堕棿
+                                null,    // 娣诲姞浜哄憳
+                                now,    // 淇敼鏃堕棿
+                                null,    // 淇敼浜哄憳
+                                null    // 澶囨敞
+                        );
+                        if (tagMapper.insert(priTag) == 0) {
+                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                        }
+                    }
+                    // 浜岀骇鍒嗙被
+                    Tag secTag = tagService.selectByName(matParam.getGroupName(), 3);
+                    if (secTag == null) {
+                        NodeUtils nodeUtils = new NodeUtils();
+                        nodeUtils.executePath(priTag.getId());
+                        secTag = new Tag(
+                                null,    // 缂栧彿
+                                matParam.getGroupName(),    // 鍚嶇О
+                                priTag.getId(),    // 鐖剁骇
+                                priTag.getName(),    // 鐖剁骇鍚嶇О
+                                nodeUtils.path.toString(),    // 鍏宠仈璺緞
+                                nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+                                0,    // 绫诲瀷
+                                null,    // 璐熻矗浜�
+                                null,    // 鍥剧墖
+                                null,    // 绠�瑕佹弿杩�
+                                null,    // 鏁伴噺
+                                3,    // 绛夌骇
+                                null,    // 鎺掑簭
+                                1,    // 鐘舵��
+                                now,    // 娣诲姞鏃堕棿
+                                null,    // 娣诲姞浜哄憳
+                                now,    // 淇敼鏃堕棿
+                                null,    // 淇敼浜哄憳
+                                null    // 澶囨敞
+                        );
+                        if (tagMapper.insert(secTag) == 0) {
+                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                        }
+                    }
+                    tagId = secTag.getId();
+                } else {
+                    tagId = tagService.getTop().getId();
+                }
+                mat.sync(param);
+//            mat.setMatnr(param.getMatnr());
+//            mat.setMaktx(param.getMaktx());
+//            mat.setSpecs(param.getSpecs());
+//            mat.setModel(param.getModel());
+
+                mat.setTagId(tagId);
+                mat.setStatus(1);
+                mat.setCreateTime(now);
+                mat.setUpdateTime(now);
+                if (!matService.insert(mat)) {
+                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                } else {
+                    log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+                }
+            } else {
+                mat.sync(param);
+                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
+                    throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
+                }
+            }
+        }
+
+    }
+
 }

--
Gitblit v1.9.1