From 2553b18b7bcf7e4b40558fd91e465946d8c3c459 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 6 Feb 2026 09:13:57 +0800 Subject: [PATCH] =?UTF-8?q?2026-02-05=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkOrderAllocController.java | 26 +++++++++++--- .../Impl/WorkOrderAllocServiceImpl.java | 34 ++++++++++++++----- .../service/WorkOrderAllocService.java | 10 +++--- .../boxManage/BoxForNotificationMapper.xml | 6 ++-- 4 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderAllocController.java b/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderAllocController.java index 4281bf2..0442826 100644 --- a/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderAllocController.java +++ b/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderAllocController.java @@ -75,7 +75,7 @@ public class WorkOrderAllocController extends AbstractController { ResponseData response = workOrderAllocService.executeWorkOrderAlloc( request.getQuery(), - request.getOrderNoList(), + request.getOrderList(), currentUser, request.isAllocAll() ); @@ -91,8 +91,8 @@ public class WorkOrderAllocController extends AbstractController { * 执行工单数据回传(调用U8接口) */ @PostMapping("/executeSync") - public R executeSync(@RequestBody UspWorkOrderAllocData params) { - ResponseData response = workOrderAllocService.executeWorkOrderSync(params); + public R executeSync(@RequestBody WorkOrderSyncRequest request) { + ResponseData response = workOrderAllocService.executeWorkOrderSync(request.getSite(), request.getOrderList()); if (response.isSuccess()) { return R.ok(response.getMsg()); } else { @@ -106,7 +106,25 @@ public class WorkOrderAllocController extends AbstractController { @lombok.Data public static class WorkOrderAllocRequest { private SearchShopOrder query; - private List orderNoList; + private List orderList; // 包含orderNo和site的列表 private boolean allocAll; } + + /** + * 工单数据回传请求DTO + */ + @lombok.Data + public static class WorkOrderSyncRequest { + private String site; + private List orderList; // 包含orderNo和site的列表 + } + + /** + * 工单和Site信息 + */ + @lombok.Data + public static class OrderSiteItem { + private String orderNo; + private String site; + } } diff --git a/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java index dc0a5bd..b52a8ab 100644 --- a/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java +++ b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java @@ -5,6 +5,7 @@ import com.gaotao.common.utils.PageUtils; import com.gaotao.modules.pda.utils.ResponseData; import com.gaotao.modules.pms.util.HttpClientUtil; import com.gaotao.modules.report.dao.ProcedureDao; +import com.gaotao.modules.shopOrder.controller.WorkOrderAllocController.OrderSiteItem; import com.gaotao.modules.shopOrder.dao.WorkOrderAllocMapper; import com.gaotao.modules.shopOrder.entity.SearchShopOrder; import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; @@ -74,7 +75,7 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService { @Override @Transactional(rollbackFor = Exception.class) - public ResponseData executeWorkOrderAlloc(SearchShopOrder query, List orderNoList, String currentUser, boolean allocAll) { + public ResponseData executeWorkOrderAlloc(SearchShopOrder query, List orderList, String currentUser, boolean allocAll) { ResponseData responseData = new ResponseData(); try { log.info("开始执行工单数据汇总,操作人:{},汇总所有:{}", currentUser, allocAll); @@ -85,12 +86,12 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService { workOrderAllocMapper.insertAllocTempByQuery(query); log.info("已根据查询条件插入临时表"); } else { - // 汇总选中的:逐条插入临时表 - String site = query.getSite() != null ? query.getSite() : ""; - for (String orderNo : orderNoList) { - workOrderAllocMapper.insertAllocTemp(site, orderNo); + // 汇总选中的:逐条插入临时表,使用每行自己的site + for (OrderSiteItem item : orderList) { + String site = item.getSite() != null ? item.getSite() : ""; + workOrderAllocMapper.insertAllocTemp(site, item.getOrderNo()); } - log.info("已插入{}条选中的工单到临时表", orderNoList.size()); + log.info("已插入{}条选中的工单到临时表", orderList.size()); } // 2. 调用存储过程,orderNo传空字符串 @@ -134,13 +135,30 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService { @Override @Transactional(rollbackFor = Exception.class) - public ResponseData executeWorkOrderSync(UspWorkOrderAllocData data) { + public ResponseData executeWorkOrderSync(String site, List orderList) { ResponseData responseData = new ResponseData(); try { log.info("开始执行工单数据回传"); // 1. 查询未传输的数据 - List unSyncedList = workOrderAllocMapper.selectUnSyncedData(data); + List unSyncedList = new ArrayList<>(); + if (orderList != null && !orderList.isEmpty()) { + // 有选中行时,按每行的site和orderNo查询 + for (OrderSiteItem item : orderList) { + UspWorkOrderAllocData queryData = new UspWorkOrderAllocData(); + queryData.setSite(item.getSite()); + queryData.setOrderNo(item.getOrderNo()); + List itemList = workOrderAllocMapper.selectUnSyncedData(queryData); + if (itemList != null) { + unSyncedList.addAll(itemList); + } + } + } else { + // 没有选中行时,使用默认site查询 + UspWorkOrderAllocData queryData = new UspWorkOrderAllocData(); + queryData.setSite(site); + unSyncedList = workOrderAllocMapper.selectUnSyncedData(queryData); + } if (unSyncedList == null || unSyncedList.isEmpty()) { responseData.setCode("200"); diff --git a/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderAllocService.java b/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderAllocService.java index dce75dc..7bfb242 100644 --- a/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderAllocService.java +++ b/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderAllocService.java @@ -2,6 +2,7 @@ package com.gaotao.modules.shopOrder.service; import com.gaotao.common.utils.PageUtils; import com.gaotao.modules.pda.utils.ResponseData; +import com.gaotao.modules.shopOrder.controller.WorkOrderAllocController.OrderSiteItem; import com.gaotao.modules.shopOrder.entity.SearchShopOrder; import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; @@ -31,17 +32,18 @@ public interface WorkOrderAllocService { /** * 执行工单数据汇总(调用存储过程) * @param query 查询条件(用于汇总所有时) - * @param orderNoList 工单号列表(选择的工单) + * @param orderList 工单列表(包含orderNo和site) * @param currentUser 当前登录人 * @param allocAll 是否汇总所有(true:汇总查询条件下所有工单,false:只汇总选中的) * @return 执行结果 */ - ResponseData executeWorkOrderAlloc(SearchShopOrder query, List orderNoList, String currentUser, boolean allocAll); + ResponseData executeWorkOrderAlloc(SearchShopOrder query, List orderList, String currentUser, boolean allocAll); /** * 执行工单数据回传(调用U8接口) - * @param data 查询条件(包含工单筛选条件) + * @param site 默认site(无选中行时使用) + * @param orderList 工单列表(包含orderNo和site) * @return 执行结果 */ - ResponseData executeWorkOrderSync(UspWorkOrderAllocData data); + ResponseData executeWorkOrderSync(String site, List orderList); } diff --git a/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml b/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml index 9461362..571f3c4 100644 --- a/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml +++ b/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml @@ -30,12 +30,14 @@ a.site, a.bu_no, a.order_no, + A.box_no, COUNT(DISTINCT a.box_no) AS box_count, --箱标签张数 COUNT(DISTINCT b.final_roll_no) AS roll_count, --卷标签张数 ISNULL(SUM(roll_qty),0) AS rollsCount --物料总数 - from so_receive_boxes a with(nolock) + from so_receive_boxes a with(nolock) LEFT join so_receive_box_rolls b with(nolock) on a.site = b.site and a.bu_no = b.bu_no and a.box_no = b.box_no - WHERE a.SITE = #{site} AND a.bu_no = #{buNo} and a.order_no = #{orderNo} group by a.site, a.bu_no, a.order_no) T ON S.site = T.site AND S.bu_no = T.bu_no AND S.order_no = T.order_no + WHERE a.SITE = #{site} AND a.bu_no = #{buNo} and a.order_no = #{orderNo} + group by a.site, a.bu_no, a.order_no,A.box_no) T ON S.site = T.site AND S.bu_no = T.bu_no AND S.order_no = T.order_no AND T.box_no = S.box_no s.site = #{site} and s.bu_no = #{buNo}