| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.Synchronized; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | //移库类型数组 |
| | | private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>() {{ |
| | | add(11); |
| | | add(101); |
| | | add(12); |
| | | add(53); |
| | | add(101); |
| | | add(103); |
| | | add(108); |
| | | add(111); |
| | | add(112); |
| | |
| | | |
| | | @Value("${agvBasDev.maxWorkNum}") |
| | | private int maxWrokNum; |
| | | @Value("${mes.report}") |
| | | private Boolean flag; |
| | | @Value("${mes.url}") |
| | | private String url; |
| | | @Value("${mes.getTokenUrl}") |
| | |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private FlowLogService flowLogService; |
| | | |
| | | @Autowired |
| | | private ReportDataService reportDataService; |
| | | |
| | | |
| | | @Transactional |
| | | public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | try { |
| | | long flowId = snowflakeIdWorker.nextId(); |
| | | Date now = new Date(); |
| | | try{ |
| | | try { |
| | | int wrkNo = agvWrkMast.getWrkNo(); |
| | | String barcode = agvWrkMast.getBarcode(); |
| | | String orderNo = getOrderNoByWrkNo(wrkNo); |
| | |
| | | } |
| | | |
| | | |
| | | Integer pltType = agvWrkMast.getPltType(); |
| | | if (Cools.isEmpty(pltType)) { |
| | | AgvLocMast agvLocMast; |
| | | if (!Cools.isEmpty(agvWrkMast.getLocNo())) { |
| | | agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); |
| | | if (agvLocMast != null) { |
| | | pltType = agvLocMast.getPltType(); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(agvWrkMast.getSourceLocNo())) { |
| | | agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); |
| | | if (agvLocMast != null) { |
| | | pltType = agvLocMast.getPltType(); |
| | | } |
| | | } |
| | | if (pltType != null) { |
| | | agvWrkMast.setPltType(pltType); |
| | | } |
| | | log.info("工作号--{},仓库编码:{}", agvWrkMast.getWrkNo(), agvWrkMast.getPltType()); |
| | | } |
| | | agvWrkMast.setModiTime(new Date()); |
| | | //修改工作档状态为207.库存更新完成 |
| | | agvWrkMast.setWrkSts(207L); |
| | |
| | | // if (!flowLogService.insert(flowLog)) { |
| | | // throw new CoolException("同步半成品调拨单流水记录失败"); |
| | | // } |
| | | agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | log.info("53添加库存日志:{},{}", updateAnfme, JSON.toJSON(agvLocDetl)); |
| | | agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime()); |
| | | } |
| | | //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | |
| | |
| | | agvLocDetl.sync(agvWrkDetl); |
| | | agvLocDetl.setModiTime(now); |
| | | agvLocDetl.setAppeTime(now); |
| | | log.info("57添加库存日志:{}", JSON.toJSON(agvLocDetl)); |
| | | if (!agvLocDetlService.insert(agvLocDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | }); |
| | | // 更新站点 + 库位状态 源库位是站点 |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | break; |
| | | case 58: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); |
| | | break; |
| | | case 108: |
| | | case 114: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | //更新库存明细 |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | break; |
| | | case 109: |
| | | // 库位 -- 接驳位 / 库位 |
| | | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | } |
| | | break; |
| | | case 111: |
| | | // 库位 -- 接驳位 / 库位 |
| | | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | | |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | } |
| | | break; |
| | | case 112: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { |
| | | AgvLocDetl locDetl = new AgvLocDetl(); |
| | | locDetl.setLocNo(agvWrkMast.getLocNo()); |
| | | locDetl.sync(agvWrkDetl); |
| | | locDetl.setModiTime(new Date()); |
| | | log.info("112添加库存日志:{}", JSON.toJSON(locDetl)); |
| | | agvLocDetlService.insert(locDetl); |
| | | } |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | } |
| | | break; |
| | | case 113: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | } |
| | | break; |
| | | case 121: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | //更新库存明细 |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | break; |
| | | |
| | | default: |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | } |
| | | // else { |
| | | // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | |
| | | // agvWrkMastService.updateById(agvWrkMast); |
| | | // } |
| | | |
| | | if(!isJSON(orderNo)){ |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | orderService.checkComplete(orderNo, pltType); |
| | | } else { |
| | | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); |
| | | Integer finalPltType = pltType; |
| | | maps.forEach(map -> { |
| | | String o = map.get("orderNo").toString(); |
| | | orderService.checkComplete(o, agvWrkMast.getPltType()); |
| | | orderService.checkComplete(o, finalPltType); |
| | | }); |
| | | } |
| | | |
| | |
| | | } |
| | | //TODO |
| | | //暂时加上trycatch |
| | | try { |
| | | reportMes(agvWrkMast, agvWrkDetlListOld); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | reportMes(agvWrkMast, agvWrkDetlListOld); |
| | | return SUCCESS; |
| | | } |
| | | |
| | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | //修改源库位状态为O |
| | | if (agvWrkMast.getIoType() == 110) { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); |
| | | } |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | if (agvWrkMast.getIoType() == 101) { |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | //生成空板入库任务 |
| | | Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); |
| | | try { |
| | |
| | | agvBasDevp.setLocSts("R"); |
| | | agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2))); |
| | | agvBasDevpService.updateById(agvBasDevp); |
| | | }catch (Exception e){ |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | } |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | if(!isJSON(orderNo)){ |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo); |
| | | }else{ |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | } else { |
| | | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); |
| | | maps.forEach(map -> { |
| | | String o = map.get("orderNo").toString(); |
| | |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); |
| | | if (agvWrkMast.getIoType() == 101) { |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | } |
| | | |
| | | //生成AGV工作历史档 |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | if(!isJSON(orderNo)){ |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo); |
| | | }else{ |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | } else { |
| | | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); |
| | | maps.forEach(map -> { |
| | | String o = map.get("orderNo").toString(); |
| | | orderService.checkComplete(o); |
| | | orderService.checkComplete(o, agvWrkMast.getPltType()); |
| | | }); |
| | | } |
| | | //上报mes |
| | |
| | | log.error("" + e.getMessage()); |
| | | } |
| | | //TODO 张超 |
| | | //reportMes(agvWrkMast, agvWrkDetlListOld); |
| | | reportMes(agvWrkMast, agvWrkDetlListOld); |
| | | return SUCCESS; |
| | | } |
| | | |
| | |
| | | @Synchronized |
| | | public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { |
| | | |
| | | try{ |
| | | try { |
| | | //下发任务 |
| | | int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); |
| | | if(startWrkCode != 0){ |
| | | if (startWrkCode != 0) { |
| | | throw new CoolException("任务下发失败"); |
| | | } |
| | | |
| | | agvWrkMast.setWrkSts(202L); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | if(agvWrkMast.getIoType() == 1){ |
| | | //agvWrkMast.setWrkSts(202L); |
| | | //agvWrkMast.setModiTime(new Date()); |
| | | //boolean b = agvWrkMastService.updateById(agvWrkMast); |
| | | boolean b = agvWrkMastService.updateWrkStsByWrkNo(Math.abs(agvWrkMast.getWrkNo()), 202L); |
| | | if (!b) { |
| | | log.info("更新任务状态失败,{}", agvWrkMast.getWrkNo()); |
| | | throw new CoolException("更新任务状态失败"); |
| | | } else { |
| | | log.info("更新任务状态成功,{}", agvWrkMast.getWrkNo()); |
| | | } |
| | | if (agvWrkMast.getIoType() == 1) { |
| | | //修改AGV入库通知档状态入出状态为Y |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y"); |
| | | } |
| | | return SUCCESS; |
| | | } catch (Exception e) { |
| | | //TODO |
| | | //log.error("修改AGV入库通知档状态入出状态为Y" + e.getMessage()); |
| | | log.error("修改AGV入库通知档状态入出状态为Y,{}", e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | } |
| | |
| | | @Transactional |
| | | @Synchronized |
| | | public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { |
| | | |
| | | |
| | | //下发任务 |
| | | try{ |
| | | try { |
| | | int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); |
| | | if(startWrkCode != 0){ |
| | | if (startWrkCode != 0) { |
| | | throw new CoolException("任务下发失败"); |
| | | } |
| | | return SUCCESS; |
| | | }catch (Exception e){ |
| | | log.error("任务下发失败"+e.getMessage()); |
| | | } catch (Exception e) { |
| | | log.error("任务下发失败" + e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | |
| | |
| | | List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo()); |
| | | //取第一个暂存位,并查询其次数与配置的次数做比较 |
| | | Map<String, Object> devNoMap = devNoMaps.get(0); |
| | | if((int)devNoMap.get("num") < maxWrokNum){ |
| | | if ((int) devNoMap.get("num") < maxWrokNum) { |
| | | agvWrkMast.setLocNo(devNoMap.get("dev_no").toString()); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); |
| | | log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); |
| | | } |
| | | }); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){ |
| | | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) { |
| | | return agvWrkMastList.stream().filter(agvWrkMast -> { |
| | | AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo())); |
| | | if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){ |
| | | if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) { |
| | | System.out.println("source_loc_no > 1"); |
| | | return false; |
| | | } |
| | |
| | | /* |
| | | 生成工作档 |
| | | */ |
| | | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){ |
| | | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) { |
| | | AgvWrkMast wrkMast = new AgvWrkMast(); |
| | | //工作状态 |
| | | wrkMast.setWrkSts(wrkSts); |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false)); |
| | | |
| | | return wrkMast; |
| | | } |
| | | |
| | | private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { |
| | | |
| | | if (Cools.isEmpty(agvWrkDetls)) { |
| | | return; |
| | | } |
| | | List<AgvWrkDetl> data = new ArrayList<>(); |
| | | //区分不同任务类型的上报方式 |
| | | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { |
| | | if (agvWrkDetl.getMatnr().compareTo("39") <= 0) { |
| | | data.add(agvWrkDetl); |
| | | } |
| | | } |
| | | if (!data.isEmpty()) { |
| | | if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) { |
| | | reportMesPakinOrder(agvWrkMast, data); |
| | | } |
| | | if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { |
| | | reportMesPakoutOrder(agvWrkMast, data); |
| | | } |
| | | if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { |
| | | generateMesParam(agvWrkMast, data); |
| | | } |
| | | } |
| | | |
| | | if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) { |
| | | reportMesPakinOrder(agvWrkMast, agvWrkDetls); |
| | | } |
| | | if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { |
| | | reportMesPakoutOrder(agvWrkMast, agvWrkDetls); |
| | | } |
| | | if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { |
| | | generateMesParam(agvWrkMast, agvWrkDetls); |
| | | } |
| | | } |
| | | |
| | | |
| | | private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { |
| | | |
| | |
| | | iteam.setLineNo(orderDetl.getItemNum()); |
| | | iteam.setSupplierCode(order.getSalesman()); |
| | | iteam.setUnit(agvWrkDetl.getUnit()); |
| | | |
| | | iteam.setRemark(agvWrkDetl.getThreeCode()); |
| | | iteams.add(iteam); |
| | | |
| | | mesBuyPakinReportParam.setCode(orderNo); |
| | |
| | | |
| | | } else { |
| | | MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); |
| | | mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); |
| | | //mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); |
| | | mesPakinReportParam.setBizType("0"); |
| | | mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode().trim(), agvWrkDetl.getMatnr(), agvWrkMast.getLocNo())); |
| | | mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(null, agvWrkDetl.getMatnr(), agvWrkMast.getLocNo())); |
| | | mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null)); |
| | | |
| | | doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "上报mes入库信息", url, pakinReportPath, null, "127.0.0.1"); |
| | |
| | | |
| | | //获取mes token信息 |
| | | private Map<String, Object> getMesTokenInfo() { |
| | | Map<String, String> param = new HashMap<>(); |
| | | param.put("appKey", appKey); |
| | | param.put("appSecret", appSecret); |
| | | // Map<String, String> param = new HashMap<>(); |
| | | // param.put("appKey", appKey); |
| | | // param.put("appSecret", appSecret); |
| | | // |
| | | // 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()); |
| | | |
| | | 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; |
| | | |
| | | // return headParam; |
| | | return null; |
| | | } |
| | | |
| | | //根据楼层默认出库仓位 |
| | |
| | | return null; |
| | | } |
| | | |
| | | private JSONObject doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { |
| | | private void doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { |
| | | //保证上报表 |
| | | ReportData reportData = new ReportData(); |
| | | reportData.setReportJson(JSONObject.toJSONString(requestParam)); |
| | | reportData.setMemo(namespace); |
| | | reportData.setCreateTime(new Date()); |
| | | reportData.setReportType("MES"); |
| | | reportDataService.insert(reportData); |
| | | |
| | | String response = ""; |
| | | boolean success = false; |
| | | |
| | | try { |
| | | response = new HttpHandler.Builder().setUri(url).setPath(path).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | |
| | | if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { |
| | | log.info("mes接口调用失败,返回信息:" + jsonObject); |
| | | //TODO 张超 |
| | | //throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); |
| | | } |
| | | success = true; |
| | | return jsonObject; |
| | | |
| | | // String succeed = jsonObject.get("succeed").toString(); |
| | | // String response = ""; |
| | | // boolean success = false; |
| | | // |
| | | // int code = Cools.eq("0",succeed) ? 0 : 1; |
| | | // if(code != 200){ |
| | | // throw new CoolException(jsonObject.get("dsc").toString()); |
| | | // try { |
| | | // response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost(); |
| | | // JSONObject jsonObject = JSON.parseObject(response); |
| | | // |
| | | // if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { |
| | | // log.info("mes接口调用失败,返回信息:" + jsonObject); |
| | | // //TODO 张超 |
| | | // throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); |
| | | // } |
| | | // success = true; |
| | | |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | throw new CoolException(e.getMessage()); |
| | | } finally { |
| | | apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); |
| | | } |
| | | // return jsonObject; |
| | | // |
| | | //// String succeed = jsonObject.get("succeed").toString(); |
| | | //// |
| | | //// int code = Cools.eq("0",succeed) ? 0 : 1; |
| | | //// if(code != 200){ |
| | | //// throw new CoolException(jsonObject.get("dsc").toString()); |
| | | //// } |
| | | //// success = true; |
| | | // |
| | | // } catch (Exception e) { |
| | | // log.error(e.getMessage()); |
| | | // throw new CoolException(e.getMessage()); |
| | | // } finally { |
| | | // apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); |
| | | // } |
| | | |
| | | } |
| | | |