src/main/java/com/zy/asrs/controller/MobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/OrderDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/OneLouHangJiaScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/OneLouHangJiaHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/web/WcsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -213,12 +213,12 @@ return R.ok("组托成功"); } @RequestMapping("/truss/comd/auth") @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库") public R trussComb2(@RequestBody PalletizingCompleteParam combParam){ mobileService.trussComb2(combParam, getUserId()); return R.ok("组托成功"); } // @RequestMapping("/truss/comd/auth") // @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库") // public R trussComb2(@RequestBody PalletizingCompleteParam combParam){ // mobileService.trussComb2(combParam, getUserId()); // return R.ok("组托成功"); // } @RequestMapping("/comb/auth") @ManagerAuth(memo = "组托") src/main/java/com/zy/asrs/controller/OpenController.java
@@ -244,7 +244,7 @@ // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.palletizingComplete(param); openService.palletizingCompleteS(param); return R.ok(param); } src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -299,6 +299,13 @@ @TableField("tk_type") private Integer tkType; /** * 卷信息ID */ @ApiModelProperty(value= "卷信息ID") @TableField("roll_up") private Long rollUp; public OrderDetl() {} public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) { src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -20,8 +20,9 @@ public class TrussCombParam { private String barcode;// 字符串 托盘码 订单共用 //上传 private Integer palletizingNo = 147;// 是 字符串 码垛位编号 private Integer staStart = 147;// 是 字符串 码垛位编号 private Integer souSta;// 字符串 托盘码 订单共用 private Integer palletizingNo;// 是 字符串 码垛位编号 private Integer staStart;// 是 字符串 码垛位编号 private Integer palletizingNo2;// 是 字符串 目标码垛位编号 订单共用 //上传 private Integer staEnd;// 是 字符串 目标码垛位编号 订单共用 //上传 private String boxType;// 是 字符串 木箱类型 brand //上传 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -17,7 +17,9 @@ import com.zy.common.constant.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; import com.zy.common.model.LocTypeDto; import com.zy.common.model.MesCombParam; import com.zy.common.model.StartupDto; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; @@ -39,11 +41,7 @@ @Service public class MobileServiceImpl implements MobileService { @Value("${srHangJia.url}") private String srHangJiaUrl; @Value("${srHangJia.reportInPath}") private String reportOutPath; @Autowired private MatService matService; @@ -90,34 +88,158 @@ @Override @Transactional public void trussComb(TrussCombParam param, Long userId) { param.setBarcode(String.valueOf(new Date().getTime())); Date now = new Date(); if (param.getSouSta()==145){ param.setBarcode(String.valueOf(now.getTime())); }else { if (Cools.isEmpty(param.getBarcode())){ throw new CoolException("参数:托盘码为空"); } } //判断param参数 if (Cools.isEmpty(param.getPalletizingNo())){ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getBoxType())){ throw new CoolException("参数:木箱类型 boxType为空"); throw new CoolException("参数:站点编号为空"); }else if (Cools.isEmpty(param.getOrderNo())){ throw new CoolException("参数:退货单单号 orderNo为空"); }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){ throw new CoolException("参数:物料明细 matLists为空"); }else if (param.getSouSta()==145 || param.getMatList().size() != 1){ } param.setStaEnd(param.getPalletizingNo2()); Order order = orderService.selectByNo(param.getOrderNo()); if (Cools.isEmpty(order)){ throw new CoolException("未查询到此订单,单号:"+param.getOrderNo()); } DocType docType = docTypeService.selectById(order.getDocType()); if (Cools.isEmpty(docType) || !docType.getDocName().equals("退货入库单")){ throw new CoolException("单号:"+param.getOrderNo()+"不是退货入库单"); } try{ ReturnT<String> success = new PostMesDataUtils().postMesData("桁架上位软件", srHangJiaUrl, reportOutPath, param); if (success.getCode()!=200){ throw new CoolException("组托失败"); List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){ throw new CoolException("未查询到此订单明细,单号:"+param.getOrderNo()); } List<String> orderBoxNoList = new ArrayList<>(); for (OrderDetl orderDetl: orderDetls){ if (orderDetl.getWorkQty()==0){ orderBoxNoList.add(orderDetl.getBatch()); } } catch (Exception e){ throw new CoolException("组托失败"); } if (orderBoxNoList.size()==0 || orderBoxNoList.size()<param.getMatList().size()){ throw new CoolException("单号:"+param.getOrderNo()+" 退货数量大于明细数量"); } List<String> matListBoxNoList = new ArrayList<>(); for (TrussCombParam.MatList matList: param.getMatList()){ if (!orderBoxNoList.contains(matList.getBoxNo())){ throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库"); }else { matListBoxNoList.add(matList.getBoxNo()); } } List<OrderDetl> orderDetlList = new ArrayList<>(); for (OrderDetl orderDetl: orderDetls){ if (matListBoxNoList.contains(orderDetl.getBatch())){ orderDetl.setBrand("1"); orderDetlList.add(orderDetl); } } String matnr = null; List<WaitPakin> waitPakins = new ArrayList<>(); for (OrderDetl orderDetl:orderDetlList){ Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(orderDetl.getMatnr() + "商品档案不存在"); } matnr = mat.getMatnr(); WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(orderDetl.getModel()); //批次 waitPakin.setSpecs(orderDetl.getSpecs()); //规格 waitPakin.setBatch(orderDetl.getBatch()); //木箱编码 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(orderDetl.getOrigin()); //木箱在托盘上的位置 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(orderDetl.getAnfme()); // 木箱中铜箔数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(orderDetl.getRollUp()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } waitPakins.add(waitPakin); } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(1L); // 工作状态:生成入库ID wrkMast.setIoType(1); // 入出库状态:1.入库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); wrkMast.setBarcode(param.getBarcode()); // 托盘码 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(0); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 生成工作档明细 waitPakins.forEach(waitPakin -> { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(waitPakin); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); wrkDetl.setRollUp(waitPakin.getRollUp()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } }); // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.入库预约 locMast.setModiTime(now); if (!locMastService.updateById(locMast)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(dto.getLocNo()+"目标库位已被占用"); } } //wms入库组托 退库单退库组托 @Override @Transactional public void trussCombOrder(TrussCombParam param, Long userId) { param.setBarcode(String.valueOf(new Date().getTime())); Date now = new Date(); param.setBarcode(String.valueOf(now.getTime())); //判断param参数 if (Cools.isEmpty(param.getPalletizingNo())){ @@ -165,20 +287,91 @@ orderDetlList.add(orderDetl); } } String matnr = null; List<WaitPakin> waitPakins = new ArrayList<>(); TrussCombParam trussCombParam = new TrussCombParam(param, order, orderDetlList); try{ ReturnT<String> success = new PostMesDataUtils().postMesData("桁架上位软件", srHangJiaUrl, reportOutPath, trussCombParam); if (success.getCode()!=200){ throw new CoolException("组托失败"); for (OrderDetl orderDetl:orderDetlList){ Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(orderDetl.getMatnr() + "商品档案不存在"); } } catch (Exception e){ throw new CoolException("组托失败"); matnr = mat.getMatnr(); WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(orderDetl.getModel()); //批次 waitPakin.setSpecs(orderDetl.getSpecs()); //规格 waitPakin.setBatch(orderDetl.getBatch()); //木箱编码 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(orderDetl.getOrigin()); //木箱在托盘上的位置 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(orderDetl.getAnfme()); // 木箱中铜箔数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(orderDetl.getRollUp()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } waitPakins.add(waitPakin); } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(1L); // 工作状态:生成入库ID wrkMast.setIoType(1); // 入出库状态:1.入库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); wrkMast.setBarcode(param.getBarcode()); // 托盘码 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(0); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 生成工作档明细 waitPakins.forEach(waitPakin -> { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(waitPakin); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); wrkDetl.setRollUp(waitPakin.getRollUp()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } }); // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.入库预约 locMast.setModiTime(now); if (!locMastService.updateById(locMast)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(dto.getLocNo()+"目标库位已被占用"); } } @Override src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -13,7 +13,9 @@ import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.mapper.TagMapper; import com.zy.asrs.service.*; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.MatUtils; import com.zy.asrs.utils.PostMesDataUtils; import com.zy.common.model.DetlDto; import com.zy.common.model.LocTypeDto; import com.zy.common.model.StartupDto; @@ -857,107 +859,109 @@ // } if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0 || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0 || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){ throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托"); } Date now = new Date(); List<WaitPakin> waitPakins = new ArrayList<>(); String matnr = null; for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ long rollUp = new Date().getTime(); Mat mat = matService.selectByMatnr(matList.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(matList.getMatnr() + "商品档案不存在"); } matnr = mat.getMatnr(); WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(matList.getBatch()); //批次 waitPakin.setSpecs(matList.getSpecs()); //规格 waitPakin.setBatch(matList.getBoxNo()); //木箱编码 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置 waitPakin.setIoStatus("Y"); // 入出状态 waitPakin.setAnfme(matList.getAnfme().doubleValue()); // 木箱中铜箔数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(rollUp); if (!Cools.isEmpty(matList.getMatDetlList())){ for (PalletizingCompleteParam.MatDetlList matDetlList:matList.getMatDetlList()){ LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail(); locDetlRullUpDetail.setUuid(rollUp); locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl()); locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString()); locDetlRullUpDetailService.insert(locDetlRullUpDetail); } } if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } waitPakins.add(waitPakin); } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo2(), matnr,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(1L); // 工作状态:生成入库ID wrkMast.setIoType(1); // 入出库状态:1.入库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setCrnNo(dto.getCrnNo()); wrkMast.setSourceStaNo(dto.getSourceStaNo()); wrkMast.setStaNo(dto.getStaNo()); wrkMast.setLocNo(dto.getLocNo()); wrkMast.setBarcode(param.getBarcode()); // 托盘码 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(0); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 生成工作档明细 waitPakins.forEach(waitPakin -> { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(waitPakin); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } }); // 更新目标库位状态 LocMast locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.入库预约 locMast.setModiTime(now); if (!locMastService.updateById(locMast)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(dto.getLocNo()+"目标库位已被占用"); } // if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0 // || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0 // || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){ // throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托"); // } // // // Date now = new Date(); // List<WaitPakin> waitPakins = new ArrayList<>(); // String matnr = null; // for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ // long rollUp = new Date().getTime(); // Mat mat = matService.selectByMatnr(matList.getMatnr()); // if (Cools.isEmpty(mat)) { // throw new CoolException(matList.getMatnr() + "商品档案不存在"); // } // matnr = mat.getMatnr(); // WaitPakin waitPakin = new WaitPakin(); // waitPakin.sync(mat); // waitPakin.setModel(matList.getBatch()); //批次 // waitPakin.setSpecs(matList.getSpecs()); //规格 // waitPakin.setBatch(matList.getBoxNo()); //木箱编码 // waitPakin.setBrand(param.getBoxType()); //木箱类型 // waitPakin.setZpallet(param.getBarcode()); //托盘码 // waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置 // waitPakin.setIoStatus("Y"); // 入出状态 // waitPakin.setAnfme(matList.getAnfme().doubleValue()); // 木箱中铜箔数量 // waitPakin.setStatus("Y"); // 状态 // waitPakin.setAppeUser(userId); // waitPakin.setAppeTime(now); // waitPakin.setModiUser(userId); // waitPakin.setModiTime(now); // waitPakin.setRollUp(rollUp); // if (!Cools.isEmpty(matList.getMatDetlList())){ // for (PalletizingCompleteParam.MatDetlList matDetlList:matList.getMatDetlList()){ // LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail(); // locDetlRullUpDetail.setUuid(rollUp); // locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl()); // locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString()); // locDetlRullUpDetailService.insert(locDetlRullUpDetail); // } // } // if (!waitPakinService.insert(waitPakin)) { // throw new CoolException("保存入库通知档失败"); // } // waitPakins.add(waitPakin); // } // LocTypeDto locTypeDto = new LocTypeDto(); // locTypeDto.setLocType1((short)1); // // StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo2(), matnr,null,null, locTypeDto); // // int workNo = dto.getWorkNo(); // // 生成工作档 // WrkMast wrkMast = new WrkMast(); // wrkMast.setWrkNo(workNo); // wrkMast.setIoTime(new Date()); // wrkMast.setWrkSts(1L); // 工作状态:生成入库ID // wrkMast.setIoType(1); // 入出库状态:1.入库 // wrkMast.setIoPri(13D); // 优先级 // wrkMast.setCrnNo(dto.getCrnNo()); // wrkMast.setSourceStaNo(dto.getSourceStaNo()); // wrkMast.setStaNo(dto.getStaNo()); // wrkMast.setLocNo(dto.getLocNo()); // wrkMast.setBarcode(param.getBarcode()); // 托盘码 // wrkMast.setFullPlt("Y"); // 满板:Y // wrkMast.setPicking("N"); // 拣料 // wrkMast.setExitMk("N"); // 退出 // wrkMast.setEmptyMk("N"); // 空板 // wrkMast.setLinkMis("Y"); // wrkMast.setCtnType(0); // 容器类型 // // 操作人员数据 // wrkMast.setAppeTime(now); // wrkMast.setModiTime(now); // boolean res = wrkMastService.insert(wrkMast); // if (!res) { // throw new CoolException("保存工作档失败"); // } // // 生成工作档明细 // waitPakins.forEach(waitPakin -> { // WrkDetl wrkDetl = new WrkDetl(); // wrkDetl.sync(waitPakin); // wrkDetl.setWrkNo(wrkMast.getWrkNo()); // wrkDetl.setIoTime(wrkMast.getIoTime()); // wrkDetl.setAppeTime(now); // wrkDetl.setModiTime(now); // if (!wrkDetlService.insert(wrkDetl)) { // throw new CoolException("保存工作明细失败"); // } // }); // // 更新目标库位状态 // LocMast locMast = locMastService.selectById(dto.getLocNo()); // if (locMast.getLocSts().equals("O")){ // locMast.setLocSts("S"); // S.入库预约 // locMast.setModiTime(now); // if (!locMastService.updateById(locMast)){ // throw new CoolException("改变库位状态失败"); // } // } else { // throw new CoolException(dto.getLocNo()+"目标库位已被占用"); // } } src/main/java/com/zy/asrs/task/OneLouHangJiaScheduler.java
New file @@ -0,0 +1,31 @@ package com.zy.asrs.task; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.OneLouHangJiaHandler; import com.zy.asrs.task.handler.RailwayPlatformHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * Created by Monkey D. Luffy on 2023.09.17 * 徐工汉云..............以下.............上饶江铜.............退库拆码垛 */ @Component public class OneLouHangJiaScheduler { @Autowired private OneLouHangJiaHandler oneLouHangJiaHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){//退库拆码垛 int[] staNos =new int[]{147}; for (int staNo : staNos){ ReturnT<String> result = oneLouHangJiaHandler.start(staNo); if (result.getCode()==200){ break; } } } } src/main/java/com/zy/asrs/task/handler/OneLouHangJiaHandler.java
New file @@ -0,0 +1,127 @@ package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.BalconyWrkMastParam; import com.zy.asrs.entity.param.TrussCombParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.PostMesDataUtils; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * Created by Monkey D. Luffy on 2023.09.17 * 徐工汉云..............以下.............上饶江铜.............退库拆码垛 */ @Slf4j @Service @Transactional public class OneLouHangJiaHandler extends AbstractHandler<String> { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private CommonService commonService; @Autowired private StaDescService staDescService; @Autowired private ApiLogService apiLogService; @Autowired private BasDevpService basDevpService; @Autowired private OrderService orderService; @Value("${srHangJia.url}") private String srHangJiaUrl; @Value("${srHangJia.reportInPath}") private String reportOutPath; public ReturnT<String> start(int staNo) { try { BasDevp basDevp = basDevpService.selectById(staNo); if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0 || !basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y") || !basDevp.getInEnable().equals("Y")){ return FAIL; } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() .eq("wrk_no", basDevp.getWrkNo()).eq("source_sta_no",145)); if (Cools.isEmpty(wrkMast) || wrkMast.getIoType()!=1 || wrkMast.getWrkSts()!=2){ return FAIL; } // TrussCombParam trussCombParam = new TrussCombParam(param, order, orderDetlList); // try{ // ReturnT<String> success = postMesData(reportOutPath, trussCombParam); // if (success.getCode()!=200){ // throw new CoolException("桁架上位软件退库失败"); // } // } catch (Exception e){ // throw new CoolException("桁架上位软件退库失败"); // } }catch (Exception e){ log.error("异常!!!"+e); return FAIL; } return FAIL; } private ReturnT<String> postMesData(String erpPath,Object combParam){ if(combParam != null){ String response = ""; boolean success = false; try { response = new HttpHandler.Builder() .setUri(srHangJiaUrl) .setPath(erpPath) .setJson(JSON.toJSONString(combParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getString("result").equals("Y")) { success = true; } else { log.error("请求接口失败!!!url:{};request:{};response:{}"+srHangJiaUrl+erpPath, JSON.toJSONString(combParam), response); throw new CoolException("上报erp系统失败"); } } catch (Exception e) { log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "桁架上位软件退库", srHangJiaUrl + erpPath, null, srHangJiaUrl, JSON.toJSONString(combParam), response, success ); } catch (Exception e) { log.error("", e); } } } return SUCCESS; } } src/main/java/com/zy/common/web/WcsController.java
@@ -143,9 +143,10 @@ } // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatusEmpty(param.getSourceStaNo(), true); sourceStaNo.setLocType1(param.getLocType1()); LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); // BasDevp sourceStaNo = basDevpService.checkSiteStatusEmpty(param.getSourceStaNo(), true); // sourceStaNo.setLocType1(param.getLocType1()); LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = null; switch (param.getIoType()) {