#
zjj
2023-12-04 82e14834b38c398f6bc75e8b7454a0b223be2a66
#
8个文件已修改
1个文件已添加
266 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CommandInfoLogController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkController.java 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkLogController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskWrkLog.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TaskOverToWms.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/TaskLogScheduler.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/taskWrkLog/commandManageLog.html 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CommandInfoLogController.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.CommandInfoLog;
import com.zy.asrs.service.CommandInfoLogService;
import com.core.annotations.ManagerAuth;
@@ -24,6 +25,20 @@
    @Autowired
    private CommandInfoLogService commandInfoLogService;
    @RequestMapping(value = "/commandInfoLog/listLog/auth")
    @ManagerAuth
    public R listLog(@RequestParam(defaultValue = "1")Integer curr,
                     @RequestParam(defaultValue = "10")Integer limit,
                     @RequestParam(required = false)String orderByField,
                     @RequestParam(required = false)String orderByType,
                     @RequestParam Map<String, Object> param){
        EntityWrapper<CommandInfoLog> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(commandInfoLogService.selectPage(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/commandInfoLog/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -1,28 +1,42 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.TaskWrkService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@Slf4j
public class TaskWrkController extends BaseController {
    @Value("${wms.url}")
    private String wmsUrl;
    @Autowired
    private TaskWrkService taskWrkService;
    @Autowired
    private CommandInfoService commandInfoService;
    @RequestMapping(value = "/taskWrk/{wrkNo}/auth")
    @ManagerAuth
@@ -149,22 +163,79 @@
    @ManagerAuth(memo = "手动完成任务")
    public R complete(@RequestParam String taskNo) {
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
        if (taskWrk == null) {
            return R.error();
        Map<String, Object> map = new HashMap<>();
        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
        TaskOverToWms taskOverToWms = new TaskOverToWms();
        taskOverToWms.setFeedbackFrom("WCS"); //来源
        taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识
        taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号
        taskOverToWms.setTaskType(getTaskType(taskWrk.getIoType())); // 任务类型
        taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码
        if (taskWrk.getIoType() ==1 ){
            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
        }else if (taskWrk.getIoType() ==2){
            Map<Integer,String> map1 = new HashMap<>();
            map1.put(102,"J-1101");
            map1.put(106,"J-1103");
            map1.put(110,"J-1105");
            map1.put(114,"J-1107");
            map1.put(118,"J-1109");
            map1.put(122,"J-1111");
            taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码
            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位
        }
        if (taskWrk.getStatus().equals(TaskStatusType.COMPLETE.id)) {
            return R.error(taskWrk.getTaskNo() + "已完结");
        }
        Date now = new Date();
        taskWrk.setStatus(TaskStatusType.COMPLETE.id);
        taskWrk.setModiTime(now);//操作时间
        try{
            taskWrk.setModiUser(getUserId());//操作员
        taskOverToWms.setTaskStatus("handle"); //任务状态
        String response = null;
        try {
            response = new HttpHandler.Builder()
                    .setHeaders(map)
                    .setUri(wmsUrl)
                    .setPath("wcsManager/wcsInterface/taskStatusFeedback")
                    .setJson(JSON.toJSONString(taskOverToWms))
                    .build()
                    .doPost();
        }catch (Exception e){
            taskWrk.setModiUser(9999L);//操作员
            log.error("wms连接失败");
        }
        taskWrk.setCompleteTime(now);//完结时间
        taskWrkService.updateById(taskWrk);
        JSONObject jsonObject = JSON.parseObject(response);
        if (jsonObject.getInteger("code").equals(200)){
            if (taskWrk == null) {
                return R.error();
            }
            if (taskWrk.getStatus().equals(TaskStatusType.COMPLETE.id)) {
                return R.error(taskWrk.getTaskNo() + "已完结");
            }
            Date now = new Date();
            taskWrk.setStatus(TaskStatusType.COMPLETE.id);
            taskWrk.setModiTime(now);//操作时间
            try{
                taskWrk.setModiUser(getUserId());//操作员
            }catch (Exception e){
                taskWrk.setModiUser(9999L);//操作员
            }
            taskWrk.setCompleteTime(now);//完结时间
            taskWrkService.updateById(taskWrk);
            if (taskWrkService.saveToHistory(taskWrk.getTaskNo()) > 0) {
                //任务已经转日志,将该任务下面的指令转日志
                commandInfoService.saveToHistory(taskWrk.getTaskNo());
                //删除任务
                taskWrkService.delete(new EntityWrapper<TaskWrk>().eq("task_no", taskWrk.getTaskNo()));
                //删除指令
                commandInfoService.delete(new EntityWrapper<CommandInfo>().eq("task_no", taskWrk.getTaskNo()));
            }
        }else {
            return R.error("wms通讯失败");
        }
        return R.ok();
    }
@@ -206,4 +277,17 @@
        return R.ok();
    }
    public static String getTaskType(Integer paramIoType){
        switch (paramIoType){
            case 1:
                return "RK";
            case 2:
                return "CK";
            case 3:
                return "YK";
            default:
                return "未知";
        }
    }
}
src/main/java/com/zy/asrs/controller/TaskWrkLogController.java
@@ -67,7 +67,7 @@
    @RequestMapping(value = "/taskWrkLog/update/auth")
    @ManagerAuth
    public R update(TaskWrkLog taskWrkLog){
        if (Cools.isEmpty(taskWrkLog) || null==taskWrkLog.getId()){
        if (Cools.isEmpty(taskWrkLog)){
            return R.error();
        }
        taskWrkLogService.updateById(taskWrkLog);
@@ -103,8 +103,8 @@
        List<Map<String, Object>> result = new ArrayList<>();
        for (TaskWrkLog taskWrkLog : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", taskWrkLog.getId());
            map.put("value", taskWrkLog.getId());
            map.put("id", taskWrkLog.getTaskNo());
            map.put("value", taskWrkLog.getTaskNo());
            result.add(map);
        }
        return R.ok(result);
src/main/java/com/zy/asrs/entity/TaskWrkLog.java
@@ -173,9 +173,9 @@
    @TableField("command_step")
    private Integer commandStep;
    @ApiModelProperty(value= "")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
//    @ApiModelProperty(value= "")
//    @TableId(value = "id", type = IdType.AUTO)
//    private Long id;
    @ApiModelProperty(value = "移库标记")
src/main/java/com/zy/asrs/entity/param/TaskOverToWms.java
New file
@@ -0,0 +1,19 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class TaskOverToWms {
    private String feedbackFrom;
    private String warehouseId;
    private String taskType;
    private String equipmentCode;
    private String taskNo;
    private String taskStatus;
    private String sourceLocationCode;
    private String targetLocationCode;
    private String containerCode;
    private String containerTypeCode;
    private String emptyContainer;
    private String errorCode;
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -133,7 +133,7 @@
        map.put("J-1107",114);map.put("J-1108",113);
        map.put("J-1109",118);map.put("J-1110",117);
        map.put("J-1111",122);map.put("J-1112",121);
        map.put("H-1101",305);map.put("H-1102",300);
        // 根据输送线plc遍历
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 获取入库站信息
@@ -155,7 +155,7 @@
                    }else {
                        if (staProtocol.isLoading() && !staProtocol.isCar() && workNo == 0){
                            //AGV入库完成以后
                            staProtocol.setWorkNo((short) 9998);
                            staProtocol.setWorkNo((short) 9999);
                            staProtocol.setStaNo(inSta.getStaNo().shortValue());
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            if (result) {
src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -1,20 +1,27 @@
package com.zy.asrs.task;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.entity.param.TaskStatusFeedbackParam;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.TaskWrkService;
import com.zy.asrs.utils.PostMesDataUtils;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 定时将任务(完成、取消)转成日志
@@ -34,15 +41,60 @@
    private String movePath;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() {
    public void execute() throws IOException {
        for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) {
            TaskStatusFeedbackParam taskStatusFeedbackParam = new TaskStatusFeedbackParam(taskWrk);
            if (taskWrk.getStatus().equals(TaskStatusType.COMPLETE.id)) {//完成
                taskStatusFeedbackParam.setTaskStatus("done");
                new PostMesDataUtils().postMesData("完成上报",wmsUrl,movePath,taskWrk);
                Map<String, Object> map = new HashMap<>();
                map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
                TaskOverToWms taskOverToWms = new TaskOverToWms();
                taskOverToWms.setFeedbackFrom("WCS"); //来源
                taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识
                taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号
                taskOverToWms.setTaskType(taskStatusFeedbackParam.getTaskType()); // 任务类型
                taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码
                if (taskWrk.getIoType() ==1 ){
                    taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
                    taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
                }else if (taskWrk.getIoType() ==2){
                    Map<Integer,String> map1 = new HashMap<>();
                    map1.put(102,"J-1101");
                    map1.put(106,"J-1103");
                    map1.put(110,"J-1105");
                    map1.put(114,"J-1107");
                    map1.put(118,"J-1109");
                    map1.put(122,"J-1111");
                    taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码
                    taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位
                }
                taskOverToWms.setTaskStatus("done"); //任务状态
                String response = null;
                try {
                    response = new HttpHandler.Builder()
                            .setHeaders(map)
                            .setUri(wmsUrl)
                            .setPath("wcsManager/wcsInterface/taskStatusFeedback")
                            .setJson(JSON.toJSONString(taskOverToWms))
                            .build()
                            .doPost();
                }catch (Exception e){
                    continue;
                }
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code").equals(200)){
                }else {
                    continue;
                }
                //new PostMesDataUtils().postMesData("完成上报",wmsUrl,movePath,taskWrk);
            } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) {
                taskStatusFeedbackParam.setTaskStatus("cancelled");
                new PostMesDataUtils().postMesData("取消任务完成",wmsUrl,movePath,taskWrk);
                //new PostMesDataUtils().postMesData("取消任务完成",wmsUrl,movePath,taskWrk);
            }
            if (taskWrkService.saveToHistory(taskWrk.getTaskNo()) > 0) {
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -351,7 +351,7 @@
        }
        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB13.2", (short) 100);
        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB13.2", (short) (staNoSize*4));
        if (resultErr.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
src/main/webapp/views/taskWrkLog/commandManageLog.html
@@ -118,7 +118,7 @@
                        data.curr = this.currentPage
                        data.limit = this.pageSize
                        $.ajax({
                            url: baseUrl + "/commandInfo/list/auth",
                            url: baseUrl + "/commandInfoLog/list/auth",
                            headers: {
                                'token': localStorage.getItem('token')
                            },
@@ -141,28 +141,30 @@
                            }
                        });
                        $.ajax({
                            url: baseUrl + "/taskWrk/" + this.tableSearchParam.wrk_no + "/auth",
                            headers: {
                                'token': localStorage.getItem('token')
                            },
                            data: data,
                            dataType: 'json',
                            contentType: 'application/json;charset=UTF-8',
                            method: 'GET',
                            success: function(res) {
                                if (res.code == 200) {
                                    that.commandStep = parseInt(res.data.commandStep)
                                } else if (res.code === 403) {
                                    top.location.href = baseUrl + "/";
                                } else {
                                    that.$message({
                                        message: res.msg,
                                        type: 'error'
                                    });
                        if (this.tableSearchParam.wrk_no != null) {
                            $.ajax({
                                url: baseUrl + "/taskWrk/" + this.tableSearchParam.wrk_no + "/auth",
                                headers: {
                                    'token': localStorage.getItem('token')
                                },
                                data: data,
                                dataType: 'json',
                                contentType: 'application/json;charset=UTF-8',
                                method: 'GET',
                                success: function(res) {
                                    if (res.code == 200) {
                                        that.commandStep = parseInt(res.data.commandStep)
                                    } else if (res.code === 403) {
                                        top.location.href = baseUrl + "/";
                                    } else {
                                        that.$message({
                                            message: res.msg,
                                            type: 'error'
                                        });
                                    }
                                }
                            }
                        });
                            });
                        }
                    },
                    handleSizeChange(val) {
                        console.log(`每页 ${val} 条`);