src/main/java/com/zy/asrs/service/OrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/wms/WmsService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/OrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/index.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/login00.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/OrderService.java
@@ -14,4 +14,6 @@ boolean updateSettle(Long orderId, Long settle, Long userId); void checkComplete(String orderNo); } src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.mapper.OrderMapper; @@ -38,4 +39,26 @@ return this.baseMapper.updateSettle(orderId, settle, userId) > 0; } @Override public void checkComplete(String orderNo) { Order order = this.selectByNo(orderNo); if (order.getSettle() >= 4L) { return; } List<OrderDetl> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_id", order.getId())); boolean complete = true; for (OrderDetl orderDetl : orderDetls) { if (orderDetl.getAnfme() > orderDetl.getQty()) { complete = false; break; } } if (complete) { if (!this.updateSettle(order.getId(), 4L, null)) { throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败"); } } } } src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -9,21 +9,12 @@ import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.model.BillDto; import com.zy.common.model.MatnrDto; import com.zy.common.service.ErpService; import com.zy.common.service.wms.ReplenishDto; import com.zy.common.service.wms.Result; import com.zy.common.service.wms.WmsService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * Created by vincent on 2020/7/6 @@ -49,35 +40,17 @@ @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private WmsService wmsService; private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Transactional public ReturnT<String> start(WrkMast wrkMast) { try { // 入库 // 入库 -------------------------------------------------------------------------------- if (wrkMast.getWrkSts() == 5) { // 全板入库 if (wrkMast.getIoType() == 1) { String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15); // 单据状态变更 作业中 ===>> 已完成 List<MatnrDto> matnrDtos = new ArrayList<>(); List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); for (WrkDetl wrkDetl : wrkDetls) { MatnrDto dto = new MatnrDto(); dto.setMatnr(wrkDetl.getMatnr()); dto.setCount(wrkDetl.getAnfme()); matnrDtos.add(dto); } List<BillDto> dtos = new ArrayList<>(); for (MatnrDto dto : matnrDtos) { BillDto billDto = new BillDto(); billDto.setMatnr(dto.getMatnr()); billDto.setQty(dto.getCount()); dtos.add(billDto); } if (!erpService.uploadBill(dtos, 34, docNum)) { exceptionHandle("无法上报至erp[workNo={0}]失败", wrkMast.getWrkNo()); } // 入库通知单 if (!Cools.isEmpty(wrkMast.getBarcode())) { // 保存入库通知档历史档 @@ -91,65 +64,20 @@ } // 拣料再入库 } else if (wrkMast.getIoType() == 53) { // 非销售订单出库,需要补货到平仓 if (!wrkMast.getPdcType().equals("Y")) { List<ReplenishDto> replenishDtos = new ArrayList<>(); List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); for (WrkDetl wrkDetl : wrkDetls) { ReplenishDto param = new ReplenishDto(); param.setMatnr(wrkDetl.getMatnr()); param.setCount(wrkDetl.getAnfme()); param.setWorkNo(wrkMast.getWrkNo()); replenishDtos.add(param); } Result result = wmsService.replenish(replenishDtos); if (result.getCode() != 200) { exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo()); } } } // 出库 // 出库 -------------------------------------------------------------------------------- } else if (wrkMast.getWrkSts() == 15) { // 非销售订单出库,需要补货到平仓 if (Cools.isEmpty(wrkMast.getPdcType()) || !wrkMast.getPdcType().equals("Y")) { List<ReplenishDto> replenishDtos = new ArrayList<>(); List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); for (WrkDetl wrkDetl : wrkDetls) { ReplenishDto param = new ReplenishDto(); param.setMatnr(wrkDetl.getMatnr()); param.setCount(wrkDetl.getAnfme()); param.setWorkNo(wrkMast.getWrkNo()); replenishDtos.add(param); } Result result = wmsService.replenish(replenishDtos); if (result.getCode() != 200) { exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo()); } // 销售订单 } else { if (wrkMast.getIoType() == 101) { Double more = Optional.ofNullable(wrkMast.getRefWrkno()).orElse(0.0D); List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); if (more > 0 && !Cools.isEmpty(wrkDetls)) { WrkDetl wrkDetl = wrkDetls.get(0); ReplenishDto param = new ReplenishDto(); param.setMatnr(wrkDetl.getMatnr()); param.setCount(more); param.setWorkNo(wrkMast.getWrkNo()); List<ReplenishDto> replenishDtos = new ArrayList<>(); replenishDtos.add(param); Result result = wmsService.replenish(replenishDtos); if (result.getCode() != 200) { exceptionHandle("补货到平仓[workNo={0}]失败", wrkMast.getWrkNo()); } } } } } // 修改订单状态 作业中 ===>> 已完成 for (WrkDetl wrkDetl : wrkDetlService.selectByWrkNo(wrkMast.getWrkNo())) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { orderService.checkComplete(wrkDetl.getOrderNo()); } } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { src/main/java/com/zy/common/service/wms/WmsService.java
File was deleted src/main/resources/application.yml
@@ -1,5 +1,5 @@ server: port: 7878 port: 8081 servlet: context-path: /@pom.build.finalName@ @@ -55,9 +55,6 @@ doubleLocs: 1,4,5,8 # 一个堆垛机负责的货架排数 groupCount: 4 wms: url: http://192.168.1.57:8080/wms erp: url: http://123.60.34.127:6220/api src/main/resources/mapper/OrderMapper.xml
@@ -46,7 +46,9 @@ update man_order set settle = #{settle} ,update_time = getdate() <if test="userId != null"> ,update_by = #{userId} </if> where 1=1 and id = #{orderId} </update> src/main/webapp/views/index.html
@@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="utf-8"> <title>中扬 - 运维系统平台</title> <title>中扬 - 自动化立体仓库 - AS / RS</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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> src/main/webapp/views/login00.html
New file @@ -0,0 +1,256 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自动仓储 - 管理系统</title> <link rel="icon" type="image/x-icon" href="../static/image/log.png" /> <link rel="stylesheet" href="../static/layui/css/layui.css" media="all"> <script type="text/javascript" src="../static/layui/layui.js"></script> <script type="text/javascript" src="../static/js/common.js"></script> <style> html{ height: 100%; } body.login-bg { color: #777; height: 100%; /*background-image: url("../static/image/bg-imgage.jpg");*/ background-image: url("../static/image/login_bg.jpg"); background-repeat: no-repeat; background-size: cover; background-position: top center; } #login-wrapper { /*color: #fff;*/ box-sizing:border-box; /*background: #576669;*/ background: #fff; position: absolute; top: 45%; left: 50%; margin-top: -210px; margin-left: -220px; width: 440px; min-height: 420px; padding: 50px; text-align: center; border-radius: 5px; transform-origin: 50% 50%; animation: loading 1s 0s forwards; transform: rotateX(0deg); } #login-wrapper h2 { letter-spacing: 3px; font-size: 26px; margin-bottom: 30px; } .layadmin-user-login-body .layui-form-item { margin-bottom: 20px; position: relative; } .layadmin-user-login-body .layui-form-item .layui-input { height: 42px; padding-left: 40px; font-size: 16px; border: 1px solid #c8cccf; color: inherit; } .login-submit { margin-top: 30px; } .layadmin-user-login-icon { position: absolute; left: 1px; top: 1px; width: 38px; line-height: 40px; text-align: center; color: #B2B2B2; font-size: 18px; } .layui-btn-normal { background-color: #0767aa; font-size: 20px; border-radius: 4px; height: 52px; } .layui-form-checked[lay-skin=primary] i { border-color: #0767aa!important; background-color: #0767aa; color: #fff; } .layui-form-checkbox[lay-skin=primary]:hover i { border-color: #0767aa; color: #fff; } #code-box { position: relative; height: 42px; } #code-label { z-index: 999; } #code { position: absolute; left: 0; top: 0; display: inline-block; width: 60%; } #codeImg { border: 1px solid rgba(0,0,0,0.1); position: absolute; right: 5%; top: 0; width: 30%; height: 90%; } </style> </head> <body class="login-bg"> <div id="login-wrapper"> <header> <h2>系统登录</h2> </header> <div class="layui-form layadmin-user-login-body"> <div class="layui-form-item"> <label class="layui-icon layui-icon-username layadmin-user-login-icon"></label> <input id="mobile" class="layui-input" type="text" name="mobile" lay-verify="mobile" placeholder="账号"> </div> <div class="layui-form-item"> <label class="layui-icon layui-icon-password layadmin-user-login-icon"></label> <input id="password" class="layui-input" type="password" name="password" lay-verify="password" placeholder="密码"> </div> <div id="code-box" class="layui-form-item" style=""> <label id="code-label" class="layui-icon layui-icon-vercode layadmin-user-login-icon"></label> <input id="code" class="layui-input" type="text" name="password" lay-verify="code" placeholder="验证码"> <img id="codeImg" title="看不清?点击换一张。"> </div> <div class="layui-form-item" style="text-align: left;padding-left: 3px;"> <input id="rememberPwd" style="vertical-align: middle" type="checkbox" lay-skin='primary' lay-filter="remPwd" title="记住密码" checked="checked"> </div> </div> <div class="layui-form-item login-submit"> <button id="login-button" class="layui-btn layui-btn-fluid layui-btn-normal" lay-submit="" lay-filter="login">登 录</button> </div> </div> </body> <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../static/js/tools/md5.js"></script> <script type="text/javascript"> $(function () { var oldUserName = localStorage.getItem('oldUserName'); var oldPass = localStorage.getItem('oldPass'); if(oldUserName){ $('#mobile').val(oldUserName); } if(oldPass){ $('#password').val(oldPass); } }) // 验证码开关 var codeSwitch = 'Y'; $.ajax({ url: baseUrl+"/code/switch.action", async: false, success: function (res) { if (res.data === 'N'){ codeSwitch = res.data; $('#code-box').css("display", "none"); } } }); // 初始化验证码 initCode(); $('#codeImg').click(function () { initCode(); }); function initCode() { var random = Math.random(); $('#codeImg').attr("src", baseUrl+"/code.action?sd="+random); setTimeout(function () { $.ajax({ url: baseUrl+"/code.do", data: {sd: random}, method: 'POST', async: false, success: function (code) { sessionStorage.setItem("code", code); } }); }, 100); } layui.use(['form','layer'],function () { var form = layui.form, layer = layui.layer, $ = layui.jquery; form.on('submit(login)', function (data) { var mobile = $("#mobile").val(); if (mobile === "") { layer.msg("请输入手机号", {offset: '150px'}); return; } var password = $("#password").val(); if (password === "") { layer.msg("请输入密码", {offset: '150px'}); return; } var code = $("#code").val(); if (code === "" && codeSwitch === 'Y') { layer.msg("请输入验证码", {offset: '150px'}); return; } if (sessionStorage.getItem("code").toUpperCase() !== code.toUpperCase()&&codeSwitch==='Y'){ layer.msg("验证码错误", {offset: '150px'}); return; } var user = { mobile: mobile, password: hex_md5(password) }; $.ajax({ url: baseUrl+"/login.action", data: user, method: 'POST', success: function (res) { if (res.code === 200){ // 记住密码 if($('#rememberPwd').is(':checked')){ localStorage.setItem('oldUserName',user.mobile); localStorage.setItem('oldPass',password); } else { localStorage.removeItem('oldUserName'); localStorage.removeItem('oldPass'); } localStorage.setItem("token", res.data.token); localStorage.setItem("username", res.data.username); window.location.href = "index.html"; } else { layer.msg(res.msg, {offset: '150px'}); } } }); return false; }); $('body').keydown(function () { if (event.keyCode === 13) { $("#login-button").click(); } }); }); </script> </html>