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