自动化立体仓库 - WMS系统
skyouc
昨天 fcbc8ed5d4152d5b8b0a230e8074fb159bdd1989
bug修复
6个文件已修改
135 ■■■■■ 已修改文件
src/main/java/com/zy/api/controller/KopenApiController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/OrderItemsParam.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/OrderParams.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/enums/OrderWkType.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/KopenApiService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/controller/KopenApiController.java
@@ -43,6 +43,7 @@
        return kopenApiService.receiveOrders(params);
    }
    /**
     * 上游下发零件数据变更
     * s
@@ -84,4 +85,23 @@
        return kopenApiService.getInDispatchResult(params);
    }
    /**
     * 备货指示派工单下发
     * @author Ryan
     * @date 2025/11/24 15:21
     * @param params
     * @return com.core.common.R
     */
    @ApiOperation("备货指示派工单下发")
    @PostMapping("/sendOutDispatch")
    public R sendStockPrepareDispatch(@RequestBody PubOrderParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
            return R.error("上报订单列表不能为空!!");
        }
        return kopenApiService.sendOutDispatch(params);
    }
}
src/main/java/com/zy/api/entity/OrderItemsParam.java
@@ -30,5 +30,13 @@
    @ApiModelProperty("入库通知数量")
    private Double inv_qty;
    @ApiModelProperty("指示拣货订单数量")
    private Integer order_qty;
    @ApiModelProperty("原上架派工数量")
    private Integer old_qty;
    @ApiModelProperty("变更数量")
    private Integer new_qty;
}
src/main/java/com/zy/api/entity/OrderParams.java
@@ -26,7 +26,7 @@
    @ApiModelProperty("公司ID")
    private String company_id;
    @ApiModelProperty("入库类型 1: 采购入库,2: 调拨入库,3: 销售退货入库,4: 套包入库")
    @ApiModelProperty("入库类型 1: 采购入库,2: 调拨入库,3: 销售退货入库,4: 套包入库, 5:SO, 6:EO")
    private String type;
    @ApiModelProperty("箱号")
@@ -38,6 +38,9 @@
    @ApiModelProperty("目标库区")
    private String target_location;
    @ApiModelProperty("源库区")
    private String source_location;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
src/main/java/com/zy/api/enums/OrderWkType.java
@@ -7,6 +7,8 @@
    ORDER_WK_TRANSFER_IN("2", "调拔入库"),
    ORDER_WK_SALE_IN("3", "销售退货入库"),
    ORDER_WK_BAG_IN("4", "套包入库"),
    ORDER_WK_ORDER_OUT_EO("EO", "备货指示派工单(EO)"),
    ORDER_WK_ORDER_OUT_SO("SO", "备货指示派工单(SO)"),
    ORDER_WK_ORDER_OUT("29", "备货单");
    OrderWkType(String val, String desc) {
@@ -26,7 +28,7 @@
            return OrderType.ORDER_IN.type;
        } else if (val.equals(OrderWkType.ORDER_WK_BAG_IN.val)) {
            return OrderType.ORDER_IN.type;
        } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) {
        } else if (val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)  || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)  || val.equals(OrderWkType.ORDER_WK_ORDER_OUT.val)) {
            return OrderType.ORDER_OUT.type;
        } else {
            return OrderType.ORDER_OUT.type;
src/main/java/com/zy/api/service/KopenApiService.java
@@ -40,4 +40,11 @@
     * @return
     */
    R getInDispatchResult(ReportOrderParam params);
    /**
     * 备货指示派工单下发
     * @param params
     * @return
     */
    R sendOutDispatch(PubOrderParams params);
}
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -6,7 +6,6 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.api.entity.OrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.SyncMatParmas;
@@ -31,9 +30,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
@@ -97,6 +93,73 @@
        } catch (Exception e) {
            return R.error(e.getMessage());
        }
    }
     /* */
     /**
      * 备货指示派工单下发
      * @author Ryan
      * @date 2025/11/24 15:21
      * @param params
      * @return com.core.common.R
      */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R sendOutDispatch(PubOrderParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        // 校验参数
        if (Objects.isNull(params.getDispatch_no())) {
            return R.error("派工单编号不能为空!!");
        }
        if (Objects.isNull(params.getKopen_id())) {
            return R.error("流水号不能为空!!");
        }
        if (Objects.isNull(params.getCompany_id())) {
            return R.error("公司ID不能为空!!");
        }
        addOrUpdateOrders(params, "add");
        return R.ok("备货指示派工单下发成功!!");
    }
    /**
     * 备货指示派工单
     * @author Ryan
     * @date 2025/12/16 9:15
     * @param params
     */
    private void outOrderAddAndUpdate(PubOrderParams params, String type) {
        if (Objects.isNull(params)) {
            throw new CoolException("参数不能为空!!");
        }
        if (Objects.isNull(params.getType())) {
            throw new CoolException("订单类型不能为空!!");
        }
        OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
        if (type.equals("add") && !Objects.isNull(order)) {
            throw new CoolException("单据已存在, 不可重复添加!!");
        }
        // 判断订单是否存在
        if (Objects.isNull(order)) {
            /** 不存在,新增订单 */
            generateOrders(params);
        } else {
            /** 存在,删除老订单,更新插入新订单 */
            // 删除旧订单明细
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
                throw new CoolException("订单明细删除失败!!");
            };
            if (!orderService.deleteById(order.getId())) {
                throw new CoolException("原单据删除失败!!");
            }
            generateOrders(params);
        }
    }
    /**
@@ -167,7 +230,6 @@
        if (Objects.isNull(params.getType())) {
            throw new CoolException("订单类型不能为空!!");
        }
        OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
        if (type.equals("add") && !Objects.isNull(order)) {
@@ -182,7 +244,8 @@
            // 删除旧订单明细
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
                throw new CoolException("订单明细删除失败!!");
            };
            }
            if (!orderService.deleteById(order.getId())) {
                throw new CoolException("原单据删除失败!!");
            }
@@ -206,12 +269,14 @@
        if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 入库
            newOrder.setPakinPakoutStatus(1);
            newOrder.setDocType(Long.parseLong(params.getType()));
            newOrder.setOrderNo(params.getInv_no());
        } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 出库
            newOrder.setPakinPakoutStatus(2);
            newOrder.setDocType(5L);
            newOrder.setOrderNo(params.getDispatch_no());
        }
        newOrder.setDocType(Long.parseLong(params.getType()));
        newOrder.setOrderNo(params.getInv_no());
        newOrder.setUuid(generateUUID(params));
        // 流水号(唯一)
        newOrder.setDefNumber(params.getKopen_id());
@@ -242,7 +307,15 @@
                BeanUtils.copyProperties(matnr, orderItem);
                orderItem.setOrderId(newOrder.getId());
                orderItem.setOrderNo(newOrder.getOrderNo());
                orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0);
                if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
                    // 入库
                    orderItem.setAnfme(Math.round(item.getInv_qty() * 10000) / 10000.0);
                } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
                    // 出库
                    newOrder.setPakinPakoutStatus(2);
                    orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0);
                }
                orderItem.setMatnr(matnr.getMatnr());
                orderItem.setMaktx(matnr.getMaktx());
                orderItem.setBrand(matnr.getBrand());