From f97251d71f83423d561c582ec5576a7451895af6 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 23 九月 2025 17:16:19 +0800 Subject: [PATCH] 任务档定时任务修改 --- src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 277 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java index 68b9ca5..a983123 100644 --- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java @@ -1,12 +1,287 @@ package com.zy.asrs.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.core.exception.CoolException; +import com.zy.asrs.entity.*; import com.zy.asrs.mapper.TaskMapper; -import com.zy.asrs.entity.Task; -import com.zy.asrs.service.TaskService; +import com.zy.asrs.service.*; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.utils.OrderInAndOutUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; @Service("taskService") public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService { + @Autowired + private TaskLogService taskLogService; + @Autowired + private LocCacheService locCacheService; + @Autowired + private WaitPakinService waitPakinService; + @Autowired + private TaskDetlService taskDetlService; + @Autowired + private TaskService taskService; + @Autowired + private TaskDetlLogService taskDetlLogService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void completeWrkMast(String workNo, Long userId) { + Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", 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 (!this.updateById(wrkMast)) { + throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); + } + } + + @Override + @Transactional + public void pickWrkMast(String workNo, Long userId) { + Task wrkMast = this.selectById(workNo); + if (Cools.isEmpty(wrkMast)) { + throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪"); + } + // 鍏ュ嚭搴撶被鍨嬪垽鏂� + if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) { + throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�"); + } + // 宸ヤ綔鐘舵�佸垽鏂� + if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) { + throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�"); + } + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 +// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +// } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!taskLogService.save(wrkMast.getWrkNo())) { + throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); + } + // 鑾峰彇鐩爣绔� +// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() +// .eq("type_no", wrkMast.getIoType() - 50) +// .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 +// .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 +// StaDesc staDesc = staDescService.selectOne(wrapper); +// if (Cools.isEmpty(staDesc)) { +// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); +// } + Date now = new Date(); + // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) +// Integer staNo = staDesc.getCrnStn(); + // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� + wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 +// wrkMast.setStaNo(staNo + ""); // 鐩爣绔� + wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� + wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� + wrkMast.setModiTime(now); + wrkMast.setModiUser(userId); + if (!this.updateById(wrkMast)) { + throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } + // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� + LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); + locMast.setLocSts("Q"); + locMast.setModiTime(now); + locMast.setModiUser(userId); + if (!locCacheService.updateById(locMast)) { + throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); + } + } + + @Override + public List<Task> selectToBeCompleteData() { + return this.baseMapper.selectToBeCompleteData(); + } + + + @Override + @Transactional + public void cancelWrkMast(String workNo, Long userId) { + Date now = new Date(); + Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo)); + if (Cools.isEmpty(wrkMast)) { + throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪"); + } + String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� + String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� + // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 + if (wrkMast.getWrkSts() < 4) { + locNo = wrkMast.getLocNo(); + locSts = "O"; + + // 搴撲綅杞Щ + if (wrkMast.getIoType() == 11) { + // 搴撲綅杞Щ锛氭簮搴撲綅 + LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", 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); + locCacheService.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"; + // 搴撲綅杞Щ锛氱洰鏍囧簱浣� + LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo()); + } + locMast.setLocSts("O"); + locMast.setModiTime(now); + locMast.setModiUser(userId); + locCacheService.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("zpallet", waitPakin.getZpallet()) + .eq("matnr", waitPakin.getMatnr()) + .eq("batch", waitPakin.getBatch())); + } + } + } + + //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺 + if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) { + List<TaskDetl> wrkDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo())); + for (TaskDetl wrkDetl : wrkDetls) { + if (!Cools.isEmpty(wrkDetl.getOrderNo())) { +// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { +// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); +// } + OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), + wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), + wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme()); + + //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼 + boolean flag = true; +// List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo())); + Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo()); + List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId()); + for (OrderDetl orderDetl : orderDetls) { + if (orderDetl.getWorkQty() > 0) { + flag = false; + } + } + if (flag) { +// Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo())); + if (!Cools.isEmpty(order) && order.getSettle() == 2) { + order.setSettle(1L); + order.setUpdateBy(userId); + order.setUpdateTime(now); + } +// if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){ +// throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�"); +// } + OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId); + } + } + } + + } + +// // 璁㈠崟鍏宠仈 +// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); +// for (WrkDetl wrkDetl : wrkDetls) { +// if (!Cools.isEmpty(wrkDetl.getOrderNo())) { +// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { +// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); +// } +// // 鐢熸垚鏂扮殑鍑哄簱浣滀笟 +//// stockOutRe(wrkMast, wrkDetls); +// } +// } + + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 + wrkMast.setManuType("鎵嬪姩鍙栨秷"); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + if (!taskService.updateById(wrkMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); + } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!taskLogService.save(wrkMast.getWrkNo())) { + throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + boolean wrkMastRes = taskService.deleteById(wrkMast); + + if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 + if (!taskDetlLogService.save(wrkMast.getWrkNo())) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔妗f槑缁� + boolean wrkDetlRes = taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo)); + } + + // 淇敼搴撲綅鐘舵�� + LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo)); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + boolean locMastRes = locCacheService.updateById(locMast); + if (!wrkMastRes || !locMastRes) { + throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + } + } + } -- Gitblit v1.9.1