自动化立体仓库 - WMS系统
skyouc
2026-01-15 1573adab705da74a98ad5a174f031e9171437c0c
出入库功能优化
5个文件已修改
94 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlPakoutMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locAroundBind/locAroundBind.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locAroundBind/locAroundBind.html 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -466,8 +466,7 @@
        LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>()
                .in("loc_no", locs)
                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
                .orderAsc(Arrays.asList("loc_no"))
                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
                .orderAsc(Arrays.asList("loc_no")));
        if (Objects.isNull(locMasts)) {
            binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>()
@@ -478,10 +477,10 @@
            locMasts = locMastService.selectOne(new EntityWrapper<LocMast>()
                    .in("loc_no", nlocs)
                    .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
                    .orderAsc(Arrays.asList("loc_no"))
                    .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
                    .orderAsc(Arrays.asList("loc_no")));
            if (Objects.isNull(locMasts)) {
                throw new CoolException("暂无可用工作位!!");
            }
            }
            LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMasts.getLocNo()));
@@ -490,6 +489,12 @@
            if (!locAroundBindService.updateById(bLocNo)) {
                throw new CoolException("工位预约失败!!");
            }
        locMasts.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
        locMasts.setModiUser(userId);
        locMasts.setModiTime(now);
        if (!locMastService.updateById(locMasts)) {
            throw new CoolException("预约库位状态失败,库位号:" + locMasts.getLocNo());
        }
        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(), 1);
@@ -542,7 +547,7 @@
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setOrderNo(locDto.getOrderNo());
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
//            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
            wrkDetl.setStandby1(locDto.getStandby1());
            LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                    .eq("loc_no", locDto.getLocNo())
@@ -557,7 +562,7 @@
            wrkDetl.setUnit(locDel.getUnit());
            wrkDetl.setSpecs(locDel.getSpecs());
            wrkDetl.setBatch(locDel.getBatch());
//            wrkDetl.setAnfme(locDel.getAnfme());
            wrkDetl.setAnfme(locDel.getAnfme());
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
@@ -1206,11 +1211,20 @@
            if (!Objects.isNull(wrkMast.getWrkCode())) {
                LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo()));
                if (!Objects.isNull(aroundBind)) {
                    aroundBind.setLocType(LocStsType.LOC_STS_TYPE_O.type);
                    aroundBind.setLocType(LocStsType.LOC_STS_TYPE_F.type);
                    if (!locAroundBindService.updateById(aroundBind)) {
                        throw new CoolException("工位状态修改失败!!");
                    }
                }
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
                if (!Objects.isNull(locMast)) {
                    locMast.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
                    if (!locMastService.updateById(locMast)) {
                        throw new CoolException("库位状态修改失败!!");
                    }
                }
            }
            // 出库取消(修改源库位)
        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -6,10 +6,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.BasStationServiceImpl;
import com.zy.asrs.service.impl.LocCacheServiceImpl;
import com.zy.asrs.service.impl.OrderPakinServiceImpl;
import com.zy.asrs.service.impl.TaskDetlServiceImpl;
import com.zy.asrs.service.impl.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
@@ -58,6 +55,8 @@
    private BasStationServiceImpl basStationService;
    @Autowired
    private WorkService workService;
    @Autowired
    private LocAroundBindService locAroundBindService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -489,7 +488,8 @@
    }
    private ReturnT<String> doOut(WrkMast wrkMast) {
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> doOut(WrkMast wrkMast) {
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
        try {
@@ -507,7 +507,18 @@
                    if (!Objects.isNull(wrkMast.getWrkCode())) {
                        //TODO 移库
//                        workService.locMove(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), wrkMast.getAppeUser());
                        movLoc(wrkMast);
                        //修改工位库态
                        LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getLocNo()));
                        if (Objects.isNull(bLocNo)) {
                            throw new CoolException("数据错误, 目标工位不存在!!");
                        }
                        bLocNo.setLocType(LocStsType.LOC_STS_TYPE_F.type);
                        if (!locAroundBindService.updateById(bLocNo)) {
                            throw new CoolException("工位状态修改失败!!");
                        }
                    } else {
//                    // 出库确认信号位
//                    if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) {
src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -57,7 +57,9 @@
    <sql id="standbyAll">
        and batch = #{batch}
        <if test="brand != null and brand != ''">
        and brand = #{brand}
        </if>
        and standby1 = #{standby1}
        and standby2 = #{standby2}
        and standby3 = #{standby3}
src/main/webapp/static/js/locAroundBind/locAroundBind.js
@@ -30,7 +30,7 @@
            , { field: 'blocNo', align: 'center', title: '工位' }
            ,{field: 'locType$', align:'center', title: '工位状态'}
            , { field: 'def$', align: 'center', title: '工位类型' }
            , { fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 120 }
            , {fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 240}
        ]],
        request: {
            pageName: 'curr',
@@ -149,6 +149,21 @@
        }
    });
    // iframe物料详情
    function locDetlToLayer(val) {
        locNo = val;
        layer.open({
            type: 2,
            title: '库存明细',
            maxmin: true,
            area: [top.detailWidth, top.detailHeight],
            shadeClose: true,
            content: '../report/locDetl.html',
            success: function(layero, index){
            }
        });
    }
    // 初始化保存
    form.on('submit(initDo)', function (data) {
        $.ajax({
@@ -181,6 +196,17 @@
                break;
            case "del":
                del([data.id]);
                break;
            // 查看明细
            case 'locDetl':
                if (data.locType.trim() === ''
                    || data.locType.trim() === 'S'
                    || data.locType.trim() === 'D'
                    || data.locType.trim() === 'O') {
                    layer.msg("工位的状态不存在物料");
                    return;
                }
                locDetlToLayer(data.blocNo);
                break;
        }
    });
@@ -270,6 +296,7 @@
        }, 300);
    }
    layDateRender();
});
src/main/webapp/views/locAroundBind/locAroundBind.html
@@ -44,13 +44,16 @@
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">初始化</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData"
                style="float: right">导出
        </button>
    </div>
</script>
    <script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
    <a class="layui-btn layui-btn-xs loc-detl" lay-event="locDetl">查看明细</a>
</script>
    <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
@@ -68,7 +71,8 @@
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">机台: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="devNo" placeholder="请输入机台号" lay-vertype="tips" lay-verify="required">
                        <input class="layui-input" name="devNo" placeholder="请输入机台号" lay-vertype="tips"
                               lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
@@ -80,7 +84,8 @@
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">工位: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="blocNo" placeholder="请输入库位码" lay-vertype="tips" lay-verify="required">
                        <input class="layui-input" name="blocNo" placeholder="请输入库位码" lay-vertype="tips"
                               lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
@@ -97,7 +102,8 @@
                        <label class="layui-form-label">工位状态</label>
                        <div class="layui-input-inline cool-auto-complete">
                            <input id="locType" name="locType" class="layui-input" type="text" style="display: none">
                            <input id="locType$" name="locType$"  class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text"
                            <input id="locType$" name="locType$" 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="basLocStsQueryBylocSts"