From d26dbc9cb768a03008f4f3ed04be7b7b6750aa29 Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期二, 22 六月 2021 13:25:16 +0800
Subject: [PATCH] 1.平仓日入库功能改造
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 205 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 198 insertions(+), 7 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 43e74c4..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,26 +166,27 @@
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();
@@ -147,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