From 65e54b6d197856b889481098caecceaa04d26691 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期一, 28 四月 2025 11:09:01 +0800 Subject: [PATCH] 获取货物到达出库口大屏显示物料信息 --- src/main/resources/mapper/OrderMapper.xml | 3 src/main/java/com/zy/asrs/entity/OutLocInfoParam.java | 18 ++++ src/main/java/com/zy/asrs/controller/OpenController.java | 13 +++ src/main/java/com/zy/asrs/mapper/OrderMapper.java | 4 src/main/java/com/zy/asrs/entity/OutLocInfoDto.java | 93 +++++++++++++++++++++++ src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 56 +++++++++++++ src/main/java/com/zy/asrs/service/OpenService.java | 4 + 7 files changed, 188 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 93e089d..0281bfa 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/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 = "鍟嗗搧淇℃伅鍚屾鎺ュ彛") diff --git a/src/main/java/com/zy/asrs/entity/OutLocInfoDto.java b/src/main/java/com/zy/asrs/entity/OutLocInfoDto.java new file mode 100644 index 0000000..fc490c0 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/OutLocInfoDto.java @@ -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; + } + + } +} diff --git a/src/main/java/com/zy/asrs/entity/OutLocInfoParam.java b/src/main/java/com/zy/asrs/entity/OutLocInfoParam.java new file mode 100644 index 0000000..2c019f1 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/OutLocInfoParam.java @@ -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; + +} diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java index 8cdf6be..1354c61 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java +++ b/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); } diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java index 4f8c1e0..3327d99 100644 --- a/src/main/java/com/zy/asrs/service/OpenService.java +++ b/src/main/java/com/zy/asrs/service/OpenService.java @@ -95,6 +95,10 @@ */ R getCrnLaneWayInfo(); + /** + * 鏍规嵁鎵樼洏鐮侊紝鑾峰彇鍑哄簱鐗╂枡淇℃伅杩涜澶у睆鏄剧ず + */ + R getOutLocInfoByBarcode(String barcode); /** * 娣诲姞鍏ュ簱鍗� diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 13537f8..dc18ea9 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/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)); + // 鏍规嵁浠诲姟涓绘。鑾峰彇宸ヤ綔妗f槑缁� + 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); + } + /** * 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。 */ diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml index 4f69b06..e359a06 100644 --- a/src/main/resources/mapper/OrderMapper.xml +++ b/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> -- Gitblit v1.9.1