From 180b9723dcd1c08c9a9d97859ac52bd6f5e52f77 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 03 六月 2021 16:25:42 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  137 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 126 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..722e689 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
@@ -66,6 +80,34 @@
                         throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                     }
                 }
+                // 灏忚溅鍏ュ簱鎼繍鍛戒护 ----------------------------------------------------
+                if (!Cools.isEmpty(param.getAgvSite())) {
+                    BasAgv idleAgv = basAgvService.selectIdleAgv();
+                    AgvCommand command = new AgvCommand();
+                    command.setAgvId(idleAgv.getAgvId());
+                    command.setInterCode(basAgvService.getAgvWorkNo());
+                    command.setBeginLoc(String.valueOf(param.getAgvSite()));
+                    command.setEndLoc("10");
+                    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 {
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
@@ -95,7 +137,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 +157,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("鏇存柊鏁版嵁澶辫触");
                     }
 
@@ -156,4 +196,79 @@
 
     }
 
+    @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("鏇存柊鏁版嵁澶辫触");
+                }
+
+            }
+
+        }
+
+
+    }
 }

--
Gitblit v1.9.1