From a8d50dc00026ce066403632cb96b4ee3ce6de783 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期二, 07 一月 2025 13:40:01 +0800 Subject: [PATCH] 任务开始上报放在定时器中 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 310 +++++++++++++++++++++++++++++---------------------- 1 files changed, 178 insertions(+), 132 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index e07050c..4df73f7 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -1,10 +1,23 @@ package com.zy.asrs.service.impl; +import com.alibaba.fastjson.JSON; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.core.exception.CoolException; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.*; +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.util.Date; +import java.util.HashMap; +import java.util.concurrent.TimeUnit; +@Slf4j @Service public class WorkServiceImpl implements WorkService { @@ -20,146 +33,179 @@ private WrkDetlLogService wrkDetlLogService; @Autowired private WrkDetlService wrkDetlService; + @Autowired + private ApiLogService apiLogService; + @Value("${wms.url}") + private String wmsUrl; + @Value("${wms.inboundTaskApplyPath}") + private String inboundTaskApplyPath; + @Value("${wms.movePath}") + private String movePath; + @Value("${wms.taskStatusFeedbackPath}") + private String taskStatusFeedbackPath; @Override @Transactional public void completeWrkMast(String workNo, Long userId) { -// WrkMast wrkMast = wrkMastService.selectById(workNo); -// WmsWrk wmsWrk = wmsWrkService.selectByTaskNo(wrkMast.getWmsWrkNo()); -// if (Cools.isEmpty(wrkMast, wmsWrk)) { -// throw new CoolException(workNo + "浠诲姟涓嶅瓨鍦�"); -// } -// if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { -// throw new CoolException("褰撳墠浠诲姟宸插畬鎴�"); -// } -// // 鍏ュ簱 + 搴撲綅杞Щ -// if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { -// wrkMast.setWrkSts(4L); -// // 鍑哄簱 -// } else if (wrkMast.getWrkSts() > 10) { -// wrkMast.setWrkSts(14L); -// } -// Date now = new Date(); -// wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); -// wrkMast.setCrnEndTime(now); -// wrkMast.setModiTime(now); -// wrkMast.setModiUser(userId); -// // 瀹屾垚鎿嶄綔浜哄憳璁板綍 -// wrkMast.setManuType("鎵嬪姩瀹屾垚"); -// -// wmsWrk.setStatus(WmsStatusType.COMPLETE.id); -// wmsWrk.setModiUser(userId); -// wmsWrk.setModiTime(now); -// wmsWrk.setCompleteTime(now); -// if (!wrkMastService.updateById(wrkMast) || !wmsWrkService.updateById(wmsWrk)) { -// throw new CoolException("淇敼浠诲姟澶辫触"); -// } + WrkMast wrkMast = wrkMastService.selectById(workNo); + if (Cools.isEmpty(wrkMast)) { + throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪"); + } + if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { + throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); + } + // 鍏ュ簱 + 搴撲綅杞Щ + if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) { + wrkMast.setWrkSts(4L); + // 鍑哄簱 + } else if (wrkMast.getWrkSts() > 10) { + wrkMast.setWrkSts(14L); + } + Date now = new Date(); + wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + wrkMast.setModiUser(userId); + // 瀹屾垚鎿嶄綔浜哄憳璁板綍 + wrkMast.setManuType("鎵嬪姩瀹屾垚"); + if (!wrkMastService.updateById(wrkMast)) { + throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); + } + + HashMap<String,Object> headParam = new HashMap<>(); + headParam.put("TaskNo",wrkMast.getTaskNo()); + headParam.put("Result",0);//瀹屾垚 + + try { + String response; + log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms={}", wrkMast); + + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(wmsUrl) + .setPath(taskStatusFeedbackPath) + .setJson(JSON.toJSONString(headParam)) + .build() + .doPost(); + apiLogService.save("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms" + , wmsUrl + taskStatusFeedbackPath + , null + , "127.0.0.1" + , JSON.toJSONString(headParam) + , response + , true + ); + } catch (Exception e) { + log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触={}", wrkMast); + log.error("wcs鎵嬪姩瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e); +// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + } } @Override @Transactional public void cancelWrkMast(String workNo, Long userId) { -// Date now = new Date(); -// WrkMast wrkMast = wrkMastService.selectById(workNo); -// WmsWrk wmsWrk = wmsWrkService.selectByWmsWrkNo(wrkMast.getWmsWrkNo()); -// if (Cools.isEmpty(wrkMast, wmsWrk)) { -// throw new CoolException(workNo + "浠诲姟涓嶅瓨鍦�"); -// } -// -// String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� -// String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� -// // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 -// if (wrkMast.getWrkSts() < 4) { -// locNo = wrkMast.getLocNo(); -// locSts = "O"; -// -// // 搴撲綅杞Щ -// if (wrkMast.getIoType() == 11) { -// // 搴撲綅杞Щ锛氭簮搴撲綅 -// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); -// if (Cools.isEmpty(locMast)) { -// throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); -// } -// locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"); -// locMast.setModiTime(now); -// locMast.setModiUser(userId); -// locMastService.updateById(locMast); -// } -// // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� -// } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { -// locNo = wrkMast.getSourceLocNo(); -// // 鍑哄簱 ===>> F.鍦ㄥ簱 -// if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { -// locSts = "F"; -// // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� -// } else if (wrkMast.getIoType() == 110) { -// locSts = "D"; -// // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� -// } else if (wrkMast.getIoType() == 11) { -// locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; -// // 搴撲綅杞Щ锛氱洰鏍囧簱浣� -// LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); -// if (Cools.isEmpty(locMast)) { -// throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo()); -// } -// locMast.setLocSts("O"); -// locMast.setModiTime(now); -// locMast.setModiUser(userId); -// locMastService.updateById(locMast); -// } -// } else { -// throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); -// } -// -// //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊 -// if(wrkMast.getIoType() == 1) { -// List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); -// for (WaitPakin waitPakin:waitPakins){ -// if (!Cools.isEmpty(waitPakin)) { -// waitPakin.setIoStatus("N"); -// waitPakin.setLocNo(""); -// waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() -// .eq("order_no", waitPakin.getOrderNo()) -// .eq("matnr", waitPakin.getMatnr()) -// .eq("batch", waitPakin.getBatch())); -// } -// } -// } -// -// // 鍙栨秷鎿嶄綔浜哄憳璁板綍 -// wrkMast.setManuType("鎵嬪姩鍙栨秷"); -// wrkMast.setModiUser(userId); -// wrkMast.setModiTime(now); -// if (!wrkMastService.updateById(wrkMast)) { -// throw new CoolException("鍙栨秷浠诲姟澶辫触"); -// } -// -// wmsWrk.setStatus(WmsStatusType.CANCEL.id); -// wmsWrk.setModiUser(userId); -// wmsWrk.setModiTime(now); -// wmsWrk.setCancelTime(now); -// if (!wmsWrkService.updateById(wmsWrk)) { -// throw new CoolException("鍙栨秷浠诲姟澶辫触"); -// } -// -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (!wrkMastLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); -// } -// // 鍒犻櫎宸ヤ綔涓绘。 -// boolean wrkMastRes = wrkMastService.deleteById(wrkMast); -// -// // 淇敼搴撲綅鐘舵�� -// LocMast locMast = locMastService.selectById(locNo); -// if (Cools.isEmpty(locMast)) { -// throw new CoolException("鍙栨秷浠诲姟澶辫触锛屽簱浣嶄笉瀛樺湪:"+ locNo); -// } -// locMast.setLocSts(locSts); -// locMast.setModiTime(now); -// locMast.setModiUser(userId); -// boolean locMastRes = locMastService.updateById(locMast); -// if (!wrkMastRes || !locMastRes) { -// throw new CoolException("淇濆瓨鏁版嵁澶辫触"); -// } + Date now = new Date(); + WrkMast wrkMast = wrkMastService.selectById(workNo); + + String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� + String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� + // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 + if (wrkMast.getWrkSts() < 4) { + locNo = wrkMast.getLocNo(); + locSts = "O"; + + // 搴撲綅杞Щ + if (wrkMast.getIoType() == 11) { + // 搴撲綅杞Щ锛氭簮搴撲綅 + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo()); + } + locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F"); + locMast.setModiTime(now); + locMast.setModiUser(userId); + locMastService.updateById(locMast); + } + // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� + } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { + locNo = wrkMast.getSourceLocNo(); + // 鍑哄簱 ===>> F.鍦ㄥ簱 + if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + locSts = "F"; + // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� + } else if (wrkMast.getIoType() == 110) { + locSts = "D"; + // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� + } else if (wrkMast.getIoType() == 11) { + locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F"; + // 搴撲綅杞Щ锛氱洰鏍囧簱浣� + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo()); + } + locMast.setLocSts("O"); + locMast.setModiTime(now); + locMast.setModiUser(userId); + locMastService.updateById(locMast); + } + } else { + throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); + } + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 + wrkMast.setManuType("鎵嬪姩鍙栨秷"); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!wrkMastService.updateById(wrkMast)) { + throw new CoolException("鍙栨秷浠诲姟澶辫触"); + } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!wrkMastLogService.save(wrkMast.getWrkNo())) { + throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + } + + // 鍒犻櫎宸ヤ綔涓绘。 + boolean wrkMastRes = wrkMastService.deleteById(wrkMast); + + // 淇敼搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(locNo); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷浠诲姟澶辫触锛屽簱浣嶄笉瀛樺湪:" + locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + boolean locMastRes = locMastService.updateById(locMast); + if (!wrkMastRes || !locMastRes) { + throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + } + HashMap<String,Object> headParam = new HashMap<>(); + headParam.put("TaskNo",wrkMast.getTaskNo()); + headParam.put("Result",1);//鍙栨秷 + + try { + String response; + log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms={}", wrkMast); + + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(wmsUrl) + .setPath(taskStatusFeedbackPath) + .setJson(JSON.toJSONString(headParam)) + .build() + .doPost(); + apiLogService.save("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms" + , wmsUrl + taskStatusFeedbackPath + , null + , "127.0.0.1" + , JSON.toJSONString(headParam) + , response + , true + ); + } catch (Exception e) { + log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触={}", wrkMast); + log.error("wcs鎵嬪姩鍙栨秷浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e); +// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + } } } -- Gitblit v1.9.1