From 3f30983db5b3cd2b25cb215579501a2ef134883c Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期五, 04 八月 2023 17:00:11 +0800 Subject: [PATCH] agv 订单出库功能完善 --- src/main/webapp/views/mat/mat.html | 2 src/main/java/com/zy/asrs/service/AgvWrkMastService.java | 7 src/main/java/com/zy/common/model/AgvBasDevpDto.java | 3 src/main/java/com/zy/asrs/controller/AgvOpenController.java | 99 ++++--- src/main/java/com/zy/asrs/controller/AgvWrkMastController.java | 4 src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java | 31 + src/main/java/com/zy/asrs/controller/AgvBasDevpController.java | 104 +++++++ src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 66 +++- src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html | 6 src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java | 56 ++++ src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 116 +++++++- src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 50 +- src/main/webapp/static/js/agvBasDevp/basDevp.js | 7 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 33 ++ src/main/webapp/views/agvBasDevpVisualized/basDevp.html | 101 ++++++- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 57 ++++ src/main/webapp/static/js/common.js | 3 src/main/java/com/zy/asrs/controller/OutController.java | 8 src/main/java/com/zy/asrs/service/AgvWorkService.java | 6 19 files changed, 604 insertions(+), 155 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java index 6587f41..241d8cd 100644 --- a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java +++ b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java @@ -10,15 +10,17 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; -import com.zy.asrs.entity.AgvBasDevp; -import com.zy.asrs.entity.BasDevp; +import com.core.exception.CoolException; +import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.LocMastInitParam; -import com.zy.asrs.service.AgvBasDevpService; +import com.zy.asrs.service.*; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; @RestController @RequestMapping("/agv") @@ -26,6 +28,14 @@ @Autowired AgvBasDevpService agvBasDevpService; + @Autowired + AgvWrkMastService agvWrkMastService; + @Autowired + AgvWrkDetlService agvWrkDetlService; + @Autowired + AgvWaitPakinService agvWaitPakinService; + @Autowired + AgvWorkService agvWorkService; @RequestMapping(value = "/basDevp/list/auth") @ManagerAuth @@ -148,6 +158,36 @@ return R.ok(); } + @RequestMapping(value = "/basDevp/detail/list/auth") + public R basDevpDetailList(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam Map<String, Object> param){ + String devNo = param.get("devNo").toString(); + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); + if("F".equals(agvBasDevp.getLocSts()) || "R".equals(agvBasDevp.getLocSts())){ + //鍏堝幓鍏ュ簱閫氱煡妗f壘鏄庣粏 + Page<AgvWaitPakin> agvWaitPakinPage = agvWaitPakinService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWaitPakin>() + .eq("zpallet", agvBasDevp.getBarcode())); + if(agvWaitPakinPage.getRecords().size()>0){ + return R.ok(agvWaitPakinPage); + }else { + //濡傛灉鍏ュ簱閫氭。鏄庣粏涓虹┖锛屽垯鍘诲伐浣滄。鎵炬槑缁� + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() + .eq("loc_no", agvBasDevp.getDevNo()) + .or().eq("source_loc_no",agvBasDevp.getDevNo())); + + Page<AgvWrkDetl> agvWrkDetlPage = agvWrkDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWrkDetl>() + .eq("wrk_no", agvWrkMast.getWrkNo())); + + if(agvWrkDetlPage.getRecords().size()>0){ + return R.ok(agvWrkDetlPage); + } + } + } + + return R.error("鏁版嵁寮傚父"); + } + @RequestMapping(value = "/basDevp/visualized/list/auth") public R visualizedList(@RequestBody JSONObject param){ @@ -159,6 +199,64 @@ return R.ok(result); } + /* + 瀹瑰櫒绂诲満 + */ + @RequestMapping(value = "/basDevp/visualized/container/moveOut") + public R visualiZedContainerMoveOut(@RequestBody Map<String,Object> map) { + + List<String> devNos = (List<String>) map.get("devNo"); + List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> { + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo)); + if(agvWrkMast.getIoType() == 103){ + throw new CoolException("宸ヤ綔鍙蜂负" + agvWrkMast.getWrkNo() + "绫诲瀷涓�103.鎷f枡鍏ュ簱锛屾棤娉曟墽琛屽鍣ㄧ鍦轰换鍔★紝璇烽噸鏂伴�夋嫨绔欑偣銆�"); + } + return agvWrkMast; + }).collect(Collectors.toList()); + + try { + int code = agvWrkMastService.containerMoveOut(agvWrkMastList); + if(code == 0){ + //灏嗗伐浣滃厷鐘舵�佹敼涓哄鍣ㄧ鍦� + agvWrkMastList.forEach(agvWrkMast -> { + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); + }); + //淇敼绔欑偣鐘舵�� + devNos.forEach(devNo -> { + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); + agvBasDevp.setBarcode(""); + agvBasDevp.setLocSts("O"); + agvBasDevpService.updateById(agvBasDevp); + }); + } + } catch (IOException e) { + e.printStackTrace(); + return R.error("瀹瑰櫒绂诲満澶辫触"); + } + + return R.ok("瀹瑰櫒绂诲満鎴愬姛"); + } + + /* + 鎷f枡鍏ュ簱 + */ + @RequestMapping(value = "/basDevp/visualized/container/pickIn") + public R visualiZedPickIn(@RequestBody Map<String,Object> map){ + List<String> devNos = (List<String>) map.get("devNo"); + List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> { + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo)); + if(agvWrkMast.getIoType() == 101){ + throw new CoolException("宸ヤ綔鍙蜂负" + agvWrkMast.getWrkNo() + "绫诲瀷涓�101.鍏ュ簱锛屾棤娉曟墽琛屾嫞鏂欏叆搴撲换鍔★紝璇烽噸鏂伴�夋嫨绔欑偣銆�"); + } + return agvWrkMast; + }).collect(Collectors.toList()); + + agvWorkService.pickIn(agvWrkMastList); + + return R.ok("鐢熸垚鎷f枡鍑哄簱浠诲姟鎴愬姛"); + } + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java index d922dfe..9ad92d1 100644 --- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java +++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java @@ -70,8 +70,8 @@ AgvTask agvTask = AgvTask.valueOf(param.getEventType()); Class<AgvTask> clz = AgvTask.class; try { - Method method = clz.getDeclaredMethod(param.getStatus(),AgvTaskCallBackParam.class); - method.invoke(agvTask,param); + Method method = clz.getDeclaredMethod(param.getStatus(), AgvWrkMast.class, AgvTaskCallBackParam.class); + method.invoke(agvTask,agvWrkMast,param); } catch (NoSuchMethodException e) { return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎"); } catch (InvocationTargetException e) { @@ -103,20 +103,26 @@ */ task{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 - agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),205); + agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205); + + //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 + if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103){ + //淇敼鍑哄簱绔欑偣鐘舵�� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode()); + } } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, @@ -125,19 +131,19 @@ */ task_allocated{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, @@ -146,25 +152,36 @@ */ tote_load{ @Transactional - public void success(AgvTaskCallBackParam param) { - //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜 - agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getStationCode(),"O",""); + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { + + //鍏ュ簱浠诲姟 || 鎷f枡鍏ュ簱浠诲姟 + if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53){ + //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜 + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O",""); + } + + //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 + if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103){ + //淇敼婧愬簱浣嶇姸鎬� + + } + //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.RCS鏀捐揣涓� - agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),203); - //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬� - //agvWaitPakinService.updateIoStatus(Integer.valueOf(param.getTaskCode()),"Y"); + agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),203); + + } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, @@ -173,86 +190,86 @@ */ tote_unload{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { //淇敼宸ヤ綔妗g姸鎬佷负204.鏀捐揣瀹屾垚 - agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),204); + agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204); } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, robot_reach{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, weight{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }, rfid{ @Transactional - public void success(AgvTaskCallBackParam param) { + public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void fail(AgvTaskCallBackParam param) { + public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void cancel(AgvTaskCallBackParam param) { + public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } - public void suspend(AgvTaskCallBackParam param) { + public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) { } }; //浠诲姟鐘舵�佷负鎴愬姛 - public abstract void success(AgvTaskCallBackParam param); + public abstract void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); //浠诲姟鐘舵�佷负澶辫触 - public abstract void fail(AgvTaskCallBackParam param); + public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); //浠诲姟鐘舵�佷负鍙栨秷 - public abstract void cancel(AgvTaskCallBackParam param); + public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); //浠诲姟鐘舵�佷负鎸傝捣 - public abstract void suspend(AgvTaskCallBackParam param); + public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param); @Setter AgvBasDevpService agvBasDevpService; diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java index a6cc241..b72a706 100644 --- a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java +++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java @@ -165,9 +165,9 @@ if (Cools.isEmpty(agvWrkMastList)){ return R.error(); } - Map<String, List<Map<String, String>>> containerMoveParam = agvWrkMastService.startWrk(agvWrkMastList); + int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); - int code = agvWrkMastService.containerMove(containerMoveParam); + int code = agvWrkMastService.containerMove(agvWrkMastList); if(code == 0){ agvWrkMastList.forEach(agvWrkMast -> { diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index 79c18af..74f9ee9 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -287,12 +287,12 @@ continue; } //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵� - issued = agvLocDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),null,locDtoList,issued); + issued = agvLocDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),JSON.toJSONString(vo.getOrderDtos()),locDtoList,issued); //浠庡洓椤瑰簱鐨勫簱瀛橀噷闈㈡壘锛� - issued = locDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),null,locDtoList,issued); + issued = locDetlService.queryStockAndSetLocDto(vo.getMatnr(),vo.getBatch(),JSON.toJSONString(vo.getOrderDtos()),locDtoList,issued); if (issued > 0) { - LocDto locDto = new LocDto(null, vo.getMatnr(), vo.getMaktx(), vo.getBatch(), null, issued); + LocDto locDto = new LocDto(null, vo.getMatnr(), vo.getMaktx(), vo.getBatch(), JSON.toJSONString(vo.getOrderDtos()), issued); locDto.setLack(Boolean.TRUE); locDtoList.add(locDto); } @@ -377,6 +377,8 @@ //TODO 鍋囧鍑哄簱绔欑偣涓嶈冻锛岃褰曟湭鍑哄簱鐨勫簱浣嶏紱 return; } + agvBasDevp.setLocSts("S"); + agvBasDevpService.updateById(agvBasDevp); TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto); //TODO 鏆備笉鑰冭檻搴撲綅娣疯浇鐘舵�侊紙鍚庣画鐪嬫儏鍐垫槸鍚﹂渶瑕佸垽鏂級 agvTaskDtos.add(taskDto); diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java index a8f884a..f97aa5d 100644 --- a/src/main/java/com/zy/asrs/service/AgvWorkService.java +++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java @@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.AgvBasDevp; +import com.zy.asrs.entity.AgvWrkMast; import com.zy.common.model.StartupDto; import com.zy.common.model.TaskDto; @@ -18,5 +19,10 @@ */ void stockOutWrkMast(List<TaskDto> agvTaskDtos, Long userId); + /* + 鐢熸垚鎷f枡鍏ュ簱浠诲姟 + */ + void pickIn(List<AgvWrkMast> agvWrkMastList); + } diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java index 2ead2e4..d82d2b9 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java @@ -5,13 +5,14 @@ import java.io.IOException; import java.util.List; -import java.util.Map; public interface AgvWrkMastService extends IService<AgvWrkMast> { public void updateWrkStsByWrkNo(int wrkNo, long wrkSts); - public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException; + public int startWrk(List<AgvWrkMast> agvWrkMastList, String taskType) throws IOException; - public int containerMove(Map<String, List<Map<String, String>>> containerMoveParam) throws IOException; + public int containerMove(List<AgvWrkMast> agvWrkMastList) throws IOException; + + public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) throws IOException; } diff --git a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java index 636dc93..069fae5 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java @@ -5,6 +5,7 @@ import com.core.common.Cools; import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.AgvWaitPakin; +import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.AgvWrkMast; import com.zy.asrs.mapper.AgvBasDevpMapper; import com.zy.asrs.service.AgvBasDevpService; @@ -108,20 +109,36 @@ AgvBasDevpDto agvBasDevpDto = new AgvBasDevpDto(); BeanUtils.copyProperties(agvBasDevp, agvBasDevpDto); - if (Cools.isEmpty(agvBasDevpDto.getBarcode())) { +// if (Cools.isEmpty(agvBasDevpDto.getBarcode())) { +// return agvBasDevpDto; +// } + + if("O".equals(agvBasDevpDto.getLocSts())){ return agvBasDevpDto; } - AgvWaitPakin agvWaitPakin = agvWaitPakinService.selectOne(new EntityWrapper<AgvWaitPakin>() - .eq("zpallet", agvBasDevpDto.getBarcode())); - - agvBasDevpDto.setAgvWaitPakin(agvWaitPakin); - +// AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() +// .eq("barcode", agvBasDevpDto.getBarcode())); AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() - .eq("barcode", agvBasDevpDto.getBarcode())); + .eq("loc_no", agvBasDevpDto.getDevNo()) + .or().eq("source_loc_no",agvBasDevpDto.getDevNo())); agvBasDevpDto.setAgvWrkMast(agvWrkMast); + if("F".equals(agvBasDevpDto.getLocSts()) || "R".equals(agvBasDevpDto.getLocSts())){ + AgvWaitPakin agvWaitPakin = agvWaitPakinService.selectOne(new EntityWrapper<AgvWaitPakin>() + .eq("zpallet", agvBasDevpDto.getBarcode())); + + agvBasDevpDto.setAgvWaitPakin(agvWaitPakin); + + if(Cools.isEmpty(agvWaitPakin)){ + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>(). + eq("wrk_no",agvWrkMast.getWrkNo())); + + agvBasDevpDto.setAgvWrkDetl(agvWrkDetl); + } + } + return agvBasDevpDto; }).collect(Collectors.toList()); 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 8560782..f5ea49e 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -105,13 +105,14 @@ agvTaskDtos.forEach(taskDto -> { AgvLocMast agvLocMast = agvLockMastService.selectById(taskDto.getLocNo()); + AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo())); //宸ヤ綔妗f墍闇�鍙傛暟 double anfme = taskDto.getLocDtos().get(0).getAnfme(); long wrkSts = 21L; String sourceLocNo = taskDto.getLocNo(); String targetLocNo = taskDto.getAgvStaNo(); - String barcode = agvLocMast.getBarcode(); + String barcode = agvLocDetl.getZpallet(); //鏄庣粏妗f墍闇�鍙傛暟 String mantr = taskDto.getLocDtos().get(0).getMatnr(); String orderNo = taskDto.getLocDtos().get(0).getOrderNo(); @@ -126,9 +127,45 @@ //淇敼璁㈠崟淇℃伅 modifyOrderDetl(taskDto.getLocDtos().get(0), userId); //鏇存柊婧愮珯鐐逛俊鎭� - updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),"R"); + String locSts = ioType == 101 ? "R" : "P"; + updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),locSts); //鏇存柊鐩爣绔欑偣鐘舵�� + //locSts = ioType == 101 ? "S" : "Q"; updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S"); + + }); + } + + //鎷f枡鍏ュ簱 + @Transactional + public void pickIn(List<AgvWrkMast> agvWrkMastList){ + Date now = new Date(); + agvWrkMastList.forEach(agvWrkMast -> { + //淇敼宸ヤ綔鍏� + agvWrkMast.setWrkSts(201L); + agvWrkMast.setIoType(53); + String locNo = agvWrkMast.getLocNo(); + agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); + agvWrkMast.setSourceLocNo(locNo); + agvWrkMast.setIoTime(now); + agvWrkMastService.updateById(agvWrkMast); + + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + AgvLocMast agvLocMast = agvLockMastService.selectById(agvWrkMast.getLocNo()); + AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo())); + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo()); + //淇敼宸ヤ綔鍏氭槑缁� + agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme()); + agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); + //淇敼搴撳瓨淇℃伅 + agvLocDetl.setAnfme(agvWrkDetl.getAnfme()); + agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo())); + //淇敼搴撲綅淇℃伅 + agvLocMast.setLocSts("Q"); + agvLockMastService.selectById(agvLocMast); + //淇敼绔欑偣淇℃伅 + agvBasDevp.setLocSts("R"); + agvBasDevpService.updateById(agvBasDevp); }); } @@ -309,12 +346,26 @@ }else { //鍚堝苟鍑哄簱 List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); + + //瀹為檯鍑哄簱鏁伴噺 + Double locAnfme = locDto.getAnfme(); + //璁㈠崟瀹為檯鍑哄簱鏁伴噺 + Double orderAnfme; + for (OrderDto orderDto : orderDtoList) { OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) { + + if(locAnfme > orderDetl.getAnfme()){ + orderAnfme = orderDetl.getAnfme(); + locAnfme -= orderAnfme; + }else { + orderAnfme = locAnfme; + } + + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java index b23a41c..a0f8e09 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java @@ -9,6 +9,8 @@ import com.zy.asrs.entity.param.AgvTaskParam; import com.zy.asrs.entity.param.AgvTaskkDescribeParam; import com.zy.asrs.mapper.AgvWrkMastMapper; +import com.zy.asrs.service.AgvLocMastService; +import com.zy.asrs.service.AgvWrkDetlService; import com.zy.asrs.service.AgvWrkMastService; import com.zy.asrs.service.ApiLogService; import com.zy.common.utils.HttpHandler; @@ -40,6 +42,10 @@ @Autowired AgvWrkMastMapper agvWrkMastMapper; @Autowired + AgvWrkDetlService agvWrkDetlService; + @Autowired + AgvLocMastService agvLocMastService; + @Autowired ApiLogService apiLogService; public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) { @@ -50,37 +56,66 @@ this.updateById(agvWrkMast); } + // TODO 鍒ゆ柇瑙勫垯 private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){ - // 鍒ゆ柇瑙勫垯TODO + return true; } - public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { + public int startWrk(List<AgvWrkMast> agvWrkMastList, String taskType) throws IOException { AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); - agvTaskCreateParam.setTaskType("putaway"); + agvTaskCreateParam.setTaskType(taskType); +// //璋冪敤瀹瑰櫒鍏ュ満鏃舵墍闇�瑕佸弬鏁� +// Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); +// List<Map<String,String>> positionCodeMapList = new ArrayList<>(); +// containerMoveParam.put("containerMoveIns",positionCodeMapList); + + getRequestParam(agvTaskCreateParam,agvWrkMastList); + + return doHttpRequest(agvTaskCreateParam,"涓婃灦浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1"); + + //return containerMoveParam; + } + + //瀹瑰櫒鍏ュ満 + public int containerMove(List<AgvWrkMast> agvWrkMastList) throws IOException { //璋冪敤瀹瑰櫒鍏ュ満鏃舵墍闇�瑕佸弬鏁� Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); List<Map<String,String>> positionCodeMapList = new ArrayList<>(); containerMoveParam.put("containerMoveIns",positionCodeMapList); - getRequestParam(agvTaskCreateParam,agvWrkMastList,positionCodeMapList); - - doHttpRequest(agvTaskCreateParam,"涓婃灦浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1"); - - return containerMoveParam; - } - - public int containerMove(Map<String, List<Map<String, String>>> containerMoveParam) throws IOException { - + getContainerMoveParam(agvWrkMastList,positionCodeMapList); return doHttpRequest(containerMoveParam,"瀹瑰櫒鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1"); } - private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){ + //瀹瑰櫒绂诲満 + public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){ + Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); + List<Map<String,String>> positionCodeMapList = new ArrayList<>(); + containerMoveParam.put("containerMoveOuts",positionCodeMapList); + for(AgvWrkMast agvWrkMast : agvWrkMastList){ + Map<String,String> positionCodeMap = new HashMap<>(); + positionCodeMap.put("positionCode",agvWrkMast.getLocNo()); + positionCodeMapList.add(positionCodeMap); + } + return doHttpRequest(containerMoveParam,"瀹瑰櫒鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1"); + } + + private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){ + //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆 + for(AgvWrkMast agvWrkMast : agvWrkMastList){ + Map<String,String> positionCodeMap = new HashMap<>(); + positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo()); + positionCodeMapList.add(positionCodeMap); + } + } + + private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,List<AgvWrkMast> agvWrkMastList){ List<AgvTaskParam> agvTaskParamList = agvWrkMastList.stream().map(agvWrkMast -> { AgvTaskParam agvTaskParam = new AgvTaskParam(); AgvTaskkDescribeParam agvTaskkDescribeParam = new AgvTaskkDescribeParam(); @@ -88,11 +123,6 @@ //AgvTaskParam agvTaskParam.setTaskCode(agvWrkMast.getWrkNo().toString()); agvTaskParam.setTaskPriority(agvWrkMast.getIoPri().intValue()); - - //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆 - Map<String,String> positionCodeMap = new HashMap<>(); - positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo()); - positionCodeMapList.add(positionCodeMap); //AgvTaskkDescribeParam agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo()); diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java index 6d9e534..2c6449c 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -85,32 +85,32 @@ } // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� if (complete - && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1 - && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1) { + && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1 + && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1) { // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏 - DocType docType = docTypeService.selectById(order.getDocType()); - if (null != docType && docType.getPakout() == 1) { - // 閲嶇粍鏄庣粏 - if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { - throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); - } - List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo); - for (WrkDetl wrkDetl : wrkDetls) { - OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(wrkDetl); - orderDetl.setQty(orderDetl.getAnfme()); - orderDetl.setOrderId(order.getId()); - orderDetl.setOrderNo(orderNo); - orderDetl.setStatus(1); - orderDetl.setCreateTime(order.getCreateTime()); - orderDetl.setCreateBy(order.getCreateBy()); - orderDetl.setUpdateTime(order.getUpdateTime()); - orderDetl.setUpdateBy(order.getUpdateBy()); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); - } - } - } +// DocType docType = docTypeService.selectById(order.getDocType()); +// if (null != docType && docType.getPakout() == 1) { +// // 閲嶇粍鏄庣粏 +// if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { +// throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); +// } +// List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo); +// for (WrkDetl wrkDetl : wrkDetls) { +// OrderDetl orderDetl = new OrderDetl(); +// orderDetl.sync(wrkDetl); +// orderDetl.setQty(orderDetl.getAnfme()); +// orderDetl.setOrderId(order.getId()); +// orderDetl.setOrderNo(orderNo); +// orderDetl.setStatus(1); +// orderDetl.setCreateTime(order.getCreateTime()); +// orderDetl.setCreateBy(order.getCreateBy()); +// orderDetl.setUpdateTime(order.getUpdateTime()); +// orderDetl.setUpdateBy(order.getUpdateBy()); +// if (!orderDetlService.insert(orderDetl)) { +// throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); +// } +// } +// } if (!this.updateSettle(order.getId(), 4L, null)) { throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�"); 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 fc9d604..6a84d5b 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -27,7 +27,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.swing.*; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -446,12 +445,26 @@ } else { // 璁㈠崟鍚堝苟鍑哄簱 List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); + + //瀹為檯鍑哄簱鏁伴噺 + Double locAnfme = locDto.getAnfme(); + //璁㈠崟瀹為檯鍑哄簱鏁伴噺 + Double orderAnfme; + for (OrderDto orderDto : orderDtoList) { OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); if (orderDetl == null) { orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) { + + if(locAnfme > orderDetl.getAnfme()){ + orderAnfme = orderDetl.getAnfme(); + locAnfme -= orderAnfme; + }else { + orderAnfme = locAnfme; + } + + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); @@ -947,9 +960,23 @@ } } else { // 璁㈠崟鍚堝苟鍑哄簱 + + //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲� + Double wrkDetlAnfme = wrkDetl.getAnfme(); + //璁㈠崟瀹為檯鍑哄簱鏁伴噺 + Double orderAnfme; + List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); for (OrderDto orderDto : orderDtoList) { - if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) { + + 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("璁㈠崟鏁版嵁鍥炴粴澶辫触"); } } diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java index e5f5ad1..a706936 100644 --- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java +++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java @@ -16,7 +16,12 @@ import java.util.List; /** - * 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚鐨勬暟鎹� + * 浠诲姟绫诲瀷锛� + * 飦� putaway锛氫笂鏋躲�� + * 飦� carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛夈�� + * 飦� scan锛氭壂鎻忕洏鐐广�� + * 飦� weight锛氱О閲嶇洏鐐广�� + * 飦� rfid锛歳fid鐩樼偣銆� */ @Slf4j @Component @@ -27,11 +32,16 @@ @Autowired AgvWrkMastService agvWrkMastService; + + /* + 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 涓� 锛�1.鍏ュ簱 || 53锛屾嫞鏂欏叆搴�)鐨勬暟鎹� + */ @Scheduled(cron = "0/5 * * * * ? ") public void excutePutwayWrk(){ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() .eq("wrk_sts", 205) - .eq("io_type",1)); + .andNew().eq("io_type",53) + .or().eq("io_type",1)); if(!Cools.isEmpty(agvWrkMastList)){ agvWrkMastList.stream().forEach(agvWrkMast -> { ReturnT<String> returnT = agvWrkMastHandler.completedPutWayWrk(agvWrkMast); @@ -39,12 +49,31 @@ } } + /* + 瀹氭椂澶勭悊AGV宸ヤ綔妗d腑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 涓� 101鍑哄簱绫诲瀷鐨勬暟鎹� + */ + @Scheduled(cron = "0/5 * * * * ? ") + public void excuteCarryWrk(){ + List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() + .eq("wrk_sts", 207) + .eq("io_type",101)); + if(!Cools.isEmpty(agvWrkMastList)){ + agvWrkMastList.stream().forEach(agvWrkMast -> { + ReturnT<String> returnT = agvWrkMastHandler.completedCarryWrk(agvWrkMast); + }); + } + } + + /* + putaway锛氫笂鏋� + */ @Scheduled(cron = "0/5 * * * * ? ") public void startPutwayWrk(){ List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50) ,new EntityWrapper<AgvWrkMast>() - .eq("wrk_sts", 201) + .eq("wrk_sts", 201) //201.鐢熸垚鍏ュ簱浠诲姟ID + .andNew().eq("io_type", 53).or() //53.鎷f枡鍐嶅叆搴� .eq("io_type", 1)).getRecords(); if(!Cools.isEmpty(agvWrkMastList)){ @@ -55,4 +84,25 @@ } } } + + /* + carry锛氭惉杩愶紝缁熸寚鍑哄簱銆佺Щ搴撱�佺偣鍒扮偣鎼繍绛� + */ + @Scheduled(cron = "0/5 * * * * ? ") + public void startCarryWrk(){ + + List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50) + ,new EntityWrapper<AgvWrkMast>() + .eq("wrk_sts", 21) //21.鐢熸垚鍑哄簱浠诲姟 + .andNew().eq("io_type", 101).or() + .eq("io_type", 103)).getRecords(); + + if(!Cools.isEmpty(agvWrkMastList)){ + try { + ReturnT<String> returnT = agvWrkMastHandler.startCarryWrk(agvWrkMastList); + } catch (IOException e) { + log.error(e.getMessage()); + } + } + } } 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 a0c3d12..8084635 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -1,6 +1,9 @@ package com.zy.asrs.task.handler; +import com.alibaba.fastjson.JSONArray; 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; @@ -48,39 +51,102 @@ agvWrkMastService.updateById(agvWrkMast); //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱 agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F"); - //鏇存柊鐩爣搴撲綅鏄庣粏 - agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� agvWrkMastLogService.save(wrkNo); //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� agvWrkDetlLogService.save(wrkNo); - //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗� - agvWaitPakinLogService.save(barcode); //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(wrkNo); //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - //鍒犻櫎鍏ュ簱閫氱煡妗� - agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode)); + if(agvWrkMast.getIoType() == 1){ + //鏇存柊鐩爣搴撲綅鏄庣粏 + agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); + //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗� + agvWaitPakinLogService.save(barcode); + //鍒犻櫎鍏ュ簱閫氱煡妗� + agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode)); - //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); + } + 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); + }); + } return SUCCESS; } @Transactional - public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { - Map<String, List<Map<String, String>>> containerMoveParam = agvWrkMastService.startWrk(agvWrkMastList); + public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { + int wrkNo = agvWrkMast.getWrkNo(); + String orderNo = getOrderNoByWrkNo(wrkNo); + //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(206L); + agvWrkMastService.updateById(agvWrkMast); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); + //鏇存柊鐩爣搴撲綅鏄庣粏 + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + agvWrkMastLogService.save(wrkNo); + //鐢熸垚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); + }); + } + return SUCCESS; + } - int code = agvWrkMastService.containerMove(containerMoveParam); + @Transactional + public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { + + int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); + + int code = agvWrkMastService.containerMove(agvWrkMastList); if(code == 0){ agvWrkMastList.forEach(agvWrkMast -> { //202.RCS鍙栬揣涓� agvWrkMast.setWrkSts((long)202); - //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y - agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); + agvWrkMastService.updateById(agvWrkMast); + if(agvWrkMast.getIoType() == 1){ + //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y + agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); + } + + }); + //agvWrkMastService.updateBatchById(agvWrkMastList); + + return SUCCESS; + } + + 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((long)202); agvWrkMastService.updateById(agvWrkMast); }); //agvWrkMastService.updateBatchById(agvWrkMastList); @@ -95,4 +161,28 @@ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); return agvWrkDetl.getOrderNo(); } + + public static void main(String[] args) { + String order = "[{\"anfme\":50.0,\"orderNo\":\"CS110011001111\"},{\"anfme\":50.0,\"orderNo\":\"CS110011001110\"}]"; + List<Map> maps = JSONArray.parseArray(order, Map.class); + maps.forEach(map -> { + Object orderNo = map.get("orderNo"); + System.out.println(orderNo ); + }); + } + + private boolean isJSON(String str) { + if (Cools.isEmpty(str)) { + return false; + } else { + str = str.trim(); + if (str.startsWith("{") && str.endsWith("}")) { + return true; + } else if (str.startsWith("[") && str.endsWith("]")) { + return true; + } else { + return false; + } + } + } } diff --git a/src/main/java/com/zy/common/model/AgvBasDevpDto.java b/src/main/java/com/zy/common/model/AgvBasDevpDto.java index da9de2d..0f0047f 100644 --- a/src/main/java/com/zy/common/model/AgvBasDevpDto.java +++ b/src/main/java/com/zy/common/model/AgvBasDevpDto.java @@ -2,6 +2,7 @@ import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.entity.AgvWaitPakin; +import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.AgvWrkMast; import lombok.Data; @@ -15,4 +16,6 @@ private AgvWaitPakin agvWaitPakin; + private AgvWrkDetl agvWrkDetl; + } diff --git a/src/main/webapp/static/js/agvBasDevp/basDevp.js b/src/main/webapp/static/js/agvBasDevp/basDevp.js index 75c55ac..c17a0b3 100644 --- a/src/main/webapp/static/js/agvBasDevp/basDevp.js +++ b/src/main/webapp/static/js/agvBasDevp/basDevp.js @@ -385,7 +385,7 @@ layer.msg("姝ょ珯鐐圭殑鐘舵�佷笉瀛樺湪鐗╂枡"); return; } - locDetlToLayer(data.barcode); + locDetlToLayer(data.devNo,data.barcode); break; case 'unbind': // locDetl(data.locNo); @@ -572,8 +572,9 @@ } // iframe鐗╂枡璇︽儏 - function locDetlToLayer(val) { - barcode = val; + function locDetlToLayer(val1,val2) { + devNo = val1; + barcode = val2; layer.open({ type: 2, title: '绔欑偣鏄庣粏', diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index b719bce..5f5f4ca 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -220,7 +220,8 @@ ] var detlCols = [ - ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', width: 110} + ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: true} + ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false} ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'} ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: false} ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О'} diff --git a/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html b/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html index 86336b7..1318a19 100644 --- a/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html +++ b/src/main/webapp/views/agvBasDevp/basDevpWaitPakinDetail.html @@ -52,16 +52,16 @@ }else { $('#zpallet').val(tmp); } - // 鏁版嵁娓叉煋 tableIns = table.render({ elem: '#locDetlByMap', headers: {token: localStorage.getItem('token')}, - url: baseUrl+'/agv/waitPakin/list/auth', + url: baseUrl+'/agv/basDevp/detail/list/auth', page: true, limit: 20, skin: 'line', - where: {zpallet: $('#zpallet').val()}, + //where: {zpallet: $('#zpallet').val()}, + where: {devNo: parent.devNo}, even: true, cellMinWidth: 50, cols: [getCol()], diff --git a/src/main/webapp/views/agvBasDevpVisualized/basDevp.html b/src/main/webapp/views/agvBasDevpVisualized/basDevp.html index 521e936..acec6aa 100644 --- a/src/main/webapp/views/agvBasDevpVisualized/basDevp.html +++ b/src/main/webapp/views/agvBasDevpVisualized/basDevp.html @@ -57,6 +57,19 @@ <input type="checkbox" lay-skin="primary" name="cardCheckBox" value="{{devNo}}"/> </div> <div style="float:right; width:85%;"> +<!-- <div>--> +<!-- <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}">鎷f枡鍏ュ簱</button>--> +<!-- </div>--> + + {{#if agvWrkDetl}} + <div style=" padding-bottom: 20px"> + + <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}" lay-submit lay-filter="containerMoveOut">瀹瑰櫒绂诲満</button> + <button type="button" class="layui-btn layui-btn-normal" value="{{devNo}}" lay-submit lay-filter="pickIn">鎷f枡鍏ュ簱</button> + + </div> + {{/if}} + <div> 宸ヤ綔绔欑紪鐮侊細{{devNo}} </br> 绔欑偣鐘舵�侊細{{locSts$}} @@ -76,6 +89,16 @@ 宸ヤ綔鍙凤細{{agvWrkMast.wrkNo}} </br> 宸ヤ綔鐘舵�侊細{{agvWrkMast.wrkSts$ }} </br> 宸ヤ綔绫诲瀷锛歿{agvWrkMast.ioType$}} + </div> + {{/if}} + {{#if agvWrkDetl}} + <div style="padding-top: 10px;"> + 鐗╂枡鍙凤細{{agvWrkDetl.matnr}} </br> + {{#if agvWrkDetl.batch}} + 搴忓垪鐮侊細{{agvWrkDetl.batch}} </br> + {{/if}} + 鎵樼洏鐮侊細{{agvWrkDetl.zpallet}} </br> + 鏁伴噺锛歿{agvWrkDetl.anfme}} </div> {{/if}} </div> @@ -114,6 +137,7 @@ var table = layui.table; var layer = layui.layer; var param = {'stationCode' : 'CS-101'}; + loadData(param); form.on('select(floorSelect)', function (data) { @@ -136,26 +160,6 @@ param = null; param = {'stationCode' : $('#rowSelect').val()}; loadData(param); - // $.ajax({ - // url: baseUrl+"/agv/basDevp/visualized/list/auth", - // headers: {'token': localStorage.getItem('token')}, - // data: JSON.stringify(param), - // dataType:'json', - // contentType:'application/json;charset=UTF-8', - // method: 'POST', - // success: function (res) { - // if (res.code === 200){ - // var tpl = $("#basDevpMapTemplate").html(); - // var template = Handlebars.compile(tpl); - // var html = template(res.data); - // $('#basDevpMap').html(html); - // } else if (res.code === 403){ - // top.location.href = baseUrl+"/"; - // }else { - // layer.msg(res.msg) - // } - // } - // }) }); //鍏ㄩ�� @@ -172,6 +176,57 @@ for (var i = 0; i < cks.length; i++) { cks[i].checked = !cks[i].checked; } + }); + + //瀹瑰櫒绂诲満 + form.on('submit(containerMoveOut)', function () { + var devNoList = []; + devNoList.push(this.value); + var moveOutParam = {'devNo' : devNoList}; + $.ajax({ + url: baseUrl+"/agv/basDevp/visualized/container/moveOut", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(moveOutParam), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + if (res.code === 200){ + layer.msg(res.msg); + loadData(param); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg) + } + } + }) + + }); + + //鎷f枡鍏ュ簱 + form.on('submit(pickIn)', function () { + var devNoList = []; + devNoList.push(this.value); + var pickInParam = {'devNo' : devNoList}; + $.ajax({ + url: baseUrl+"/agv/basDevp/visualized/container/pickIn", + headers: {'token': localStorage.getItem('token')}, + data: JSON.stringify(pickInParam), + dataType:'json', + contentType:'application/json;charset=UTF-8', + method: 'POST', + success: function (res) { + if (res.code === 200){ + layer.msg(res.msg); + loadData(param); + } else if (res.code === 403){ + top.location.href = baseUrl+"/"; + } else { + layer.msg(res.msg) + } + } + }) }); //鍚姩鍏ュ簱 @@ -206,9 +261,9 @@ //瀹氭椂鍒锋柊鏁版嵁 //setInterval(loadData(param), 1000); - setInterval(function() { - loadData(param); - }, 1000); + // setInterval(function() { + // loadData(param); + // }, 1000); function loadData(param){ $.ajax({ diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html index 4f734c4..7103755 100644 --- a/src/main/webapp/views/mat/mat.html +++ b/src/main/webapp/views/mat/mat.html @@ -459,7 +459,7 @@ </div> </td> </tr> - <tr style="height: 74px; font-size: 18px;font-weight: 400"> + <tr style="height: 50px; font-size: 18px;font-weight: 400"> <td width="50px" align="center" colspan="1">瑙勬牸</td> <td align="center" colspan="3" style=" overflow:hidden; -- Gitblit v1.9.1