|  |  | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  | import com.zy.asrs.mapper.ManLocDetlMapper; | 
 |  |  | import com.zy.asrs.mapper.MatMapper; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.utils.MatUtils; | 
 |  |  | import com.zy.common.constant.MesConstant; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private MatService matService; | 
 |  |  |     @Autowired | 
 |  |  |     private MatMapper matMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private WaitPakinService waitPakinService; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |         return R.ok("入库启动成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public R pdaFxprk(FxprkParam param, Long userId) { | 
 |  |  |  | 
 |  |  |         // 根据包装组号获取到木箱卷信息 | 
 |  |  |         List<Mat> list = matService.selectList(new EntityWrapper<Mat>().in("brand", param.getBoxList().stream().map(FxprkParam.Box::getPackageGroupNo).collect(Collectors.toList()))); | 
 |  |  |         if (list.isEmpty()) { | 
 |  |  |             throw new CoolException("没有查询到该包装组号信息:" + param.getBoxList().toString()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         LocTypeDto locTypeDto = new LocTypeDto(); | 
 |  |  |         locTypeDto.setLocType1((short) 1); | 
 |  |  |         StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0); | 
 |  |  |  | 
 |  |  |         // 返回GWCS目标信息 | 
 |  |  |         boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode()); | 
 |  |  | //        if (!result) { | 
 |  |  | //            throw new CoolException("入库回推入库码头给GWCS失败"); | 
 |  |  | //        } | 
 |  |  |  | 
 |  |  |         int workNo = dto.getWorkNo(); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  |         wrkMast.setWrkNo(workNo); | 
 |  |  |         wrkMast.setIoTime(new Date()); | 
 |  |  |         wrkMast.setWrkSts(1L); // 工作状态:设备上走 | 
 |  |  |         wrkMast.setIoType(1); // 入出库状态:1.入库 | 
 |  |  |         wrkMast.setIoPri(13D); // 优先级 | 
 |  |  |         wrkMast.setCrnNo(dto.getCrnNo()); | 
 |  |  |         wrkMast.setSourceStaNo(param.getPalletizingNo()); | 
 |  |  |         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(1); // 容器类型 | 
 |  |  |         // 操作人员数据 | 
 |  |  |         wrkMast.setAppeTime(now); | 
 |  |  |         wrkMast.setAppeUser(userId); | 
 |  |  |         wrkMast.setModiUser(userId); | 
 |  |  |         wrkMast.setModiTime(now); | 
 |  |  |         boolean res = wrkMastService.insert(wrkMast); | 
 |  |  |         if (!res) { | 
 |  |  |             throw new CoolException("保存工作档失败"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         for (Mat obj : list) { | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |             wrkDetl.sync(obj); | 
 |  |  |             wrkDetl.setWrkNo(wrkMast.getWrkNo()); | 
 |  |  |             wrkDetl.setAnfme(1.0); | 
 |  |  |             // 重新定位木箱位置 | 
 |  |  |             for (FxprkParam.Box box :param.getBoxList()) { | 
 |  |  |                 if (box.getPackageGroupNo().equals(obj.getBrand())) { | 
 |  |  |                     if (!box.getBoxPos().equals(obj.getOrigin())) { | 
 |  |  |                         wrkDetl.setOrigin(box.getBoxPos()); | 
 |  |  |                         wrkDetl.setZpallet(param.getBarcode()); | 
 |  |  |                         wrkDetl.setBarcode(param.getBarcode()); | 
 |  |  |                         matMapper.updateBoxPos(box.getPackageGroupNo(), box.getBoxPos(),param.getBarcode()); | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             wrkDetl.setIoTime(now); | 
 |  |  |             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() + "目标库位已被占用"); | 
 |  |  |         } | 
 |  |  |         return R.ok("入库成功"); | 
 |  |  |     } | 
 |  |  |     public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) { | 
 |  |  |         boolean success = false; | 
 |  |  |         // 获取请求头 | 
 |  |  |         Map<String, Object> headers = getHeaders(); | 
 |  |  |  | 
 |  |  |         // 构造请求体 | 
 |  |  |         JSONObject jsonObject = new JSONObject(); | 
 |  |  |         jsonObject.put("workNo", workNo); | 
 |  |  |         jsonObject.put("staNo", staNo); | 
 |  |  |         jsonObject.put("sourceStaNo", palletizingNo); | 
 |  |  |         jsonObject.put("barcode", barcode); | 
 |  |  |         String body = jsonObject.toJSONString(); | 
 |  |  |         String response = ""; | 
 |  |  |         try { | 
 |  |  |             response = new HttpHandler.Builder() | 
 |  |  |                     .setUri(MesConstant.GWCS_IP_PORT) | 
 |  |  |                     .setPath(MesConstant.GWCS_FPKW_URL) | 
 |  |  |                     .setHeaders(headers) | 
 |  |  |                     .setJson(body) | 
 |  |  |                     .build() | 
 |  |  |                     .doPost(); | 
 |  |  |             if (!Cools.isEmpty(response)) { | 
 |  |  |                 success = true; | 
 |  |  | //                // 修改订单状态 4.完成 ===>> 6.已上报 | 
 |  |  | //                if (!orderService.updateSettle(order.getId(), 6L, null)) { | 
 |  |  | //                    throw new CoolException("服务器内部错误,请联系管理员"); | 
 |  |  | //                } | 
 |  |  |             } else { | 
 |  |  |                 log.error("zmws推送入库码头站点接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PAKIN_URL, body, response); | 
 |  |  |                 throw new CoolException("上报mes系统失败"); | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             log.error("入库请求接口失败:{}", e.getMessage()); | 
 |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  | //            return FAIL.setMsg(e.getMessage()); | 
 |  |  |         } finally { | 
 |  |  |             try { | 
 |  |  |                 // 保存接口日志 | 
 |  |  |                 apiLogService.save( | 
 |  |  |                         "入库", | 
 |  |  |                         MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, | 
 |  |  |                         null, | 
 |  |  |                         "127.0.0.1", | 
 |  |  |                         body, | 
 |  |  |                         response, | 
 |  |  |                         success | 
 |  |  |                 ); | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 log.error("", e); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return success; | 
 |  |  |     } | 
 |  |  |     Map<String, Object> getHeaders(){ | 
 |  |  |         Map<String,Object> headers = new HashMap<>(); | 
 |  |  |         headers.put("digi-type","sync "); | 
 |  |  |         headers.put("digi-protocol","raw"); | 
 |  |  |         headers.put("digi-datakey"," XCommon.ImportData"); | 
 |  |  |  | 
 |  |  |         return headers; | 
 |  |  |     } | 
 |  |  |     private Map<String, String> getPackageGroupNoByGwms(List<String> boxNoList) { | 
 |  |  |         Map<String, String> map = null; | 
 |  |  |         Map<String, Object> headers = new HashMap<>(); |