自动化立体仓库 - WMS系统
#
luxiaotao1123
2022-03-30 26704b180f9caad52156ad3828e66276c8fe6907
#
1个文件已添加
1个文件已删除
6个文件已修改
448 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/OrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/wms/WmsService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/login00.html 256 ●●●●● 补丁 | 查看 | 原始文档 | 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>