src/main/java/com/zy/asrs/controller/OpenController.java
@@ -222,10 +222,12 @@ * 中控:码垛完成下发入库信息 */ @PostMapping("/palletizing/complete/auth/v1") @AppAuth(memo = "中控(桁架):码垛完成下发入库信息") @AppAuth(memo = "码垛完成下发入库信息") public synchronized R palletizingComplete(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.palletizingComplete(param); return R.ok(param); @@ -253,6 +255,8 @@ public synchronized R singleUnstackingComplete(@RequestHeader(required = false) String appkey, @RequestBody SingleUnstackingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.singleUnstackingComplete(param); return R.ok(param); @@ -266,6 +270,8 @@ public synchronized R singleMountUnstackingComplete(@RequestHeader(required = false) String appkey, @RequestBody SingleMountUnstackingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.singleMountUnstackingComplete(param); return R.ok(param); src/main/java/com/zy/asrs/entity/BasDevp.java
@@ -214,6 +214,10 @@ @TableField("cart_pos") private Integer cartPos; @ApiModelProperty(value = "") @TableField("report_sign") private Integer reportSign; public String getIoTime$(){ if (Cools.isEmpty(this.ioTime)){ src/main/java/com/zy/asrs/entity/param/SingleMountUnstackingCompleteParam.java
@@ -14,7 +14,7 @@ public class SingleMountUnstackingCompleteParam { private String barcode;// 是 字符串 托盘码 private String boxType;// 是 字符串 码垛木箱类型(同一托盘一种类型) private String palletizingNo;// 是 字符串 码垛木箱类型(同一托盘一种类型) private String palletizingNo;// 是 字符串 码垛木箱类型(同一托盘一种类型) 废弃 private String createTime;// 是 字符串 创建时间 private String uuid;// 是 字符串 时间戳 private Integer staStart;// 是 字符串 起始站点(托盘所在站点) src/main/java/com/zy/asrs/service/BasDevpService.java
@@ -43,4 +43,10 @@ */ BasDevp checkSiteStatus(Integer devpNo, boolean pakin); /** * 目标站点状态检测 * @param pakin 是否入库操作 true 是 ; false 不是 */ BasDevp checkSiteStatusEmpty(Integer devpNo, boolean pakin); } src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -67,4 +67,30 @@ } return station; } @Override public BasDevp checkSiteStatusEmpty(Integer devpNo, boolean pakin) { BasDevp station = selectById(devpNo); if (station == null){ throw new CoolException(devpNo+"站点不存在"); } if (pakin) { // if(station.getAutoing()==null || !station.getAutoing().equals("Y")) { // throw new CoolException(devpNo+"站点不是自动状态"); // } // if(station.getLoading()==null || !station.getLoading().equals("Y")) { // throw new CoolException(devpNo+"站点无物"); // } // if(station.getWrkNo()!=null && station.getWrkNo()>0 && station.getWrkNo() < 9990) { // throw new CoolException(devpNo+"站点已有工作号"); // } // if(!station.getInEnable().equals("Y")) { // throw new CoolException(devpNo+"站点不是可入状态"); // } if(wrkMastService.getWorkingMast(devpNo)>0){ throw new CoolException(devpNo+"站点不能同时生成两笔入库工作档"); } } return station; } } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -975,11 +975,11 @@ @Transactional public void cs3() { //拆盘 WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),118); WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),119); wrkMastSta1.setType(2); wrkMastSta1.setWrkType(2); wrkMastStaService.insert(wrkMastSta1); WrkMastSta wrkMastSta2 = new WrkMastSta(new Date(),122); WrkMastSta wrkMastSta2 = new WrkMastSta(new Date(),121); wrkMastSta2.setType(2); wrkMastSta2.setWrkType(2); wrkMastStaService.insert(wrkMastSta2); src/main/java/com/zy/asrs/task/ReportToOKScheduler.java
@@ -1,7 +1,6 @@ package com.zy.asrs.task; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.ReportToDismantleTheStackHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -13,18 +12,15 @@ @Component public class ReportToOKScheduler { @Autowired private ReportToDismantleTheStackHandler reportToDismantleTheStackHandler; // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){//拆垛完成信息处理 int[] staNos =new int[]{118,119,120,121}; for (int staNo : staNos){ ReturnT<String> result = reportToDismantleTheStackHandler.start(staNo); if (result.getCode()==200){ break; } } // int[] staNos =new int[]{118,119,120,121}; // for (int staNo : staNos){ // ReturnT<String> result = reportToDismantleTheStackHandler.start(staNo); // if (result.getCode()==200){ // break; // } // } } } src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
@@ -49,6 +49,9 @@ if(Cools.isEmpty(wrkMast)){ continue; } if (wrkMast.getIoType()<100 || wrkMast.getIoType()==110){ continue; } if (wrkMast.getWrkSts()!=14 && wrkMast.getWrkSts()!=15){ continue; } @@ -83,27 +86,27 @@ BasDevp basDevp = basDevpService.selectById(staNo); if (basDevp.getWrkNo()!=0){ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); if (wrkMast.getWrkSts()!=2){ if (wrkMast.getWrkSts()!=2 || wrkMast.getIoType()==10){ continue; } boolean wrkTypeSign = fullKM(wrkMast); // boolean wrkTypeSign = fullKM(wrkMast); if (!Cools.isEmpty(wrkMast)){ if (wrkTypeSign){ // if (wrkTypeSign){ ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13); if (result.getCode()==200) { continue; } else { System.out.println(staNo+"失败!"); } }else { ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,23); if (result.getCode()==200) { continue; } else { System.out.println(staNo+"失败!"); } } // }else { // ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,23); // if (result.getCode()==200) { // continue; // } else { // System.out.println(staNo+"失败!"); // } // } } } } src/main/java/com/zy/asrs/task/handler/ReportToDismantleTheStackHandler.java
@@ -50,7 +50,14 @@ public ReturnT<String> start(int staNo) { try { BasDevp basDevp = basDevpService.selectById(staNo); if (!Cools.isEmpty(basDevp) && basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()!=0){ //上传前工作号跟电控约定为9992(你可以自定义) Integer staOther = getStaOther(staNo); if (staOther==0) return SUCCESS; BasDevp basDevpOther = basDevpService.selectById(staOther); if (Cools.isEmpty(basDevpOther) || basDevpOther.getReportSign()==1){ return SUCCESS; } if (!Cools.isEmpty(basDevp) && basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()!=0){ //上传前工作号跟电控约定为9992中控(桁架):码垛完成下发入库信息(你可以自定义) WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); if (Cools.isEmpty(wrkMast) || !wrkMast.getSheetNo().equals("0")){ return SUCCESS; @@ -61,7 +68,7 @@ } SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetls); singleMountUnstackingCompleteParam.setStaStart(staNo); singleMountUnstackingCompleteParam.setStaEnd(staNo>119? 135:133); singleMountUnstackingCompleteParam.setStaEnd(staNo>119? 135:131); ReturnT<String> result = null; result = postMesData(barcodeUploadpath,singleMountUnstackingCompleteParam); System.out.println(result); @@ -84,6 +91,8 @@ } wrkMast.setSheetNo("1"); wrkMastService.updateById(wrkMast); basDevp.setReportSign(1); basDevpService.updateById(basDevp); return SUCCESS; }else { log.error("条码上传中控失败"); @@ -135,4 +144,19 @@ } return SUCCESS; } public Integer getStaOther(Integer staNo){ switch (staNo){ case 118: return 119; case 119: return 118; case 120: return 121; case 121: return 120; default: return 0; } } } src/main/java/com/zy/asrs/task/handler/WrkMastStaInItHandler.java
@@ -41,7 +41,7 @@ if (Cools.isEmpty(wrkMastSta)){ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp); wrkMastSta1.setType(1); //类型 1:非空 2:空板 wrkMastSta1.setWrkType(3); //工作类型 1:取(叠盘) 2:拆盘 3:取放 5:满取 6:满放 wrkMastSta1.setWrkType(3); //工作类型 1:取(叠盘) 2:拆盘 3:取放 5:满取 6:满放 wrkMastStaService.insert(wrkMastSta1); } break; @@ -49,15 +49,15 @@ if (Cools.isEmpty(wrkMastSta)){ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp); wrkMastSta1.setType(fullKM(wrkMast)? 1:2); wrkMastSta1.setWrkType(1); wrkMastSta1.setWrkType(1);//工作类型 1:取(叠盘) 2:拆盘 3:取放 5:满取 6:满放 wrkMastStaService.insert(wrkMastSta1); }; break; case 22://2:放 case 22://2:放(拆盘) if (Cools.isEmpty(wrkMastSta)){ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp); wrkMastSta1.setType(fullKM(wrkMast)? 1:2); wrkMastSta1.setWrkType(5); wrkMastSta1.setWrkType(5);//工作类型 1:取(叠盘) 2:拆盘 3:取放 5:满取 6:满放 wrkMastStaService.insert(wrkMastSta1); }; break; src/main/java/com/zy/common/service/CommonService.java
@@ -297,13 +297,14 @@ log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); // throw new CoolException("入库路径不存在"); crnNo = 0; } staNo = basDevpService.selectById(staDesc.getCrnStn()); if (!staNo.getAutoing().equals("Y")) { }else { staNo = basDevpService.selectById(staDesc.getCrnStn()); if (!staNo.getAutoing().equals("Y")) { // throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用"); crnNo = 0; crnNo = 0; } startupDto.setStaNo(staNo.getDevNo()); } startupDto.setStaNo(staNo.getDevNo()); } // 更新库位排号 src/main/java/com/zy/common/web/WcsController.java
@@ -109,6 +109,59 @@ return R.ok().add(dto); } @PostMapping("/pakin/empty/loc/v1") @ResponseBody public synchronized R getLocNoEmpty(@RequestBody SearchLocParam param) { log.info("收到WCS入库接口请求====>>入参:{}", param); if (Cools.isEmpty(param.getIoType())) { return R.error("入出库类型不能为空"); } if (Cools.isEmpty(param.getSourceStaNo())) { return R.error("源站编号不能为空"); } List<WaitPakin> waitPakins = null; if (param.getIoType() == 1) { if (Cools.isEmpty(param.getBarcode())) { return R.error("条码不能为空"); } waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); if (Cools.isEmpty(waitPakins)) { WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); if (wrkMast != null && wrkMast.getIoType() == 103) { return R.parse(CodeRes.PICK_600); } return R.parse(CodeRes.NO_COMB_700); } int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); if (countLoc > 0 || countWrk > 0) { return R.error(CodeRes.EXIST_500); } } if (Cools.isEmpty(param.getLocType1())){ return R.error("高低检测信号不能为空"); } // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatusEmpty(param.getSourceStaNo(), true); sourceStaNo.setLocType1(param.getLocType1()); LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); StartupDto dto = null; switch (param.getIoType()) { case 10://空托盘入库 dto = emptyPlateInEmpty(param.getSourceStaNo(), locTypeDto, param.getBarcode()); break; // case 201://自动补空板任务 // dto = emptyPlateIn201(param.getSourceStaNo(), locTypeDto, param.getBarcode()); // break; default: break; } log.info("WCS入库接口返参:{},托盘码:{}", dto, param.getBarcode()); return R.ok().add(dto); } @PostMapping("/auto/emptyIn/v1") @ResponseBody public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto){ @@ -290,6 +343,58 @@ return dto; } @Transactional public StartupDto emptyPlateInEmpty(Integer devpNo, LocTypeDto locTypeDto, String barcode) { // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatusEmpty(devpNo, true); // 检索库位 StartupDto dto = commonService.getLocNo(1, 10, devpNo, null,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(2L); // 工作状态:生成入库ID wrkMast.setIoType(10); // 入出库状态:10.空板入库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); wrkMast.setFullPlt("N"); // 满板 wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("Y"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setBarcode(barcode); wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(new Date()); wrkMast.setModiTime(new Date()); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 更新源站点信息 sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiTime(new Date()); if (!basDevpService.updateById(sourceStaNo)){ throw new CoolException("更新源站失败"); } // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.入库预约 locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(dto.getLocNo()+"目标库位已被占用"); } return dto; } /*...........................徐工汉云..............以下.............上饶江铜...........................*/ /*............................Created by Monkey D. Luffy on 2023.07.19.............................*/