From 0ae7027b39b0954fd462af601fdc2b5ed0f5832f Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期六, 19 六月 2021 12:45:43 +0800
Subject: [PATCH] 1.pda原材料入库erp传入修改

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  210 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 199 insertions(+), 11 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 829b519..f6364ae 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1,34 +1,48 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
 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.exception.CoolException;
+import com.zy.asrs.entity.BasAgv;
 import com.zy.asrs.entity.MatCode;
 import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.param.CombParam;
+import com.zy.asrs.service.BasAgvService;
 import com.zy.asrs.service.MatCodeService;
 import com.zy.asrs.service.MobileService;
 import com.zy.asrs.service.WaitPakinService;
 import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.model.agv.AgvCommand;
+import com.zy.common.model.agv.AgvResult;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.util.Date;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
  * Created by vincent on 2020/6/28
  */
+@Slf4j
 @Service
 public class MobileServiceImpl implements MobileService {
 
+    @Value("${agv.url}")
+    private String agvUrl;
     @Autowired
     private MatCodeService matCodeService;
     @Autowired
     private WaitPakinService waitPakinService;
+    @Autowired
+    private BasAgvService basAgvService;
 
     @Override
     @Transactional
@@ -61,11 +75,48 @@
                     waitPakin.setModiUser(userId);
                     waitPakin.setModiTime(new Date());
                     VersionUtils.setWaitPakIn(waitPakin, matCode);
+                    // 濡傛灉鐢熸垚鍗曞彿涓嶄负绌烘彃鍏ョ敓浜у崟鍙�
+                    if (!Cools.isEmpty(combMat.getMnemonic())) {
+                        waitPakin.setMnemonic(combMat.getMnemonic());
+                    }
 
                     if (!waitPakinService.insert(waitPakin)) {
                         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("娌℃湁绌洪棽灏忚溅");
+                    }
+
+                }
+
             } else {
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
@@ -95,7 +146,7 @@
             // 鍏宠仈閫氱煡鍗曠粍鎵�
             for (CombParam.CombMat combMat : param.getCombMats()) {
                 WaitPakin one = waitPakinService.selectOne(new EntityWrapper<WaitPakin>()
-                        .eq("supplier", param.getBillNo())
+                        .eq("supplier", combMat.getSupplier())
                         .eq("matnr", combMat.getMatNo())
                         .isNull("zpallet"));
                 if (one == null) {
@@ -115,34 +166,32 @@
                 waitPakin.setAppeTime(new Date());
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(new Date());
+                waitPakin.setSupplier(combMat.getSupplier());
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                 }
                 // 鍑忓皯閫氱煡鍗曚笂璇ョ墿鏂欑粍鎵樻暟閲�
                 if (waitPakin.getAnfme() >= one.getAnfme()) {
                     waitPakinService.delete(new EntityWrapper<WaitPakin>()
-                            .eq("supplier", param.getBillNo())
+                            .eq("supplier", combMat.getSupplier())
                             .eq("matnr", combMat.getMatNo())
-                            .eq("warehouse", param.getWarehouse())
+                            .eq("mnemonic", param.getMnemonic())
                             .isNull("zpallet"));
                 } else {
                     Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>();
-                    if ("".equals(param.getWarehouse())) {
-                        wrapper.eq("supplier", param.getBillNo())
+                    if ("".equals(param.getMnemonic())) {
+                        wrapper.eq("supplier", combMat.getSupplier())
                                 .eq("matnr", combMat.getMatNo())
                                 .isNull("zpallet");
                     } else {
-                        wrapper.eq("supplier", param.getBillNo())
+                        wrapper.eq("supplier", combMat.getSupplier())
                                 .eq("matnr", combMat.getMatNo())
-                                .eq("warehouse", param.getWarehouse())
+                                .eq("mnemonic", param.getMnemonic())
                                 .isNull("zpallet");
                     }
                     WaitPakin pakin = new WaitPakin();
                     pakin.setAnfme(one.getAnfme() - waitPakin.getAnfme());
-                    if (!waitPakinService.update(pakin, wrapper.eq("supplier", param.getBillNo())
-                            .eq("matnr", combMat.getMatNo())
-                            .eq("warehouse", param.getWarehouse())
-                            .isNull("zpallet"))) {
+                    if (!waitPakinService.update(pakin, wrapper)) {
                         throw new CoolException("鏇存柊鏁版嵁澶辫触");
                     }
 
@@ -150,10 +199,149 @@
 
             }
 
+            // 灏忚溅鍏ュ簱鎼繍鍛戒护 ----------------------------------------------------
+            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
+    public void combBatch(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 count = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+                eq("zpallet", param.getBarcode()).eq("io_status", "N"));
+        if (count > 0) {
+            throw new CoolException("鏉$爜鏁版嵁宸插瓨鍦�");
+        }
+        // 鍏宠仈閫氱煡鍗曠粍鎵�
+        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());
+            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", combMat.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", combMat.getMnemonic())
+                            .isNull("zpallet");
+                }
+                WaitPakin pakin = new WaitPakin();
+                pakin.setAnfme(one.getAnfme() - waitPakin.getAnfme());
+                pakin.setSupplier(combMat.getSupplier());
+                pakin.setMatnr(combMat.getMatNo());
+                pakin.setMnemonic(combMat.getMnemonic());
+                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("娌℃湁绌洪棽灏忚溅");
+            }
+
+        }
+
+
+    }
 }

--
Gitblit v1.9.1