自动化立体仓库 - WCS系统
#
whycq
2024-02-02 3f68c7a7f117eda92eed81c8951317429e6a9a0c
#
6个文件已修改
173 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/WMSAndAGVInterfaceParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/TaskLogScheduler.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskWrkMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/wms/js/locMast/locMast.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -96,9 +96,15 @@
        if (Cools.isEmpty(param.getBarcode())) {
            return R.error("条码[barcode]不能为空");
        }
        String locNo=null;
        if(param.getIoType()==1){
            locNo=param.getTargetPoint();
        }else{
            locNo=param.getStartPoint();
        }
        LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
                .eq("loc_sts","F")
                .eq("loc_no",param.getTargetPoint())
                .eq("loc_no",locNo)
                .eq("barcode",param.getBarcode()));
        if(Cools.isEmpty(locMast)){
            return R.error("该库位不满住出库条件"+param.getTargetPoint());
@@ -319,35 +325,29 @@
            return R.error("参数为空!");
        } else if (Cools.isEmpty(param.getTaskNo())){
            return R.error("工作号为空!");
        } else if (Cools.isEmpty(param.getTaskStatus())){
        } else if (Cools.isEmpty(param.getIoType())){
            return R.error("操作类型为空!");
        } else if (Cools.isEmpty(param.getBarcode())){
            return R.error("托盘码不能为空!");
        }
//        else if (Cools.isEmpty(param.getWarehouseId())){
//            return R.error("仓库标识为空!");
//        }
        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", param.getTaskNo()));
        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("未查到当前任务");
            return R.error("未查到当前任务---"+param);
        }
        boolean sign =false;
        switch (param.getTaskStatus()){
            case 1://正常取消
                if (taskWrk.getWrkSts()>1){
                if (taskWrk.getStatus()>1){
                    return R.error("任务已开始执行");
                }
            case 2://强制取消
                if (taskWrk.getWrkSts()>3){
                    return R.error("任务已执行完成");
                }
                break;
            case 3://正常完成
                if (taskWrk.getWrkSts()>11){
            case 2://正常完成
                if (taskWrk.getStatus()>1){
                    return R.error("任务已开始执行");
                }
            case 4://强制完成
                if (taskWrk.getWrkSts()>14){
                    return R.error("任务已执行完成");
                }
                sign=true;
                break;
src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -8,9 +8,11 @@
import com.core.common.DateUtils;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.TaskWrkService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
@@ -37,6 +39,9 @@
    @Autowired
    private CommandInfoService commandInfoService;
    @Autowired
    private LocMastService locMastService;
    @RequestMapping(value = "/taskWrk/{wrkNo}/auth")
    @ManagerAuth
@@ -163,78 +168,43 @@
    @ManagerAuth(memo = "手动完成任务")
    public R complete(@RequestParam String taskNo) {
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
        LocMast locMast=new LocMast();
            if(taskWrk.getIoType()==1){//入库任务完成库位为F
                locMast=locMastService.selectByLocNo(taskWrk.getTargetPoint());
                if(Cools.isEmpty(locMast)){
                  R.error("没有找到该库位") ;
                }
                locMast.setLocSts("F");
                locMast.setModiTime(new Date());
                locMast.setBarcode(taskWrk.getBarcode());
            }else if(taskWrk.getIoType()==2){//出库任务完成库位为O
                locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
                if(Cools.isEmpty(locMast)){
                    R.error("没有找到该库位") ;
                }
                locMast.setLocSts("O");
                locMast.setModiTime(new Date());
            }else if(taskWrk.getIoType()==3){
                locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
                if(Cools.isEmpty(locMast)){
                    R.error("没有找到该库位") ;
                }
                locMast.setLocSts("O");
                locMast.setModiTime(new Date());
                locMastService.updateById(locMast);
                locMast=locMastService.selectByLocNo(taskWrk.getTargetPoint());
                if(Cools.isEmpty(locMast)){
                    R.error("没有找到该库位") ;
                }
                locMast.setLocSts("F");
                locMast.setModiTime(new Date());
                locMast.setBarcode(taskWrk.getBarcode());
        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()); //源库位
        }
        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){
            log.error("wms连接失败");
        }
        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);//完结时间
            locMastService.updateById(locMast);
            taskWrk.setStatus(7);//手动完成任务
            taskWrk.setModiTime(new Date());
            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();
    }
src/main/java/com/zy/asrs/entity/param/WMSAndAGVInterfaceParam.java
@@ -13,6 +13,9 @@
    //入出库类型
    private int ioType;
    //托盘码
    private String barcode;
    //private String taskNo;              //任务号
    private String warehouseId;         //仓库标识
src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -55,8 +55,7 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() throws IOException {
        for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) {
            TaskStatusFeedbackParam taskStatusFeedbackParam = new TaskStatusFeedbackParam(taskWrk);
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id)) {//完成
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id)||taskWrk.getStatus()==7) {//完成
                //区分入出库
                    TaskWrkLog taskWrkLog=new TaskWrkLog(taskWrk);
                    if(!wrkLogService.insert(taskWrkLog)){
@@ -66,19 +65,15 @@
                        throw new CoolException("任务档删除失败"+taskWrkLog);
                    }
            } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) {
                taskStatusFeedbackParam.setTaskStatus("cancelled");
                //new PostMesDataUtils().postMesData("取消任务完成",wmsUrl,movePath,taskWrk);
                TaskWrkLog taskWrkLog=new TaskWrkLog(taskWrk);
                if(!wrkLogService.insert(taskWrkLog)){
                    throw new CoolException("转历史档失败"+taskWrkLog);
                }
                if(!taskWrkService.deleteById(taskWrk)){
                    throw new CoolException("任务档删除失败"+taskWrkLog);
                }
            }
            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()));
            }
        }
    }
src/main/resources/mapper/TaskWrkMapper.xml
@@ -118,12 +118,12 @@
    <select id="selectToBeHistoryData" resultMap="BaseResultMap">
        select * from dbo.wcs_task_wrk
        where 1=1
        and ((wrk_sts=14 and status=5) or status=4 or (wrk_sts=4 and status=5))
        and ((wrk_sts=14 and status=5) or status=7 or status=4 or (wrk_sts=4 and status=5))
        order by io_pri desc,create_time,wrk_no ASC
    </select>
    <insert id="saveToHistory">
        insert into wcs_task_wrk_log select * from wcs_task_wrk where task_no = #{taskNo} and (status=5 or status=4)
        insert into wcs_task_wrk_log select * from wcs_task_wrk where task_no = #{taskNo} and (status=5 or status=4 or status=6)
    </insert>
    <select id="selectWorkingTask" resultMap="BaseResultMap">
src/main/webapp/static/wms/js/locMast/locMast.js
@@ -32,6 +32,7 @@
            ,{field: 'row1', align: 'center',title: '排', sort:true}
            ,{field: 'bay1', align: 'center',title: '列', sort:true}
            ,{field: 'lev1', align: 'center',title: '层', sort:true}
            ,{field: 'barcode', align: 'center',title: '托盘码', sort:true}
            // ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){
            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.fullPlt === 'Y'){html += " checked ";}