From 0ff532196c988263dac617fbfbbbc903df40159c Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期三, 12 六月 2024 12:33:07 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/entity/AgvLocDetl.java | 24 ++++++++++++ src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 21 ++++++---- src/main/java/com/zy/common/model/LocDto.java | 14 +++++++ src/main/webapp/static/js/common.js | 3 + src/main/java/com/zy/asrs/controller/OutController.java | 51 +++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index 96cb5b9..4eb5846 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -164,6 +164,57 @@ } return R.ok(); } + @PostMapping("/process/out/pakout/auth") + @ManagerAuth(memo = "鍔犲伐鍑哄簱") + @Transactional + @Synchronized + public synchronized R processPakout(@RequestBody List<LocDto> locDtos) throws InterruptedException { + + //鍒ゆ柇鏄惁鍙互鐢熸垚鍑哄簱宸ヤ綔妗� + boolean lack = true; + for (LocDto locDto : locDtos) { + //濡傛灉AGV鍑哄簱绔欎负绌� 鍜� 鍥涢」搴撳嚭搴撶珯涓虹┖ 骞朵笖 鏈夊簱瀛樼殑鎯呭喌涓� 鍒欒繑鍥� + if (Cools.isEmpty(locDto.getStaNo()) && Cools.isEmpty(locDto.getAgvStaNo()) &&!locDto.isLack()) { + return R.error(locDto.getLocNo()+"搴撲綅璇烽�夋嫨鍑哄簱绔�"); + } + + AgvLocMast agvLocMast = agvLocMastService.selectById(locDto.getLocNo()); + List<String> staNoList = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(),agvLocMast.getFloor()); + + if(!staNoList.contains(locDto.getAgvStaNo())){ + return R.error(locDto.getAgvStaNo()+"璇ョ珯鐐瑰凡鏈夊嚭搴撲换鍔★紝鏃犳硶閫夋嫨璇ョ珯鐐瑰嚭搴�"); + } + } + //濡傛灉鎵�鏈夊簱閮芥病鏈夊簱瀛橈紝鍒欒繑鍥� + for (LocDto locDto : locDtos) { + if (!locDto.isLack()) { + lack = false; + break; + } + } + if (lack) { + return R.error("搴撳瓨涓嶈冻"); + } + Thread.sleep(500L); + + // 璁㈠崟棰勬牎楠� ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺 + List<OrderDto> orderDtos = orderPreVerification(locDtos); + + List<TaskDto> taskDtos = new ArrayList<>(); + List<TaskDto> agvTaskDtos = new ArrayList<>(); + generateTaskDto(locDtos,taskDtos,agvTaskDtos); + + //鐢熸垚AGV鍑哄簱浠诲姟 + agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId()); + + // 鐢熸垚鍑哄簱浠诲姟 + taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList()); + for (TaskDto taskDto : taskDtos) { + BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); + workService.stockOut(staNo, taskDto, getUserId()); + } + return R.ok(); + } /** diff --git a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java index 54d1993..e5489e8 100644 --- a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java +++ b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java @@ -182,6 +182,30 @@ @TableField(exist = false) private String locSts$; + /** + * 宸ュ簭鐘舵�� + */ + @ApiModelProperty(value= "宸ュ簭鐘舵�� 1锛氬緟鍔犲伐锛�2锛氬凡鍔犲伐锛�3锛氭棤闇�鍔犲伐") + @TableField("process_sts") + private Integer processSts; + + + public String getProcessSts$(){ + if (null == this.processSts){ return null; } + switch (this.processSts){ + case 0: + return "鍏朵粬"; + case 1: + return "寰呭姞宸�"; + case 2: + return "宸插姞宸�"; + case 3: + return "鏃犻渶鍔犲伐"; + default: + return String.valueOf(this.processSts); + } + } + public String getLocNo$(){ LocMastService service = SpringUtils.getBean(LocMastService.class); LocMast locMast = service.selectById(this.locNo); 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 af4d600..86ab33d 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -99,7 +99,7 @@ wrkMast.setMk(isConveyor ? "Y" : "N"); //鐢熸垚宸ヤ綔妗f槑缁� agvWaitPakinList.forEach(wp -> { - createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime()); + createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts()); }); //鏇存柊婧愮珯鐐逛俊鎭� updateAgvBasDevp(agvBasDevp,"R"); @@ -151,7 +151,8 @@ now, userId, locDto.getCsocode(), - locDto.getIsoseq()); + locDto.getIsoseq(), + locDto.getProcessSts()); }else { List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); orderDtoList.forEach(orderDto -> { @@ -165,7 +166,8 @@ now, userId, locDto.getCsocode(), - locDto.getIsoseq()); + locDto.getIsoseq(), + locDto.getProcessSts()); }); } @@ -243,7 +245,7 @@ List<TaskDto> taskDtos = new ArrayList<>(); param.getLocDetls().forEach(locDetl -> { - LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode()); + LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(), locDetl.getProcessSts()); TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto); if(TaskDto.has(taskDtos,taskDto)){ TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto); @@ -277,7 +279,8 @@ now, userId, locDto.getCsocode(), - locDto.getIsoseq()); + locDto.getIsoseq(), + locDto.getProcessSts()); }); updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P"); //鏇存柊鐩爣绔欑偣鐘舵�� @@ -308,7 +311,7 @@ //鐢熸垚绉诲簱宸ヤ綔妗� AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo)); //鐢熸垚宸ヤ綔鍏氭槑缁� - createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime()); + createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProcessSts()); //淇敼鐩爣搴撲綅鐘舵�� updateAgvLocMast(targetLocMast,"S"); //淇敼鍘熷簱浣嶇姸鎬� @@ -385,8 +388,10 @@ if(!Cools.isEmpty(agvWaitPakinList)){ AtomicBoolean isCurrLev = new AtomicBoolean(false); agvWaitPakinList.forEach(agvWaitPakin -> { - if (agvWaitPakin.getProcessSts() == 1) { - isCurrLev.set(true); + if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) { + if (agvWaitPakin.getProcessSts() == 1) { + isCurrLev.set(true); + } } }); if (isCurrLev.get()) { diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java index 8b01d79..3ef4adb 100644 --- a/src/main/java/com/zy/common/model/LocDto.java +++ b/src/main/java/com/zy/common/model/LocDto.java @@ -44,6 +44,9 @@ //璐ф灦鐮� private String containerCode; + // 宸ュ簭鐘舵�� 1锛氬緟鍔犲伐锛�2锛氬凡鍔犲伐锛�3锛氭棤闇�鍔犲伐 + private Integer processSts; + public LocDto() { } @@ -57,6 +60,17 @@ this.containerCode = containerCode; } + public LocDto(String locNo, Double anfme, String matnr, String batch, String csocode, String isoseq, String containerCode,Integer processSts) { + this.locNo = locNo; + this.anfme = anfme; + this.matnr = matnr; + this.batch = batch; + this.csocode = csocode; + this.isoseq = isoseq; + this.containerCode = containerCode; + this.processSts = processSts; + } + public LocDto(String locNo, String matnr, String batch, Double anfme) { this.locNo = locNo; this.matnr = matnr; diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 2511c20..a4f9b7a 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -234,9 +234,10 @@ ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'} ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false} ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿'} - ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�'} + ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�' ,hide: true} ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false} ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false} + ,{field: 'processSts$', align: 'center',title: '宸ュ簭', hide: false} ,{field: 'brand', align: 'center',title: '鍟嗗搧鍒嗙被缂栫爜', hide: true} ,{field: 'color', align: 'center',title: '鍟嗗搧鍒嗙被鍚嶇О', hide: true} -- Gitblit v1.9.1