自动化立体仓库 - WMS系统
pang.jiabao
1 天以前 aca94963ca944c256c4ef69d0316a2e8d6ccbc62
单据上报U8批次
3个文件已添加
8个文件已修改
232 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/OrderDetl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderReport.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderReportMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderReportMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -446,7 +446,7 @@
    public Double getEnableQty() {
        if (null != this.anfme && this.workQty != null) {
            return this.anfme - this.workQty;
            return this.anfme - this.workQty - this.qty;
        }
//        if (null != this.anfme && this.qty != null) {
//            return this.anfme - this.qty;
src/main/java/com/zy/asrs/entity/OrderReport.java
New file
@@ -0,0 +1,43 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
/**
 * @author pang.jiabao
 * @description
 * @createDate 2026/4/10 14:30
 */
@Data
@TableName("man_order_report")
public class OrderReport {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField("order_no")
    private String orderNo;
    @TableField("matnr")
    private String matnr;
    @TableField("maktx")
    private String maktx;
    @TableField("batch")
    private String batch;
    @TableField("anfme")
    private Double anfme;
    public void sync(Object source) {
        BeanUtils.copyProperties(source,this);
    }
}
src/main/java/com/zy/asrs/mapper/OrderReportMapper.java
New file
@@ -0,0 +1,23 @@
package com.zy.asrs.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.OrderReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author pang.jiabao
 * @description
 * @createDate 2026/4/10 14:28
 */
@Mapper
public interface OrderReportMapper extends BaseMapper<OrderReport> {
    int insertBatch(@Param("list") List<OrderReport> list);
    List<OrderReport> selectSummary(@Param("orderNo") String orderNo, @Param("matnr") String matnr);
    int moveToLog(@Param("orderNos") List<String> orderNos);
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -13,6 +13,7 @@
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.mapper.OrderReportMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.SaasUtils;
@@ -85,6 +86,9 @@
    @Resource
    private OrderDetlMapper orderDetlMapper;
    @Resource
    private OrderReportMapper orderReportMapper;
    @Override
    @Transactional
    public R WarehouseOut(CombParam combParam, Long userId) {
@@ -111,21 +115,27 @@
                if (order.getSettle() == 1) {
                    orderService.updateSettle(order.getId(), 2L, userId);
                }
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), "");
                if (Cools.isEmpty(orderDetl)) {
                    continue;
                }
                if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) {
                    combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
                }
                // 修改订单明细作业数量
                if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) {
                // 修改订单明细完成数量
                if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), "", combMat.getAnfme()) <= 0) {
                    throw new CoolException("修改单据明细工作数量失败");
                }
                // 修改订单明细完成数量
                if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
                    throw new CoolException("修改单据明细完成数量失败");
                }
//                // 修改订单明细完成数量
//                if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), "", combMat.getAnfme())) {
//                    throw new CoolException("修改单据明细完成数量失败");
//                }
                // 插入上报表
                combMat.setOrderNo(combParam.getOrderNo());
                OrderReport orderReport = new OrderReport();
                orderReport.sync(combMat);
                orderReportMapper.insert(orderReport);
                // 修改订单状态 作业中 ===>> 已完成
                orderService.checkComplete(combParam.getOrderNo());
            }
@@ -226,14 +236,19 @@
                if (Cools.isEmpty(order)){
                    throw new CoolException("平库上架查询订单失败");
                }
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch());
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), "");
                if (Cools.isEmpty(orderDetl)){
                    throw new CoolException("平库上架查询订单明细失败");
                }
                // 修改订单明细完成数量
                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), "", waitPakin.getAnfme())) {
                    throw new CoolException("修改单据明细数量失败");
                }
                // 插入上报表
                OrderReport orderReport = new OrderReport();
                orderReport.sync(waitPakin);
                orderReportMapper.insert(orderReport);
                // 修改订单状态 作业中 ===>> 已完成
                orderService.checkComplete(waitPakin.getOrderNo());
@@ -339,12 +354,12 @@
                    throw new CoolException("单据编号已完成:" + elem.getOrderNo());
                }
                // 订单明细数量校验
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), "");
                if (elem.getAnfme() > orderDetl.getEnableQty()) {
                    throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
                }
                // 修改订单明细数量
                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), "", elem.getAnfme())) {
                    throw new CoolException("修改单据明细数量失败");
                }
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -891,7 +891,7 @@
            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())) {
                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), "", wrkDetl.getAnfme())) {
                        throw new CoolException("订单数据回滚失败");
                    }
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,15 +2,18 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.OrderReport;
import com.zy.asrs.entity.u8.ReportU8Vo;
import com.zy.asrs.entity.u8.U8ResultVo;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.mapper.OrderReportMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderDetlService;
@@ -51,7 +54,12 @@
    @Autowired
    private DocTypeService docTypeService;
    @Resource
    private OrderReportMapper orderReportMapper;
    private static final String baseUrl = "192.168.4.189:10006/api/U8Server";
//    private static final String baseUrl = "127.0.0.1:8080/jsjwms/open/asrs";
    private static final Map<String, String> pathMap = new HashMap<String, String>() {{
        put("采购到货单", "/purchasein_import");
        put("销售发货单", "/saleout_import");
@@ -59,6 +67,12 @@
        put("领料申请单", "/materialout_import");
        put("其他入库单", "/otherin_import");
        put("其他出库单", "/otherout_import");
//        put("采购到货单", "/purchasein_import");
//        put("销售发货单", "/purchasein_import");
//        put("生产订单", "/purchasein_import");
//        put("领料申请单", "/purchasein_import");
//        put("其他入库单", "/purchasein_import");
//        put("其他出库单", "/purchasein_import");
    }};
    @Resource
    private OrderMapper orderMapper;
@@ -176,6 +190,7 @@
        return SUCCESS;
    }
    @Transactional
    public void startNew(Map.Entry<String, List<Order>> orderMap) {
        String docName = orderMap.getKey();
        List<Order> value = orderMap.getValue();
@@ -205,6 +220,10 @@
                List<String> successReceiptNos = list.stream().filter(u8ResultVo -> "T".equals(u8ResultVo.getResult())).map(U8ResultVo::getReceiptNo).collect(Collectors.toList());
                if (!successReceiptNos.isEmpty()) {
                    orderMapper.batchUpdateSettleByOrderNos(successReceiptNos);
                    // 上报表转历史
                    orderReportMapper.moveToLog(successReceiptNos);
                    // 删除上报表数据
                    orderReportMapper.delete(new EntityWrapper<OrderReport>().in("order_no",successReceiptNos));
                    success = true;
                }
                log.info("单据上报成功,单据编号:{}", successReceiptNos);
@@ -252,14 +271,17 @@
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                    String docType$ = order.getDocType$();
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                            item.setIquantity(orderReport.getAnfme());
                        item.setAutoidPo(orderDetl.getSku());
                        item.setPoautoidcol(docType$.equals("采购订单") ? "ID" : docType$.equals("采购到货单") || docType$.equals("委外到货单") ? "Autoid" :
                                docType$.equals("委外订单") ? "MODetailsID" : "");
                        item.setCbatch(orderDetl.getBatch());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                        }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
@@ -280,13 +302,16 @@
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
//                    String docType$ = order.getDocType$();
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                            item.setIquantity(orderReport.getAnfme());
                        item.setAutoidSo(orderDetl.getSku());
                        item.setSoautoidcol("IDLSID");
                        item.setCbatch(orderDetl.getBatch());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                        }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
@@ -306,13 +331,16 @@
                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                            item.setIquantity(orderReport.getAnfme());
                        item.setAutoidMo(orderDetl.getSku());
                        item.setMoautoidcol("MODID");
                        item.setCbatch(orderDetl.getBatch());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                        }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
@@ -333,13 +361,16 @@
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
//                    String docType$ = order.getDocType$();
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                            item.setIquantity(orderReport.getAnfme());
                        item.setAutoidAll(orderDetl.getSku());
                        item.setAllcautoidcol("AutoID");
                        item.setCbatch(orderDetl.getBatch());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                        }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
@@ -359,11 +390,14 @@
                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                        item.setCbatch(orderDetl.getBatch());
                            item.setIquantity(orderReport.getAnfme());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                        }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
@@ -383,12 +417,15 @@
                    List<ReportU8Vo.Item> itemList = new ArrayList<>();
                    List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
                    for (OrderDetl orderDetl : orderDetlList) {
                        List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr());
                        for(OrderReport orderReport: orderReports) {
                        ReportU8Vo.Item item = new ReportU8Vo.Item();
                        item.setCinvcode(orderDetl.getMatnr());
                        item.setIquantity(orderDetl.getQty());
                        item.setCbatch(orderDetl.getBatch());
                            item.setIquantity(orderReport.getAnfme());
                            item.setCbatch(orderReport.getBatch());
                        itemList.add(item);
                    }
                    }
                    reportU8Vo.setDetailList(itemList);
                    list.add(reportU8Vo);
                }
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.OrderReport;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.OrderReportMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
@@ -14,6 +16,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -39,21 +43,32 @@
    @Autowired
    private OrderService orderService;
    @Resource
    private OrderReportMapper orderReportMapper;
    @Transactional
    public ReturnT<String> start(WrkMast wrkMast) {
        try {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            List<OrderReport> orderReports = new ArrayList<>();
            // 修改订单状态 作业中 ===>> 已完成
            if (!Cools.isEmpty(wrkDetls)) {
                Iterator<WrkDetl> iterator = wrkDetls.iterator();
                while (iterator.hasNext()) {
                    WrkDetl wrkDetl = iterator.next();
                    if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                        OrderReport orderReport = new OrderReport();
                        orderReport.sync(wrkDetl);
                        orderReports.add(orderReport);
                        orderService.checkComplete(wrkDetl.getOrderNo());
                        iterator.remove();
                    }
                }
            }
            // 插入上报表
            if (!orderReports.isEmpty()) {
                orderReportMapper.insertBatch(orderReports);
            }
            // 入库 --------------------------------------------------------------------------------
            if (wrkMast.getWrkSts() == 5) {
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -135,7 +135,7 @@
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
                                        "",wrkDetl.getAnfme())){
//                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -391,7 +391,7 @@
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
                                        "",wrkDetl.getAnfme())){
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
src/main/resources/mapper/LocDetlMapper.xml
@@ -166,10 +166,11 @@
        select
        ROW_NUMBER() over (order by sum(a.anfme) desc) as row
        , a.matnr
        , a.batch
        , sum(a.anfme) as anfme
        from asr_loc_detl a
        where 1=1
        group by a.matnr
        group by a.matnr,a.batch
    </select>
    <select id="selectPakoutByRule" resultMap="BaseResultMap">
src/main/resources/mapper/OrderDetlMapper.xml
@@ -127,7 +127,7 @@
    <update id="increase">
        update man_order_detl
        set qty = qty + #{qty}
        set qty = qty + #{qty},work_qty = work_qty - #{qty}
        where 1=1
        and order_id = #{orderId}
        and matnr = #{matnr}
@@ -170,7 +170,7 @@
    <update id="increaseQtyByOrderNo">
        update man_order_detl
        set qty = qty + #{qty}
        set qty = qty + #{qty},work_qty = work_qty - #{qty}
        where 1=1
        and order_no = #{orderNo}
        and matnr = #{matnr}
@@ -201,7 +201,7 @@
    </update>
    <update id="increaseWorkQtyByOrderNo">
        update man_order_detl
        set work_qty = work_qty + #{qty}
        set qty = qty + #{qty}
        where 1=1
        and order_no = #{orderNo}
        and matnr = #{matnr}
src/main/resources/mapper/OrderReportMapper.xml
New file
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zy.asrs.mapper.OrderReportMapper">
    <insert id="insertBatch">
        INSERT INTO man_order_report (order_no, matnr, maktx, batch, anfme)
        <foreach collection="list" item="item" separator=" UNION ALL ">
            SELECT
            #{item.orderNo},
            #{item.matnr},
            #{item.maktx},
            #{item.batch},
            #{item.anfme}
        </foreach>
    </insert>
    <insert id="moveToLog">
        INSERT INTO man_order_report_log (id, order_no, matnr, maktx, batch, anfme)
        SELECT id, order_no, matnr, maktx, batch, anfme
        FROM man_order_report
        WHERE order_no IN
        <foreach collection="orderNos" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </insert>
    <select id="selectSummary" resultType="com.zy.asrs.entity.OrderReport">
        SELECT
            order_no   AS orderNo,
            matnr,
            batch,
            SUM(anfme) AS anfme
        FROM man_order_report
        WHERE order_no = #{orderNo}
          AND matnr = #{matnr}
        GROUP BY order_no, matnr, batch
    </select>
</mapper>