From 4bd4fae390e39fd8b5c116b8f295a676ab0c66c8 Mon Sep 17 00:00:00 2001 From: jiangpeng Date: Wed, 1 Jul 2026 13:52:33 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E7=A1=AC=E4=BB=B6=E7=BB=B4?= =?UTF-8?q?=E4=BF=9D=E6=97=B6=E9=97=B4=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeliveryListServiceImpl.java | 33 +++++++------ .../impl/InventoryDeliveryServiceImpl.java | 49 +++++++++---------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java index da3fc85d..2232b05e 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/DeliveryListServiceImpl.java @@ -215,26 +215,29 @@ public class DeliveryListServiceImpl implements IDeliveryListService { List productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getOrderId()); List serviceInfoList = new ArrayList<>(); Date startTime = deliveryInfoVo.getServiceStartTime(); - if (CollUtil.isNotEmpty(productInfoList)) { - if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) { - for (ProductInfo productInfo : productInfoList) { - if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { - startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); - } - } - } else { - for (ProductInfo productInfo : productInfoList) { - if (ProductInfo.ProductTypeLevel2ServiceEnum.HARDWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { - startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); - } + if (CollUtil.isNotEmpty(productInfoList) && ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) { + for (ProductInfo productInfo : productInfoList) { + if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { + startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); } } } if (CollUtil.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType()) && CollUtil.isNotEmpty(productInfos)) { // 判断是否硬件,如果是硬件取标准维保三年 - if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) { - startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfos.get(0), startTime, serviceInfoList); + int extendedWarrantyYears = 0; + for (ProductInfo productInfo : productInfos) { + if (ProductInfo.ProductTypeEnum.SERVICE.getType().equals(productInfo.getType()) && ProductInfo.ProductTypeLevel2ServiceEnum.HARDWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { + extendedWarrantyYears += Integer.parseInt(productInfo.getValue()); + } + if (ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType().equals(productInfo.getType()) && StringUtils.isNotEmpty(productInfo.getValue())) { + startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); + } + } + // 将硬件延保时间累加到硬件标准维保时间上 + if (extendedWarrantyYears > 0 && CollUtil.isNotEmpty(serviceInfoList)) { + DeliveryInfoVo.ServiceInfo serviceInfo = serviceInfoList.get(serviceInfoList.size() - 1); + serviceInfo.setServiceEndTime(DateUtils.addYears(serviceInfo.getServiceEndTime(), extendedWarrantyYears)); } } deliveryInfoVo.setServiceInfo(serviceInfoList); @@ -246,8 +249,8 @@ public class DeliveryListServiceImpl implements IDeliveryListService { serviceInfo.setServiceLevel(productInfo.getProductCode()); serviceInfo.setServiceDescribe(productInfo.getDescription()); serviceInfo.setServiceStartTime(startTime); - serviceInfo.setServiceEndTime(DateUtils.addYears(startTime, year)); startTime = DateUtils.addYears(startTime, year); + serviceInfo.setServiceEndTime(DateUtils.addDays(startTime, -1)); serviceInfoList.add(serviceInfo); return startTime; } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java index 303c3ac0..f1c56498 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java @@ -529,7 +529,6 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService { List projectProductInfos = projectProductInfoService.selectProjectProductInfoListByOrderCode(orderCodeList); // 构建维护类型与年限的映射 - Map> maintenanceTypeMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getProjectId)); // 查询服务维保的产品信息 @@ -542,8 +541,6 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService { for (DeliveryInfoVo deliveryInfoVo : resultList) { updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos); } - - return resultList; } @@ -650,19 +647,10 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService { List productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getProjectId()); List serviceInfoList = new ArrayList<>(); Date startTime = deliveryInfoVo.getServiceStartTime(); - if (CollUtil.isNotEmpty(productInfoList)) { - if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) { - for (ProjectProductInfo productInfo : productInfoList) { - if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { - startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); - - } - } - } else { - for (ProjectProductInfo productInfo : productInfoList) { - if (ProductInfo.ProductTypeLevel2ServiceEnum.HARDWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { - startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); - } + if (CollUtil.isNotEmpty(productInfoList) && ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) { + for (ProjectProductInfo productInfo : productInfoList) { + if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { + startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList); } } } @@ -670,23 +658,32 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService { if (CollUtil.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType()) && CollUtil.isNotEmpty(productInfos)) { // 判断是否硬件,如果是硬件取标准维保三年 - if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) { - ProjectProductInfo projectProductInfo = new ProjectProductInfo(); - projectProductInfo.setProductBomCode(productInfos.get(0).getProductCode()); - projectProductInfo.setType(productInfos.get(0).getType()); - projectProductInfo.setValue(productInfos.get(0).getValue()); - projectProductInfo.setProductDesc(productInfos.get(0).getDescription()); - startTime = updateStartTimeAndAddList(deliveryInfoVo, projectProductInfo, startTime, serviceInfoList); + int extendedWarrantyYears = 0; + for (ProductInfo productInfo : productInfos) { + if (ProductInfo.ProductTypeEnum.SERVICE.getType().equals(productInfo.getType()) && ProductInfo.ProductTypeLevel2ServiceEnum.HARDWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) { + extendedWarrantyYears += Integer.parseInt(productInfo.getValue()); + } + if (ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType().equals(productInfo.getType()) && StringUtils.isNotEmpty(productInfo.getValue())) { + ProjectProductInfo projectProductInfo = new ProjectProductInfo(); + projectProductInfo.setProductBomCode(productInfo.getProductCode()); + projectProductInfo.setType(productInfo.getType()); + projectProductInfo.setValue(productInfo.getValue()); + projectProductInfo.setProductDesc(productInfo.getDescription()); + startTime = updateStartTimeAndAddList(deliveryInfoVo, projectProductInfo, startTime, serviceInfoList); + } + } + // 将硬件延保时间累加到硬件标准维保时间上 + if (extendedWarrantyYears > 0 && CollUtil.isNotEmpty(serviceInfoList)) { + DeliveryInfoVo.ServiceInfo serviceInfo = serviceInfoList.get(serviceInfoList.size() - 1); + serviceInfo.setServiceEndTime(DateUtils.addYears(serviceInfo.getServiceEndTime(), extendedWarrantyYears)); } } deliveryInfoVo.setServiceInfo(serviceInfoList); - - } private Date updateStartTimeAndAddList(DeliveryInfoVo deliveryInfoVo, ProjectProductInfo productInfo, Date startTime, List serviceInfoList) { int year = productInfo.getValue() == null ? 0 : Integer.parseInt(productInfo.getValue()); - year = Math.toIntExact(year * (productInfo.getQuantity() == null ? 1 : productInfo.getQuantity())); +// year = Math.toIntExact(year * (productInfo.getQuantity() == null ? 1 : productInfo.getQuantity())); DeliveryInfoVo.ServiceInfo serviceInfo = deliveryInfoVo.new ServiceInfo(); serviceInfo.setServiceLevel(productInfo.getProductBomCode()); serviceInfo.setServiceDescribe(productInfo.getProductDesc());