|  |  | 
 |  |  | import com.vincent.rsf.server.api.entity.dto.LocTypeDto; | 
 |  |  | import com.vincent.rsf.server.api.controller.erp.params.TaskInParam; | 
 |  |  | import com.vincent.rsf.server.api.entity.dto.SyncLocsDto; | 
 |  |  | import com.vincent.rsf.server.api.entity.enums.CallBackEvent; | 
 |  |  | import com.vincent.rsf.server.api.entity.params.CommonRequest; | 
 |  |  | import com.vincent.rsf.server.api.entity.params.ExMsgParams; | 
 |  |  | import com.vincent.rsf.server.api.entity.params.WcsTaskParams; | 
 |  |  | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | import java.util.Random; | 
 |  |  | import java.util.concurrent.Executors; | 
 |  |  | import java.util.concurrent.ScheduledExecutorService; | 
 |  |  | import java.util.concurrent.TimeUnit; | 
 |  |  | 
 |  |  |         ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1); | 
 |  |  |         scheduled.scheduleWithFixedDelay(new Runnable() { | 
 |  |  |             int current = 1; | 
 |  |  |  | 
 |  |  |             @Override | 
 |  |  |             public void run() { | 
 |  |  |                 params.setCurrent(current); | 
 |  |  | 
 |  |  |                 if (dtos.isEmpty()) { | 
 |  |  |                     scheduled.shutdown(); | 
 |  |  |                 } | 
 |  |  |                 dtos.forEach(dto -> { | 
 |  |  |                 for (SyncLocsDto dto : dtos) { | 
 |  |  |                     Loc loc = new Loc(); | 
 |  |  |                     String string = new Random().nextInt(10000000) + ""; | 
 |  |  |                     Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, dto.getLocNo())); | 
 |  |  |                     if (!Objects.isNull(one)) { | 
 |  |  |                         string = new Random().nextInt(10000000) + ""; | 
 |  |  |                     } | 
 |  |  |                     loc.setCode(dto.getLocNo()) | 
 |  |  |                             .setBarcode(dto.getBarcode()) | 
 |  |  |                             .setRow(dto.getRow()) | 
 |  |  |                             .setLev(dto.getLev()) | 
 |  |  |                             .setId(null) | 
 |  |  |                             .setAreaId(41L) | 
 |  |  |                             .setWarehouseId(27L) | 
 |  |  |                             .setAreaId(42L) | 
 |  |  |                             .setWarehouseId(29L) | 
 |  |  |                             .setBarcode(string) | 
 |  |  |                             .setCol(dto.getBay()) | 
 |  |  |                             .setType(dto.getLocType()) | 
 |  |  |                             .setType(dto.getLocType().equals("16") ? "17" : "15") | 
 |  |  |                             .setStatus(dto.getStatusBool()) | 
 |  |  |                             .setUseStatus(LocStsType.getLocSts(dto.getLocSts())); | 
 |  |  |                     if (!locService.save(loc)) { | 
 |  |  |                         scheduled.shutdown(); | 
 |  |  |                         throw new CoolException("WCS库位同步失败!!"); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |                 } | 
 |  |  |                 current++; | 
 |  |  |             } | 
 |  |  |         }, 1, 1, TimeUnit.SECONDS); | 
 |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 异常信息上报 | 
 |  |  |      * | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         if (Objects.isNull(params)) { | 
 |  |  |             return R.error("参数不能为空!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSeqNum())); | 
 |  |  |         if (Objects.isNull(task)) { | 
 |  |  |             throw new CoolException("任务不存在!!"); | 
 |  |  |             throw new CoolException("任务不存在可已结束!!"); | 
 |  |  |         } | 
 |  |  |          | 
 |  |  |         if (params.getEventType().equals("END")) { | 
 |  |  |  | 
 |  |  |         /**料箱搬运中, 修改站点状态*/ | 
 |  |  | //        if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) { | 
 |  |  | //            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)) { | 
 |  |  | // | 
 |  |  | //            } | 
 |  |  | //            /**取箱完成, 修改任务状态*/ | 
 |  |  | //        } else | 
 |  |  |         if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) { | 
 |  |  |             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()) | 
 |  |  |  | 
 |  |  |                 if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { | 
 |  |  |                     BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); | 
 |  |  |                     if (Objects.isNull(station)) { | 
 |  |  |                         throw new CoolException("数据错误,站点不存在!!"); | 
 |  |  |                     } | 
 |  |  |                     if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { | 
 |  |  |                         station.setUseStatus(LocStsType.LOC_STS_TYPE_O.type); | 
 |  |  |                         if (!basStationService.updateById(station)) { | 
 |  |  |                             throw new CoolException("站点状态修改失败!!"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (!taskService.update(new LambdaUpdateWrapper<Task>() | 
 |  |  |                         .lt(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id) | 
 |  |  |                         .eq(Task::getTaskCode, task.getTaskCode()) | 
 |  |  |                         .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) { | 
 |  |  |                     throw new CoolException("任务状态修改失败!!"); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                     || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type) | 
 |  |  |                     || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) | 
 |  |  |                     || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 /**修改出库站点状态*/ | 
 |  |  |                 BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() | 
 |  |  |                         .eq(BasStation::getStationName, task.getTargSite())); | 
 |  |  |                 if (Objects.isNull(station)) { | 
 |  |  |                     throw new CoolException("数据错误,站点不存在!!"); | 
 |  |  |                 } | 
 |  |  |                 if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { | 
 |  |  |                     station.setUseStatus(LocStsType.LOC_STS_TYPE_F.type); | 
 |  |  |                     if (!basStationService.updateById(station)) { | 
 |  |  |                         throw new CoolException("站点状态修改失败!!"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) | 
 |  |  |                         .set(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id))) { | 
 |  |  |                         .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id) | 
 |  |  |                         .set(Task::getTaskStatus, TaskStsType.AWAIT.id))) { | 
 |  |  |                     throw new CoolException("任务状态修改失败!!"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         log.info(JSONObject.toJSONString(params)); | 
 |  |  |         return R.ok(JSONObject.toJSONString(params)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 下发任务至中转API | 
 |  |  |      * | 
 |  |  |      * @param params | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { | 
 |  |  |     private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { | 
 |  |  |         if (Cools.isEmpty(matnr)) {  //物料号 | 
 |  |  |             matnr = ""; | 
 |  |  |         } | 
 |  |  | 
 |  |  |         if (Cools.isEmpty(deviceSite)) { | 
 |  |  |             channel = 0; | 
 |  |  |         } else { | 
 |  |  |             inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); | 
 |  |  |             inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //更新当前排 | 
 |  |  | 
 |  |  |         return inTaskMsgDto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { | 
 |  |  |     private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { | 
 |  |  |         if (Cools.isEmpty(matnr)) {  //物料号 | 
 |  |  |             matnr = ""; | 
 |  |  |         } | 
 |  |  | 
 |  |  |                 .eq(Loc::getAreaId, area) | 
 |  |  |                 .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) | 
 |  |  |                 .eq(Loc::getType, locTypeDto.getLocType1()) | 
 |  |  |                 .ge(Loc::getRow, deviceBind.getStartRow()) | 
 |  |  |                 .le(Loc::getRow, deviceBind.getEndRow()) | 
 |  |  |                 .orderByAsc(Loc::getLev) | 
 |  |  |                 .orderByAsc(Loc::getCol) | 
 |  |  |                 .orderByAsc(Loc::getRow) | 
 |  |  | 
 |  |  |         DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() | 
 |  |  |                 .eq(DeviceSite::getType, ioType) | 
 |  |  |                 .eq(DeviceSite::getSite, sourceStaNo) | 
 |  |  |                 .eq(DeviceSite::getDeviceCode, loc.getDeviceNo()) | 
 |  |  |                 .eq(!Objects.isNull(loc.getDeviceNo()), DeviceSite::getDeviceCode, loc.getDeviceNo()) | 
 |  |  |         ); | 
 |  |  |         if (Cools.isEmpty(deviceSite)) { | 
 |  |  |             deviceNo = 0; | 
 |  |  |             loc = null; | 
 |  |  |         } else { | 
 |  |  |             inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); | 
 |  |  |             inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); | 
 |  |  |         } | 
 |  |  |         // 递归查询 | 
 |  |  |         if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { |