From 5e45584754f3caa612400fc174b920b4f18a41e6 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Tue, 20 May 2025 10:54:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=85=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了产品编码重复校验,改为在导入时自动合并相同产品编码的订单- 添加了 mergeOrderLists 方法用于合并订单列表 - 修改了导入逻辑,先删除原有订单再批量插入新订单,以适应无法确定 BOM 编码唯一性的情况 - 优化了错误提示信息,将"单价不能为空"改为"数量不能为空" - 删除了 OrderList 类中的冗余空行 --- .../java/com/ruoyi/sip/domain/OrderList.java | 6 +- .../service/impl/OrderInfoServiceImpl.java | 68 ++++++++++++------- 2 files changed, 47 insertions(+), 27 deletions(-) diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java index ec936693..000d8e47 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/OrderList.java @@ -52,8 +52,6 @@ public class OrderList extends BaseEntity @Excel(name = "备注") private String remark; - - /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") // @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") @@ -69,5 +67,5 @@ public class OrderList extends BaseEntity // @Excel(name = "删除时间", width = 30, dateFormat = "yyyy-MM-dd") private Date deletedAt; - private ProductInfo productInfo; -} + private ProductInfo productInfo; +} \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java index b4416450..0260576f 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OrderInfoServiceImpl.java @@ -193,6 +193,33 @@ public class OrderInfoServiceImpl implements IOrderInfoService return orderInfoMapper.listExport(orderList); } + /** + * 自动合并订单列表,根据 productCode 判断是否合并,合并值为 quantity + * + * @param orderListList 订单列表 + * @return 合并后的订单列表 + */ + private List mergeOrderLists(List orderListList) { + if (orderListList == null || orderListList.isEmpty()) { + return orderListList; + } + + Map mergedMap = new HashMap<>(); + for (OrderList order : orderListList) { + String productCode = order.getProductCode(); + if (mergedMap.containsKey(productCode)) { + // 如果已存在相同 productCode 的记录,则累加 quantity + OrderList existingOrder = mergedMap.get(productCode); + existingOrder.setQuantity(existingOrder.getQuantity() + order.getQuantity()); + } else { + // 如果不存在,则直接添加到 Map 中 + mergedMap.put(productCode, order); + } + } + + // 将 Map 转换为 List 并返回 + return new ArrayList<>(mergedMap.values()); + } @Override public AjaxResult listImportData(List orderListList, Long orderId) { Assert.notNull(orderId, "合同ID不能为空"); @@ -201,12 +228,6 @@ public class OrderInfoServiceImpl implements IOrderInfoService .filter(Objects::nonNull) .collect(Collectors.toList()); - // 校验productCode是否重复 - Set uniqueProductCodes = new HashSet<>(productCodeList); - if (uniqueProductCodes.size() != productCodeList.size()) { - return AjaxResult.error("产品编码在excel中存在重复"); - } - if (productCodeList.isEmpty()) { return AjaxResult.error("文件为空或产品编码为空"); } @@ -222,7 +243,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService return AjaxResult.error("单价不能为空"); } if (orderList.getQuantity() == null) { - return AjaxResult.error("单价不能为空"); + return AjaxResult.error("数量不能为空"); } BigDecimal amount = orderList.getPrice().multiply(new BigDecimal(orderList.getQuantity())); @@ -231,22 +252,23 @@ public class OrderInfoServiceImpl implements IOrderInfoService } orderList.setAmount(amount); } -// orderInfoMapper.deleteOrderListByOrderId(orderId); -// orderInfoMapper.batchOrderList(orderListList); - List orderInfoList = orderInfoMapper.selectOrderListList(orderId); - Map> stringListMap = compareOrderLists(orderInfoList, orderListList); - List deleteList = stringListMap.get("removed"); - List addList = stringListMap.get("added"); - List updateList = stringListMap.get("modified"); - if (CollUtil.isNotEmpty(addList)) { - orderInfoMapper.batchOrderList(addList); - } - if (CollUtil.isNotEmpty(deleteList)) { - orderInfoMapper.deleteOrderListById(deleteList.stream().map(OrderList::getId).collect(Collectors.toList())); - } - if (CollUtil.isNotEmpty(updateList)) { - orderInfoMapper.updateListBatch(updateList); - } + orderInfoMapper.deleteOrderListByOrderId(orderId); + orderInfoMapper.batchOrderList(orderListList); + //因为没办法确定BOM编码唯一性 无法根据bom编码进行对比 +// List orderInfoList = orderInfoMapper.selectOrderListList(orderId); +// Map> stringListMap = compareOrderLists(orderInfoList, orderListList); +// List deleteList = stringListMap.get("removed"); +// List addList = stringListMap.get("added"); +// List updateList = stringListMap.get("modified"); +// if (CollUtil.isNotEmpty(addList)) { +// orderInfoMapper.batchOrderList(addList); +// } +// if (CollUtil.isNotEmpty(deleteList)) { +// orderInfoMapper.deleteOrderListById(deleteList.stream().map(OrderList::getId).collect(Collectors.toList())); +// } +// if (CollUtil.isNotEmpty(updateList)) { +// orderInfoMapper.updateListBatch(updateList); +// } return AjaxResult.success("导入成功"); } public Map> compareOrderLists(List orderInfoList, List orderListList) {