From e90dba0edc93be26e1509cfb2ec1d0681eb86e48 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 27 八月 2025 08:37:04 +0800
Subject: [PATCH] 合并出库添加日志
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 1044 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 923 insertions(+), 121 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index ef79460..114c56d 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -1,186 +1,716 @@
package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
-import com.zy.asrs.entity.AgvLocDetl;
-import com.zy.asrs.entity.AgvWaitPakin;
-import com.zy.asrs.entity.AgvWrkDetl;
-import com.zy.asrs.entity.AgvWrkMast;
+import com.core.common.SnowflakeIdWorker;
+import com.core.exception.CoolException;
+import com.zy.asrs.constant.AsrsConstants;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.MesBuyPakinReportParam;
+import com.zy.asrs.entity.param.MesOrderReportParam;
+import com.zy.asrs.entity.param.MesPakinReportParam;
+import com.zy.asrs.entity.param.MesPakoutReportParam;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.service.AgvCommonService;
+import lombok.Synchronized;
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.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
@Slf4j
@Service
public class AgvWrkMastHandler extends AbstractHandler<String> {
+ //鍏ュ簱绫诲瀷鏁扮粍
+ private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>() {{
+ add(1);
+ }};
+ //private static final int[] IN_TYPE_ARRAY = {1};
+ //鍑哄簱绫诲瀷鏁扮粍
+ private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>() {{
+// add(101);
+ }};
+ //private static final int[] OUT_TYPE_ARRAY = {101};
+ //绉诲簱绫诲瀷鏁扮粍
+ private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>() {{
+ add(11);
+ add(12);
+ add(53);
+ add(101);
+ add(103);
+ add(108);
+ add(111);
+ add(112);
+
+
+ }};
+ //private static final int[] MOVE_TYPE_ARRAY = {11,12};
+
+ @Value("${agvBasDev.maxWorkNum}")
+ private int maxWrokNum;
+ @Value("${mes.report}")
+ private Boolean flag;
+ @Value("${mes.url}")
+ private String url;
+ @Value("${mes.getTokenUrl}")
+ private String getTokenUrl;
+ @Value("${mes.orderReportPath}")
+ private String orderReportPath;
+ @Value("${mes.pakinReportPath}")
+ private String pakinReportPath;
+ @Value("${mes.buyPakinReportPath}")
+ private String buyPakinReportPath;
+ @Value("${mes.pakoutReportPath}")
+ private String pakoutReportPath;
+ @Value("${mes.getTokenPath}")
+ private String getTokenPath;
+ @Value("${mes.appKey}")
+ private String appKey;
+ @Value("${mes.appSecret}")
+ private String appSecret;
+
+
@Autowired
- AgvWrkMastService agvWrkMastService;
+ private AgvWrkMastService agvWrkMastService;
@Autowired
- AgvLocMastService agvLocMastService;
+ private AgvLocMastService agvLocMastService;
@Autowired
- AgvLocDetlService agvLocDetlService;
+ private AgvLocDetlService agvLocDetlService;
@Autowired
- AgvWrkMastLogService agvWrkMastLogService;
+ private AgvWrkMastLogService agvWrkMastLogService;
@Autowired
- AgvWrkDetlService agvWrkDetlService;
+ private AgvWrkDetlService agvWrkDetlService;
@Autowired
- AgvWrkDetlLogService agvWrkDetlLogService;
+ private AgvWrkDetlLogService agvWrkDetlLogService;
@Autowired
- AgvWaitPakinService agvWaitPakinService;
+ private AgvWaitPakinService agvWaitPakinService;
@Autowired
- AgvWaitPakinLogService agvWaitPakinLogService;
+ private AgvWaitPakinLogService agvWaitPakinLogService;
@Autowired
- OrderService orderService;
+ private OrderService orderService;
+ @Autowired
+ private AgvBasDevpService agvBasDevpService;
+ @Autowired
+ private AgvWorkService agvWorkService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private FlowLogService flowLogService;
+
+ @Autowired
+ private ReportDataService reportDataService;
+
+ @Autowired
+ private AgvCommonService agvCommonService;
+
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
- int wrkNo = agvWrkMast.getWrkNo();
- String barcode = agvWrkMast.getBarcode();
- String orderNo = getOrderNoByWrkNo(wrkNo);
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
- //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
- agvWrkMast.setWrkSts(207L);
- agvWrkMastService.updateById(agvWrkMast);
- if(agvWrkMast.getIoType() == 10){
+ long flowId = snowflakeIdWorker.nextId();
+ Date now = new Date();
+ try {
+ int wrkNo = agvWrkMast.getWrkNo();
+ String barcode = agvWrkMast.getBarcode();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ String agvBasDevp = "";
+ if (agvWrkMast.getIoType() > 100) {
+ agvBasDevp = agvWrkMast.getLocNo();
+ } else {
+ agvBasDevp = agvWrkMast.getSourceLocNo();
+ }
+
+
+ Integer pltType = agvWrkMast.getPltType();
+ if (Cools.isEmpty(pltType)) {
+ AgvLocMast agvLocMast;
+ if (!Cools.isEmpty(agvWrkMast.getLocNo())) {
+ agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
+ if (agvLocMast != null) {
+ pltType = agvLocMast.getPltType();
+ }
+ }
+ if (!Cools.isEmpty(agvWrkMast.getSourceLocNo())) {
+ agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo());
+ if (agvLocMast != null) {
+ pltType = agvLocMast.getPltType();
+ }
+ }
+ if (pltType != null) {
+ agvWrkMast.setPltType(pltType);
+ }
+ //log.info("宸ヤ綔鍙�--{},浠撳簱缂栫爜锛歿}", agvWrkMast.getWrkNo(), agvWrkMast.getPltType());
+ }
+ agvWrkMast.setModiTime(new Date());
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMastService.updateById(agvWrkMast);
// 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D");
- }else{
- //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
- }
- //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
- agvWrkMastLogService.save(agvWrkMast);
- //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
- agvWrkDetlLogService.save(wrkNo);
- //绫诲瀷涓哄叆搴撴椂
- if(agvWrkMast.getIoType() == 1){
- //鏇存柊鐩爣搴撲綅鏄庣粏
- log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
- agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
- //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
- boolean save = agvWaitPakinLogService.save(barcode);
- //鍒犻櫎鍏ュ簱閫氱煡妗�
- log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
- agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
- }
- //绫诲瀷涓哄簱浣嶇Щ杞椂
- if(agvWrkMast.getIoType() == 11){
- //鏇存柊搴撳瓨鏄庣粏
- agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
- //淇敼婧愬簱浣嶇姸鎬佷负O
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
- }
- if(!isJSON(orderNo)){
- //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo);
- }else{
- List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
- maps.forEach(map -> {
- String o = map.get("orderNo").toString();
- orderService.checkComplete(o);
- });
- }
+ String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F";
- //鍒犻櫎AGV宸ヤ綔妗�
- agvWrkMastService.deleteById(wrkNo);
- //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+ if (agvWrkMast.getIoType() != 111) {
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(wrkNo);
+ }
+ switch (agvWrkMast.getIoType()) {
+ case 1:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo());
+ //鏇存柊鐩爣搴撲綅鏄庣粏
+ log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
+ agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(), wrkNo);
+ //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+ boolean save = agvWaitPakinLogService.save(barcode);
+ //鍒犻櫎鍏ュ簱閫氱煡妗�
+ log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
+ agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code", barcode));
+ break;
+ case 10:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo());
+ if (byDevNo != null) {
+ if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) {
+
+ } else {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+ }
+ }
+ //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
+ break;
+ case 11:
+ case 12:
+ AgvLocDetl agvLocDetl1 = agvLocDetlService.selectByLocNo(agvWrkMast.getSourceLocNo());
+ if (agvLocDetl1 == null) {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ } else {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ }
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),null);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null, "");
+ break;
+ case 53:
+ //淇敼宸ヤ綔鍏氭槑缁�
+ //淇敼搴撳瓨淇℃伅
+ List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ agvWrkDetlList.forEach(agvWrkDetl -> {
+ AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+ if (!Cools.isEmpty(agvLocDetl)) {
+ double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+// OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode());
+// FlowLog flowLog = new FlowLog();
+// flowLog.setFid(String.valueOf(flowId));
+// flowLog.setSpare2(String.valueOf(agvWrkMast.getWrkNo()));
+// flowLog.setLocNo(agvWrkMast.getLocNo());
+// flowLog.setSpare1(agvWrkDetl.getSuppCode());
+// flowLog.setOpType(53L);
+// flowLog.setOrderNo(agvWrkDetl.getOrderNo());
+// flowLog.setThreeCode(agvWrkDetl.getThreeCode());
+// flowLog.setMatnr(agvWrkDetl.getMatnr());
+// flowLog.setMaktx(agvWrkDetl.getMaktx());
+//
+// flowLog.setOrderPrevious(orderDetl.getAnfme());
+// flowLog.setOrderCurrent(orderDetl.getAnfme());
+// flowLog.setOrderChanged(0.0);
+//
+// flowLog.setQtyPrevious(orderDetl.getQty());
+// flowLog.setQtyCurrent(updateAnfme);
+// flowLog.setQtyChanged(agvWrkDetl.getAnfme());
+//
+// flowLog.setLocPrevious(agvLocDetl.getAnfme());
+// flowLog.setLocCurrent(updateAnfme);
+// flowLog.setLocChanged(agvWrkDetl.getAnfme());
+//
+// flowLog.setAppeTime(now);
+// if (!flowLogService.insert(flowLog)) {
+// throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+// }
+ log.info("53娣诲姞搴撳瓨鏃ュ織:{},{}", updateAnfme, JSON.toJSON(agvLocDetl));
+ agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
+ }
+ //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+
+ });
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo());
+ if (byDevNo != null) {
+ if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) {
+
+ } else {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+ }
+ }
+ break;
+ case 57:
+ // 鏇存柊搴撳瓨鏄庣粏
+ List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ wrkDetlList.forEach(agvWrkDetl -> {
+ AgvLocDetl agvLocDetl = new AgvLocDetl();
+ agvLocDetl.setLocNo(agvWrkMast.getLocNo());
+ agvLocDetl.sync(agvWrkDetl);
+ agvLocDetl.setModiTime(now);
+ agvLocDetl.setAppeTime(now);
+ log.info("57娣诲姞搴撳瓨鏃ュ織:{}", JSON.toJSON(agvLocDetl));
+ if (!agvLocDetlService.insert(agvLocDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ // 鏇存柊绔欑偣 + 搴撲綅鐘舵�� 婧愬簱浣嶆槸绔欑偣
+ byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo());
+ if (byDevNo != null) {
+ if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) {
+
+ } else {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+ }
+ }
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo());
+ break;
+ case 58:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+ break;
+ case 108:
+ case 114:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+// //鏇存柊搴撳瓨鏄庣粏
+// agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
+// //淇敼婧愬簱浣嶇姸鎬佷负O
+// agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+ break;
+ case 109:
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ } else {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ }
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ //agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+ }
+ break;
+ case 111:
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ } else {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ }
+
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
+ }
+ break;
+ case 112:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ AgvLocDetl locDetl = new AgvLocDetl();
+ locDetl.setLocNo(agvWrkMast.getLocNo());
+ locDetl.sync(agvWrkDetl);
+ locDetl.setModiTime(new Date());
+ log.info("112娣诲姞搴撳瓨鏃ュ織:{}", JSON.toJSON(locDetl));
+ agvLocDetlService.insert(locDetl);
+ }
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+ }
+ break;
+ case 113:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
+ }
+ break;
+ case 121:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),agvWrkMast.getAppeUser());
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+ break;
+
+ default:
+ return null;
+ }
+ if (agvWrkMast.getIoType() != 111) {
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+ }
+// else {
+// agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+// if (!agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+// agvWrkMast.setSourceLocNo("");
+// }
+// agvWrkMastService.updateById(agvWrkMast);
+// }
+
+ if (!isJSON(orderNo)) {
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo, pltType);
+ } else {
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ Integer finalPltType = pltType;
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o, finalPltType);
+ });
+ }
+
+ //涓婃姤mes
+// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+// if(!Cools.isEmpty(param)){
+// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+// }
+
+ //return SUCCESS;
+ } catch (Exception e) {
+ log.error("" + e.getMessage());
+ }
+ //TODO
+ //鏆傛椂鍔犱笂trycatch
+ reportMes(agvWrkMast, agvWrkDetlListOld);
return SUCCESS;
}
@Transactional
public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
- int wrkNo = agvWrkMast.getWrkNo();
- String orderNo = getOrderNoByWrkNo(wrkNo);
- //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
- agvWrkMast.setWrkSts(207L);
- agvWrkMastService.updateById(agvWrkMast);
- //淇敼婧愬簱浣嶇姸鎬佷负O
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
- if(agvWrkMast.getIoType() == 101){
- //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
- agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
- }
- //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
- agvWrkMastLogService.save(agvWrkMast);
- //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
- agvWrkDetlLogService.save(wrkNo);
- //鍒犻櫎AGV宸ヤ綔妗�
- agvWrkMastService.deleteById(wrkNo);
- //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
- if(!isJSON(orderNo)){
- //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo);
- }else{
- List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
- maps.forEach(map -> {
- String o = map.get("orderNo").toString();
- orderService.checkComplete(o);
- });
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
+
+ try {
+
+ Date now = new Date();
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ if (agvWrkMast.getIoType() == 110) {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
+ }
+ if (agvWrkMast.getIoType() == 101) {
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
+ //鐢熸垚绌烘澘鍏ュ簱浠诲姟
+ Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
+ try {
+// agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
+ AgvWrkMast wrkMast = new AgvWrkMast();
+ //宸ヤ綔鐘舵��
+ wrkMast.setWrkSts(201L);
+ //鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoType(10);
+ wrkMast.setIoTime(now);
+ //浼樺厛绾�
+ wrkMast.setIoPri(300.0);
+
+ //婧愮珯鐐�
+ wrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+
+ //鐩爣绔欑偣
+ if (agvWrkMast.getLocNo().startsWith("QO") && agvWrkMast.getLocNo().endsWith("F4") && Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)) == 30) {
+ if (!agvWrkMast.getSourceLocNo().endsWith("02F1")) {
+ AgvLocMast locByFloor = null;
+ try {
+ locByFloor = agvCommonService.getLocByLocRule(3, 1, AsrsConstants.ERCHANG, true);
+ } catch (Exception e) {
+
+ }
+ if (locByFloor != null && locByFloor.getLocNo().endsWith("02F1")) {
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo());
+ agvLocMast.setLocSts("O");
+ agvLocMast.setModiTime(now);
+ agvLocMast.setBarcode("");
+ agvLocMastService.updateById(agvLocMast);
+ wrkMast.setLocNo(locByFloor.getLocNo());
+ } else {
+ wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ }
+ } else {
+ wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ }
+ } else {
+ wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ }
+ //wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+
+ //璐ф灦缂栫爜
+ wrkMast.setBarcode(agvWrkMast.getBarcode());
+ //璐ф灦绫诲瀷
+ wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
+
+ wrkMast.setAppeUser(agvWrkMast.getAppeUser());
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(9527L);
+ wrkMast.setModiTime(now);
+ wrkMast.setPltType(agvWrkMast.getPltType());
+ wrkMast.setLogErrMemo("completedCarryWrk");
+ if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ AgvLocMast agvLocMast = agvLocMastService.selectById(wrkMast.getLocNo());
+ agvLocMast.setLocSts("S");
+ agvLocMast.setModiTime(now);
+ agvLocMastService.updateById(agvLocMast);
+
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo());
+ agvBasDevp.setLocSts("R");
+ agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
+ agvBasDevpService.updateById(agvBasDevp);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error(e.getMessage());
+ }
+ }
+
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+ if (!isJSON(orderNo)) {
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+ } else {
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o, agvWrkMast.getPltType());
+ });
+ }
+
+ //涓婃姤mes
+// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+// if(!Cools.isEmpty(param)){
+// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+// }
+
+ } catch (Exception e) {
+ log.error("" + e.getMessage());
}
+ reportMes(agvWrkMast, agvWrkDetlListOld);
+ return SUCCESS;
+ }
+
+
+ @Transactional
+ public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
+ //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+ List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
+ try {
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ String agvBasDevp = "";
+ if (agvWrkMast.getIoType() > 100) {
+ agvBasDevp = agvWrkMast.getLocNo();
+ } else {
+ agvBasDevp = agvWrkMast.getSourceLocNo();
+ }
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
+ if (agvWrkMast.getIoType() == 101) {
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
+ }
+
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+ if (!isJSON(orderNo)) {
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+ } else {
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o, agvWrkMast.getPltType());
+ });
+ }
+ //涓婃姤mes
+// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+// if(!Cools.isEmpty(param)){
+// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+// }
+// reportMes(agvWrkMast,agvWrkDetlListOld);
+// return SUCCESS;
+ } catch (Exception e) {
+ log.error("" + e.getMessage());
+ }
+ //TODO 寮犺秴
+ reportMes(agvWrkMast, agvWrkDetlListOld);
return SUCCESS;
}
@Transactional
- public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+ @Synchronized
+ public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
- int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
+ try {
+ //涓嬪彂浠诲姟
+ int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
+ if (startWrkCode != 0) {
+ throw new CoolException("浠诲姟涓嬪彂澶辫触");
+ }
- int code = agvWrkMastService.containerMove(agvWrkMastList);
-
- if(code == 0){
- agvWrkMastList.forEach(agvWrkMast -> {
- //202.RCS鍙栬揣涓�
- agvWrkMast.setWrkSts(202L);
- agvWrkMastService.updateById(agvWrkMast);
- if(agvWrkMast.getIoType() == 1){
- //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
- agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
- }
-
- });
- //agvWrkMastService.updateBatchById(agvWrkMastList);
-
+ //agvWrkMast.setWrkSts(202L);
+ //agvWrkMast.setModiTime(new Date());
+ //boolean b = agvWrkMastService.updateById(agvWrkMast);
+ boolean b = agvWrkMastService.updateWrkStsByWrkNo(Math.abs(agvWrkMast.getWrkNo()), 202L);
+ if (!b) {
+ log.info("鏇存柊浠诲姟鐘舵�佸け璐�,{}", agvWrkMast.getWrkNo());
+ throw new CoolException("鏇存柊浠诲姟鐘舵�佸け璐�");
+ } else {
+ log.info("鏇存柊浠诲姟鐘舵�佹垚鍔�,{}", agvWrkMast.getWrkNo());
+ }
+ if (agvWrkMast.getIoType() == 1) {
+ //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+ agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y");
+ }
return SUCCESS;
+ } catch (Exception e) {
+ //TODO
+ //log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y,{}", e.getMessage());
}
-
return FAIL;
}
@Transactional
- public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
- int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
- if(code == 0){
- agvWrkMastList.forEach(agvWrkMast -> {
- //202.RCS鍙栬揣涓�
- agvWrkMast.setWrkSts(202L);
- agvWrkMastService.updateById(agvWrkMast);
- });
- //agvWrkMastService.updateBatchById(agvWrkMastList);
+ @Synchronized
+ public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
+ //涓嬪彂浠诲姟
+ try {
+ int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast);
+ if (startWrkCode != 0) {
+ throw new CoolException("浠诲姟涓嬪彂澶辫触");
+ }
return SUCCESS;
+ } catch (Exception e) {
+ log.error("浠诲姟涓嬪彂澶辫触" + e.getMessage());
}
-
return FAIL;
+
}
- private String getOrderNoByWrkNo(int wrkNo){
+// @Transactional
+// public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException {
+// //log.info(agvWrkMastList.toString());
+// //浠诲姟杩囨护锛岃繃婊ゆ帀宸插瓨鍦ㄧ浉鍚岀洰鏍囧簱浣嶇殑宸ヤ綔妗�
+// //agvWrkMastList = filter(agvWrkMastList);
+// int code = agvWrkMastService.startWrk(agvWrkMast);
+// //log.info(agvWrkMastList.toString());
+// if (Cools.isEmpty(agvWrkMastList)){
+// return SUCCESS;
+// }
+// if(code == 0){
+// agvWrkMastList.forEach(agvWrkMast -> {
+// //202.RCS鍙栬揣涓�
+// agvWrkMast.setWrkSts(202L);
+// agvWrkMastService.updateById(agvWrkMast);
+// });
+// //agvWrkMastService.updateBatchById(agvWrkMastList);
+//
+// return SUCCESS;
+// }
+//
+// return FAIL;
+// }
+
+ @Synchronized
+ @Transactional
+ public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+
+ agvWrkMastList.forEach(agvWrkMast -> {
+ //鏌ヨ璇ョ珯鐐规墍鏈夋殏瀛樹綅鍦ㄥ伐浣滄。涓嚭鐜扮殑娆℃暟
+ List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
+ //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝
+ Map<String, Object> devNoMap = devNoMaps.get(0);
+ if ((int) devNoMap.get("num") < maxWrokNum) {
+ agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
+ }
+ });
+
+ return SUCCESS;
+ }
+
+ @Synchronized
+ @Transactional
+ public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
+
+ agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(), 0, 9527L);
+
+ return SUCCESS;
+ }
+
+ private String getOrderNoByWrkNo(int wrkNo) {
AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
- if(Cools.isEmpty(agvWrkDetl)){
+ if (Cools.isEmpty(agvWrkDetl)) {
return null;
}
return agvWrkDetl.getOrderNo();
@@ -200,4 +730,276 @@
}
}
}
+
+ private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) {
+ return agvWrkMastList.stream().filter(agvWrkMast -> {
+ AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo()));
+ if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) {
+ System.out.println("source_loc_no > 1");
+ return false;
+ }
+ log.info(agvWrkMast.toString());
+ int num = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvWrkMast.getLocNo()));
+ return num <= maxWrokNum;
+ }).collect(Collectors.toList());
+ }
+
+ /*
+ 鐢熸垚宸ヤ綔妗�
+ */
+ private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) {
+ AgvWrkMast wrkMast = new AgvWrkMast();
+ //宸ヤ綔鐘舵��
+ wrkMast.setWrkSts(wrkSts);
+ //鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoType(ioType);
+ wrkMast.setIoTime(now);
+ //浼樺厛绾�
+ wrkMast.setIoPri(300.0);
+ //婧愮珯鐐�
+ wrkMast.setSourceLocNo(sourceLocNo);
+ //鐩爣绔欑偣
+ wrkMast.setLocNo(locNo);
+ //璐ф灦缂栫爜
+ wrkMast.setBarcode(barcode);
+ //璐ф灦绫诲瀷
+ wrkMast.setWhsType(containerType);
+ // 鐩爣妤煎眰
+ wrkMast.setCrnNo(floor);
+
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+
+ if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false));
+
+ return wrkMast;
+ }
+
+ private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+
+ if (Cools.isEmpty(agvWrkDetls)) {
+ return;
+ }
+ List<AgvWrkDetl> data = new ArrayList<>();
+ //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮�
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ if (agvWrkDetl.getMatnr().compareTo("39") <= 0) {
+ data.add(agvWrkDetl);
+ }
+ }
+ if (!data.isEmpty()) {
+ if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) {
+ reportMesPakinOrder(agvWrkMast, data);
+ }
+// if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
+// reportMesPakoutOrder(agvWrkMast, data);
+// }
+// if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
+// generateMesParam(agvWrkMast, data);
+// }
+ }
+
+ }
+
+
+ private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ //鍒ゆ柇鏄惁閲囪喘鍏ュ簱
+
+ String orderNo = agvWrkDetl.getOrderNo();
+ Order order = orderService.selectByNo(orderNo);
+
+ DocType docType = docTypeService.selectById(order.getDocType());
+
+ if (docType.getDocName().contains("閲囪喘")) {
+
+ OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(orderNo, agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+
+ MesBuyPakinReportParam mesBuyPakinReportParam = new MesBuyPakinReportParam();
+ List<MesBuyPakinReportParam.Iteam> iteams = new ArrayList<>();
+ MesBuyPakinReportParam.Iteam iteam = new MesBuyPakinReportParam.Iteam();
+ iteam.setMaterialCode(agvWrkDetl.getMatnr());
+ iteam.setBatchNo(agvWrkDetl.getBatch());
+ iteam.setAmount(agvWrkDetl.getAnfme());
+ iteam.setStorageLocationCode(agvWrkMast.getLocNo());
+ iteam.setLineNo(orderDetl.getItemNum());
+ iteam.setSupplierCode(order.getSalesman());
+ iteam.setUnit(agvWrkDetl.getUnit());
+ iteam.setRemark(agvWrkDetl.getThreeCode());
+ iteams.add(iteam);
+
+ mesBuyPakinReportParam.setCode(orderNo);
+ mesBuyPakinReportParam.setIteam(iteams);
+
+ doHttpRequest(mesBuyPakinReportParam, getMesTokenInfo(), "涓婃姤mes閲囪喘鍏ュ簱淇℃伅", url, buyPakinReportPath, null, "127.0.0.1");
+
+ } else {
+ MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
+ //mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
+ mesPakinReportParam.setBizType("0");
+ mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(null, agvWrkDetl.getMatnr(), agvWrkMast.getLocNo()));
+ mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null));
+
+ doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "涓婃姤mes鍏ュ簱淇℃伅", url, pakinReportPath, null, "127.0.0.1");
+ }
+ }
+
+ }
+
+ private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam();
+ mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo());
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
+ mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString());
+ mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr());
+ mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim()));
+ mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null));
+
+ doHttpRequest(mesPakoutReportParam, getMesTokenInfo(), "涓婃姤mes鍑哄簱淇℃伅", url, pakoutReportPath, null, "127.0.0.1");
+
+ }
+ }
+
+ private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+
+ if (agvWrkMast.getIoType() == 53) {
+ String locNo = agvWrkMast.getLocNo();
+ agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ agvWrkMast.setSourceLocNo(locNo);
+ }
+
+ MesOrderReportParam param = new MesOrderReportParam();
+
+ List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>();
+
+ //MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customFields = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField();
+
+ MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO();
+ //recordCustomFieldBaseCO.setCustomFields(customFields);
+ param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO);
+
+ //娣诲姞transferOrderItem灞炴��
+ MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem();
+ transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo());
+ //璋冩嫧
+ if (agvWrkMast.getLocNo().contains("YZ")) {
+ transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo());
+ } else {
+ //鍑哄簱榛樿浠撲綅
+ String floor = agvWrkMast.getLocNo().split("F")[1];
+ transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor));
+ }
+ transferOrderItems.add(transferOrderItem);
+
+
+ param.setTransferOrderItems(transferOrderItems);
+
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>();
+ MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail();
+ //娣诲姞amount灞炴��
+ MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null);
+ inventoryDetail.setAmount(amount);
+ //娣诲姞bizKey灞炴��
+ MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim());
+ inventoryDetail.setBizKey(bizKey);
+ //娣诲姞inventoryDetail灞炴��
+ inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo());
+ inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr());
+ inventoryDetail.setQcStatus(1);
+ inventoryDetail.setStorageStatus(1);
+ inventoryDetails.add(inventoryDetail);
+ transferOrderItem.setInventoryDetails(inventoryDetails);
+ //娣诲姞閿�鍞鍗曞彿
+ MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c", agvWrkDetl.getThreeCode().trim());
+ //customFields.add(customField);
+ recordCustomFieldBaseCO.setCustomFields(customField);
+ doHttpRequest(param, getMesTokenInfo(), "涓婃姤mes璋冩嫧淇℃伅", url, orderReportPath, null, "127.0.0.1");
+ }
+
+ }
+
+ //鑾峰彇mes token淇℃伅
+ private Map<String, Object> getMesTokenInfo() {
+// Map<String, String> param = new HashMap<>();
+// param.put("appKey", appKey);
+// param.put("appSecret", appSecret);
+//
+// JSONObject jsonObject = doHttpRequest(param, null, "鑾峰彇MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1");
+//
+// Map<String, Object> headParam = new HashMap<>();
+// headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString());
+
+ // return headParam;
+ return null;
+ }
+
+ //鏍规嵁妤煎眰榛樿鍑哄簱浠撲綅
+ private String getTargetLocationByFloor(String f) {
+ int floor = Integer.parseInt(f);
+ if (floor == 1) {
+ return "WH-000";
+ }
+
+ if (floor == 2) {
+ return "WH-000";
+ }
+
+ if (floor == 3) {
+ return "WH-000";
+ }
+
+ return null;
+ }
+
+ private void doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) {
+ //淇濊瘉涓婃姤琛�
+ ReportData reportData = new ReportData();
+ reportData.setReportJson(JSONObject.toJSONString(requestParam));
+ reportData.setMemo(namespace);
+ reportData.setCreateTime(new Date());
+ reportData.setReportType("MES");
+ reportDataService.insert(reportData);
+
+
+// String response = "";
+// boolean success = false;
+//
+// try {
+// response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost();
+// JSONObject jsonObject = JSON.parseObject(response);
+//
+// if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) {
+// log.info("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭細" + jsonObject);
+// //TODO 寮犺秴
+// throw new CoolException("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭�:" + jsonObject);
+// }
+// success = true;
+// return jsonObject;
+//
+//// String succeed = jsonObject.get("succeed").toString();
+////
+//// int code = Cools.eq("0",succeed) ? 0 : 1;
+//// if(code != 200){
+//// throw new CoolException(jsonObject.get("dsc").toString());
+//// }
+//// success = true;
+//
+// } catch (Exception e) {
+// log.error(e.getMessage());
+// throw new CoolException(e.getMessage());
+// } finally {
+// apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success);
+// }
+
+ }
+
}
--
Gitblit v1.9.1