| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.beust.jcommander.internal.Lists; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | |
| | | public class AgvWrkMastHandler extends AbstractHandler<String> { |
| | | |
| | | //入库类型数组 |
| | | private static final int[] IN_TYPE_ARRAY = new int[1]; |
| | | private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>(){{ |
| | | add(1); |
| | | }}; |
| | | //private static final int[] IN_TYPE_ARRAY = {1}; |
| | | //出库类型数组 |
| | | private static final int[] OUT_TYPE_ARRAY = new int[1]; |
| | | private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>(){{ |
| | | // add(101); |
| | | }}; |
| | | //private static final int[] OUT_TYPE_ARRAY = {101}; |
| | | //移库类型数组 |
| | | private static final int[] MOVE_TYPE_ARRAY = new int[1]; |
| | | private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>(){{ |
| | | add(11);add(101); add(12); add(53); add(101); add(108); add(111); add(112); |
| | | |
| | | |
| | | }}; |
| | | //private static final int[] MOVE_TYPE_ARRAY = {11,12}; |
| | | |
| | | @Value("${agvBasDev.maxWorkNum}") |
| | | private int maxWrokNum; |
| | | @Value("${mes.url}") |
| | | private String url; |
| | | @Value("${mes.getTokenUrl}") |
| | | private String getTokenUrl; |
| | | @Value("${mes.orderReportPath}") |
| | | private String orderReportPath; |
| | | @Value("${mes.pakinReportPath}") |
| | |
| | | |
| | | @Transactional |
| | | public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | try{ |
| | | int wrkNo = agvWrkMast.getWrkNo(); |
| | | String barcode = agvWrkMast.getBarcode(); |
| | |
| | | } else { |
| | | agvBasDevp = agvWrkMast.getSourceLocNo(); |
| | | } |
| | | |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | //修改工作档状态为207.库存更新完成 |
| | | agvWrkMast.setWrkSts(207L); |
| | |
| | | } |
| | | |
| | | //上报mes |
| | | MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | if(!Cools.isEmpty(param)){ |
| | | doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | } |
| | | // MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | // if(!Cools.isEmpty(param)){ |
| | | // doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | // } |
| | | |
| | | return SUCCESS; |
| | | //return SUCCESS; |
| | | }catch (Exception e){ |
| | | log.error(""+e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | reportMes(agvWrkMast,agvWrkDetlListOld); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | |
| | | @Transactional |
| | | public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { |
| | | |
| | | try{ |
| | | |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | |
| | | try{ |
| | | |
| | | Date now = new Date(); |
| | | int wrkNo = agvWrkMast.getWrkNo(); |
| | |
| | | } |
| | | |
| | | //上报mes |
| | | MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | if(!Cools.isEmpty(param)){ |
| | | doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | } |
| | | // MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | // if(!Cools.isEmpty(param)){ |
| | | // doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | // } |
| | | |
| | | return SUCCESS; |
| | | }catch (Exception e){ |
| | | log.error(""+e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | reportMes(agvWrkMast,agvWrkDetlListOld); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { |
| | | try{ |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | try{ |
| | | int wrkNo = agvWrkMast.getWrkNo(); |
| | | String orderNo = getOrderNoByWrkNo(wrkNo); |
| | | String agvBasDevp = ""; |
| | |
| | | }); |
| | | } |
| | | //上报mes |
| | | MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | if(!Cools.isEmpty(param)){ |
| | | doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | } |
| | | return SUCCESS; |
| | | // MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); |
| | | // if(!Cools.isEmpty(param)){ |
| | | // doHttpRequest(param,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | // } |
| | | // reportMes(agvWrkMast,agvWrkDetlListOld); |
| | | // return SUCCESS; |
| | | }catch (Exception e){ |
| | | log.error(""+e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | reportMes(agvWrkMast,agvWrkDetlListOld); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Transactional |
| | |
| | | return wrkMast; |
| | | } |
| | | |
| | | private Object getReportParamByIoType(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ |
| | | private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ |
| | | if(Cools.isEmpty(agvWrkDetls)){ |
| | | return null; |
| | | return ; |
| | | } |
| | | //区分不同任务类型的上报方式 |
| | | |
| | | if(Arrays.asList(IN_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ |
| | | |
| | | if(IN_TYPE_LIST.contains(agvWrkMast.getIoType())){ |
| | | reportMesPakinOrder(agvWrkMast,agvWrkDetls); |
| | | } |
| | | if(Arrays.asList(OUT_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ |
| | | |
| | | if(OUT_TYPE_List.contains(agvWrkMast.getIoType())){ |
| | | reportMesPakoutOrder(agvWrkMast,agvWrkDetls); |
| | | } |
| | | if(Arrays.asList(MOVE_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ |
| | | return generateMesParam(agvWrkMast,agvWrkDetls); |
| | | if(MOVE_TYPE_List.contains(agvWrkMast.getIoType())){ |
| | | generateMesParam(agvWrkMast,agvWrkDetls); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ |
| | |
| | | MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); |
| | | mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); |
| | | mesPakinReportParam.setBizType("0"); |
| | | mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo())); |
| | | mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode().trim(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo())); |
| | | mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); |
| | | |
| | | doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"上报mes入库信息",url,pakinReportPath,null,"127.0.0.1"); |
| | | } |
| | | |
| | | } |
| | |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); |
| | | mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString()); |
| | | mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr()); |
| | | mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getBatch())); |
| | | mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim())); |
| | | mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); |
| | | |
| | | doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"上报mes单据信息",url,orderReportPath,null,"127.0.0.1"); |
| | | doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"上报mes出库信息",url,pakoutReportPath,null,"127.0.0.1"); |
| | | |
| | | } |
| | | } |
| | | |
| | | private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ |
| | | private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ |
| | | |
| | | if(agvWrkMast.getIoType() == 53){ |
| | | String locNo = agvWrkMast.getLocNo(); |
| | |
| | | |
| | | List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>(); |
| | | List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>(); |
| | | List<MesOrderReportParam.RecordCustomFieldBaseCO.CustomField> customFields = new ArrayList<>(); |
| | | |
| | | MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO(); |
| | | recordCustomFieldBaseCO.setCustomFields(customFields); |
| | | param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO); |
| | | |
| | | //添加transferOrderItem属性 |
| | | MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem(); |
| | | transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo()); |
| | | //调拨 |
| | | if(agvWrkMast.getLocNo().contains("YZ")){ |
| | | transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); |
| | | }else { |
| | | //出库默认仓位 |
| | | String floor = agvWrkMast.getLocNo().split("F")[1]; |
| | | transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor)); |
| | | } |
| | | transferOrderItems.add(transferOrderItem); |
| | | transferOrderItem.setInventoryDetails(inventoryDetails); |
| | | |
| | |
| | | for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ |
| | | MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail(); |
| | | //添加amount属性 |
| | | MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(); |
| | | amount.setAmount(agvWrkDetl.getAnfme()); |
| | | amount.setUnitName(agvWrkDetl.getUnit()); |
| | | MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null); |
| | | inventoryDetail.setAmount(amount); |
| | | //添加bizKey属性 |
| | | MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(); |
| | | bizKey.setBatchNo(agvWrkDetl.getThreeCode()); |
| | | MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim()); |
| | | inventoryDetail.setBizKey(bizKey); |
| | | //添加inventoryDetail属性 |
| | | inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); |
| | |
| | | inventoryDetail.setQcStatus(1); |
| | | inventoryDetail.setStorageStatus(1); |
| | | inventoryDetails.add(inventoryDetail); |
| | | //添加销售订单号 |
| | | MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c",agvWrkDetl.getThreeCode().trim()); |
| | | customFields.add(customField); |
| | | } |
| | | |
| | | return param; |
| | | doHttpRequest(param,getMesTokenInfo(),"上报mes调拨信息",url,orderReportPath,null,"127.0.0.1"); |
| | | |
| | | } |
| | | |
| | | //获取mes token信息 |
| | |
| | | param.put("appKey",appKey); |
| | | param.put("appSecret",appSecret); |
| | | |
| | | JSONObject jsonObject = doHttpRequest(param,null, "获取MesToken", url, getTokenPath, null, "127.0.0.1"); |
| | | JSONObject jsonObject = doHttpRequest(param,null, "获取MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); |
| | | |
| | | Map<String,Object> headParam = new HashMap<>(); |
| | | headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); |
| | | |
| | | return headParam; |
| | | |
| | | } |
| | | |
| | | //根据楼层默认出库仓位 |
| | | private String getTargetLocationByFloor(String f){ |
| | | int floor = Integer.parseInt(f); |
| | | if(floor == 1){ |
| | | return "WH-000"; |
| | | } |
| | | |
| | | if(floor == 2){ |
| | | return "WH-000"; |
| | | } |
| | | |
| | | if(floor == 3){ |
| | | return "WH-000"; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){ |
| | |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | |
| | | if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){ |
| | | if(Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200){ |
| | | throw new CoolException(jsonObject.get("dsc").toString()); |
| | | } |
| | | |
| | | success = true; |
| | | return jsonObject; |
| | | |
| | | // String succeed = jsonObject.get("succeed").toString(); |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |