| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | |
| | | convert(param, wrapper); |
| | | allLike(BasAgvMast.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | wrapper.orderBy("modi_time",false); |
| | | return R.ok(basAgvMastService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | |
| | | return R.ok().add(taskArmWorkOrderSign); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 分拣线上报接收 |
| | | */ |
| | | @PostMapping("/agv/task/v1") |
| | | @AppAuth(memo = "AGV上报接收") |
| | | public synchronized R TaskAgvReport(@RequestHeader(required = false) String appkey, |
| | | @RequestBody TaskAgvReportParam param, |
| | | HttpServletRequest request) { |
| | | auth(appkey, param, request); |
| | | if (Cools.isEmpty(param)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | if (Cools.isEmpty(param.getTaskNo())) { |
| | | return R.error("WMS任务号[taskNo]不能为空"); |
| | | } |
| | | // if (Cools.isEmpty(param.getTimestamp())) { |
| | | // return R.error("RGV任务号[timestamp]不能为空"); |
| | | // } |
| | | boolean taskAgvReport = openService.TaskAgvReport(param); |
| | | if (taskAgvReport){ |
| | | return R.ok(); |
| | | } |
| | | return R.error("任务号不存在"); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /* |
| | | * Created by Monkey D. Luffy on 2025.09.09 |
| | | * */ |
| | | @Data |
| | | public class TaskAgvReportParam { |
| | | //WMS任务号 |
| | | private int taskNo; |
| | | //RGV任务号 |
| | | private Long timestamp; |
| | | // |
| | | private int status; |
| | | } |
| | |
| | | void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param); |
| | | void taskArmWorkOrderStatus(OrderArmEndParam param); |
| | | boolean TaskArmWorkOrderSign(OrderArmEndParam param); |
| | | boolean TaskAgvReport(TaskAgvReportParam param); |
| | | } |
| | |
| | | private BasArmMastService basArmMastService; |
| | | @Autowired |
| | | private BasArmMastSignService basArmMastSignService; |
| | | @Autowired |
| | | private BasAgvMastService basAgvMastService; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean TaskAgvReport(TaskAgvReportParam param) { |
| | | BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", param.getTaskNo())); |
| | | if (Cools.isEmpty(basAgvMast)){ |
| | | return false; |
| | | } |
| | | basAgvMast.setStatus(2); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | # url: jdbc:sqlserver://127.0.0.1:49847;databasename=jshdasrs |
| | | url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs |
| | | # url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs |
| | | # url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs |
| | | url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs |
| | | username: sa |
| | | password: sa@123 |
| | | mvc: |
| | |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'id', align: 'center',title: 'ID'} |
| | | ,{field: 'taskNo', align: 'center',title: 'WMS任务号'} |
| | | ,{field: 'timestamp', align: 'center',title: 'RGV任务号'} |
| | | ,{field: 'sourceStaNo', align: 'center',title: '源站点'} |
| | | ,{field: 'staNo', align: 'center',title: '目的站点'} |
| | | ,{field: 'sourceLocNo', align: 'center',title: '源库位'} |
| | | ,{field: 'locNo', align: 'center',title: '目的库位'} |
| | | ,{field: 'priority', align: 'center',title: '优先级'} |
| | | ,{field: 'floorNo', align: 'center',title: '楼层'} |
| | | ,{field: 'status$', align: 'center',title: '状态'} |
| | | ,{field: 'errorTime$', align: 'center',title: '异常时间'} |
| | | ,{field: 'errorMemo', align: 'center',title: '异常信息'} |
| | | ,{field: 'appeTime$', align: 'center',title: '添加时间'} |
| | | ,{field: 'modiTime$', align: 'center',title: '修改时间'} |
| | | ,{field: 'modiUser$', align: 'center',title: '修改人员'} |
| | | // {type: 'checkbox'} |
| | | // , |
| | | {field: 'id', align: 'center',title: 'ID',hide: true} |
| | | ,{field: 'taskNo', align: 'center',title: 'WMS任务号',hide: false} |
| | | ,{field: 'timestamp', align: 'center',title: 'RGV任务号',hide: false} |
| | | ,{field: 'ioType', align: 'center',title: '任务类型',hide: false} |
| | | ,{field: 'sourceStaNo', align: 'center',title: '源站点',hide: false} |
| | | ,{field: 'staNo', align: 'center',title: '目的站点',hide: false} |
| | | ,{field: 'sourceLocNo', align: 'center',title: '源库位',hide: false} |
| | | ,{field: 'locNo', align: 'center',title: '目的库位',hide: false} |
| | | ,{field: 'priority', align: 'center',title: '优先级',hide: true} |
| | | ,{field: 'floorNo', align: 'center',title: '楼层',hide: false} |
| | | ,{field: 'status$', align: 'center',title: '状态',hide: false} |
| | | ,{field: 'appeTime$', align: 'center',title: '添加时间',hide: false} |
| | | ,{field: 'errorTime$', align: 'center',title: '异常时间',hide: true} |
| | | ,{field: 'errorMemo', align: 'center',title: '异常信息',hide: false} |
| | | ,{field: 'modiTime$', align: 'center',title: '修改时间',hide: true} |
| | | ,{field: 'modiUser$', align: 'center',title: '修改人员',hide: true} |
| | | ,{field: 'devpId', align: 'center',title: '输送PLCId',hide: true} |
| | | |
| | | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | |
| | | <input name="id" type="hidden"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">WMS任务号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="taskNo" placeholder="请输入WMS任务号" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">RGV任务号: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="timestamp" placeholder="请输入RGV任务号"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label layui-form-required">WMS任务号: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="taskNo" placeholder="请输入WMS任务号" lay-vertype="tips" lay-verify="required">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">RGV任务号: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="timestamp" placeholder="请输入RGV任务号">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">源站点: </label> |
| | | <div class="layui-input-block"> |
| | |
| | | <input class="layui-input" name="locNo" placeholder="请输入目的库位"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">优先级: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="priority" placeholder="请输入优先级">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">楼层: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="floorNo" placeholder="请输入楼层">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">优先级: </label> |
| | | <label class="layui-form-label">任务类型: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="priority" placeholder="请输入优先级"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">楼层: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="floorNo" placeholder="请输入楼层"> |
| | | <select name="status"> |
| | | <option value="">请选择</option> |
| | | <option value="0">AGV库位==》输送站点</option> |
| | | <option value="1">AGV库位==》AGV库位</option> |
| | | <option value="2">输送站点==》AGV库位</option> |
| | | <option value="3">输送站点==》输送站点</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">异常时间: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="errorTime" id="errorTime$" placeholder="请输入异常时间"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">异常信息: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="errorMemo" placeholder="请输入异常信息"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">添加时间: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">修改时间: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">修改人员: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none"> |
| | | <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">异常时间: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="errorTime" id="errorTime$" placeholder="请输入异常时间">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">异常信息: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="errorMemo" placeholder="请输入异常信息">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">添加时间: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="appeTime" id="appeTime$" placeholder="请输入添加时间">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">修改时间: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="modiTime" id="modiTime$" placeholder="请输入修改时间">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">修改人员: </label>--> |
| | | <!-- <div class="layui-input-block cool-auto-complete">--> |
| | | <!-- <input class="layui-input" name="modiUser" placeholder="请输入修改人员" style="display: none">--> |
| | | <!-- <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入修改人员" onfocus=this.blur()>--> |
| | | <!-- <div class="cool-auto-complete-window">--> |
| | | <!-- <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">--> |
| | | <!-- <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | </div> |
| | | </div> |