#
Junjie
2025-05-01 e9efb50ea62a9ad58e652446c6528f1b49fcc39a
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -15,13 +15,9 @@
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.NotifyUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import com.zy.core.cache.MessageQueue;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -68,6 +64,8 @@
    private CommonService commonService;
    @Autowired
    private NotifyUtils notifyUtils;
    @Autowired
    private BasDevpService basDevpService;
    private static final boolean auth = true;
@@ -92,64 +90,71 @@
    @PostMapping("/taskCreate")
    @Transactional
    public R taskCreate(@RequestHeader String appkey,
                          @RequestBody List<TaskCreateParam> param1,
                          @RequestBody TaskCreateParam param,
                          HttpServletRequest request) {
        auth(appkey, param1, request);
        auth(appkey, param, request);
        R result = null;
        try{
            List<TaskCreateParam> paramList = new ArrayList<>();
            List<String> locNoList = new ArrayList<>();
            for (TaskCreateParam param : param1) {
                if (Cools.isEmpty(param)) {
                    return R.parse(BaseRes.PARAM);
                }
                if (Cools.isEmpty(param.getTaskNo())) {
                    return R.error("任务号[taskNo]不能为空");
                }
                if (Cools.isEmpty(param.getIoType())) {
                    return R.error("任务类型[ioType]不能为空");
                }
                if (Cools.isEmpty(param.getBarcode())) {
                    return R.error("条码[barcode]不能为空");
                }
                String locNo=null;
                if (param.getIoType() == 1) {
                    locNo = param.getTargetPoint();
                } else {
                    locNo = param.getStartPoint();
                }
                try {
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                            .eq("loc_no", locNo).ne("loc_sts", "X"));
                    if (Cools.isEmpty(locMast)) {
                        log.error("库位号不存在" + locNo);
                        return R.error("库位号不存在" + locNo).add("库位号不存在" + locNo);
                    }
                } catch (Exception e) {
                    log.error("库位号检测程序异常==》异常信息" + e);
                    return R.error("库位号检测程序异常").add("库位号检测程序异常==》异常信息" + e);
                }
            if (Cools.isEmpty(param)) {
                result = R.parse(BaseRes.PARAM);
                return result;
            }
            if (Cools.isEmpty(param.getTaskNo())) {
                result = R.error("任务号[taskNo]不能为空");
                return result;
            }
            if (Cools.isEmpty(param.getIoType())) {
                result = R.error("任务类型[ioType]不能为空");
                return result;
            }
            if (Cools.isEmpty(param.getBarcode())) {
                result = R.error("条码[barcode]不能为空");
                return result;
            }
            String locNo=null;
            if (param.getIoType() == 1) {
                locNo = param.getTargetPoint();
            } else {
                locNo = param.getStartPoint();
            }
            try {
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                        .eq("loc_sts", "F")
                        .eq("loc_no", locNo)
                        .eq("barcode", param.getBarcode()));
                if(Cools.isEmpty(locMast)){
                    return R.error("该库位不满足出库条件"+param.getTargetPoint());
                        .eq("loc_no", locNo).ne("loc_sts", "X"));
                if (Cools.isEmpty(locMast)) {
                    log.error("库位号不存在" + locNo);
                    result = R.error("库位号不存在" + locNo).add("库位号不存在" + locNo);
                    return result;
                }
                if (!locNoList.contains(locMast.getLocNo())){
                    locNoList.add(locMast.getLocNo());
                    paramList.add(param);
                }else {
                    return R.error("该库位不能同时下发两笔任务" + locMast.getLocNo());
                }
            } catch (Exception e) {
                log.error("库位号检测程序异常==》异常信息" + e);
                result = R.error("库位号检测程序异常").add("库位号检测程序异常==》异常信息" + e);
                return result;
            }
            for (TaskCreateParam param : paramList){
                openService.taskCreate(param);
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                    .eq("loc_sts", "F")
                    .eq("loc_no", locNo)
                    .eq("barcode", param.getBarcode()));
            if(Cools.isEmpty(locMast)){
                result = R.error("该库位不满足出库条件" + locMast.getLocNo());
                return result;
            }
            result = openService.taskCreate(param);
            return result;
        }catch (Exception e){
            log.error("任务下发异常"+e);
            log.error("任务下发异常" + e);
            return R.error();
        }finally {
            apiLogService.save("wms任务下发接口"
                    ,request.getRemoteAddr()+request.getRequestURI()
                    ,""
                    ,request.getRemoteAddr()
                    ,JSON.toJSONString(param)
                    ,JSON.toJSONString(result)
                    ,true
            );
        }
        return R.ok();
    }
    //创建入库任务
@@ -266,40 +271,65 @@
                               @RequestBody TaskCancelParam param,
                               HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())) {
            return R.error("工作号为空!");
        } else if (Cools.isEmpty(param.getIoType())) {
            return R.error("操作类型为空!");
        } else if (Cools.isEmpty(param.getBarcode())) {
            return R.error("托盘码不能为空!");
        }
        R result = null;
        try {
            if (Cools.isEmpty(param)) {
                return R.error("参数为空!");
            } else if (Cools.isEmpty(param.getTaskNo())) {
                return R.error("工作号为空!");
            } else if (Cools.isEmpty(param.getIoType())) {
                return R.error("操作类型为空!");
            } else if (Cools.isEmpty(param.getBarcode())) {
                return R.error("托盘码不能为空!");
            }
        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>()
                .eq("task_no", param.getTaskNo())
                .eq("io_type", param.getIoType())
                .eq("barcode", param.getBarcode()));
        if (Cools.isEmpty(taskWrk)){
            return R.error("未查到当前任务---" + param);
            TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>()
                    .eq("task_no", param.getTaskNo())
                    .eq("io_type", param.getIoType())
                    .eq("barcode", param.getBarcode()));
            if (Cools.isEmpty(taskWrk)){
                result =  R.error("未查到当前任务---" + param);
                return result;
            }
            boolean sign = false;
            switch (param.getTaskStatus()) {
                case 1://正常取消
                    if (taskWrk.getStatus() > 1) {
                        if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() <= 2) {//入库
                            break;
                        }
                        result = R.error("任务已开始执行");
                        return result;
                    }
                    break;
                case 2://正常完成
                    if (taskWrk.getStatus() > 1) {
                        result = R.error("任务已开始执行");
                        return result;
                    }
                    sign = true;
                    break;
                default:
                    result = R.error("未知操作");
                    return result;
            }
            result = taskWrkOperate(taskWrk, sign);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            result = R.error(e.getMessage());
            return R.error(e.getMessage());
        }finally {
            apiLogService.save("wms任务下发接口"
                    ,request.getRemoteAddr()+request.getRequestURI()
                    ,""
                    ,request.getRemoteAddr()
                    ,JSON.toJSONString(param)
                    ,JSON.toJSONString(result)
                    ,true
            );
        }
        boolean sign =false;
        switch (param.getTaskStatus()) {
            case 1://正常取消
                if (taskWrk.getStatus() > 1) {
                    return R.error("任务已开始执行");
                }
                break;
            case 2://正常完成
                if (taskWrk.getStatus() > 1) {
                    return R.error("任务已开始执行");
                }
                sign = true;
                break;
            default:
                return R.error("未知操作");
        }
        return taskWrkOperate(taskWrk, sign);
    }
    //任务操作
@@ -319,22 +349,20 @@
    @GetMapping("/deviceStatus")
    @Transactional
    public R deviceStatus() {
        List<CrnStatusParam> crnStatusParams=new ArrayList<>();
        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
        for (BasCrnp basCrnp:basCrnps){
            CrnStatusParam crnStatusParam=new CrnStatusParam();
            crnStatusParam.setCrnNo(basCrnp.getCrnNo());
            crnStatusParam.setCrnSts(basCrnp.getCrnSts());
            crnStatusParam.setErrorCode(basCrnp.getCrnErr());
            BasCrnError error=basCrnErrorService.selectOne(new EntityWrapper<BasCrnError>().eq("error_code",basCrnp.getCrnErr()));
            if(Cools.isEmpty(error)){
                crnStatusParam.setErrorMsg("");
            }else {
                crnStatusParam.setErrorMsg(error.getErrName());
            }
            crnStatusParams.add(crnStatusParam);
        }
        return R.ok(crnStatusParams);
        List<CrnStatusParam> crnStatusParams = openService.getCrnStatus();
        List<StationStatusParam> stationStatus = openService.getStationStatus();
        HashMap<String, Object> map = new HashMap<>();
        map.put("crn", crnStatusParams);
        map.put("station", stationStatus);
        return R.ok().add(map);
    }
    //输送站点状态查询接口
    @GetMapping("/stationStatus")
    @Transactional
    public R stationStatus() {
        List<StationStatusParam> data = openService.getStationStatus();
        return R.ok().add(data);
    }
    //模拟输送线入库
@@ -379,7 +407,7 @@
            JSONObject result = jsonObject.getJSONObject("data");
            Integer resultWrkNo = result.getInteger("wrkNo");
            Integer resultStaNo = result.getInteger("staNo");
            Integer resultStaNo = result.getInteger("stnNo");
            String resultLocNo = result.getString("locNo");
            // 创新一个入库工作档
@@ -459,7 +487,6 @@
        }
        log.info("入库请求参数=" + JSON.toJSONString(barcode));
        log.info("入库请求返回参数=" + JSON.toJSONString(response));
        return R.error();
        return R.ok();
    }
}