自动化立体仓库 - WMS系统
#
luxiaotao1123
2022-03-29 595108c00257f238815ffc5c20fbfa82244c7740
#
10个文件已修改
76 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/OrderDetl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -53,6 +53,9 @@
    /**
     * 作业数量
     *
     *  1. 入库 : qty 👆
     *  1. 出库 : qty 👆
     */
    @ApiModelProperty(value= "作业数量")
    private Double qty;
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -20,4 +20,6 @@
    int increase(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
    int decrease(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
}
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -5,8 +5,12 @@
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface WrkDetlMapper extends BaseMapper<WrkDetl> {
    List<WrkDetl> selectByWrkNo(Integer wrkNo);
}
src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -17,4 +17,6 @@
    boolean increase(Long orderId, String matnr, String batch, Double qty);
    boolean decrease(String orderNo, String matnr, String batch, Double qty);
}
src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -10,4 +10,6 @@
    void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId);
    List<WrkDetl> selectByWrkNo(Integer wrkNo);
}
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -48,4 +48,10 @@
    public boolean increase(Long orderId, String matnr, String batch, Double qty) {
        return this.baseMapper.increase(orderId, matnr, batch, qty) > 0;
    }
    @Override
    public boolean decrease(String orderNo, String matnr, String batch, Double qty) {
        return this.baseMapper.decrease(orderNo, matnr, batch, qty) > 0;
    }
}
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -45,11 +45,11 @@
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
@@ -307,9 +307,7 @@
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
@@ -324,6 +322,9 @@
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            }
            // todo:luxiaotao 修改订单明细数量
        }
        // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
        locMast = locMastService.selectById(taskDto.getLocNo());
@@ -751,18 +752,6 @@
            // 出库 ===>> F.在库
            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                locSts = "F";
                // 销售单关联,则生成新的出库任务
                if (wrkMast.getPdcType().equals("Y")) {
                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
                    for (WrkDetl wrkDetl : wrkDetls) {
                        Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(wrkDetl.getMatnr())).orElse(0.0D);
                        if (sumAnfme < wrkDetl.getAnfme()) {
                            throw new CoolException("取消失败!库存不足以重新生成出库作业");
                        }
                    }
                    // 生成新的出库作业
                    stockOutRe(wrkMast, wrkDetls);
                }
            // 空板出库 ===>> D.空桶/空栈板
            } else if (wrkMast.getIoType() == 110) {
                locSts = "D";
@@ -782,6 +771,17 @@
        } else {
            throw new CoolException("当前工作状态无法取消");
        }
        // 订单关联
        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        for (WrkDetl wrkDetl : wrkDetls) {
            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
                    throw new CoolException("订单数据回滚失败");
                }
                // 生成新的出库作业
//                        stockOutRe(wrkMast, wrkDetls);
            }
        }
        // 取消操作人员记录
        wrkMast.setManuType("手动取消");
        wrkMast.setModiUser(userId);
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -50,4 +50,9 @@
            }
        }
    }
    @Override
    public List<WrkDetl> selectByWrkNo(Integer wrkNo) {
        return this.baseMapper.selectByWrkNo(wrkNo);
    }
}
src/main/resources/mapper/OrderDetlMapper.xml
@@ -84,4 +84,20 @@
        </choose>
    </update>
    <update id="decrease">
        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>
</mapper>
src/main/resources/mapper/WrkDetlMapper.xml
@@ -27,4 +27,8 @@
        <result column="appe_time" property="appeTime" />
    </resultMap>
    <select id="selectByWrkNo" resultMap="BaseResultMap">
        select * from asr_wrk_detl where 1=1 and wrk_no = #{wrkNo}
    </select>
</mapper>