From 3614fc3249b3de228000234d384e07b97c0079ec Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期三, 11 十月 2023 16:48:03 +0800 Subject: [PATCH] 单据自动完结 --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 162 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index bbd57fe..cf82a7a 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; +import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.EmptyPlateOutParam; @@ -24,6 +25,7 @@ import java.util.Iterator; import java.util.List; import java.util.UUID; +import java.util.concurrent.TimeUnit; /** * Created by vincent on 2020/6/11 @@ -59,6 +61,10 @@ private OrderDetlService orderDetlService; @Autowired private AdjDetlService adjDetlService; + @Autowired + private AgvWrkMastLogService agvWrkMastLogService; + @Autowired + private AgvWrkDetlLogService agvWrkDetlLogService; /* @@ -434,6 +440,162 @@ } } + @Override + @Transactional + public void completeWrkMast(String workNo, Long userId) { + AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo); + if (Cools.isEmpty(wrkMast)){ + throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); + } + if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) { + throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); + } + // 鍏ュ簱 + 搴撲綅杞Щ + if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { + wrkMast.setWrkSts(9L); + // 鍑哄簱 + } else if (wrkMast.getWrkSts() > 20) { + wrkMast.setWrkSts(29L); + } + 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 (!agvWrkMastService.updateById(wrkMast)) { + throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); + } + } + + @Transactional + public void cancelWrkMast(String workNo, Long userId) { + AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo); + if (Cools.isEmpty(wrkMast)){ + throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); + } + + if (wrkMast.getWrkSts() == 200) { + //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。 + agvWrkMastService.deleteById(wrkMast); + return; + } + + String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� + String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� + // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 + if (wrkMast.getWrkSts() < 9) { + locNo = wrkMast.getLocNo(); + locSts = "O"; + + // 搴撲綅杞Щ + if (wrkMast.getIoType() == 11) { + // 搴撲綅杞Щ锛氭簮搴撲綅 + AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getSourceLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); + } + locMast.setLocSts("F"); + locMast.setModiTime(new Date()); + locMast.setModiUser(userId); + agvLocMastService.updateById(locMast); + } + // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� + } else if (wrkMast.getWrkSts() > 20) { + 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"; + // 搴撲綅杞Щ锛氱洰鏍囧簱浣� + AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo()); + } + locMast.setLocSts("O"); + locMast.setModiTime(new Date()); + locMast.setModiUser(userId); + agvLocMastService.updateById(locMast); + } + } else { + throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); + } + // 璁㈠崟鍏宠仈 + List<AgvWrkDetl> wrkDetls = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + for (AgvWrkDetl wrkDetl : wrkDetls) { + if (!Cools.isEmpty(wrkDetl.getOrderNo())) { + if (!BaseController.isJSON(wrkDetl.getOrderNo())) { + if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { + throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); + } + } else { + // 璁㈠崟鍚堝苟鍑哄簱 + + //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲� + Double wrkDetlAnfme = wrkDetl.getAnfme(); + //璁㈠崟瀹為檯鍑哄簱鏁伴噺 + Double orderAnfme; + + List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); + for (OrderDto orderDto : orderDtoList) { + + if(wrkDetlAnfme > orderDto.getAnfme()){ + orderAnfme = orderDto.getAnfme(); + wrkDetlAnfme -= orderAnfme; + }else { + orderAnfme = wrkDetlAnfme; + } + + if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) { + throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); + } + } + } + } + } + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 + wrkMast.setManuType("鎵嬪姩鍙栨秷"); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(new Date()); + if (!agvWrkMastService.updateById(wrkMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); + } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!agvWrkMastLogService.save(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + boolean wrkMastRes = agvWrkMastService.deleteById(wrkMast); + + if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 + if (!agvWrkDetlLogService.save(wrkMast.getWrkNo())) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔妗f槑缁� + boolean wrkDetlRes = agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", workNo)); + } + + // 淇敼搴撲綅鐘舵�� + AgvLocMast locMast = agvLocMastService.selectById(locNo); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(new Date()); + locMast.setModiUser(userId); + boolean locMastRes = agvLocMastService.updateById(locMast); + if (!wrkMastRes || !locMastRes) { + throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + } + } + /* 鏇存柊鐩爣搴撲綅淇℃伅 */ -- Gitblit v1.9.1