| | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.cfg.CoercionAction; |
| | | import com.fasterxml.jackson.databind.cfg.CoercionInputShape; |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.framework.common.DateUtils; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.api.config.RemotesInfoProperties; |
| | |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.LocItemWorkingServiceImpl; |
| | | import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; |
| | | import com.vincent.rsf.server.manager.service.impl.WaveOrderRelaServiceImpl; |
| | | import com.vincent.rsf.server.system.constant.GlobalConfigCode; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.entity.Config; |
| | |
| | | private BasStationService basStationService; |
| | | @Autowired |
| | | private ReportMsgService reportMsgService; |
| | | @Autowired |
| | | private WaveOrderRelaService waveOrderRelaService; |
| | | @Autowired |
| | | private LocItemWorkingService locItemWorkingService; |
| | | |
| | | |
| | | /** |
| | | * @param |
| | |
| | | /** |
| | | * 非光电站点任务下发 |
| | | */ |
| | | @Scheduled(cron = "0/25 * * * * ? ") |
| | | @Scheduled(cron = "0/55 * * * * ? ") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void pubTaskToWcs() { |
| | | Long loginUserId = SystemAuthUtils.getLoginUserId(); |
| | |
| | | List<Integer> integers = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id); |
| | | List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() |
| | | .in(Task::getTaskType, list) |
| | | .in(Task::getTaskStatus, integers).last("limit 1") |
| | | .in(Task::getTaskStatus, integers) |
| | | .orderByDesc(Task::getSort)); |
| | | for (Task task : tasks) { |
| | | /**移库不做站点操作*/ |
| | | if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | .eq(BasStation::getStationName, |
| | | task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id) ? task.getOrgSite() : task.getTargSite())); |
| | | if (station.getType().equals(StationTypeEnum.STATION_TYPE_MUTI.type)) { |
| | | continue; |
| | | } |
| | | } |
| | | /**下发普通站点任务,报错回滚,不再往下执行*/ |
| | | pubTaskToWcs(tasks); |
| | | if (tasks.isEmpty()) { |
| | | return; |
| | | } |
| | | Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS)); |
| | | if (!Objects.isNull(config) && !Objects.isNull(config.getVal())) { |
| | | if (Boolean.parseBoolean(config.getVal())) { |
| | | return; |
| | | } |
| | | } |
| | | // for (Task task : tasks) { |
| | | // /**移库不做站点操作*/ |
| | | // if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() |
| | | // .eq(BasStation::getStationName, |
| | | // task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id) ? task.getOrgSite() : task.getTargSite())); |
| | | // if (station.getType().equals(StationTypeEnum.STATION_TYPE_MUTI.type)) { |
| | | // continue; |
| | | // } |
| | | // } |
| | | // } |
| | | /**下发普通站点任务,报错回滚,不再往下执行*/ |
| | | taskService.pubTaskToWcs(tasks); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | /**下发任务*/ |
| | | try { |
| | | pubTaskToWcs(tasks); |
| | | taskService.pubTaskToWcs(tasks); |
| | | } catch (Exception e) { |
| | | log.error("任务下发失败!!", e); |
| | | } |
| | |
| | | * |
| | | * @param tasks |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void pubTaskToWcs(List<Task> tasks) { |
| | | WcsTaskParams taskParams = new WcsTaskParams(); |
| | | List<TaskItemParam> items = new ArrayList<>(); |
| | | tasks.forEach(task -> { |
| | | TaskItemParam itemParam = new TaskItemParam(); |
| | | //任务类型,任务编码 |
| | | itemParam.setTaskType(RcsTaskType.getTypeDesc(task.getTaskType())) |
| | | .setSeqNum(task.getTaskCode()); |
| | | //主参数 |
| | | taskParams.setBatch(task.getBarcode()); |
| | | |
| | | BasStation station = null; |
| | | if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite())); |
| | | if (Objects.isNull(station)) { |
| | | throw new CoolException("站点不存在!!"); |
| | | } |
| | | } |
| | | |
| | | /**判断是否光电站点,非光店站点需管控站点状态*/ |
| | | if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { |
| | | // throw new CoolException( "当前站点不是F.在库状态状态!!"); |
| | | // @Transactional(rollbackFor = Exception.class) |
| | | // public void pubTaskToWcs(List<Task> tasks) { |
| | | // WcsTaskParams taskParams = new WcsTaskParams(); |
| | | // List<TaskItemParam> items = new ArrayList<>(); |
| | | // tasks.forEach(task -> { |
| | | // TaskItemParam itemParam = new TaskItemParam(); |
| | | // //任务类型,任务编码 |
| | | // itemParam.setTaskType(RcsTaskType.getTypeDesc(task.getTaskType())) |
| | | // .setSeqNum(task.getTaskCode()); |
| | | // //主参数 |
| | | // taskParams.setBatch(task.getBarcode()); |
| | | // |
| | | // BasStation station = null; |
| | | // if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite())); |
| | | // if (Objects.isNull(station)) { |
| | | // throw new CoolException("站点不存在!!"); |
| | | // } |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | | } |
| | | } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) { |
| | | if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | throw new CoolException("目标站点不处O.空闲状态,无法预约出库。"); |
| | | } |
| | | station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | if (!basStationService.updateById(station)) { |
| | | throw new CoolException("站点状态更新失败!!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /**移库参数*/ |
| | | if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | itemParam.setOriLoc(task.getOrgLoc()).setDestLoc(task.getTargLoc()); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) { |
| | | /**全板入库参数*/ |
| | | itemParam.setDestLoc(task.getTargLoc()) |
| | | .setOriSta(task.getOrgSite()); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) { |
| | | /**拣料/盘点入库参数*/ |
| | | itemParam.setDestLoc(task.getTargLoc()) |
| | | .setOriSta(task.getTargSite()); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)) { |
| | | /**出库参数*/ |
| | | itemParam.setOriLoc(task.getOrgLoc()) |
| | | .setDestSta(task.getTargSite()); |
| | | } else { |
| | | /**站点间移库参数*/ |
| | | itemParam.setOriSta(task.getOrgSite()).setDestSta(task.getTargSite()); |
| | | |
| | | BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); |
| | | if (Objects.isNull(curSta)) { |
| | | throw new CoolException("站点不存在!!"); |
| | | } |
| | | if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | if (!curSta.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { |
| | | throw new CoolException("当前站点不是F.在库状态!!"); |
| | | } |
| | | } |
| | | if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | throw new CoolException("目标站点不是O.空闲状态!!"); |
| | | } |
| | | } |
| | | } |
| | | items.add(itemParam); |
| | | }); |
| | | taskParams.setTaskList(items); |
| | | /**任务下发接口*/ |
| | | String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask; |
| | | /**RCS基础配置链接*/ |
| | | log.info("任务下发,请求地址: {}, 请求参数: {}", pubTakUrl, JSONObject.toJSONString(taskParams)); |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.add("Content-Type", "application/json"); |
| | | headers.add("api-version", "v2.0"); |
| | | HttpEntity httpEntity = new HttpEntity(taskParams, headers); |
| | | ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class); |
| | | log.info("任务下发后,响应结果: {}", exchange); |
| | | if (Objects.isNull(exchange.getBody())) { |
| | | throw new CoolException("任务下发失败!!"); |
| | | } else { |
| | | try { |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | objectMapper.coercionConfigDefaults() |
| | | .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); |
| | | CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); |
| | | if (result.getCode() == 200) { |
| | | tasks.forEach(task -> { |
| | | BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); |
| | | if (Objects.isNull(curSta)) { |
| | | throw new CoolException("站点不存在!!"); |
| | | } |
| | | if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) |
| | | .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) { |
| | | throw new CoolException("任务状态修改失败!!"); |
| | | } |
| | | /**排除移库功能*/ |
| | | if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | /**如果是普通站点,修改站点状态为出库预约*/ |
| | | if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | curSta.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!basStationService.updateById(curSta)) { |
| | | throw new CoolException("站点预约失败!!"); |
| | | } |
| | | } |
| | | } |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) { |
| | | if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) |
| | | .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) { |
| | | throw new CoolException("任务状态修改失败!!"); |
| | | } |
| | | /**如果是普通站点,修改站点状态为入库预约*/ |
| | | if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | curSta.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | if (!basStationService.updateById(curSta)) { |
| | | throw new CoolException("站点预约失败!!"); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } else { |
| | | log.error(JSONObject.toJSONString(result)); |
| | | // throw new CoolException("任务下发失败!!"); |
| | | } |
| | | } catch (JsonProcessingException e) { |
| | | throw new CoolException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // } |
| | | // |
| | | // /**判断是否光电站点,非光店站点需管控站点状态*/ |
| | | // if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | // if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | // if (!basStationService.updateById(station)) { |
| | | // throw new CoolException("站点状态更新失败!!"); |
| | | // } |
| | | // } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) { |
| | | // station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | // if (!basStationService.updateById(station)) { |
| | | // throw new CoolException("站点状态更新失败!!"); |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // /**移库参数*/ |
| | | // if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // itemParam.setOriLoc(task.getOrgLoc()).setDestLoc(task.getTargLoc()); |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) { |
| | | // /**全板入库参数*/ |
| | | // itemParam.setDestLoc(task.getTargLoc()) |
| | | // .setOriSta(task.getOrgSite()); |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) { |
| | | // /**拣料/盘点入库参数*/ |
| | | // itemParam.setDestLoc(task.getTargLoc()) |
| | | // .setOriSta(task.getTargSite()); |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)) { |
| | | // /**出库参数*/ |
| | | // itemParam.setOriLoc(task.getOrgLoc()) |
| | | // .setDestSta(task.getTargSite()); |
| | | // } else { |
| | | // /**站点间移库参数*/ |
| | | // itemParam.setOriSta(task.getOrgSite()).setDestSta(task.getTargSite()); |
| | | // |
| | | // BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); |
| | | // if (Objects.isNull(curSta)) { |
| | | // throw new CoolException("站点不存在!!"); |
| | | // } |
| | | // if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | // if (!curSta.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { |
| | | // throw new CoolException("当前站点不是F.在库状态!!"); |
| | | // } |
| | | // } |
| | | // if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | // if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | // throw new CoolException("目标站点不是O.空闲状态!!"); |
| | | // } |
| | | // } |
| | | // } |
| | | // items.add(itemParam); |
| | | // }); |
| | | // taskParams.setTaskList(items); |
| | | // /**任务下发接口*/ |
| | | // String pubTakUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask; |
| | | // /**RCS基础配置链接*/ |
| | | // log.info("任务下发,请求地址: {}, 请求参数: {}", pubTakUrl, JSONObject.toJSONString(taskParams)); |
| | | // HttpHeaders headers = new HttpHeaders(); |
| | | // headers.add("Content-Type", "application/json"); |
| | | // headers.add("api-version", "v2.0"); |
| | | // HttpEntity httpEntity = new HttpEntity(taskParams, headers); |
| | | // ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class); |
| | | // log.info("任务下发后,响应结果: {}", exchange); |
| | | // if (Objects.isNull(exchange.getBody())) { |
| | | // throw new CoolException("任务下发失败!!"); |
| | | // } else { |
| | | // try { |
| | | // ObjectMapper objectMapper = new ObjectMapper(); |
| | | // objectMapper.coercionConfigDefaults() |
| | | // .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); |
| | | // CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); |
| | | // if (result.getCode() == 200) { |
| | | // tasks.forEach(task -> { |
| | | // |
| | | // if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // |
| | | // BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); |
| | | // if (Objects.isNull(curSta)) { |
| | | // throw new CoolException("站点不存在!!"); |
| | | // } |
| | | // |
| | | // if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) |
| | | // .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_IN.id))) { |
| | | // throw new CoolException("任务状态修改失败!!"); |
| | | // } |
| | | // /**排除移库功能*/ |
| | | // if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // /**如果是普通站点,修改站点状态为出库预约*/ |
| | | // if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | // curSta.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); |
| | | // if (!basStationService.updateById(curSta)) { |
| | | // throw new CoolException("站点预约失败!!"); |
| | | // } |
| | | // } |
| | | // } |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | // || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) { |
| | | // BasStation curSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getTargSite())); |
| | | // if (Objects.isNull(curSta)) { |
| | | // throw new CoolException("站点不存在!!"); |
| | | // } |
| | | // |
| | | // if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) |
| | | // .set(Task::getTaskStatus, TaskStsType.WCS_EXECUTE_OUT.id))) { |
| | | // throw new CoolException("任务状态修改失败!!"); |
| | | // } |
| | | // /**如果是普通站点,修改站点状态为入库预约*/ |
| | | // if (curSta.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { |
| | | // curSta.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); |
| | | // if (!basStationService.updateById(curSta)) { |
| | | // throw new CoolException("站点预约失败!!"); |
| | | // } |
| | | // } |
| | | // } |
| | | // }); |
| | | // } else { |
| | | // log.error(JSONObject.toJSONString(result)); |
| | | //// throw new CoolException("任务下发失败!!"); |
| | | // } |
| | | // } catch (JsonProcessingException e) { |
| | | // throw new CoolException(e.getMessage()); |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // |
| | | |
| | | /** |
| | | * @param |
| | |
| | | throw new CoolException("任务历史档保存失败!!"); |
| | | } |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); |
| | | //入库单据明细上报 |
| | | |
| | | if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) { |
| | | for (TaskItem taskItem : taskItems) { |
| | |
| | | /**入库单明细上报*/ |
| | | reportMsgService.reportOrderItem(wkOrderItem); |
| | | } |
| | | } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type && task.getTaskType() <= TaskType.TASK_TYPE_EMPITY_OUT.type) { |
| | | } else if ((task.getTaskType() >= TaskType.TASK_TYPE_OUT.type && task.getTaskType() <= TaskType.TASK_TYPE_EMPITY_OUT.type) |
| | | || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) { |
| | | /**判断单据是否完成**/ |
| | | Set<Long> longSet = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet()); |
| | | List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>() |
| | | .in(WaveOrderRela::getWaveId, longSet)); |
| | | if (Cools.isEmpty(waveOrderRelas)) { |
| | | throw new CoolException("波次对应关联单未找到"); |
| | | } |
| | | Set<Long> orderIds = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toSet()); |
| | | List<WkOrder> wkOrders = asnOrderService.listByIds(orderIds); |
| | | if (wkOrders.isEmpty()) { |
| | | throw new CoolException("单据不存在!!"); |
| | | } |
| | | wkOrders.forEach(order -> { |
| | | //检查单据是否完成 |
| | | if (order.getAnfme().compareTo(order.getQty()) == 0) { |
| | | order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val); |
| | | // if (order.getType().equals(OrderType.ORDER_IN)) { |
| | | // order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); |
| | | // } else { |
| | | // order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val); |
| | | // } |
| | | if (!asnOrderService.updateById(order)) { |
| | | throw new CoolException("出库单更新状态失败"); |
| | | } |
| | | } |
| | | }); |
| | | //出库单上报RCS修改库位状态 |
| | | try { |
| | | reportStationStatus(task); |
| | |
| | | itemLogs.add(itemLog); |
| | | } |
| | | |
| | | locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); |
| | | |
| | | |
| | | if (!taskService.removeById(task.getId())) { |
| | | throw new CoolException("原始任务删除失败!!"); |
| | | } |
| | |
| | | throw new CoolException("原始任务明细删除失败!!"); |
| | | } |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |