自动化立体仓库 - WCS系统
#
Junjie
11 小时以前 7d626989e20297c0f52cd80a44c3763e2c2d9865
#
2个文件已添加
5个文件已删除
10个文件已修改
803 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 271 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskWrkLog.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/CarryParam.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/CarrysParam.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/Result.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskCancelParam.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskCreateOutParam.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskStatusFeedbackParam.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 152 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/TaskLogScheduler.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -25,10 +25,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.ReactiveRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -41,8 +43,8 @@
    private String wmsUrl;
    @Value("${wms.inboundTaskApplyPath}")
    private String inboundTaskApplyPath;
    @Value("${wms.taskStatusFeedbackPath}")
    private String taskStatusFeedbackPath;
    @Value("${wms.TaskExecCallback}")
    private String TaskExecCallback;
    @Autowired
    private OpenService openService;
@@ -72,6 +74,8 @@
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
        add("ea1f0459efc02a79f046f982767939ae");
    }};
    @Autowired
    private ReactiveRedisTemplate reactiveRedisTemplate;
    private void auth(String appkey, Object obj, HttpServletRequest request) {
        log.info("{}接口被访问;appkey:{};请求数据:{}", request.getServletPath(), appkey, JSON.toJSONString(obj));
@@ -169,8 +173,7 @@
                return R.error("条码[barcode]不能为空");
            }
            HashMap<String, Object> result = openService.taskCreateIn(param);
            return R.ok().add(result);
            return openService.taskCreateIn(param);
        }catch (Exception e){
            log.error("任务下发异常"+e);
        }
@@ -208,114 +211,95 @@
    //任务下发接口
    @PostMapping("/outboundTaskSend")
    @Transactional
    public HashMap<String, Object> outboundTaskSend(@RequestBody HashMap<String,Object> hashMap) {
        String jsonString = JSON.toJSONString(hashMap.get("TaskList"));
        List<CarryParam> params= JSONObject.parseArray(jsonString,CarryParam.class);
        HashMap<String, Object> map = new HashMap<>();
        List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>();
        for (CarryParam param:params){
            if (Cools.isEmpty(param)){
                map.put("Code","0");
                map.put("Msg","参数为空!");
                return map;
            } else if (Cools.isEmpty(param.getTaskNo())){
                map.put("Code","0");
                map.put("Msg","任务号为空!");
                return map;
            } else if (Cools.isEmpty(param.getStereoscopicTaskType())){
                map.put("Code","0");
                map.put("Msg","任务类型为空!");
                return map;
            }
            String fusion = Utils.getLocNo(param.getOriginalRowNo(), param.getOriginalFloorNo(), param.getOriginalColumnNo());
            param.setStartPoint(fusion);
            LocMast locMast = locMastService.selectByLocNo(param.getStartPoint());
            if(Cools.isEmpty(locMast)){
                map.put("Code","0");
                map.put("Msg","初始库位无法找到!");
                return map;
            }
            HashMap<String,Object> r = new HashMap<>();
            if(param.getStereoscopicTaskType() == 2){
                //出库任务创建
                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                        .eq("type_no",2)
                        .eq("crn_no",locMast.getCrnNo())
                        .eq("stn_no",param.getTerminalNo()));
                if(Cools.isEmpty(staDesc)){
                    map.put("Code","0");
                    map.put("Msg","出库路劲不存在!");
                    return map;
                }
                r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo()));
                if(r.get("Code").equals("0")){
                    return r;
                }
            }else if (param.getStereoscopicTaskType() == 3){
                String fusion1 = Utils.getLocNo(param.getGoalRowNo(), param.getGoalFloorNo(), param.getGoalColumnNo());
                param.setTerminalNo(fusion1);
                //移库任务创建
                r = openService.taskCreate(new TaskCreateParam(param,locMast.getCrnNo()));
                if(r.get("Code").equals("0")){
                    return r;
                }
            }
            apiLogService.save("Wms任务下发接口"
                    ,request.getRemoteAddr()+request.getRequestURI()
                    ,""
                    ,request.getRemoteAddr()
                    ,JSON.toJSONString(param)
                    ,r.toString()
                    ,true
            );
    public HashMap<String, Object> outboundTaskSend(@RequestBody TaskCreateParam param) {
        if (Cools.isEmpty(param)){
            return R.error("参数为空");
        }
        map.put("Code","1");
        map.put("Msg","ok");
        return map;
        if (param.getTaskNo() == null){
            return R.error("任务号为空");
        }
        if (param.getIoType() == null){
            return R.error("任务类型为空");
        }
        LocMast locMast = locMastService.selectByLocNo(param.getStartPoint());
        if(locMast == null){
            return R.error("初始库位无法找到");
        }
        if (!locMast.getLocSts().equals("F")) {
            return R.error("库位不处于在库状态");
        }
        R result = null;
        if(param.getIoType() == 1){
            //出库任务创建
            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                    .eq("type_no", 2)
                    .eq("crn_no", locMast.getCrnNo())
                    .eq("stn_no", param.getTargetPoint()));
            if(Cools.isEmpty(staDesc)){
                return R.error("出库路径不存在");
            }
            param.setIoType(2);
            result = openService.taskCreate(param);
        }
        apiLogService.save("wms任务下发接口"
                ,request.getRemoteAddr()+request.getRequestURI()
                ,""
                ,request.getRemoteAddr()
                ,JSON.toJSONString(param)
                ,JSON.toJSONString(result)
                ,true
        );
        return result;
    }
    //任务取消接口
    @PostMapping("/taskCancel")
    public R taskCancel(@RequestHeader String appkey,
                               @RequestBody WMSAndAGVInterfaceParam param,
                               @RequestBody TaskCancelParam param,
                               HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param)){
        if (Cools.isEmpty(param)) {
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())){
        } else if (Cools.isEmpty(param.getTaskNo())) {
            return R.error("工作号为空!");
        } else if (Cools.isEmpty(param.getIoType())){
        } else if (Cools.isEmpty(param.getIoType())) {
            return R.error("操作类型为空!");
        } else if (Cools.isEmpty(param.getBarcode())){
        } 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()));
                .eq("io_type", param.getIoType())
                .eq("barcode", param.getBarcode()));
        if (Cools.isEmpty(taskWrk)){
            return R.error("未查到当前任务---"+param);
            return R.error("未查到当前任务---" + param);
        }
        boolean sign =false;
        switch (param.getTaskStatus()){
        switch (param.getTaskStatus()) {
            case 1://正常取消
                if (taskWrk.getStatus()>1){
                if (taskWrk.getStatus() > 1) {
                    return R.error("任务已开始执行");
                }
                break;
            case 2://正常完成
                if (taskWrk.getStatus()>1){
                if (taskWrk.getStatus() > 1) {
                    return R.error("任务已开始执行");
                }
                sign=true;
                sign = true;
                break;
            default:
                return R.error("未知操作");
        }
        return taskWrkOperate(taskWrk,sign);
        return taskWrkOperate(taskWrk, sign);
    }
    //任务操作
@@ -369,13 +353,13 @@
        }
        HashMap<String, Object> requestParam = new HashMap<>();
        requestParam.put("BoxNo", barcode);//托盘码
        requestParam.put("TerminalNo", staNo);//入库口
        requestParam.put("barcode", barcode);//托盘码
        requestParam.put("stationCode", staNo);//入库口
        if (back) {
            requestParam.put("WCSStatus", 1);//失败
            requestParam.put("WCSErrorMessage", errMsg);//失败原因
            requestParam.put("wcsStatus", 1);//失败
            requestParam.put("wcsErrorMessage", errMsg);//失败原因
        }else {
            requestParam.put("WCSStatus", 0);//成功
            requestParam.put("wcsStatus", 0);//成功
        }
        String response = "";
@@ -389,67 +373,72 @@
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString());
            if (returnStatus == 0) {
                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                // 创新一个入库工作档
                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                if(taskWrk != null) {
                    log.info("任务:" + result.getTaskNo() + "已经存在");
                    return R.error();
                }
            JSONObject result = jsonObject.getJSONObject("data");
            Integer resultWrkNo = result.getInteger("wrkNo");
            Integer resultStaNo = result.getInteger("staNo");
            String resultLocNo = result.getString("locNo");
                String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
                LocMast locMast = locMastService.selectByLocNo(locNo);
                if (locMast == null) {
                    log.info(locNo + "库位不存在");
                    return R.error();
                }
            // 创新一个入库工作档
            TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo));
            if(taskWrk != null) {
                log.info("任务:" + resultWrkNo + "已经存在");
                return R.error();
            }
                if (!locMast.getLocSts().equals("O")) {
                    log.info(locNo + "库位不处于空库位");
                    return R.error();
                }
            LocMast locMast = locMastService.selectByLocNo(resultLocNo);
            if (locMast == null) {
                log.info(resultLocNo + "库位不存在");
                return R.error();
            }
                Date now = new Date();
                taskWrk = new TaskWrk();
                taskWrk.setTaskNo(result.getTaskNo());//任务号
                taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                taskWrk.setWrkSts(2);//2.设备上走
                taskWrk.setCreateTime(now);
                taskWrk.setIoType(1);//任务类型
                taskWrk.setIoPri(13);//优先级
                taskWrk.setBarcode(barcode);//条码
                taskWrk.setCrnNo(locMast.getCrnNo());
                taskWrk.setTargetPoint(locNo);
                taskWrk.setStartPoint(String.valueOf(staNo));
                if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                    taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                }
            if (!locMast.getLocSts().equals("O")) {
                log.info(resultLocNo + "库位不处于空库位");
                return R.error();
            }
                if (!taskWrkService.insert(taskWrk)) {
                    log.info("任务:" + result.getTaskNo() + "任务创建失败");
                    return R.error();
                }
            Date now = new Date();
            taskWrk = new TaskWrk();
            taskWrk.setTaskNo(String.valueOf(resultWrkNo));//任务号
            taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
            taskWrk.setWrkSts(2);//2.设备上走
            taskWrk.setCreateTime(now);
            taskWrk.setIoType(1);//任务类型
            taskWrk.setIoPri(13);//优先级
            taskWrk.setBarcode(barcode);//条码
            taskWrk.setCrnNo(locMast.getCrnNo());
            taskWrk.setTargetPoint(resultLocNo);
            taskWrk.setStartPoint(String.valueOf(staNo));
            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
            }
                locMast.setLocSts("S");
                locMast.setModiTime(new Date());
                locMastService.updateById(locMast);
            if (!taskWrkService.insert(taskWrk)) {
                log.info("任务:" + resultWrkNo + "任务创建失败");
                return R.error();
            }
                //上报
                HashMap<String, Object> hashMap = new HashMap<>();
                hashMap.put("TaskNo", taskWrk.getTaskNo());
            locMast.setLocSts("S");
            locMast.setModiTime(new Date());
            locMastService.updateById(locMast);
                NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                customDataDto.setUri(wmsUrl);
                customDataDto.setPath(taskStatusFeedbackPath);
                customDataDto.setData(JSON.toJSONString(hashMap));
                boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                if(notifyResult) {
                    taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                    taskWrkService.updateById(taskWrk);
                }
            //上报
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("taskNo", taskWrk.getTaskNo());
            hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
            hashMap.put("ioType", 2);
            hashMap.put("barcode", taskWrk.getBarcode());
            hashMap.put("reportTime", format.format(new Date()));
            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
            customDataDto.setUri(wmsUrl);
            customDataDto.setPath(TaskExecCallback);
            customDataDto.setData(JSON.toJSONString(hashMap));
            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
            if(notifyResult) {
                taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                taskWrkService.updateById(taskWrk);
            }
        } catch (Exception e) {
            log.error("请求入库调用接口失败");
src/main/java/com/zy/asrs/entity/TaskWrkLog.java
@@ -249,6 +249,8 @@
                return "取消";
            case 5:
                return "完结";
            case 7:
                return "手动完结";
            default:
                return String.valueOf(this.status);
        }
src/main/java/com/zy/asrs/entity/param/CarryParam.java
File was deleted
src/main/java/com/zy/asrs/entity/param/CarrysParam.java
File was deleted
src/main/java/com/zy/asrs/entity/param/Result.java
File was deleted
src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
File was deleted
src/main/java/com/zy/asrs/entity/param/TaskCancelParam.java
New file
@@ -0,0 +1,20 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class TaskCancelParam {
    //工作号
    private String taskNo;
    //入出库类型
    private Integer ioType;
    //托盘码
    private String barcode;
    //状态
    private Integer taskStatus;
}
src/main/java/com/zy/asrs/entity/param/TaskCreateOutParam.java
New file
@@ -0,0 +1,31 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class TaskCreateOutParam {
    //任务号
    private String taskNo;
    //任务类型
    private Integer ioType;
    //起点
    private String startPoint;
    //优先级
    private Integer taskPriority;
    //终点
    private String targetPoint;
    //条码
    private String barcode;
    //备注
    private String memo;
    public TaskCreateOutParam(){};
}
src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java
@@ -28,45 +28,7 @@
    //备注
    private String memo;
    //堆垛机
    private Integer crn;
    public TaskCreateParam(){};
    public TaskCreateParam(WMSAndAGVInterfaceParam param){
        this.taskNo = param.getTaskNo();
        this.ioType = convertParamIoType(param.getTaskType());
        this.barcode = param.getContainerCode();
        this.taskPriority = param.getTaskPriority();
        this.startPoint = param.getSourceLocationCode();
        this.targetPoint = param.getTargetLocationCode();
        this.emptyContainer = param.getEmptyContainer();
        this.crn = param.getTaskTunnel();
    };
    public TaskCreateParam(CarryParam param, Integer crn){
        this.taskNo = param.getTaskNo();
        this.ioType = param.getStereoscopicTaskType();
        this.barcode = param.getBoxNo();
        this.taskPriority = 12;
        this.startPoint = param.getStartPoint();
        this.targetPoint = param.getTerminalNo();
        this.emptyContainer = "N";
        this.crn = crn;
    };
    public static Integer convertParamIoType(String paramIoType){
        switch (paramIoType){
            case "RK":
                return 1;
            case "CK":
                return 2;
            case "YK":
                return 3;
            default:
                return 0;
        }
    }
}
src/main/java/com/zy/asrs/entity/param/TaskStatusFeedbackParam.java
File was deleted
src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,14 +1,14 @@
package com.zy.asrs.service;
import com.core.common.R;
import com.zy.asrs.entity.param.TaskCreateInParam;
import com.zy.asrs.entity.param.TaskCreateParam;
import java.util.HashMap;
public interface OpenService {
    //创建任务
    HashMap<String,Object> taskCreate(TaskCreateParam param);
    R taskCreate(TaskCreateParam param);
    HashMap<String,Object> taskCreateIn(TaskCreateInParam param);
    R taskCreateIn(TaskCreateInParam param);
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -8,8 +8,6 @@
import com.core.common.R;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WmsLocStatus;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.LocMastService;
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.Result;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.CommandUtils;
@@ -42,6 +41,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -96,9 +96,7 @@
    @Value("${wms.inboundTaskApplyPath}")
    private String inboundTaskApplyPath;
    @Value("${wms.TaskExecCallback}")
    private String TaskExecCallback;
    @Value("${wms.taskStatusFeedbackPath}")
    private String taskStatusFeedbackPath;
    private String taskExecCallback;
    public synchronized void generateStoreWrkFile1() {
        try {
@@ -167,13 +165,13 @@
                        }
                        HashMap<String, Object> requestParam = new HashMap<>();
                        requestParam.put("BoxNo", barcode);//托盘码
                        requestParam.put("TerminalNo", inSta.getStaNo());//入库口
                        requestParam.put("barcode", barcode);//托盘码
                        requestParam.put("stationCode", inSta.getStaNo());//入库口
                        if (back) {
                            requestParam.put("WCSStatus", 1);//失败
                            requestParam.put("WCSErrorMessage", errMsg);//失败原因
                            requestParam.put("wcsStatus", 1);//失败
                            requestParam.put("wcsErrorMessage", errMsg);//失败原因
                        }else {
                            requestParam.put("WCSStatus", 0);//成功
                            requestParam.put("wcsStatus", 0);//成功
                        }
                        String response = "";
@@ -193,73 +191,78 @@
                                continue;
                            }
                            int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString());
                            if (returnStatus == 0) {
                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                // 创新一个入库工作档
                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                                if(taskWrk != null) {
                                    log.info("任务:" + result.getTaskNo() + "已经存在");
                                    continue;
                                }
                            JSONObject result = jsonObject.getJSONObject("data");
                            Integer resultWrkNo = result.getInteger("wrkNo");
                            Integer resultStaNo = result.getInteger("staNo");
                            String resultLocNo = result.getString("locNo");
                                String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
                                LocMast locMast = locMastService.selectByLocNo(locNo);
                                if (locMast == null) {
                                    log.info(locNo + "库位不存在");
                                    continue;
                                }
                            // 创新一个入库工作档
                            TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo));
                            if(taskWrk != null) {
                                log.info("任务:" + resultWrkNo + "已经存在");
                                continue;
                            }
                                if (!locMast.getLocSts().equals("O")) {
                                    log.info(locNo + "库位不处于空库位");
                                    continue;
                                }
                            LocMast locMast = locMastService.selectByLocNo(resultLocNo);
                            if (locMast == null) {
                                log.info(resultLocNo + "库位不存在");
                                continue;
                            }
                                Date now = new Date();
                                taskWrk = new TaskWrk();
                                taskWrk.setTaskNo(result.getTaskNo());//任务号
                                taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                                taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                                taskWrk.setWrkSts(2);//2.设备上走
                                taskWrk.setCreateTime(now);
                                    taskWrk.setIoType(1);//任务类型
                                    taskWrk.setIoPri(13);//优先级
                                    taskWrk.setBarcode(barcode);//条码
                                    taskWrk.setCrnNo(locMast.getCrnNo());
                                    taskWrk.setTargetPoint(locNo);
                                    taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
                                    if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                                        taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                                    }
                            if (!locMast.getLocSts().equals("O")) {
                                log.info(resultLocNo + "库位不处于空库位");
                                continue;
                            }
                                    if (!taskWrkService.insert(taskWrk)) {
                                        log.info("任务:" + result.getTaskNo() + "任务创建失败");
                                    continue;
                                }
                            Date now = new Date();
                            taskWrk = new TaskWrk();
                            taskWrk.setTaskNo(String.valueOf(resultWrkNo));//任务号
                            taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                            taskWrk.setWrkSts(2);//2.设备上走
                            taskWrk.setCreateTime(now);
                            taskWrk.setIoType(1);//任务类型
                            taskWrk.setIoPri(13);//优先级
                            taskWrk.setBarcode(barcode);//条码
                            taskWrk.setCrnNo(locMast.getCrnNo());
                            taskWrk.setTargetPoint(resultLocNo);
                            taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
                            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                            }
                                locMast.setLocSts("S");
                                locMast.setModiTime(new Date());
                                locMastService.updateById(locMast);
                            if (!taskWrkService.insert(taskWrk)) {
                                log.info("任务:" + resultWrkNo + "任务创建失败");
                                continue;
                            }
                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            locMast.setLocSts("S");
                            locMast.setModiTime(new Date());
                            locMastService.updateById(locMast);
                                //上报
                                HashMap<String, Object> hashMap = new HashMap<>();
                                hashMap.put("TaskNo", taskWrk.getTaskNo());
                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                    .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                                customDataDto.setUri(wmsUrl);
                                customDataDto.setPath(taskStatusFeedbackPath);
                                customDataDto.setData(JSON.toJSONString(hashMap));
                                boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                                if(notifyResult) {
                                    taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                                    taskWrkService.updateById(taskWrk);
                                }
                            //上报
                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("taskNo", taskWrk.getTaskNo());
                            hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
                            hashMap.put("ioType", 1);
                            hashMap.put("barcode", taskWrk.getBarcode());
                            hashMap.put("reportTime", format.format(new Date()));
                            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                            customDataDto.setUri(wmsUrl);
                            customDataDto.setPath(taskExecCallback);
                            customDataDto.setData(JSON.toJSONString(hashMap));
                            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                            if(notifyResult) {
                                taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                                taskWrkService.updateById(taskWrk);
                            }
                        } catch (Exception e) {
                            log.error("请求入库调用接口失败");
@@ -597,12 +600,17 @@
                            }
                            //上报-出库任务开始时,WCS回调WMS
                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("TaskNo", taskWrk.getTaskNo());
                            hashMap.put("taskNo", taskWrk.getTaskNo());
                            hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
                            hashMap.put("ioType", 1);
                            hashMap.put("barcode", taskWrk.getBarcode());
                            hashMap.put("reportTime", format.format(new Date()));
                            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                            customDataDto.setUri(wmsUrl);
                            customDataDto.setPath(taskStatusFeedbackPath);
                            customDataDto.setPath(taskExecCallback);
                            customDataDto.setData(JSON.toJSONString(hashMap));
                            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                            if(notifyResult) {
@@ -690,7 +698,7 @@
                        response = new HttpHandler.Builder()
                                // .setHeaders(headParam)
                                .setUri(wmsUrl)
                                .setPath(taskStatusFeedbackPath)
                                .setPath(taskExecCallback)
                                .setJson(JSON.toJSONString(headParam))
                                .build()
                                .doPost();
@@ -706,7 +714,7 @@
//                        throw new CoolException("wcs派发移库库任务上报wms失败");
                    }finally {
                        apiLogService.save("wcs派发移库任务上报wms"
                                , wmsUrl + taskStatusFeedbackPath
                                , wmsUrl + taskExecCallback
                                , null
                                , "127.0.0.1"
                                , JSON.toJSONString(headParam)
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
@@ -25,13 +26,10 @@
    private LocMastService locMastService;
    @Override
    public HashMap<String, Object> taskCreate(TaskCreateParam param) {
        HashMap<String,Object> map=new HashMap<>();
    public R taskCreate(TaskCreateParam param) {
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
        if (taskWrk != null) {
            map.put("Code","0");
            map.put("Msg",param.getTaskNo()+"任务已经生成!");
            return map;
            return R.error(param.getTaskNo() + "任务已经生成!");
        }
        Date now = new Date();
@@ -42,14 +40,6 @@
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        try {
            if (param.getIoType() > 1) {
                if (Utils.locNoRowBoolean(locMast.getRow1())) {
                    param.setTaskPriority(11);
                }
            }
        } catch (Exception e) {
        }
        taskWrk.setIoType(param.getIoType());//任务类型
        taskWrk.setIoPri(param.getTaskPriority());//优先级
        taskWrk.setBarcode(param.getBarcode());//条码
@@ -68,52 +58,49 @@
                taskWrk.setTargetPoint(param.getTargetPoint());
            }
            taskWrk.setTargetPoint(param.getTargetPoint());
            locMast.setLocSts("R");
            locMast.setModiTime(new Date());
            locMastService.updateById(locMast);
        } else if (param.getIoType() == 3) {
            taskWrk.setWrkSts(11);
            if (!Cools.isEmpty(param.getStartPoint())) {
                taskWrk.setStartPoint(param.getStartPoint());//起点
                taskWrk.setTargetPoint(param.getTargetPoint());
            }
        }
            locMast.setLocSts("R");
            locMast.setModiTime(new Date());
            locMastService.updateById(locMast);
        }
        if (!Cools.isEmpty(param.getMemo())) {
            taskWrk.setMemo(param.getMemo());//备注
        }
        if (!taskWrkService.insert(taskWrk)) {
            map.put("Code","0");
            map.put("Msg",param.getTaskNo()+"创建任务失败!");
            return map;
            return R.error(param.getTaskNo() + "创建任务失败!");
        }
        map.put("Code","1");
        map.put("Msg","ok");
        return map;
        return R.ok();
    }
    @Override
    public HashMap<String, Object> taskCreateIn(TaskCreateInParam param) {
        HashMap<String, Object> map = new HashMap<>();
    public R taskCreateIn(TaskCreateInParam param) {
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
        if (taskWrk != null) {
            map.put("Code","0");
            map.put("Msg", param.getTaskNo() + "任务已经生成!");
            return map;
            return R.error(param.getTaskNo() + "任务已经生成!");
        }
        Date now = new Date();
        taskWrk = new TaskWrk();
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getTargetPoint()));
        if (locMast == null) {
            map.put("Code","0");
            map.put("Msg", param.getTaskNo() + "库位不存在!");
            return map;
            return R.error(param.getTaskNo() + "库位不存在!");
        }
        if (!locMast.getLocSts().equals("O")) {
            map.put("Code","0");
            map.put("Msg", param.getTaskNo() + "库位不处于空库位!");
            return map;
            return R.error(param.getTaskNo() + "库位不处于空库位!");
        }
        locMast.setLocSts("S");
@@ -137,12 +124,8 @@
        }
        if (!taskWrkService.insert(taskWrk)) {
            map.put("Code", "0");
            map.put("Msg", param.getTaskNo() + "创建任务失败!");
            return map;
            return R.error(param.getTaskNo() + "创建任务失败!");
        }
        map.put("Code","1");
        map.put("Msg","ok");
        return map;
        return R.ok();
    }
}
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -3,14 +3,9 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.mapper.TaskWrkMapper;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.TaskWrkService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -20,17 +15,6 @@
@Slf4j
@Service("taskWrkService")
public class TaskWrkServiceImpl extends ServiceImpl<TaskWrkMapper, TaskWrk> implements TaskWrkService {
    @Autowired
    private CommonService commonService;
    @Autowired
    private StaDescService staDescService;
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.taskStatusFeedbackPath}")
    private String taskStatusFeedbackPath;
    @Autowired
    private ApiLogService apiLogService;
    @Override
    public TaskWrk selectByTaskNo(String taskNo) {
src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -18,6 +18,7 @@
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@@ -47,12 +48,16 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() throws IOException {
        for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
            HashMap<String, Object> headParam = new HashMap<>();
            headParam.put("TaskNo", taskWrk.getTaskNo());
            headParam.put("taskNo", taskWrk.getTaskNo());
            headParam.put("barcode", taskWrk.getBarcode());
            headParam.put("reportTime", format.format(new Date()));
            NotifyMsgType notifyMsgType = null;
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus().equals(TaskStatusType.MANUAL_OVER.id)) {//完成
                headParam.put("Result", 1);//完成
                headParam.put("status", TaskStatusType.OVER.id);
                headParam.put("ioType", 1);
                notifyMsgType = NotifyMsgType.TASK_COMPLETE;
                if (taskWrk.getIoType() == 1) {//入库任务完成库位为F
@@ -114,7 +119,8 @@
                }
            } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) {
                headParam.put("Result", 2);//取消
                headParam.put("status", TaskStatusType.CANCEL.id);
                headParam.put("ioType", 2);
                notifyMsgType = NotifyMsgType.TASK_CANCEL;
                if (taskWrk.getIoType() == 1) {//入库任务
src/main/resources/application.yml
@@ -52,9 +52,7 @@
  url: 192.168.10.12:8001
  # 入库任务申请接口
  inboundTaskApplyPath: /wes/api/drivers/zy/asrs/inboundTaskApply
  # 任务开始时,WCS回调WMSz
  taskStatusFeedbackPath: /wes/api/drivers/zy/asrs/callBack
  # 任务完成结束时,WCS回调WMS
  # WCS回调WMS
  TaskExecCallback: /wes/api/drivers/zy/asrs/callBack
  # 移库申请接口
  movePath: /wes/api/get_InterFace_TestStorage