自动化立体仓库 - WMS系统
zwl
2026-01-13 a52a9bd9365d22e430de95b60f2c3dd821457307
1.完善订单出库自动勾选
2.完善组托删除
2个文件已修改
60 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/WaitPakinController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/outLocDetlQuery.html 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WaitPakinController.java
@@ -94,7 +94,7 @@
    @RequestMapping(value = "/waitPakin/delete/auth")
    @ManagerAuth
    @Transactional
//    @Transactional
    public R delete(@RequestParam String param){
        List<WaitPakin> list = JSONArray.parseArray(param, WaitPakin.class);
        if (Cools.isEmpty(list)){
@@ -105,7 +105,7 @@
            if(!Cools.isEmpty(wrkMasts) || wrkMasts.size() > 0){
                return R.error("条码已生成入库工作档,禁止删除");
            }
            waitPakinService.delete(new EntityWrapper<>(entity));
            waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", entity.getZpallet()).eq("batch", entity.getBatch()));
            //订单关联,修改订单作业数量
            if (!Cools.isEmpty(entity.getOrderNo())) {
                if (!orderDetlService.decrease(entity.getOrderNo(), entity.getMatnr(), entity.getBatch(), entity.getAnfme())) {
src/main/webapp/views/order/outLocDetlQuery.html
@@ -432,47 +432,39 @@
                var remaining = orderTotal;
                var selectedCount = 0;
                // 对库位数据进行排序,优先选择相同库位的库存
                // allData.sort(function(a, b) {
                //     // 先按库位号排序
                //     if (a.locNo !== b.locNo) {
                //         return a.locNo.localeCompare(b.locNo);
                //     }
                //     // 再按批次排序
                //     return a.batch.localeCompare(b.batch);
                // });
                // 使用原始顺序的副本,从第一页第一个开始勾选
                var sortedData = allData.slice();
                for (var i = 0; i < allData.length; i++) {
                    var item = allData[i];
                // 选择集合(使用唯一键避免索引错乱)
                var selectionKeys = {};
                for (var i = 0; i < sortedData.length; i++) {
                    var item = sortedData[i];
                    var itemAnfme = parseFloat(item.anfme || 0);
                    if (itemAnfme <= 0) {
                        continue; // 跳过数量为0的记录
                    }
                    // 如果剩余数量大于等于当前项的数量,全部勾选
                    if (itemAnfme <= 0) continue;
                    var key = (item.locNo || '') + '|' + (item.batch || '') + '|' + (item.matnr || '') + '|' + (item.anfme || 0);
                    if (remaining >= itemAnfme) {
                        allData[i].LAY_CHECKED = true;
                        selectedTotal += itemAnfme;
                        selectionKeys[key] = true;
                        remaining -= itemAnfme;
                        selectedCount++;
                        window.autoSelectedData.push(item);
                    }
                    // 否则只勾选剩余部分(实际操作中,整个记录都会被勾选,但会在提交时处理数量)
                    else if (remaining > 0) {
                        allData[i].LAY_CHECKED = true;
                        selectedTotal += itemAnfme;
                        // 这里不修改item.anfme,因为这是表格显示的数据
                    } else if (remaining > 0) {
                        selectionKeys[key] = true;
                        remaining = 0;
                        selectedCount++;
                        window.autoSelectedData.push(item);
                    } else {
                        break; // 已满足订单数量,停止勾选
                    }
                    // 如果已经满足订单数量,停止勾选
                    if (remaining <= 0) {
                        break;
                    } else {
                        break;
                    }
                }
                // 根据选择集合同步原始数据的勾选标记,并重新计算选中数量
                selectedTotal = 0;
                for (var i = 0; i < allData.length; i++) {
                    var k = (allData[i].locNo || '') + '|' + (allData[i].batch || '') + '|' + (allData[i].matnr || '') + '|' + (allData[i].anfme || 0);
                    allData[i].LAY_CHECKED = !!selectionKeys[k];
                    if (allData[i].LAY_CHECKED) {
                        selectedTotal += parseFloat(allData[i].anfme || 0);
                    }
                }
@@ -900,4 +892,4 @@
            window.autoSelectedData = null;
        })
</script>
</html>
</html>