自动化立体仓库 - WMS系统
pang.jiabao
19 小时以前 65e54b6d197856b889481098caecceaa04d26691
获取货物到达出库口大屏显示物料信息
2个文件已添加
5个文件已修改
191 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OutLocInfoDto.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OutLocInfoParam.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -5,6 +5,7 @@
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.OutLocInfoParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.OpenService;
import com.zy.common.web.BaseController;
@@ -201,6 +202,18 @@
        return openService.getCrnLaneWayInfo();
    }
    @PostMapping("/getOutLocInfoByBarcode")
    @AppAuth(memo = "根据托盘码,获取出库物料信息进行大屏显示")
    public synchronized R getOutLocInfoByBarcode(@RequestHeader(required = false) String appkey,
                                            @RequestBody OutLocInfoParam param,
                                            HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param) || Cools.isEmpty(param.getBarcode())) {
            return R.parse("托盘码不能为空");
        }
        return openService.getOutLocInfoByBarcode(param.getBarcode());
    }
    /*@PostMapping("/order/matSync/default/v1")
    @AppAuth(memo = "商品信息同步接口")
src/main/java/com/zy/asrs/entity/OutLocInfoDto.java
New file
@@ -0,0 +1,93 @@
package com.zy.asrs.entity;
import lombok.Data;
import java.util.List;
/**
 * @author pang.jiabao
 * @description 获取出库物料信息进行大屏显示出参
 * @createDate 2025/4/27 15:56
 */
@Data
public class OutLocInfoDto {
    /**
     * 工作号
     */
    private Integer wrkNo;
    /**
     * 木箱信息
     */
    private List<Material> materialList;
    @Data
    public static class Material {
        /**
         * 包装组号
         */
        private String packageGroupNo;
        /**
         * 木箱位置
         */
        private String boxPos;
        /**
         * 卷信息
         */
        private List<MaterialDetail> materialDetailList;
        /**
         * 订单号
         */
        private String orderNo;
        /**
         * 客户名称
         */
        private String customerName;
        /**
         * 订单备注
         */
        private String memo;
        /**
         * 订单明细总数
         */
        private Integer sum;
        /**
         * 未处理订单明细数
         */
        private Integer toShipQuantity;
        /**
         * 工作中订单明细数
         */
        private Integer workQuantity;
        @Data
        public static class MaterialDetail {
            /**
             * 卷号
             */
            private String rollNo;
            /**
             * 箱号
             */
            private String boxNo;
            /**
             * 规格
             */
            private String specs;
        }
    }
}
src/main/java/com/zy/asrs/entity/OutLocInfoParam.java
New file
@@ -0,0 +1,18 @@
package com.zy.asrs.entity;
import lombok.Data;
/**
 * @author pang.jiabao
 * @description 根据托盘码,获取出库物料信息进行大屏显示入参
 * @createDate 2025/4/27 14:13
 */
@Data
public class OutLocInfoParam {
    /**
     * 托盘码
     */
    private String barcode;
}
src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -44,7 +44,7 @@
    List<String> selectOrderNosByOrderNoLike(@Param("orderNo") String orderNo);
    /**
     * 获取未完成订单统计信息
     * 获取未完成订单统计信息(orderNo为空则查询所有)
     */
    List<OrderStatisticsDto> getUnfulfilledOrders();
    List<OrderStatisticsDto> getUnfulfilledOrders(@Param("orderNo") String orderNo);
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -95,6 +95,10 @@
     */
    R getCrnLaneWayInfo();
    /**
     * 根据托盘码,获取出库物料信息进行大屏显示
     */
    R getOutLocInfoByBarcode(String barcode);
    /**
     * 添加入库单
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1969,7 +1969,7 @@
    @Override
    public R getUnfulfilledOrders() {
        // 获取未完成订单统计信息
        List<OrderStatisticsDto> unfulfilledOrders = orderMapper.getUnfulfilledOrders();
        List<OrderStatisticsDto> unfulfilledOrders = orderMapper.getUnfulfilledOrders("");
        return R.ok(unfulfilledOrders);
    }
@@ -1979,6 +1979,60 @@
        return R.ok(crnLaneWayInfo);
    }
    @Override
    public R getOutLocInfoByBarcode(String barcode) {
        // 根据托盘码获取任务主档
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
        // 根据任务主档获取工作档明细
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
        // 提取包装组号
        List<String> brandList = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
        OutLocInfoDto outLocInfoDto = new OutLocInfoDto();
        outLocInfoDto.setWrkNo(wrkMast.getWrkNo());
        List<OutLocInfoDto.Material> materialList = new ArrayList<>();
        for (String brand : brandList) {
            // 一个木箱
            OutLocInfoDto.Material material = new OutLocInfoDto.Material();
            material.setPackageGroupNo(brand); // 包装组号
            // 按包装组号过滤
            List<WrkDetl> wrkDetls1 = wrkDetls.stream().filter(wrkDetl -> Objects.equals(wrkDetl.getBrand(), brand)).collect(Collectors.toList());
            // 卷信息
            List<OutLocInfoDto.Material.MaterialDetail> materialDetailList = new ArrayList<>();
            for (WrkDetl wrkDetl : wrkDetls1) {
                OutLocInfoDto.Material.MaterialDetail materialDetail = new OutLocInfoDto.Material.MaterialDetail();
                materialDetail.setRollNo(wrkDetl.getModel());
                materialDetail.setBoxNo(wrkDetl.getUnit());
                materialDetail.setSpecs(wrkDetl.getMatnr());
                material.setBoxPos(wrkDetl.getOrigin()); // 托盘上木箱位置
                materialDetailList.add(materialDetail);
            }
            // 订单信息
            WrkDetl wrkDetl = wrkDetls1.get(0);
            if (wrkDetl != null && wrkDetl.getOrderNo() != null) {
                Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()));
                if (order != null) {
                    material.setOrderNo(order.getOrderNo());
                    material.setMemo(order.getMemo());
                    material.setCustomerName(order.getCstmrName());
                    List<OrderStatisticsDto> unfulfilledOrders = orderMapper.getUnfulfilledOrders(order.getOrderNo());
                    if (unfulfilledOrders.size() == 1) {
                        OrderStatisticsDto orderStatisticsDto = unfulfilledOrders.get(0);
                        material.setSum(orderStatisticsDto.getSum());
                        material.setToShipQuantity(orderStatisticsDto.getToShipQuantity());
                        material.setWorkQuantity(orderStatisticsDto.getWorkQuantity());
                    }
                }
            }
            material.setMaterialDetailList(materialDetailList);
            materialList.add(material);
        }
        outLocInfoDto.setMaterialList(materialList);
        return R.ok(outLocInfoDto);
    }
    /**
     * 创建桁架理货出库的工作档
     */
src/main/resources/mapper/OrderMapper.xml
@@ -127,6 +127,9 @@
        where
            mo.doc_type = 21
          and mo.settle in(1, 2)
        <if test="orderNo != ''">
            and mo.order_no = #{orderNo}
        </if>
        GROUP BY
            mo.order_no
    </select>