自动化立体仓库 - WMS系统
skyouc
昨天 655f0eaba18ec8c56058a87270bf7e15790b6aab
添加备货单接口对接
2个文件已添加
7个文件已修改
338 ■■■■ 已修改文件
src/main/java/com/zy/api/controller/KopenApiController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/OrderItemsParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/OrderParams.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/OutOrderParams.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/PubOrderParams.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/entity/StockUpOrderParams.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/enums/OrderWkType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/KopenApiService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java 203 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/controller/KopenApiController.java
@@ -5,6 +5,7 @@
import com.zy.api.entity.OrderParams;
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.StockUpOrderParams;
import com.zy.api.entity.SyncMatParmas;
import com.zy.api.service.KopenApiService;
import io.swagger.annotations.ApiOperation;
@@ -103,4 +104,47 @@
        return kopenApiService.sendOutDispatch(params);
    }
    //  /**
    //  * 备货指示派工单反馈
    //  * @author Ryan
    //  * @date 2025/11/24 15:22
    //  * @param params
    //  * @return com.core.common.R
    //  */
    // @ApiOperation("备货指示派工单反馈")
    // @PostMapping("/getOutDispatchResult")
    // public R getOutDispatchResult(@RequestBody ReportOrderParam params) {
    //     if (Objects.isNull(params)) {
    //         return R.error("参数不能为空!!");
    //     }
    //     if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) {
    //         return R.error("取消条件不能为空!!");
    //     }
    //     return kopenApiService.getOutDispatchResult(params);
    // }
    /**
     * 备货单下发
     * @author Ryan
     * @date 2025/11/24 15:21
     * @param params
     * @return com.core.common.R
     */
    @ApiOperation("备货单下发")
    @PostMapping("/getOutDetails")
    public R getOutDetails(@RequestBody StockUpOrderParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
            return R.error("上报订单列表不能为空!!");
        }
        return kopenApiService.getOutDetails(params);
    }
}
src/main/java/com/zy/api/entity/OrderItemsParam.java
@@ -39,4 +39,7 @@
    @ApiModelProperty("变更数量")
    private Integer new_qty;
    @ApiModelProperty("捆绑/叫料/数量数量")
    private Integer pick_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: 套包入库, 5:SO, 6:EO")
    @ApiModelProperty("入库类型 1: 采购入库,2: 调拨入库,3: 销售退货入库,4: 套包入库, 5:SO, 6:EO, 7:出库")
    private String type;
    @ApiModelProperty("箱号")
@@ -42,6 +42,25 @@
    private String source_location;
    @ApiModelProperty("拣货单号")
    private String pick_no;
    @ApiModelProperty("订单号")
    private String order_no;
    @ApiModelProperty("客户ID")
    private String cus_id;
    @ApiModelProperty("客户地址")
    private String cus_address;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String update_time;
src/main/java/com/zy/api/entity/OutOrderParams.java
New file
@@ -0,0 +1,34 @@
package com.zy.api.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
@Data
@Accessors(chain = true)
@ApiModel(value = "OutOrderParams", description = "备货订单参数")
public class OutOrderParams implements Serializable {
    @ApiModelProperty("明细备货单号")
    private String pick_no;
    @ApiModelProperty("订单号")
    private String order_no;
    @ApiModelProperty("客户")
    private String cus_id;
    @ApiModelProperty("客户地址")
    private String cus_address;
    @ApiModelProperty("业务类型")
    private String type;
    @ApiModelProperty("订单明细")
    private List<OrderItemsParam> partList;
}
src/main/java/com/zy/api/entity/PubOrderParams.java
@@ -10,7 +10,7 @@
@Data
@Accessors(chain = true)
@ApiModel(value = "PubOrderParams", description = "发布订单信息")
public class PubOrderParams extends OrderParams{
public class PubOrderParams extends OrderParams {
    @ApiModelProperty("入库物料列表")
    List<OrderItemsParam> details;
src/main/java/com/zy/api/entity/StockUpOrderParams.java
New file
@@ -0,0 +1,19 @@
package com.zy.api.entity;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel(value = "StockUpOrderParams", description = "备货订单参数")
public class StockUpOrderParams extends OrderParams{
    @ApiModelProperty("订单明细")
    private List<OutOrderParams> details;
}
src/main/java/com/zy/api/enums/OrderWkType.java
@@ -9,7 +9,7 @@
    ORDER_WK_BAG_IN("4", "套包入库"),
    ORDER_WK_ORDER_OUT_EO("EO", "备货指示派工单(EO)"),
    ORDER_WK_ORDER_OUT_SO("SO", "备货指示派工单(SO)"),
    ORDER_WK_ORDER_OUT("29", "备货单");
    ORDER_WK_ORDER_OUT("14", "备货单");
    OrderWkType(String val, String desc) {
        this.val = val;
src/main/java/com/zy/api/service/KopenApiService.java
@@ -3,6 +3,7 @@
import com.core.common.R;
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.StockUpOrderParams;
import com.zy.api.entity.SyncMatParmas;
public interface KopenApiService {
@@ -47,4 +48,13 @@
     * @return
     */
    R sendOutDispatch(PubOrderParams params);
    /**
     * 备货单下发
     * @author Ryan
     * @date 2025/11/24 15:40
     * @param params
     * @return com.core.common.R
     */
    R getOutDetails(StockUpOrderParams params);
}
src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -4,9 +4,12 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.api.entity.OrderItemsParam;
import com.zy.api.entity.OrderParams;
import com.zy.api.entity.OutOrderParams;
import com.zy.api.entity.PubOrderParams;
import com.zy.api.entity.ReportOrderParam;
import com.zy.api.entity.StockUpOrderParams;
import com.zy.api.entity.SyncMatParmas;
import com.zy.api.enums.MatLocType;
import com.zy.api.enums.OrderType;
@@ -29,7 +32,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Service("kopenApiServiceImpl")
@@ -45,10 +50,10 @@
    /**
     * 接收下发订单信息
     *
     * @author Ryan
     * @date 2025/11/24 14:49
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/11/24 14:49
     */
    @Override
    public R receiveOrders(PubOrderParams params) {
@@ -61,7 +66,7 @@
    /**
     * 上架派工单反馈
     *
     *
     * @author Ryan
     * @date 2025/11/24 15:33
     */
@@ -96,13 +101,14 @@
    }
    /* */
    /**
     * 备货指示派工单下发
     *
     * @author Ryan
     * @date 2025/11/24 15:21
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/11/24 15:21
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -126,52 +132,55 @@
        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("订单类型不能为空!!");
        }
    // /**
    // * 备货指示派工单
    // *
    // * @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);
        }
    // 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);
    // }
    }
    // }
    /**
     * 基础零件变更
     *
     * @author Ryan
     * @date 2025/11/24 15:05
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/11/24 15:05
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -234,14 +243,29 @@
            throw new CoolException("订单类型不能为空!!");
        }
        OrderParams orderParams = JSONObject.parseObject(JSONObject.toJSONString(params), OrderParams.class);
        // Order order = orderService.selectOne(new
        // EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no()));
        Order order = new Order();
        if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 入库
          order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getInv_no()));
        } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
                    orderParams.getDispatch_no()));
        } else if
        (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 出库
           order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderParams.getDispatch_no()));
            if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
                // 备货单出库
                order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
                        orderParams.getPick_no()));
            } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
                    || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
                // 备货指示派工单(EO/SO)出库
                order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",
                        orderParams.getDispatch_no()));
            }
        }
        // 出库
        if (type.equals("add") && !Objects.isNull(order)) {
            throw new CoolException("单据已存在, 不可重复添加!!");
        }
@@ -269,29 +293,40 @@
    /**
     * 生成订单信息
     *
     *
     * @param params
     */
    @Transactional(rollbackFor = Exception.class)
    public void generateOrders(PubOrderParams params) {
        // 将数据当新订单插入
        Order newOrder = new Order();
        // 派工单号
        newOrder.setOrderNo(params.getDispatch_no());
        if (OrderType.ORDER_IN.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 入库
            newOrder.setPakinPakoutStatus(1);
            newOrder.setDocType(Long.parseLong(params.getType()));
            newOrder.setOrderNo(params.getInv_no());
            newOrder.setNumber(params.getInv_no());
        } else if (OrderType.ORDER_OUT.type.equals(OrderWkType.getTypeVal(params.getType()))) {
            // 出库
            if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
                // 备货单出库
                newOrder.setOrderNo(params.getPick_no());
                newOrder.setNumber(params.getDispatch_no());
                newOrder.setCstmrName(params.getCus_id());
                newOrder.setTel(params.getCus_address());
                newOrder.setDocType(Long.parseLong(OrderTypeEnum.STOCK.type + ""));
            } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
                    || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
                // 备货指示派工单(EO/SO)出库
                newOrder.setDocType(Long.parseLong(OrderTypeEnum.TRANSFER.type + ""));
            }
            newOrder.setPakinPakoutStatus(2);
            newOrder.setDocType(Long.parseLong(OrderTypeEnum.TRANSFER.type + ""));
            newOrder.setOrderNo(params.getDispatch_no());
        }
        newOrder.setUuid(generateUUID(params));
        // 流水号(唯一)
        newOrder.setDefNumber(params.getKopen_id());
        // 派工单号
        newOrder.setNumber(params.getDispatch_no());
        // 箱号
        newOrder.setItemName(params.getPm_tktid());
        newOrder.setSettle(OrderSettle.ORDER_SETTLE_HOLDING.type);
@@ -323,8 +358,14 @@
                    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);
                    if (OrderWkType.ORDER_WK_ORDER_OUT.val.equals(params.getType())) {
                        // 备货单出库
                        orderItem.setAnfme(Math.round(item.getPick_qty() * 10000) / 10000.0);
                    } else if (OrderWkType.ORDER_WK_ORDER_OUT_EO.val.equals(params.getType())
                            || OrderWkType.ORDER_WK_ORDER_OUT_SO.val.equals(params.getType())) {
                        // 备货指示派工单(EO/SO)出库
                        orderItem.setAnfme(Math.round(item.getOrder_qty() * 10000) / 10000.0);
                    }
                }
                orderItem.setMatnr(matnr.getMatnr());
                orderItem.setMaktx(matnr.getMaktx());
@@ -344,4 +385,56 @@
        }
    }
    /**
     * 备货单下发
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/11/24 15:40
     */
    @Override
    public R getOutDetails(StockUpOrderParams 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不能为空!!");
        }
        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
            return R.error("订单明细不能为空!!");
        }
        List<OrderItemsParam> items = new ArrayList<>();
        if (params.getDetails() != null) {
            for (OutOrderParams detail : params.getDetails()) {
                if (detail.getPartList() != null) {
                    items.addAll(detail.getPartList());
                }
            }
        }
        params.getDetails().forEach(item -> {
            PubOrderParams pubOrderParams = new PubOrderParams();
            BeanUtils.copyProperties(params, pubOrderParams);
            pubOrderParams.setType(item.getType())
                    .setPick_no(item.getPick_no())
                    .setCus_address(item.getCus_address())
                    .setOrder_no(item.getOrder_no())
                    .setUpdate_time(params.getUpdate_time())
                    .setCus_id(item.getCus_id());
            pubOrderParams.setDetails(item.getPartList());
            addOrUpdateOrders(pubOrderParams, "add");
        });
        return R.ok("备货单下发成功!!");
    }
}