自动化立体仓库 - WMS系统
123
zhang
1 天以前 949488f0d87544a7b1a3277c32d3c6def1e68fe0
123
3个文件已修改
268 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/OrderDetl.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/asrs/WrkDetlMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -32,21 +32,21 @@
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 订单内码
     */
    @ApiModelProperty(value= "订单内码")
    @ApiModelProperty(value = "订单内码")
    @TableField("order_id")
    private Long orderId;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    @ApiModelProperty(value = "单据编号")
    @TableField("order_no")
    private String orderNo;
@@ -54,311 +54,312 @@
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    @ApiModelProperty(value = "数量")
    private Double anfme;
    /**
     * 作业数量
     *
     *  入库 : 组托完成,组托档、工作档、入库完成数量
     *  出库 : 工作档、出库完成数量
     * <p>
     * 入库 : 组托完成,组托档、工作档、入库完成数量
     * 出库 : 工作档、出库完成数量
     */
    @ApiModelProperty(value= "作业数量")
    @ApiModelProperty(value = "作业数量")
    @TableField("work_qty")
    private Double workQty;
    /**
     * 完成数量
     *
     *  入库 : qty 👆
     *  出库 : qty 👆
     * <p>
     * 入库 : qty 👆
     * 出库 : qty 👆
     */
    @ApiModelProperty(value= "完成数量")
    @ApiModelProperty(value = "完成数量")
    private Double qty;
    /**
     * 商品编码
     */
    @ApiModelProperty(value= "商品编码")
    @ApiModelProperty(value = "商品编码")
    private String matnr;
    /**
     * 商品名称
     */
    @ApiModelProperty(value= "商品名称")
    @ApiModelProperty(value = "商品名称")
    private String maktx;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    @ApiModelProperty(value = "批号")
    private String batch;
    /**
     * 规格
     */
    @ApiModelProperty(value= "规格")
    @ApiModelProperty(value = "规格")
    private String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    @ApiModelProperty(value = "型号")
    private String model;
    /**
     * 颜色
     */
    @ApiModelProperty(value= "颜色")
    @ApiModelProperty(value = "颜色")
    private String color;
    /**
     * 品牌
     */
    @ApiModelProperty(value= "品牌")
    @ApiModelProperty(value = "品牌")
    private String brand;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    @ApiModelProperty(value = "单位")
    private String unit;
    /**
     * 单价
     */
    @ApiModelProperty(value= "单价")
    @ApiModelProperty(value = "单价")
    private Double price;
    /**
     * sku
     */
    @ApiModelProperty(value= "sku")
    @ApiModelProperty(value = "sku")
    private String sku;
    /**
     * 单位量
     */
    @ApiModelProperty(value= "单位量")
    @ApiModelProperty(value = "单位量")
    private Double units;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    @ApiModelProperty(value = "条码")
    private String barcode;
    /**
     * 产地
     */
    @ApiModelProperty(value= "产地")
    @ApiModelProperty(value = "产地")
    private String origin;
    /**
     * 厂家
     */
    @ApiModelProperty(value= "仓库编码")
    @ApiModelProperty(value = "仓库编码")
    private String manu;
    /**
     * 生产日期
     */
    @ApiModelProperty(value= "生产日期")
    @ApiModelProperty(value = "生产日期")
    @TableField("manu_date")
    private String manuDate;
    /**
     * 品项数
     */
    @ApiModelProperty(value= "品项数")
    @ApiModelProperty(value = "品项数")
    @TableField("item_num")
    private String itemNum;
    /**
     * 安全库存量
     */
    @ApiModelProperty(value= "安全库存量")
    @ApiModelProperty(value = "安全库存量")
    @TableField("safe_qty")
    private Double safeQty;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    @ApiModelProperty(value = "重量")
    private Double weight;
    /**
     * 长度
     */
    @ApiModelProperty(value= "长度")
    @ApiModelProperty(value = "长度")
    @TableField("man_length")
    private Double manLength;
    /**
     * 体积
     */
    @ApiModelProperty(value= "体积")
    @ApiModelProperty(value = "体积")
    private Double volume;
    /**
     * 三方编码
     */
    @ApiModelProperty(value= "三方编码")
    @ApiModelProperty(value = "三方编码")
    @TableField("three_code")
    private String threeCode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    @ApiModelProperty(value = "供应商")
    private String supp;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    @ApiModelProperty(value = "供应商编码")
    @TableField("supp_code")
    private String suppCode;
    /**
     * 是否批次 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否批次 1: 是  0: 否  ")
    @ApiModelProperty(value = "是否批次 1: 是  0: 否  ")
    @TableField("be_batch")
    private Integer beBatch;
    /**
     * 保质期
     */
    @ApiModelProperty(value= "保质期")
    @ApiModelProperty(value = "保质期")
    @TableField("dead_time")
    private String deadTime;
    /**
     * 预警天数
     */
    @ApiModelProperty(value= "预警天数")
    @ApiModelProperty(value = "预警天数")
    @TableField("dead_warn")
    private Integer deadWarn;
    /**
     * 制购 1: 制造  2: 采购  3: 外协     、、宜科:  是否确认   1: 确认  2: 未确认
     */
    @ApiModelProperty(value= "制购 1: 制造  2: 采购  3: 外协  ")
    @ApiModelProperty(value = "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    /**
     * 要求检验 1: 是  0: 否
     */
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    @ApiModelProperty(value = "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    /**
     * 危险品 1: 是  0: 否
     */
    @ApiModelProperty(value= "危险品 1: 是  0: 否  ")
    @ApiModelProperty(value = "危险品 1: 是  0: 否  ")
    private Integer danger;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
    @ApiModelProperty(value = "状态 1: 正常  0: 禁用  ")
    private Integer status;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @ApiModelProperty(value = "添加人员")
    @TableField("create_by")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @ApiModelProperty(value = "添加时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @ApiModelProperty(value = "修改人员")
    @TableField("update_by")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @ApiModelProperty(value = "修改时间")
    @TableField("update_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    @ApiModelProperty(value = "备注")
    private String memo;
    /**
     * 状态 0:未知,1:入库,2:出库
     */
    @ApiModelProperty(value= "入出库类型(0:未知,1:入库,2:出库)")
    @ApiModelProperty(value = "入出库类型(0:未知,1:入库,2:出库)")
    @TableField("pakin_pakout_status")
    private Integer pakinPakoutStatus;
    /**
     * 行号
     */
    @ApiModelProperty(value= "行号")
    @ApiModelProperty(value = "行号")
    @TableField("line_number")
    private Long lineNumber;
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    @ApiModelProperty(value = "备用1")
    private String standby1 = "";
    /**
     * 备用2
     */
    @ApiModelProperty(value= "备用2")
    @ApiModelProperty(value = "备用2")
    private String standby2 = "";
    /**
     * 备用3
     */
    @ApiModelProperty(value= "备用3")
    @ApiModelProperty(value = "备用3")
    private String standby3 = "";
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    @ApiModelProperty(value = "备用1")
    @TableField("box_type1")
    private String boxType1 = "";
    /**
     * 备用2
     */
    @ApiModelProperty(value= "备用2")
    @ApiModelProperty(value = "备用2")
    @TableField("box_type2")
    private String boxType2 = "";
    /**
     * 备用3
     */
    @ApiModelProperty(value= "备用3")
    @ApiModelProperty(value = "备用3")
    @TableField("box_type3")
    private String boxType3 = "";
    @ApiModelProperty(value= "备注")
    @ApiModelProperty(value = "备注")
    @TableField("remark")
    private String remark;
    public OrderDetl() {}
    public OrderDetl() {
    }
    public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double manLength, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
        this.orderId = orderId;
@@ -450,18 +451,20 @@
    }
    public String getOrderId$(){
    public String getOrderId$() {
        OrderService service = SpringUtils.getBean(OrderService.class);
        Order order = service.selectById(this.orderId);
        if (!Cools.isEmpty(order)){
        if (!Cools.isEmpty(order)) {
            return String.valueOf(order.getId());
        }
        return null;
    }
    public String getBeBatch$(){
        if (null == this.beBatch){ return null; }
        switch (this.beBatch){
    public String getBeBatch$() {
        if (null == this.beBatch) {
            return null;
        }
        switch (this.beBatch) {
            case 1:
                return "是";
            case 0:
@@ -471,9 +474,11 @@
        }
    }
    public String getSource$(){
        if (null == this.source){ return null; }
        switch (this.source){
    public String getSource$() {
        if (null == this.source) {
            return null;
        }
        switch (this.source) {
            case 1:
                return "制造";
            case 2:
@@ -485,9 +490,11 @@
        }
    }
    public String getInspect$(){
        if (null == this.inspect){ return null; }
        switch (this.inspect){
    public String getInspect$() {
        if (null == this.inspect) {
            return null;
        }
        switch (this.inspect) {
            case 1:
                return "是";
            case 0:
@@ -497,9 +504,11 @@
        }
    }
    public String getDanger$(){
        if (null == this.danger){ return null; }
        switch (this.danger){
    public String getDanger$() {
        if (null == this.danger) {
            return null;
        }
        switch (this.danger) {
            case 1:
                return "是";
            case 0:
@@ -509,9 +518,11 @@
        }
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
    public String getStatus$() {
        if (null == this.status) {
            return null;
        }
        switch (this.status) {
            case 1:
                return "正常";
            case 0:
@@ -521,33 +532,33 @@
        }
    }
    public String getCreateBy$(){
    public String getCreateBy$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.createBy);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
    public String getCreateTime$() {
        if (Cools.isEmpty(this.createTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
    public String getUpdateBy$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.updateBy);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
    public String getUpdateTime$() {
        if (Cools.isEmpty(this.updateTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
@@ -563,18 +574,47 @@
        return null;
    }
    public String getQty$(){
        if (getAnfme().equals(getQty())){
    public String getQty$() {
        if (getAnfme().equals(getQty())) {
            return "已完成";
        }
        return "未完成";
    }
    public boolean beSimilar(OrderDetl orderDetl){
    public boolean beSimilar(OrderDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.batch.equals(orderDetl.getBatch())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
                        && this.standby3.equals(orderDetl.getStandby3())
                        && this.boxType1.equals(orderDetl.getBoxType1())
                        && this.boxType2.equals(orderDetl.getBoxType2())
                        && this.boxType3.equals(orderDetl.getBoxType3())
        );
    }
    public boolean beSimilar(WrkDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.batch.equals(orderDetl.getBatch())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
                        && this.standby3.equals(orderDetl.getStandby3())
                        && this.boxType1.equals(orderDetl.getBoxType1())
                        && this.boxType2.equals(orderDetl.getBoxType2())
                        && this.boxType3.equals(orderDetl.getBoxType3())
        );
    }
    public boolean beSimilarByWrkDetl(WrkDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
@@ -596,7 +636,7 @@
    }
    public boolean beSimilar2(OrderDetl orderDetl){
    public boolean beSimilar2(OrderDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
@@ -628,9 +668,9 @@
        return null;
    }
    public String getPakinPakoutStatus$(){
    public String getPakinPakoutStatus$() {
        if (Cools.isEmpty(this.pakinPakoutStatus)) return null;
        switch (this.pakinPakoutStatus){
        switch (this.pakinPakoutStatus) {
            case 1:
                return "Y";
            case 2:
@@ -640,19 +680,19 @@
        }
    }
    public String getBoxType1$(){
    public String getBoxType1$() {
        BasProcessProceduresService service = SpringUtils.getBean(BasProcessProceduresService.class);
        BasProcessProcedures processProcedures = service.selectOne(new EntityWrapper<BasProcessProcedures>().eq("box_type", this.boxType1));
        if (!Cools.isEmpty(processProcedures)){
        if (!Cools.isEmpty(processProcedures)) {
            return String.valueOf(processProcedures.getBoxSpecs());
        }
        return this.boxType1;
    }
    public String getBoxType2$(){
    public String getBoxType2$() {
        BasQualityTestingService service = SpringUtils.getBean(BasQualityTestingService.class);
        BasQualityTesting basQualityTesting = service.selectOne(new EntityWrapper<BasQualityTesting>().eq("box_type", this.boxType1));
        if (!Cools.isEmpty(basQualityTesting)){
        if (!Cools.isEmpty(basQualityTesting)) {
            return String.valueOf(basQualityTesting.getBoxSpecs());
        }
        return this.boxType1;
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -188,7 +188,8 @@
            }
        }
        if (complete) {
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
            List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId());
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) {
                throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
            }
            List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(order.getOrderNo());
@@ -196,13 +197,27 @@
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(wrkDetl);
                orderDetl.setQty(wrkDetl.getAnfme());
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setOrderId(orderSou.getId());
                orderDetl.setOrderNo(orderSou.getOrderNo());
                orderDetl.setStatus(1);
                orderDetl.setCreateTime(order.getCreateTime());
                orderDetl.setCreateBy(order.getCreateBy());
                orderDetl.setUpdateTime(order.getUpdateTime());
                orderDetl.setUpdateBy(order.getUpdateBy());
                orderDetl.setCreateTime(orderSou.getCreateTime());
                orderDetl.setCreateBy(orderSou.getCreateBy());
                orderDetl.setUpdateTime(orderSou.getUpdateTime());
                orderDetl.setUpdateBy(orderSou.getUpdateBy());
                orderDetl.setId(null);
                //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况
                for (OrderDetl xxx : old) {
                    if (xxx.beSimilar(wrkDetl)) {
                        orderDetl.setRemark(xxx.getRemark());
                    }
                }
                if (Cools.isEmpty(orderDetl.getRemark())) {
                    for (OrderDetl xxx : old) {
                        if (xxx.beSimilarByWrkDetl(wrkDetl)) {
                            orderDetl.setRemark(xxx.getRemark());
                        }
                    }
                }
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
                }
src/main/resources/mapper/asrs/WrkDetlMapper.xml
@@ -88,9 +88,16 @@
    </update>
    <select id="selectAndLogByOrderNo" resultMap="BaseResultMap">
        select * from asr_wrk_detl where order_no = #{orderNo} and io_type != 53
        select awd.*
        from asr_wrk_detl awd
                 left join asr_wrk_mast awm on awd.wrk_no = awm.wrk_no and awd.io_time = awm.io_time
        where order_no = #{orderNo}
        union
        select * from asr_wrk_detl_log where order_no = #{orderNo} and io_type != 53
        select distinct awdl.*
        from asr_wrk_detl_log awdl
                 left join asr_wrk_mast_log awml on awdl.wrk_no = awml.wrk_no and awdl.io_time = awml.io_time
        where awdl.order_no = #{orderNo}
          and (awml.manu_type is null or awml.manu_type != '手动取消')
    </select>
    <update id="updateInspect">