自动化立体仓库 - WMS系统
ZY
2024-09-18 ff6d68f7c7e9fb4fd7b884eb282aa5f9e1a5d0ba
初步改完,接下来进行测试
11个文件已修改
312 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/param/StockOutParam.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -31,6 +31,16 @@
        // 数量
        private Double count;
        private String sPgNO;
        private String outOrderNo;
        private String luHao;
        private String packing;
        private String proType;
    }
}
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.StockStatisDTO;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.result.StockVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -22,14 +23,15 @@
    Integer listByPageCount(Map<String, Object> map);
    LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch);
    //LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch);
    LocDetl selectItem2(@Param("locNo")String locNo, @Param("matnr")String matnr);
    List<LocDetl> selectItem3(@Param("locNo")String locNo, @Param("matnr")String matnr);
    int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch);
    int deleteItem(@Param("locNo")String locNo, @Param("locDetl") LocDetl locDetl);
    int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch);
    int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("locDetl") LocDetl locDetl);
    List<LocDetl> getStockOutPage(Map<String, Object> map);
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -33,7 +33,9 @@
    int addToLogTable(OrderDetl orderDetl);
    int increaseQtyByOrderNo(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
    //int increaseQtyByOrderNo(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
    int increaseQtyById(@Param("id")Long id,  @Param("qty")Double qty);
    int increaseWorkQty(@Param("id")Long id,  @Param("workQty")Double workQty);
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -5,31 +5,41 @@
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.StockStatisDTO;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.entity.result.StockVo;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface LocDetlService extends IService<LocDetl> {
    Page<LocDetl> getPage(Page<LocDetl> page);
    LocDetl selectItem(String locNo, String matnr, String batch);
    //LocDetl selectItem(String locNo, String matnr, String batch);
    LocDetl selectItem2(String locNo, String matnr);
    //LocDetl selectItem2(String locNo, String matnr);
    LocDetl selectItem(String locNo, WrkDetl wrkDetl);
    LocDetl selectItem(String locNo, StockOutParam.LocDetl locDetl);
    Page<LocDetl> getStockOut(Page<LocDetl> page);
    /**
     * 修改库存明细数量,如果数量为0,则删除记录
     */
    boolean updateAnfme(Double anfme, String locNo, String matnr, String batch);
    boolean updateAnfme(Double anfme, String locNo, WrkDetl wrkDetl);
    /**
     * 修改库存明细数量,如果数量为0,则删除记录
     */
    boolean updateAnfme(Double anfme, String locNo, LocDetl locDetl);
    boolean updateLocNo(String newLocNo, String oldLocNo);
    /**
     * 获取当天相同规格货物的深库位号
     *
     * @param matnr 商品编号
     * @return locNo 库位号
     */
@@ -37,6 +47,7 @@
    /**
     * 获取当天相同规格货物的深库位号
     *
     * @param matnr 商品编号
     * @param batch 批次号
     * @return locNo 库位号
@@ -59,9 +70,9 @@
    List<LocDetl> queryStock(OrderDetl orderDetl);
    List<LocDetl> queryStockByModel(String model);
    //List<LocDetl> queryStockByModel(String model);
    Double queryStockAnfme(String matnr, String batch);
    //Double queryStockAnfme(String matnr, String batch);
    List<StockVo> queryStockTotal();
@@ -72,9 +83,9 @@
    Double getLocDetlSumQty(String locNo);
    void updateMatTurn(String matnrOld,String matnr);
    void updateMatTurn(String matnrOld, String matnr);
    List<Map<String, Object>> selectLocDetlUnilateralMoveShuttleMap(Integer crnNo);
    List<LocDetl> selectLocDetlUnilateralMoveShuttle(String matnr,String batch,String grade,Integer crnNo);
    List<LocDetl> selectLocDetlUnilateralMoveShuttle(String matnr, String batch, String grade, Integer crnNo);
}
src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -35,8 +35,9 @@
    boolean addToLogTable(OrderDetl orderDetl);
    boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty);
    //boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty);
    boolean increaseQtyByOrderNo(String orderNo, WrkDetl wrkDetl, Double qty);
    /**
     * 入出库任务生成时,更新单据表中作业数量
     *
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -5,6 +5,8 @@
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.StockStatisDTO;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
@@ -14,7 +16,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Service("locDetlService")
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
@@ -34,14 +35,40 @@
    }
    @Override
    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) {
        if (anfme <= 0) {
            return this.baseMapper.deleteItem(locNo, matnr, batch) > 0;
        } else {
            return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0;
    public boolean updateAnfme(Double anfme, String locNo, WrkDetl wrkDetl) {
        List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, wrkDetl.getMatnr());
        if (locDetls.isEmpty()) {
            return false;
        }
        for (LocDetl locDetl : locDetls) {
            if (MatCompareUtils.compare(locDetl, wrkDetl)) {
                if (anfme <= 0) {
                    return this.baseMapper.deleteItem(locDetl.getLocNo(), locDetl) > 0;
                } else {
                    return baseMapper.updateAnfme(anfme, locNo, locDetl) > 0;
                }
            }
        }
        return false;
    }
    @Override
    public boolean updateAnfme(Double anfme, String locNo, LocDetl wrkDetl) {
        List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, wrkDetl.getMatnr());
        if (locDetls.isEmpty()) {
            return false;
        }
        for (LocDetl locDetl : locDetls) {
            if (MatCompareUtils.compare(locDetl, wrkDetl)) {
                if (anfme <= 0) {
                    return this.baseMapper.deleteItem(locDetl.getLocNo(), locDetl) > 0;
                } else {
                    return baseMapper.updateAnfme(anfme, locNo, locDetl) > 0;
                }
            }
        }
        return false;
    }
    @Override
    public boolean updateLocNo(String newLocNo, String oldLocNo) {
@@ -106,16 +133,16 @@
        return data;
    }
    @Override
    public List<LocDetl> queryStockByModel(String model) {
        return this.baseMapper.queryStock(null, model, null, null, null);
    }
//    @Override
//    public List<LocDetl> queryStockByModel(String model) {
//        return this.baseMapper.queryStock(null, model, null, null, null);
//    }
    @Override
    public Double queryStockAnfme(String matnr, String batch) {
        return this.baseMapper.queryStockAnfme(matnr, batch);
    }
//    @Override
//    public Double queryStockAnfme(String matnr, String batch) {
//        return this.baseMapper.queryStockAnfme(matnr, batch);
//    }
    @Override
    public List<StockVo> queryStockTotal() {
@@ -139,15 +166,15 @@
    }
    @Override
    public LocDetl selectItem(String locNo, String matnr, String batch) {
        return this.baseMapper.selectItem(locNo, matnr, batch);
    }
    @Override
    public LocDetl selectItem2(String locNo, String matnr) {
        return this.baseMapper.selectItem2(locNo, matnr);
    }
//    @Override
//    public LocDetl selectItem(String locNo, String matnr, String batch) {
//        return this.baseMapper.selectItem(locNo, matnr, batch);
//    }
//
//    @Override
//    public LocDetl selectItem2(String locNo, String matnr) {
//        return this.baseMapper.selectItem2(locNo, matnr);
//    }
    @Override
    public Double getLocDetlSumQty(String locNo) {
@@ -174,4 +201,32 @@
        }
        return this.baseMapper.selectLocDetlUnilateralMoveShuttleN(matnr, batch, grade);
    }
    @Override
    public LocDetl selectItem(String locNo, WrkDetl wrkDetl) {
        List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, wrkDetl.getMatnr());
        if (locDetls != null) {
            for (LocDetl locDetl : locDetls) {
                if (MatCompareUtils.compare(locDetl, wrkDetl)) {
                    return locDetl;
                }
            }
        }
        return null;
    }
    @Override
    public LocDetl selectItem(String locNo, StockOutParam.LocDetl locDetl) {
        List<LocDetl> locDetls = this.baseMapper.selectItem3(locNo, locDetl.getMatnr());
        if (locDetls != null) {
            for (LocDetl detl : locDetls) {
                if (MatCompareUtils.compare(locDetl, detl)) {
                    return detl;
                }
            }
        }
        return null;
    }
}
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -160,11 +160,26 @@
        return this.baseMapper.addToLogTable(orderDetl) > 0;
    }
//    @Override
//    public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) {
//        return this.baseMapper.increaseQtyByOrderNo(orderNo, matnr, batch, qty) > 0;
//    }
    @Override
    public boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, Double qty) {
        return this.baseMapper.increaseQtyByOrderNo(orderNo, matnr, batch, qty) > 0;
    public boolean increaseQtyByOrderNo(String orderNo, WrkDetl wrkDetl, Double qty) {
        List<OrderDetl> detlList = this.baseMapper.listByOrderNo(orderNo);
        if (detlList == null || detlList.isEmpty()){
            return false;
        }
        for (OrderDetl orderDetl : detlList){
            if (MatCompareUtils.compare(orderDetl, wrkDetl)){
                return this.baseMapper.increaseQtyById(orderDetl.getId(), qty) > 0;
            }
        }
        return false;
    }
    /**
     * 入出库任务生成时,更新单据表中作业数量
     *
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -164,7 +164,7 @@
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
            }
        }
@@ -563,7 +563,7 @@
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
            }
        }
@@ -725,7 +725,7 @@
                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                        // todo 盘点记录
                        // 修改库存
                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl)) {
                            throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号修改数量失败");
                        }
                        // 保存调整记录
@@ -750,7 +750,7 @@
        // 删除库存
        for (LocDetl locDetl : locDetls) {
            // todo 盘点记录
            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl)) {
                throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号库存明细失败");
            }
            // 保存调整记录
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -92,9 +92,9 @@
                    // 遍历工作明细,更新库存明细和入库通知档
                    for (WrkDetl wrkDetl : wrkDetls) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl);
                        if (null != locDetl) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl)) {
//                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -119,8 +119,7 @@
                        try {
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) {
//                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -155,12 +154,10 @@
                    }
                    for (WrkDetl wrkDetl : wrkDetls53) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (null == locDetl) {
                            locDetl = locDetlService.selectItem2(locMast.getLocNo(), wrkDetl.getMatnr());
                        }
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl);
                        if (locDetl != null) {
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl)) {
//                                exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -173,8 +170,7 @@
                        try {
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) {
//                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -210,9 +206,9 @@
                    // 修改库存明细数量,如无库存,曾新增
                    for (WrkDetl wrkDetl : wrkDetls54) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl);
                        if (null != locDetl) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl)) {
//                                exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -355,8 +351,7 @@
                        try {
                            if (!Cools.isEmpty(orderDetl)) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) {
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
src/main/resources/mapper/LocDetlMapper.xml
@@ -52,7 +52,6 @@
        <result column="temp3" property="temp3" />
        <result column="pg_no" property="sPgNO" />
        <result column="pro_type" property="proType" />
        <result column="auto_id" property="autoId" />
        <result column="out_order_no" property="outOrderNo" />
        <result column="lu_hao" property="luHao" />
        <result column="ware_id" property="wareId" />
@@ -62,23 +61,68 @@
    <sql id="batchSeq">
        <choose>
            <when test="batch != null and batch != ''">
                and batch = #{batch}
            <when test="locDetl.batch != null and locDetl.batch != ''">
                and batch = #{locDetl.batch}
            </when>
            <otherwise>
                and (batch IS NULL OR batch = '')
            </otherwise>
        </choose>
        <choose>
            <when test="locDetl.proType != null and locDetl.proType != ''">
                and pro_type = #{locDetl.proType}
            </when>
            <otherwise>
                and (pro_type IS NULL OR pro_type = '')
            </otherwise>
        </choose>
        <choose>
            <when test="locDetl.luHao != null and locDetl.luHao != ''">
                and lu_hao = #{locDetl.luHao}
            </when>
            <otherwise>
                and (lu_hao IS NULL OR lu_hao = '')
            </otherwise>
        </choose>
        <choose>
            <when test="locDetl.packing != null and locDetl.packing != ''">
                and packing = #{locDetl.packing}
            </when>
            <otherwise>
                and (packing IS NULL OR packing = '')
            </otherwise>
        </choose>
        <choose>
            <when test="locDetl.sPgNO != null and locDetl.sPgNO != ''">
                and pg_no = #{locDetl.sPgNO}
            </when>
            <otherwise>
                and (pg_no IS NULL OR pg_no = '')
            </otherwise>
        </choose>
        <choose>
            <when test="locDetl.outOrderNo != null and locDetl.outOrderNo != ''">
                and out_order_no = #{locDetl.outOrderNo}
            </when>
            <otherwise>
                and (out_order_no IS NULL OR out_order_no = '')
            </otherwise>
        </choose>
    </sql>
    <select id="selectItem" resultMap="BaseResultMap">
        select top 1 *
        from asr_loc_detl
        where 1=1
        and loc_no = #{locNo}
        and matnr = #{matnr}
        <include refid="batchSeq"></include>
    </select>
<!--    <select id="selectItem" resultMap="BaseResultMap">-->
<!--        select top 1 *-->
<!--        from asr_loc_detl-->
<!--        where 1=1-->
<!--        and loc_no = #{locNo}-->
<!--        and matnr = #{matnr}-->
<!--        <include refid="batchSeq"></include>-->
<!--    </select>-->
    <select id="selectItem2" resultMap="BaseResultMap">
        select top 1 *
@@ -88,11 +132,19 @@
        and matnr = #{matnr}
    </select>
    <select id="selectItem3" resultMap="BaseResultMap">
        select  *
        from asr_loc_detl
        where 1=1
          and loc_no = #{locNo}
          and matnr = #{matnr}
    </select>
    <delete id="deleteItem">
        delete from asr_loc_detl
        where 1=1
        and loc_no = #{locNo}
        and matnr = #{matnr}
        and matnr = #{locDetl.matnr}
        <include refid="batchSeq"></include>
    </delete>
@@ -102,7 +154,7 @@
        , modi_time = getdate()
        where 1=1
        and loc_no = #{locNo}
        and matnr = #{matnr}
        and matnr = #{locDetl.matnr}
        <include refid="batchSeq"></include>
    </update>
src/main/resources/mapper/OrderDetlMapper.xml
@@ -187,20 +187,27 @@
        INSERT INTO man_order_detl_log SELECT * FROM man_order_detl WHERE id = #{id}
    </insert>
    <update id="increaseQtyByOrderNo">
<!--    <update id="increaseQtyByOrderNo">-->
<!--        update man_order_detl-->
<!--        set qty = qty + #{qty}-->
<!--        where 1=1-->
<!--        and order_no = #{orderNo}-->
<!--        and matnr = #{matnr}-->
<!--        <choose>-->
<!--            <when test="batch != null and batch != ''">-->
<!--                and batch = #{batch}-->
<!--            </when>-->
<!--            <otherwise>-->
<!--                and (batch IS NULL OR batch = '')-->
<!--            </otherwise>-->
<!--        </choose>-->
<!--    </update>-->
    <update id="increaseQtyById">
        update man_order_detl
        set qty = qty + #{qty}
        where 1=1
        and order_no = #{orderNo}
        and matnr = #{matnr}
        <choose>
            <when test="batch != null and batch != ''">
                and batch = #{batch}
            </when>
            <otherwise>
                and (batch IS NULL OR batch = '')
            </otherwise>
        </choose>
        and id = #{id}
    </update>
    <update id="increaseWorkQty">