自动化立体仓库 - WMS系统
zhou zhou
2025-11-22 127e75e16fba5aa42b1d368a07ea334445881112
#盘点完成
12个文件已修改
106 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CheckOrderController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/CheckOrderDetl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetlLog.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/checkOrder/checkOrder.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/checkOrder/checkOrder.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CheckOrderController.java
@@ -211,6 +211,7 @@
        convert(param, wrapper);
        allLike(CheckOrder.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        wrapper.orderBy("create_time", false);
        return R.ok(checkOrderService.selectPage(new Page<>(curr, limit), wrapper));
    }
src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -490,7 +490,7 @@
//    );
    public BigDecimal getDiffQty() {
        if (null == this.status || this.status == 1  ||  this.status == 0 ) {
        if (null == this.status || this.status == 1  ||  this.status == 0 ||  this.status == 2) {
            return BigDecimal.ZERO;
        }
        if (null != this.anfme && this.workQty != null) {
src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -21,6 +21,7 @@
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -234,7 +235,23 @@
     */
    @ApiModelProperty(value= "差异数量")
    @TableField("diff_qty")
    private String diffQty = "";
    private BigDecimal diffQty = BigDecimal.ZERO;
    @ApiModelProperty(value= "账面数量")
    @TableField("book_qty")
    private BigDecimal bookQty = BigDecimal.ZERO;
//    private BigDecimal bookQty = Cools.isEmpty(anfme)? BigDecimal.ZERO : new BigDecimal(anfme.toString());
    public BigDecimal getBookQty() {
        if (diffQty.compareTo(BigDecimal.ZERO) == 0 || diffQty.compareTo(BigDecimal.ZERO) > 0) {
            return new  BigDecimal(anfme.toString());
        }
        return new BigDecimal(anfme.toString()).subtract(diffQty);
    }
    public String getLocNo$(){
        LocMastService service = SpringUtils.getBean(LocMastService.class);
src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -72,6 +72,10 @@
    @TableField("order_no")
    private String orderNo;
    @ApiModelProperty(value= "单据id")
    @TableField("order_id")
    private Long orderId;
    /**
     * 规格
     */
src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -71,6 +71,10 @@
    @TableField("order_no")
    private String orderNo;
    @ApiModelProperty(value= "单据id")
    @TableField("order_id")
    private Long orderId;
    /**
     * 规格
     */
src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
@@ -61,9 +61,15 @@
        }
        List<LocDto> locDtos = new ArrayList<>();
        for (CheckOrderDetl checkOrderDetl : checkOrderDetls) {
            if (!checkOrderDetl.getStatus().equals(1)){
                continue;
            }
            LocDto locDto = new LocDto(checkOrderDetl.getLocNo(), checkOrderDetl.getMatnr(), checkOrderDetl.getMaktx(), checkOrderDetl.getBatch(), checkOrderDetl.getOrderNo(),
                    checkOrderDetl.getAnfme().doubleValue());
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", checkOrderDetl.getLocNo()));
            if (!locMast.getLocSts().equals("F")){
                continue;
            }
            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
            locDto.setFrozen(locDetl.getFrozen());
            locDto.setFrozenLoc(locMast.getFrozen());
@@ -96,11 +102,7 @@
            if(Cools.isEmpty(wrkDetl.getOrderNo())){
                throw new CoolException("明细数据有误,无订单号数据");
            }
            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                    .eq("loc_no", wrkMast.getSourceLocNo())
                    .eq("matnr", wrkDetl.getMatnr())
                    .eq("batch", wrkDetl.getBatch())
                    .eq("order_no", wrkDetl.getOrderNo()));
            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
            if(Cools.isEmpty(checkOrderDetl)){
                throw new CoolException("明细数据有误,未找到盘点单数据");
            }
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
@@ -13,6 +14,7 @@
import com.zy.asrs.service.LocDetlService;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -55,7 +57,22 @@
    @Override
    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch,
                               String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
        if (anfme <= 0) {
        LocDetl locDetl = this.selectOne(new EntityWrapper<LocDetl>()
                .eq(!Cools.isEmpty(locNo),"loc_no", locNo)
                .eq(!Cools.isEmpty(locNo),"matnr", matnr)
                .eq(!Cools.isEmpty(locNo),"batch", batch)
                .eq(!Cools.isEmpty(brand),"brand", brand)
                .eq(!Cools.isEmpty(standby1),"standby1", standby1)
                .eq(!Cools.isEmpty(standby2),"standby2", standby2)
                .eq(!Cools.isEmpty(standby3),"standby3", standby3)
                .eq(!Cools.isEmpty(boxType1),"box_type1", boxType1)
                .eq(!Cools.isEmpty(boxType2),"box_type2", boxType2)
                .eq(!Cools.isEmpty(boxType3),"box_type3", boxType3)
        );
        if (Cools.isEmpty(locDetl)) {
            return false;
        }
        if (anfme <= 0 && locDetl.getDiffQty().compareTo(BigDecimal.ZERO) == 0) {
            return this.baseMapper.deleteItem(locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0;
        } else {
            return baseMapper.updateAnfme(anfme, locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0;
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -543,6 +543,7 @@
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(checkOrderDetls.get(0));
            wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
@@ -1339,7 +1340,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/handler/WorkMastHandler.java
@@ -19,6 +19,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -56,6 +57,8 @@
    private TaskDetlService taskDetlService;
    @Autowired
    private BasStationServiceImpl basStationService;
    @Autowired
    private CheckOrderDetlService checkOrderDetlService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -355,16 +358,21 @@
                    for (WrkDetl wrkDetl : wrkDetls57) {
                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                            // 更新订单完成数量
                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            if (!Cools.isEmpty(orderDetlPakout)) {
                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
                            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
                            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
                            BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme());
                            locDetl.setAnfme(checkOrderDetl.getDiffQty()
                                    .compareTo(BigDecimal.ZERO) == 0 || checkOrderDetl.getDiffQty()
                                    .compareTo(BigDecimal.ZERO) > 0
                                    ? oriAnfme.doubleValue()
                                    : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
                            locDetl.setBookQty(oriAnfme);
                            locDetl.setDiffQty(checkOrderDetl.getDiffQty());
                            if (!locDetlService.updateById(locDetl)){
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                return FAIL.setMsg("盘点入库 ===>> 修改库存差异数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        }
                    }
                    // 修改库位状态 Q ====>> F
src/main/webapp/static/js/checkOrder/checkOrder.js
@@ -666,7 +666,6 @@
                    layer.close(layerIndex);
                    layer.msg(res.msg, {icon: 1});
                    insTb.reload({where: null});
                    insTb2.reload({where: null, page: {curr: 1}});
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/";
                } else {
src/main/webapp/static/js/locDetl/locDetl.js
@@ -8,7 +8,8 @@
        ,{field: 'maktx', align: 'center',title: '商品名称', sort:true}
        ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true}
        ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true}
        ,{field: 'anfme', align: 'center',title: '数量'}
        ,{field: 'anfme', align: 'center',title: '可用数量'}
        ,{field: 'bookQty', align: 'center',title: '账面数量'}
        ,{field: 'zpallet', align: 'center',title: '托盘条码'}
        ,{field: 'specs', align: 'center',title: '规格'}
        ,{field: 'model', align: 'center',title: '代码', hide: true}
@@ -45,6 +46,17 @@
                    return '<span">' +d.frozen$ + '</span>';
                }
            }}
        ,{field: 'diffQty', align: 'center',title: '盘点数量',
            templet: function(d) {
                // 根据条件判断字体颜色
                if (d.diffQty < 0 ) {
                    return '<span style="color: #de3434;">' +d.diffQty + '</span>';
                }else if (d.diffQty > 0){
                    return '<span style="color: #19fa02;">' +d.diffQty + '</span>';
                } else {
                    return '<span">' +d.diffQty + '</span>';
                }
            }}
    ];
    // cols.push.apply(cols, detlCols);
src/main/webapp/views/checkOrder/checkOrder.html
@@ -108,6 +108,9 @@
    {{# if (d.settle == 2 || d.settle == 11) { }}
    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a>
    {{# } }}
    {{# if (d.settle == 12) { }}
    <a class="layui-btn layui-btn-primary layui-btn-xs layui-border-blue" lay-event="createTask">生成任务</a>
    {{# } }}
    {{# if (d.settle == 4) { }}
    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="export">导出差异单</a>
    {{# } }}