src/main/java/com/zy/asrs/controller/MobileController.java
@@ -195,14 +195,14 @@ } @RequestMapping("/truss/auth") @ManagerAuth(memo = "退库") @ManagerAuth(memo = "退库,1楼桁架退库") public R trussComb(@RequestBody TrussCombParam combParam){ mobileService.trussComb(combParam, getUserId()); return R.ok("组托成功"); } @RequestMapping("/truss/comd/auth") @ManagerAuth(memo = "手动入库") @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库") public R trussComb2(@RequestBody PalletizingCompleteParam combParam){ mobileService.trussComb2(combParam, getUserId()); return R.ok("组托成功"); src/main/java/com/zy/asrs/controller/OpenController.java
@@ -222,7 +222,7 @@ * 中控:码垛完成下发入库信息 */ @PostMapping("/palletizing/complete/auth/v1") @AppAuth(memo = "中控:码垛完成下发入库信息") @AppAuth(memo = "中控(桁架):码垛完成下发入库信息") public synchronized R palletizingComplete(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { @@ -260,10 +260,10 @@ /** * 中控:码垛完成下发入库信息 测试1 * 测试1 入库前输送线写入托盘码,216站测试用 */ @PostMapping("/cs1/auth/v1") @AppAuth(memo = "中控:码垛前上报条码,生成测试工作档") @AppAuth(memo = "") public synchronized R cs1(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { @@ -273,10 +273,10 @@ } /** * 中控:码垛完成下发入库信息 测试2 * 测试2 清除托盘码,216站测试用 Copy */ @PostMapping("/cs2/auth/v1") @AppAuth(memo = "中控:码垛完成下发入库信息,生成测试工作档") @AppAuth(memo = "") public synchronized R cs2(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { @@ -286,10 +286,10 @@ } /** * 中控:码垛完成下发入库信息 测试3 * 测试3 */ @PostMapping("/cs3/auth/v1") @AppAuth(memo = "中控:码垛完成下发入库信息,生成测试工作档") @AppAuth(memo = "") public synchronized R cs3(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { src/main/java/com/zy/asrs/entity/LocMast.java
@@ -50,6 +50,9 @@ @TableField("loc_sts") private String locSts; /** * 徐工汉云拆垛标记 0: 未拆 1: 已拆 2:已处理可下一步(转历史档) */ @ApiModelProperty(value= "") @TableField("sheet_no") private String sheetNo; src/main/java/com/zy/asrs/entity/param/BalconyWrkMastParam.java
New file @@ -0,0 +1,66 @@ package com.zy.asrs.entity.param; import com.core.common.DateUtils; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import lombok.Data; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/6/28 */ @Data public class BalconyWrkMastParam { private Integer balcony;// 字符串 月台 private String boxType;// 是 字符串 木箱类型 private String uuid;// 字符串 时间戳 private String createTime;// 字符串 创建时间yyyy-MM-dd HH:mm:ss private List<MatList> matLists;// 是 列表 拆垛货物信息(2箱,尾箱可能1箱) @Data public static class MatList{ private String matnr;// 是 字符串 物料编码 private String maktx;// 字符串 物料名称 private String boxNo;// 是 字符串 木箱编号(唯一字段,出库依据,出库时按照木箱编号出库) private String position;// 是 字符串 木箱位置(拆垛时需要) private Double weight;// 是 小数型 重量 private Integer anfme;// 数字型 木箱中铜箔数量 private String batch;// 字符串 批次号 private String specs;// 字符串 规格 private List<MatDetlList> matDetlList;// 是 列表 木箱中铜箔信息 } @Data public static class MatDetlList{ private String boxNoDetl;// 是 字符串 铜箔编号(唯一字段) private String positionDetl;// 是 字符串 铜箔位置(拆垛时需要) private Double weightDetl;// 是 小数型 重量 private String batchDetl;// 字符串 批次号 private String specsDetl;// 字符串 规格 } public BalconyWrkMastParam(){}; public BalconyWrkMastParam(WrkMast wrkMast, List<WrkDetl> wrkDetls){ this.uuid= String.valueOf(System.currentTimeMillis()); this.createTime = DateUtils.convert(new Date()); for (WrkDetl wrkDetl : wrkDetls){ this.boxType = wrkDetl.getBrand(); MatList matList = new MatList(); matList.setMatnr(wrkDetl.getMatnr()); matList.setMaktx(wrkDetl.getMaktx()); matList.setBoxNo(wrkDetl.getBatch()); matList.setPosition(wrkDetl.getOrigin()); matList.setWeight(wrkDetl.getWeight()); matList.setAnfme(wrkDetl.getAnfme().intValue()); matList.setSpecs(wrkDetl.getSpecs()); matList.setBatch(wrkDetl.getModel()); this.matLists.add(matList); } }; } src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -11,7 +11,9 @@ private String barcode;// 字符串 托盘码 private String palletizingNo;// 是 字符串 码垛位编号 private String palletizingNo2;// 是 字符串 目标码垛位编号 private String boxType;// 是 字符串 木箱类型 private String uuid;// 字符串 时间戳 private String createTime;// 字符串 创建时间 private List<MatList> matLists;// 是 列表 拆垛货物信息(2箱,尾箱可能1箱) src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -79,9 +79,8 @@ @Override @Transactional public void trussComb(TrussCombParam param, Long userId) { // if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { // throw new CoolException(BaseRes.PARAM); // } param.setUuid(String.valueOf(new Date().getTime())); } @Override @Transactional src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -654,11 +654,12 @@ if (param.getLabResult().equals("OK")){ wrkMast.setWrkSts(54L); wrkMast.setStaNo(144); if (!wrkMastService.updateById(wrkMast)){ throw new CoolException("异常,请重新申请"); } }else if (param.getLabResult().equals("NG")){ wrkMast.setWrkSts(52L); wrkMast.setWrkSts(52L);//重新贴标 if (!wrkMastService.updateById(wrkMast)){ throw new CoolException("异常,请重新申请"); } @@ -819,7 +820,7 @@ wrkMast.setIoTime(now); wrkMast.setWrkSts(51L); // 工作状态:生成入库ID wrkMast.setIoType(202); // 入出库状态:202.拆垛后出库 wrkMast.setIoPri(13D); // 优先级 wrkMast.setIoPri(99D); // 优先级 wrkMast.setSourceStaNo(param.getDevNo$()); wrkMast.setStaNo(140); //贴标站点 // 操作人员数据 src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java
@@ -17,7 +17,7 @@ private BarcodeUploadHandler barcodeUploadHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ private void execute(){//条码上传中控 int[] staNos =new int[]{216,220}; for (int staNo : staNos){ ReturnT<String> result = barcodeUploadHandler.start(staNo); src/main/java/com/zy/asrs/task/BareBoardScheduler.java
@@ -28,7 +28,7 @@ private ConfigService configService; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ private void execute(){//自动调空板出库 Config config = configService.selectById(10468); if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){ bareBoardHandler.start(); src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java
New file @@ -0,0 +1,30 @@ package com.zy.asrs.task; import com.zy.asrs.task.core.ReturnT; 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 RailwayPlatformScheduler { @Autowired private RailwayPlatformHandler railwayPlatformHandler; @Scheduled(cron = "0/3 * * * * ? ") private void execute(){//上报月台 int[] staNos =new int[]{144}; for (int staNo : staNos){ ReturnT<String> result = railwayPlatformHandler.start(staNo); if (result.getCode()==200){ break; } } } } src/main/java/com/zy/asrs/task/handler/BarcodeUploadHandler.java
@@ -53,7 +53,7 @@ public ReturnT<String> start(int staNo) { try { BasDevp basDevp = basDevpService.selectById(staNo); if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getBarcode()) && basDevp.getWrkNo()==9992){ if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getBarcode()) && basDevp.getWrkNo()==9992){ //上传前工作号跟电控约定为9992(你可以自定义) WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode())); if (Cools.isEmpty(waitPakin)){ ReturnT<String> result = null; @@ -102,7 +102,7 @@ "上报erp系统", erpUrl + erpPath, null, "127.0.0.1", erpUrl, JSON.toJSONString(combParam), response, success src/main/java/com/zy/asrs/task/handler/RailwayPlatformHandler.java
New file @@ -0,0 +1,121 @@ 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.*; import com.zy.asrs.entity.param.BalconyWrkMastParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; 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 RailwayPlatformHandler 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("${srXghyErp.url}") private String erpUrl; @Value("${srXghyErp.railwayPlatformpath}") private String railwayPlatformpath; public ReturnT<String> start(int staNo) { try { BasDevp basDevp = basDevpService.selectById(staNo); if (!Cools.isEmpty(basDevp) && !Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()<9990){ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()).eq("sta_no", staNo).eq("wrk_sts", 55L)); if (!Cools.isEmpty(wrkMast)){ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); BalconyWrkMastParam balconyWrkMastParam = new BalconyWrkMastParam(wrkMast, wrkDetls); ReturnT<String> result = null; for (int i=1;i<7;i++){ balconyWrkMastParam.setBalcony(i); result = postMesData(railwayPlatformpath,balconyWrkMastParam); // System.out.println(result); if (result.getCode()==200){ return SUCCESS; }else { log.error("出库信息上传中控失败,月台编号{}",i); } } } } }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(erpUrl) .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:{}"+erpUrl+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( "上报erp系统", erpUrl + erpPath, null, erpUrl, JSON.toJSONString(combParam), response, success ); } catch (Exception e) { log.error("", e); } } } return SUCCESS; } } src/main/resources/application.yml
@@ -62,6 +62,7 @@ url: 192.168.101.250:1082 # 码垛位条码上报 barcodeUploadPath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc railwayPlatformpath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc # 入库上报 inPath: EosServer/PluginGateway.ashx?pluginid=DataIOHttp&func=senddata&userno=ASRS&sign=5DD885999945BA2F3DC9A61F1B857DB3&dataname=cprkwc # 出库上报