#
zhou zhou
2 天以前 b5b400a615743a74e9d127261bd3785554aa06aa
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -19,9 +19,9 @@
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 com.vincent.rsf.server.api.entity.enums.WcsMsgTypeEvent;
import com.vincent.rsf.server.api.entity.params.*;
import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.api.utils.LocUtils;
@@ -44,6 +44,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Random;
@@ -428,7 +429,7 @@
                for (SyncLocsDto dto : dtos) {
                    Loc loc = new Loc();
                    String string = new Random().nextInt(10000000) + "";
                    Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, string));
                    Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, dto.getLocNo()));
                    if (!Objects.isNull(one)) {
                        string = new Random().nextInt(10000000) + "";
                    }
@@ -437,11 +438,11 @@
                            .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)) {
@@ -471,13 +472,25 @@
        }
        /**料箱搬运中, 修改站点状态*/
        if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) {
//        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 (!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)) {
@@ -490,11 +503,20 @@
                        }
                    }
                }
                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("任务状态修改失败!!");
                }
            } 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_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()));
@@ -507,26 +529,10 @@
                        throw new CoolException("站点状态修改失败!!");
                    }
                }
            }
            /**取箱完成, 修改任务状态*/
        } 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())
                        .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) {
                    throw new CoolException("任务状态修改失败!!");
                }
            } 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_MERGE_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)) {
                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("任务状态修改失败!!");
                }
            }
@@ -918,4 +924,128 @@
        inTaskMsgDto.setLocNo(locNo);
        return inTaskMsgDto;
    }
    /**
     * WCS入库任务申请
     *
     * @return
     */
    @Override
    public R wcsCreateInTask(CreateInTaskParam params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
        if (waitPakins.isEmpty()) {
            throw new CoolException("单据不存在 !!");
        }
        DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getSite,params.getSourceStaNo()).orderByDesc(DeviceSite::getId),false);
        if (Objects.isNull(deviceSite)) {
            throw new CoolException(params.getSourceStaNo()+"站点不存在!!");
        }
        if (deviceSite.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type.toString())) {
            throw new CoolException(params.getSourceStaNo()+"站点非光电站点!!请使用PDA绑定入库");
        }
        Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
        if (!Cools.isEmpty(one)) {
            InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
            inTaskWcsReportParam.setTaskNo(one.getTaskCode());
            inTaskWcsReportParam.setLocNo(one.getTargLoc());
            inTaskWcsReportParam.setTaskPri(one.getSort());
            return R.ok("任务已存在直接下发!").add(inTaskWcsReportParam);
        }
        GenerateTaskParams taskParams = new GenerateTaskParams();
        taskParams.setWaitPakins(waitPakins)
                .setSiteId(deviceSite.getId());
        R r = taskService.generateTasksWcs(taskParams, 111L,params.getRowList());//lsh待修改  WCS用户信息
        if (r.get("msg").equals("任务生成完毕!")) {
            one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
            InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
            inTaskWcsReportParam.setTaskNo(one.getTaskCode());
            inTaskWcsReportParam.setLocNo(one.getTargLoc());
            inTaskWcsReportParam.setTaskPri(one.getSort());
            return R.ok("任务生成完毕!").add(inTaskWcsReportParam);
        }
        return R.error();
//        return R.ok("任务生成完毕!");
//        log.info(JSONObject.toJSONString(params));
//        return R.ok(JSONObject.toJSONString(params));
    }
    /**
     * WCS任务上报通知
     *
     * @return
     */
    @Override
    public R wcsTaskReport(TaskReportParam params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSuperTaskNo()));
        if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_COMPLETE.event)){
            if (!Cools.isEmpty(one)) {
                one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
                if (!taskService.updateById(one)) {
//                    throw new CoolException("完成任务失败");
                    return R.error("完成任务失败").add(one);
                }
                return R.ok("任务完成成功").add(one);
            }
        } else if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_CANCEL.event)){
//            if (!Cools.isEmpty(one)) {
//                one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
//                return R.ok("!").add(one);
//            }
            return R.error("暂不允许取消");
        }
        return R.error("数据异常");
    }
    /**
     * WCS申请任务重新分配入库
     *
     * @return
     */
    @Override
    public R wcsReassignLoc(ReassignLocParam params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
        if (waitPakins.isEmpty()) {
            throw new CoolException("单据不存在 !!");
        }
        GenerateTaskParams taskParams = new GenerateTaskParams();
        taskParams.setWaitPakins(waitPakins)
                .setSiteId(params.getSourceStaNo().longValue());
        return R.ok(taskService.generateTasks(taskParams, 111L));
//        return R.ok("任务生成完毕!");
//        log.info(JSONObject.toJSONString(params));
//        return R.ok(JSONObject.toJSONString(params));
    }
    /**
     * WCS申请在库库位更换库位
     *
     * @return
     */
    @Override
    public R wcsChangeLoc(ChangeLocParam params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
        if (waitPakins.isEmpty()) {
            throw new CoolException("单据不存在 !!");
        }
        GenerateTaskParams taskParams = new GenerateTaskParams();
        taskParams.setWaitPakins(waitPakins)
                .setSiteId(params.getSourceStaNo().longValue());
        return R.ok(taskService.generateTasks(taskParams, 111L));
//        return R.ok("任务生成完毕!");
//        log.info(JSONObject.toJSONString(params));
//        return R.ok(JSONObject.toJSONString(params));
    }
}