src/main/java/com/zy/asrs/entity/Task.java
@@ -395,7 +395,7 @@ public String getTaskType$(){ if (Cools.isEmpty(this.taskType)){return null;} if (taskType.equals("agv")) { if (taskType.equals("AGV")) { return "AGV任务"; } else { return "堆垛机任务"; src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
@@ -30,9 +30,6 @@ @Transactional(rollbackFor = Exception.class) public boolean save(Integer wrkNo) { List<TaskDetl> detls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkNo)); if (Objects.isNull(detls) || detls.isEmpty()) { throw new CoolException("数据错误:任务不存在!!"); } detls.forEach(detl -> { TaskDetlLog detlLog = new TaskDetlLog(); BeanUtils.copyProperties(detl, detlLog); src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
@@ -44,6 +44,6 @@ throw new CoolException("任务日志保存失败!!"); } return false; return true; } } src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -42,16 +42,12 @@ if (Cools.isEmpty(wrkMast)) { throw new CoolException(workNo + "工作档不存在"); } if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { if (wrkMast.getWrkSts() == 304) { throw new CoolException("当前工作档已完成"); } // 入库 + 库位转移 if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) { wrkMast.setWrkSts(4L); // 出库 } else if (wrkMast.getWrkSts() > 10) { wrkMast.setWrkSts(14L); } wrkMast.setWrkSts(304L); Date now = new Date(); wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); wrkMast.setCrnEndTime(now); @@ -135,117 +131,9 @@ if (Cools.isEmpty(wrkMast)) { throw new CoolException(workNo + "工作档不存在"); } String locNo = ""; // 待修改目标库位 String locSts = ""; // 待修改目标库位状态 // 入库取消(修改目标库位) if (wrkMast.getWrkSts() < 4) { locNo = wrkMast.getLocNo(); locSts = "O"; // 库位转移 if (wrkMast.getIoType() == 11) { // 库位转移:源库位 LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getSourceLocNo())); if (Cools.isEmpty(locMast)) { throw new CoolException("取消库位转移失败,源库位不存在:" + wrkMast.getSourceLocNo()); } locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F"); locMast.setModiTime(now); locMast.setModiUser(userId); locCacheService.updateById(locMast); } // 出库取消(修改源库位) } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); // 出库 ===>> F.在库 if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { locSts = "F"; // 空板出库 ===>> D.空桶/空栈板 } else if (wrkMast.getIoType() == 110) { locSts = "D"; // 库位转移 ===>> D.空桶/空栈板 } else if (wrkMast.getIoType() == 11) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F"; // 库位转移:目标库位 LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); if (Cools.isEmpty(locMast)) { throw new CoolException("取消库位转移失败,目标库位不存在:" + wrkMast.getSourceLocNo()); } locMast.setLocSts("O"); locMast.setModiTime(now); locMast.setModiUser(userId); locCacheService.updateById(locMast); } } else { throw new CoolException("当前工作状态无法取消"); if(wrkMast.getWrkSts() >= 304) { throw new CoolException("工作状态已经完成:" + wrkMast.getWrkSts()); } //取消入库工作档时,查询组托表,如果有将状态改为待处理 if (wrkMast.getIoType() == 1) { List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); for (WaitPakin waitPakin : waitPakins) { if (!Cools.isEmpty(waitPakin)) { waitPakin.setIoStatus("N"); waitPakin.setLocNo(""); waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() // .eq("order_no", waitPakin.getOrderNo()) .eq("zpallet", waitPakin.getZpallet()) .eq("matnr", waitPakin.getMatnr()) .eq("batch", waitPakin.getBatch())); } } } //取消出库工作档时,查询单据管理表,回滚作业中数量 if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) { List<TaskDetl> wrkDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo())); for (TaskDetl wrkDetl : wrkDetls) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { // throw new CoolException("订单数据回滚失败"); // } OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme()); //修改订单主表状态,没有作业数量时才可以修改 boolean flag = true; // List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo())); Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo()); List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId()); for (OrderDetl orderDetl : orderDetls) { if (orderDetl.getWorkQty() > 0) { flag = false; } } if (flag) { // Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo())); if (!Cools.isEmpty(order) && order.getSettle() == 2) { order.setSettle(1L); order.setUpdateBy(userId); order.setUpdateTime(now); } // if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){ // throw new CoolException("修改订单状态失败"); // } OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId); } } } } // // 订单关联 // List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); // for (WrkDetl wrkDetl : wrkDetls) { // if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { // throw new CoolException("订单数据回滚失败"); // } // // 生成新的出库作业 //// stockOutRe(wrkMast, wrkDetls); // } // } // 取消操作人员记录 wrkMast.setManuType("手动取消"); @@ -259,29 +147,12 @@ throw new CoolException("保存工作历史档失败, workNo = " + wrkMast.getWrkNo()); } // 删除工作主档 boolean wrkMastRes = taskService.deleteById(wrkMast); taskService.deleteById(wrkMast); if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { // 保存工作明细档历史档 if (!taskDetlLogService.save(wrkMast.getWrkNo())) { // throw new CoolException("保存工作明细历史档失败, workNo = " + wrkMast.getWrkNo()); } // 删除工作档明细 boolean wrkDetlRes = taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo)); } // 修改库位状态 LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", locNo)); if (Cools.isEmpty(locMast)) { throw new CoolException("取消工作档失败,库位不存在:" + locNo); } locMast.setLocSts(locSts); locMast.setModiTime(now); locMast.setModiUser(userId); boolean locMastRes = locCacheService.updateById(locMast); if (!wrkMastRes || !locMastRes) { throw new CoolException("保存数据失败"); } // 保存工作明细档历史档 taskDetlLogService.save(wrkMast.getWrkNo()); // 删除工作档明细 taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", workNo)); } } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1079,7 +1079,7 @@ @Transactional public void cancelWrkMast(String workNo, Long userId) { Date now = new Date(); WrkMast wrkMast = wrkMastService.selectById(workNo); WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",workNo)); if (Cools.isEmpty(wrkMast)) { throw new CoolException(workNo + "工作档不存在"); } @@ -1235,7 +1235,7 @@ @Override @Transactional public void pickWrkMast(String workNo, Long userId) { WrkMast wrkMast = wrkMastService.selectById(workNo); WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",workNo)); if (Cools.isEmpty(wrkMast)) { throw new CoolException(workNo + "工作档不存在"); } src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -61,15 +61,7 @@ return; } for (Task wrkMast : wrkMasts) { ReturnT<String> returnT = workMastHandler.AgvStart(wrkMast); if (!returnT.isSuccess()) { wrkMast.setUpdMk("X"); wrkMast.setErrorMemo(returnT.getMsg()); wrkMast.setErrorTime(new Date()); if (!taskService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } workMastHandler.AgvStart(wrkMast); } } src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -584,6 +585,11 @@ } return SUCCESS; } @Resource private TaskLogService taskLogService; @Resource private TaskDetlLogService taskDetlLogService; /** * @author Ryan @@ -592,15 +598,19 @@ * @version 1.0 */ @Transactional(rollbackFor = Exception.class) public ReturnT<String> AgvStart(Task task) { // 4.入库完成 if (task.getWrkSts() == 4) { return agvDoIn(task); // 14.出库完成 } else if (task.getWrkSts() == 14) { return agvDoOut(task); } return SUCCESS; public void AgvStart(Task task) { // 保存工作主档历史档 taskLogService.save(task.getWrkNo()); // 删除工作主档 taskService.deleteById(task.getId()); // 保存工作明细档历史档 taskDetlLogService.save(task.getWrkNo()); // 删除工作档明细 taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo())); } src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@ </resultMap> <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task"> select * from agv_task where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no select * from agv_task where (wrk_sts = 303 Or wrk_sts = 304 ) </select> </mapper> src/main/webapp/static/js/task/task.js
@@ -171,7 +171,7 @@ title: '工作号:' + data.wrkNo, shadeClose: true }, function () { http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) { http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -182,7 +182,7 @@ title: '工作号:' + data.wrkNo, shadeClose: true }, function () { http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) { http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) @@ -193,7 +193,7 @@ // 拣料入库 case 'pick': layer.confirm('拣料入库该笔工作档?', {title: '工作号:' + data.wrkNo, shadeClose: true}, function () { http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 3}, function (res) { http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 3}, function (res) { $(".layui-laypage-btn")[0].click(); layer.msg(data.wrkNo + res.msg); }) src/main/webapp/static/js/taskLog/taskLog.js
@@ -107,7 +107,7 @@ maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: true, content: 'taskLog_detail.html', content: 'taskDetlLog.html', success: function (layero, index) { } }); src/main/webapp/views/taskLog/taskDetlLog.html
New file @@ -0,0 +1,93 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> <link rel="stylesheet" href="../../static/css/common.css" media="all"> <style> </style> </head> <body> <div class="layui-inline" style="width:31%;margin-top: 20px"> <label class="layui-form-label">工 作 号:</label> <div class="layui-input-inline"> <input id="wrkNo" class="layui-input" type="text" disabled="disabled"> </div> </div> <table class="layui-hide" id="taskDetailByMast" lay-filter="taskDetailByMast"></table> </body> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script> <script type="text/javascript"> var pageCur; function getCol() { var cols = [ {field: 'wrkNo', align: 'center', title: '工作号'} , {field: 'ioTime$', align: 'center', title: '工作时间'} ]; cols.push.apply(cols, detlCols); return cols; } layui.use(['table', 'laydate', 'form'], function () { table = layui.table; var $ = layui.jquery; var form = layui.form; $('#wrkNo').val(parent.wrkNo); // 数据渲染 tableIns1 = table.render({ elem: '#taskDetailByMast', headers: {token: localStorage.getItem('token')}, url: baseUrl + '/taskDetlLog/list/auth', where: {wrk_no: parent.wrkNo}, page: true, limit: 16, limits: [16, 30, 50, 100, 200, 500], even: true, toolbar: '#toolbar', cellMinWidth: 50, cols: [getCol()], request: { pageName: 'curr', pageSize: 'limit' }, parseData: function (res) { return { 'code': res.code, 'msg': res.msg, 'count': res.data.total, 'data': res.data.records } }, response: { statusCode: 200 }, done: function (res, curr, count) { if (res.code === 403) { top.location.href = baseUrl + "/"; } pageCur = curr; form.on('checkbox(tableCheckbox)', function (data) { var _index = $(data.elem).attr('table-index') || 0; if (data.elem.checked) { res.data[_index][data.value] = 'Y'; } else { res.data[_index][data.value] = 'N'; } }); } }); }); </script> </html> src/main/webapp/views/taskLog/taskLog.html
@@ -72,7 +72,7 @@ <!-- 表格 --> <div class="layui-form"> <table class="layui-hide" id="wrkMastLog" lay-filter="wrkMastLog"></table> <table class="layui-hide" id="taskLog" lay-filter="taskLog"></table> </div> <script type="text/html" id="toolbar"> <div class="layui-btn-container"> @@ -89,7 +89,7 @@ <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/wrkMastLog/wrkMastLog.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/taskLog/taskLog.js" charset="utf-8"></script> <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> src/main/webapp/views/taskLog/taskLog_detail.html
File was deleted