From 613a4f53f24672cc7e202f6f40a9d51bae904e40 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 28 三月 2024 14:12:45 +0800
Subject: [PATCH] #平库转立库

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  265 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 264 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 05e9f89..1140a5e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -23,6 +23,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.text.MessageFormat;
 import java.util.Date;
 import java.util.List;
@@ -51,6 +52,8 @@
     private LocMastService locMastService;
     @Autowired
     private LocDetlService locDetlService;
+    @Autowired
+    private LocNormalService locNormalService;
 
     @Override
     @Transactional
@@ -87,6 +90,7 @@
                     waitPakin.setModiUser(userId);
                     waitPakin.setModiTime(new Date());
                     VersionUtils.setWaitPakIn(waitPakin, matCode);
+                    waitPakin.setBrand("N");
 //                    waitPakin.setMatnr(matCode.getMatNo()+"|"+combMat.getMnemonic()); //浜у搧缂栫爜|鐢熶骇鍗曞彿
 //                    waitPakin.setBname(matCode.getMatNo());
                     // 濡傛灉鐢熸垚鍗曞彿涓嶄负绌烘彃鍏ョ敓浜у崟鍙�
@@ -161,7 +165,7 @@
                 waitPakin.setMnemonic(param.getProductCode()); // 鍔╄鐮�
                 waitPakin.setSupplier(param.getProductCode()); // 榛樿渚涘簲鍟�
                 waitPakin.setWarehouse(param.getProductCode()); // 榛樿浠撳簱
-                waitPakin.setBrand(param.getProductCode()); // 鍝佺墝
+                waitPakin.setBrand("N"); // 鍝佺墝
                 waitPakin.setAltme(param.getProductCode()); // 鍗曚綅
 
                 if (!waitPakinService.insert(waitPakin)) {
@@ -205,6 +209,7 @@
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(new Date());
                 waitPakin.setSupplier(combMat.getSupplier());
+                waitPakin.setBrand("N");
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                 }
@@ -274,6 +279,264 @@
 
 
     }
+    @Override
+    @Transactional
+    public void combLtoP(CombParam param, Long userId) {
+        if (Cools.isEmpty(param.getBarcode())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getCombMats()) && Cools.isEmpty(param.getProductCode())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        int waitPakinCount = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+                        eq("zpallet", param.getBarcode())
+                //.eq("io_status", "N")
+        );
+        int wrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+        int locDetlCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+        if (waitPakinCount > 0 || wrkMastCount > 0 || locDetlCount > 0) {
+            throw new CoolException("鏉$爜鏁版嵁宸插瓨鍦�");
+        }
+        if (Cools.isEmpty(param.getBillNo())) {
+            if (Cools.isEmpty(param.getProductCode())) {
+                for (CombParam.CombMat combMat : param.getCombMats()) {
+                    MatCode matCode = matCodeService.selectById(combMat.getMatNo());
+                    if (Cools.isEmpty(matCode)) {
+                        throw new CoolException("鐗╂枡鏁版嵁閿欒");
+                    }
+                    WaitPakin waitPakin = new WaitPakin();
+                    waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+                    waitPakin.setStatus("Y");    // 鐘舵��
+                    waitPakin.setAnfme(combMat.getCount());  // 鏁伴噺
+                    waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                    waitPakin.setAppeUser(userId);
+                    waitPakin.setAppeTime(new Date());
+                    waitPakin.setModiUser(userId);
+                    waitPakin.setModiTime(new Date());
+                    VersionUtils.setWaitPakIn(waitPakin, matCode);
+                    if (param.getMove() == 1){
+                            waitPakin.setBrand("Y");
+                    }else {
+                        waitPakin.setBrand("N");
+                    }
+//                    waitPakin.setMatnr(matCode.getMatNo()+"|"+combMat.getMnemonic()); //浜у搧缂栫爜|鐢熶骇鍗曞彿
+//                    waitPakin.setBname(matCode.getMatNo());
+                    // 濡傛灉鐢熸垚鍗曞彿涓嶄负绌烘彃鍏ョ敓浜у崟鍙�
+                    if (!Cools.isEmpty(combMat.getMnemonic())) {
+                        waitPakin.setMnemonic(combMat.getMnemonic());
+                    }
+
+                    if (!waitPakinService.insert(waitPakin)) {
+                        throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+                    }
+                    if (param.getMove() == 1){
+                        EntityWrapper<LocNormal> locNormalEntityWrapper = new EntityWrapper<>();
+                        locNormalEntityWrapper.eq("matnr",waitPakin.getMatnr());
+                        locNormalEntityWrapper.eq("mnemonic",waitPakin.getMnemonic());
+                        locNormalEntityWrapper.eq("state","1");
+                        LocNormal locNormal = locNormalService.selectOne(locNormalEntityWrapper);
+                        if (Cools.isEmpty(locNormal)){
+                            throw new CoolException("鏈壘鍒板钩搴撶浉鍚屽簱瀛�");
+                        }
+                        if (combMat.getCount() < locNormal.getAnfme().doubleValue()){
+                            locNormal.setAnfme(locNormal.getAnfme().subtract(BigDecimal.valueOf(combMat.getCount())));
+                            boolean update = locNormalService.update(locNormal, locNormalEntityWrapper);
+                            if (!update){
+                                throw new CoolException("鏇存柊搴撳瓨鏁版嵁鏈夎");
+                            }
+                        }else if (combMat.getCount() == locNormal.getAnfme().doubleValue()){
+                            boolean delete = locNormalService.delete(locNormalEntityWrapper);
+                            if (!delete){
+                                throw new CoolException("鍒犻櫎搴撳瓨鏁版嵁鍑洪敊");
+                            }
+                        }else {
+                            throw new CoolException("搴撳瓨鏁版嵁鏈夎");
+                        }
+                    }
+
+                }
+                // 灏忚溅鍏ュ簱鎼繍鍛戒护 ----------------------------------------------------
+//                if (!Cools.isEmpty(param.getAgvSite())) {
+//                    // 鍒ゆ柇鏄惁鏈夌┖闂插皬杞�
+//                    if (basAgvService.haveIdleAgv()) {
+//                        AgvCommand command = new AgvCommand();
+//                        command.setAgvId(0);
+//                        command.setInterCode(basAgvService.getAgvWorkNo());
+//                        command.setBeginLoc(String.valueOf(param.getAgvSite()));
+//                        command.setEndLoc("1088");
+//                        log.info(JSON.toJSONString(command));
+//                        String result;
+//                        try {
+//                            result = new HttpHandler.Builder()
+//                                    .setUri(agvUrl + "/api/interfaceTask/SendTaskByThirdParty")
+//                                    .setJson(JSON.toJSONString(command))
+//                                    .build()
+//                                    .doPost();
+//                        } catch (IOException e) {
+//                            e.printStackTrace();
+//                            throw new CoolException("璁块棶AGV鎺ュ彛澶辫触");
+//                        }
+//                        AgvResult agvResult = JSON.parseObject(result, AgvResult.class);
+//                        log.info(JSON.toJSONString(agvResult));
+//                        if (!agvResult.getResult()) {
+//                            log.error("agv鍛戒护鍙戦�佸け璐agvId={}]锛岄敊璇俊鎭�={}", command.getAgvId(), agvResult.getExplain());
+//                            throw new CoolException("agv鍛戒护鍙戦�佸け璐agvId=" + command.getAgvId() + "]锛岄敊璇俊鎭�=" + agvResult.getExplain());
+//                        }
+//                    } else {
+//                        throw new CoolException("娌℃湁绌洪棽灏忚溅");
+//                    }
+//
+//                }
+//                // 鍒ゆ柇鏃犻�氱煡鍗曞彿supplier鐨勫叆搴撴暟鎹紝CPICMO鎻掑叆鏁版嵁
+//                List<CombParam.CombMat> erpMatList = param.getCombMats();
+//                for (CombParam.CombMat es : erpMatList) {
+//                    if (Cools.isEmpty(es.getSupplier())) {
+//                        String maxKeySql = "select min(FInterID) as num from CPICMO";
+//                        List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
+//                        Integer maxKey = maxKeyList.get(0).getNum();
+//                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop,Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)";
+//                        ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getMnemonic());
+//                        erpSqlServer.update(ErpSql);
+//                    }
+//                }
+
+            } else {
+                WaitPakin waitPakin = new WaitPakin();
+                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+                waitPakin.setStatus("Y");    // 鐘舵��
+                waitPakin.setAnfme((double) 1);  // 鏁伴噺
+                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAppeUser(userId);
+                waitPakin.setAppeTime(new Date());
+                waitPakin.setModiUser(userId);
+                waitPakin.setModiTime(new Date());
+
+                waitPakin.setMatnr(param.getProductCode()); // 鐗╂枡缂栧彿
+                waitPakin.setMaktx(param.getProductCode()); // 鐗╂枡鎻忚堪
+                waitPakin.setLgnum(param.getProductCode()); // 瑙勬牸
+                waitPakin.setType(param.getProductCode()); // 鐗╂枡绫诲埆
+                waitPakin.setMnemonic(param.getProductCode()); // 鍔╄鐮�
+                waitPakin.setSupplier(param.getProductCode()); // 榛樿渚涘簲鍟�
+                waitPakin.setWarehouse(param.getProductCode()); // 榛樿浠撳簱
+                if (param.getMove() == 1){
+                    waitPakin.setBrand("Y");
+                }else {
+                    waitPakin.setBrand("N");
+                }
+                waitPakin.setAltme(param.getProductCode()); // 鍗曚綅
+
+                if (!waitPakinService.insert(waitPakin)) {
+                    throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+                }
+
+//                // 鍒ゆ柇鏃犻�氱煡鍗曞彿supplier鐨勫叆搴撴暟鎹紝CPICMO鎻掑叆鏁版嵁
+//                List<CombParam.CombMat> erpMatList = param.getCombMats();
+//                for (CombParam.CombMat es : erpMatList) {
+//                    if (Cools.isEmpty(es.getSupplier())) {
+//                        String maxKeySql = "select min(FInterID) as num from CPICMO";
+//                        List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class);
+//                        Integer maxKey = maxKeyList.get(0).getNum();
+//                        String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop, Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)";
+//                        ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getMnemonic());
+//                        erpSqlServer.update(ErpSql);
+//                    }
+//                }
+            }
+        } else {
+            // 鍏宠仈閫氱煡鍗曠粍鎵�
+            for (CombParam.CombMat combMat : param.getCombMats()) {
+                WaitPakin one = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
+                        .eq("supplier", combMat.getSupplier())
+                        .eq("matnr", combMat.getMatNo())
+                        .isNull("zpallet"));
+                if (one == null) {
+                    throw new CoolException("閫氱煡鍗曚笉瀛樺湪" + combMat.getMatNo() + "鏁版嵁锛�");
+                }
+                if (combMat.getCount() > one.getAnfme()) {
+                    throw new CoolException(combMat.getMatNo() + "鐗╂枡鏁伴噺涓嶈冻锛�");
+                }
+                MatCode matCode = matCodeService.selectById(combMat.getMatNo());
+                if (Cools.isEmpty(matCode)) {
+                    throw new CoolException("鐗╂枡鏁版嵁閿欒");
+                }
+                WaitPakin waitPakin = one.clone();
+                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
+                waitPakin.setAnfme(combMat.getCount());  // 鏁伴噺
+                waitPakin.setAppeUser(userId);
+                waitPakin.setAppeTime(new Date());
+                waitPakin.setModiUser(userId);
+                waitPakin.setModiTime(new Date());
+                waitPakin.setSupplier(combMat.getSupplier());
+                waitPakin.setBrand("N");
+                if (!waitPakinService.insert(waitPakin)) {
+                    throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+                }
+                // 鍑忓皯閫氱煡鍗曚笂璇ョ墿鏂欑粍鎵樻暟閲�
+                if (waitPakin.getAnfme() >= one.getAnfme()) {
+                    waitPakinService.delete(new EntityWrapper<WaitPakin>()
+                            .eq("supplier", combMat.getSupplier())
+                            .eq("matnr", combMat.getMatNo())
+                            .eq("mnemonic", param.getMnemonic())
+                            .isNull("zpallet"));
+                } else {
+                    Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>();
+                    if ("".equals(param.getMnemonic())) {
+                        wrapper.eq("supplier", combMat.getSupplier())
+                                .eq("matnr", combMat.getMatNo())
+                                .isNull("zpallet");
+                    } else {
+                        wrapper.eq("supplier", combMat.getSupplier())
+                                .eq("matnr", combMat.getMatNo())
+                                .eq("mnemonic", param.getMnemonic())
+                                .isNull("zpallet");
+                    }
+                    WaitPakin pakin = new WaitPakin();
+                    pakin.setAnfme(one.getAnfme() - waitPakin.getAnfme());
+                    if (!waitPakinService.update(pakin, wrapper)) {
+                        throw new CoolException("鏇存柊鏁版嵁澶辫触");
+                    }
+
+                }
+
+            }
+
+            // 灏忚溅鍏ュ簱鎼繍鍛戒护 ----------------------------------------------------
+//            if (!Cools.isEmpty(param.getCombMats()) && !Cools.isEmpty(param.getAgvSite())) {
+//                // 鍒ゆ柇鏄惁鏈夌┖闂插皬杞�
+//                if (basAgvService.haveIdleAgv()) {
+//                    AgvCommand command = new AgvCommand();
+//                    command.setAgvId(0);
+//                    command.setInterCode(basAgvService.getAgvWorkNo());
+//                    command.setBeginLoc(String.valueOf(param.getAgvSite()));
+//                    command.setEndLoc("1088");
+//                    log.info(JSON.toJSONString(command));
+//                    String result;
+//                    try {
+//                        result = new HttpHandler.Builder()
+//                                .setUri(agvUrl + "/api/interfaceTask/SendTaskByThirdParty")
+//                                .setJson(JSON.toJSONString(command))
+//                                .build()
+//                                .doPost();
+//                    } catch (IOException e) {
+//                        e.printStackTrace();
+//                        throw new CoolException("璁块棶AGV鎺ュ彛澶辫触");
+//                    }
+//                    AgvResult agvResult = JSON.parseObject(result, AgvResult.class);
+//                    log.info(JSON.toJSONString(agvResult));
+//                    if (!agvResult.getResult()) {
+//                        log.error("agv鍛戒护鍙戦�佸け璐agvId={}]锛岄敊璇俊鎭�={}", command.getAgvId(), agvResult.getExplain());
+//                        throw new CoolException("agv鍛戒护鍙戦�佸け璐agvId=" + command.getAgvId() + "]锛岄敊璇俊鎭�=" + agvResult.getExplain());
+//                    }
+//                } else {
+//                    throw new CoolException("娌℃湁绌洪棽灏忚溅");
+//                }
+//
+//            }
+
+        }
+
+
+    }
 
     @Override
     @Transactional

--
Gitblit v1.9.1