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/mapper/AgvWrkDetlMapper.java | 4 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 11 +- src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java | 2 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 162 ++++++++++++++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/service/AgvWrkDetlService.java | 2 src/main/java/com/zy/asrs/controller/AgvWorkController.java | 14 +++ src/main/webapp/static/js/agvWrkMast/wrkMast.js | 10 +- src/main/webapp/static/js/common.js | 1 src/main/java/com/zy/asrs/service/AgvWorkService.java | 10 ++ 9 files changed, 203 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java index 0e7637e..8fe7e30 100644 --- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java +++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java @@ -40,4 +40,18 @@ workService.adjustLocDetl(param, getUserId()); return R.ok("搴撳瓨璋冩暣鎴愬姛"); } + + @RequestMapping("/hand/control/wrkMast") + @ManagerAuth(memo = "鎵嬪姩澶勭悊宸ヤ綔妗�") + public R handControlWrkMast(@RequestParam String workNo, + @RequestParam Integer type){ + if (type == 1) { + workService.completeWrkMast(workNo, getUserId()); + return R.ok("宸ヤ綔妗e凡瀹屾垚"); + } else if (type == 2) { + workService.cancelWrkMast(workNo, getUserId()); + return R.ok("宸ヤ綔妗e凡鍙栨秷"); + } + return R.ok(); + } } diff --git a/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java index 0715ccf..0fab304 100644 --- a/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java @@ -5,6 +5,7 @@ import com.zy.asrs.entity.WrkDetl; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; @@ -13,7 +14,8 @@ @Repository public interface AgvWrkDetlMapper extends BaseMapper<AgvWrkDetl> { - List<WrkDetl> selectByWrkNo(Integer wrkNo); + @Select("SELECT * FROM agv_wrk_detl WHERE wrk_no = #{wrkNo}") + List<AgvWrkDetl> selectByWrkNo(@Param("wrkNo")Integer wrkNo); int deleteItem(@Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch); diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java index cdc2396..9056644 100644 --- a/src/main/java/com/zy/asrs/service/AgvWorkService.java +++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java @@ -49,4 +49,14 @@ */ void adjustLocDetl(LocDetlAdjustParam param, Long userId); + /** + * 鎵嬪姩瀹屾垚宸ヤ綔妗� + */ + void completeWrkMast(String workNo, Long userId); + + /** + * 鎵嬪姩鍙栨秷宸ヤ綔妗� + */ + void cancelWrkMast(String workNo, Long userId); + } diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java index d9522c0..3447454 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java @@ -10,7 +10,7 @@ //void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId); - List<WrkDetl> selectByWrkNo(Integer wrkNo); + List<AgvWrkDetl> selectByWrkNo(Integer wrkNo); boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch); 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("淇濆瓨鏁版嵁澶辫触"); + } + } + /* 鏇存柊鐩爣搴撲綅淇℃伅 */ diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java index 647b9b3..f8cd847 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java @@ -50,7 +50,7 @@ } */ @Override - public List<WrkDetl> selectByWrkNo(Integer wrkNo) { + public List<AgvWrkDetl> selectByWrkNo(Integer wrkNo) { return this.baseMapper.selectByWrkNo(wrkNo); } 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..3a59dba 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -80,6 +80,12 @@ //淇敼婧愬簱浣嶇姸鎬佷负O agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); } + + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(wrkNo); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); + if(!isJSON(orderNo)){ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 orderService.checkComplete(orderNo); @@ -90,11 +96,6 @@ orderService.checkComplete(o); }); } - - //鍒犻櫎AGV宸ヤ綔妗� - agvWrkMastService.deleteById(wrkNo); - //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); return SUCCESS; } diff --git a/src/main/webapp/static/js/agvWrkMast/wrkMast.js b/src/main/webapp/static/js/agvWrkMast/wrkMast.js index 85ad9a2..63ae9f5 100644 --- a/src/main/webapp/static/js/agvWrkMast/wrkMast.js +++ b/src/main/webapp/static/js/agvWrkMast/wrkMast.js @@ -320,7 +320,7 @@ // 瀹屾垚 case 'complete': layer.confirm('纭瀹屾垚璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){ - http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) { + http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -332,7 +332,7 @@ case 'cancel': if (data.pdcType === "Y") { layer.confirm('褰撳墠浠诲姟鍏宠仈ERP閿�鍞崟锛屽彇娑堝皢閲嶆柊鐢熸垚鍑哄簱浣滀笟锛屾槸鍚︾户缁紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){ - http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) { + http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -340,7 +340,7 @@ }); } else { layer.confirm('纭鍙栨秷璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){ - http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) { + http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:2}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -351,7 +351,7 @@ // 鎷f枡鍏ュ簱 case 'pick': layer.confirm('鎷f枡鍏ュ簱璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){ - http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:3}, function (res) { + http.post(baseUrl+"/agv/hand/control/wrkMast", {workNo: data.wrkNo, type:3}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -361,7 +361,7 @@ // 鍏堝叆鍝� case 'preHave': layer.confirm('浠诲姟鍙戠敓鍏堝叆鍝佸紓甯搞�傚闇�閲嶆柊鍏ュ簱锛岃纭繚璐х墿宸叉斁鑷冲爢鍨涙満鍑哄簱绔欙紒', {title: '宸ヤ綔鍙凤細'+data.wrkNo, shadeClose: true}, function(){ - http.post(baseUrl+"/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) { + http.post(baseUrl+"/agv/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg, {icon: 1}); }) diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index b409c37..6b2f84a 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -228,6 +228,7 @@ ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', hide: false, width: 110} ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜',hide: true} ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜'} + ,{field: 'anfme', align: 'center',title: '鏁伴噺'} ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: true} ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О'} ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false} -- Gitblit v1.9.1