fix:硬件维保时间计算规则调整
parent
40f40baf5e
commit
4bd4fae390
|
|
@ -215,26 +215,29 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
|
||||||
List<ProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getOrderId());
|
List<ProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getOrderId());
|
||||||
List<DeliveryInfoVo.ServiceInfo> serviceInfoList = new ArrayList<>();
|
List<DeliveryInfoVo.ServiceInfo> serviceInfoList = new ArrayList<>();
|
||||||
Date startTime = deliveryInfoVo.getServiceStartTime();
|
Date startTime = deliveryInfoVo.getServiceStartTime();
|
||||||
if (CollUtil.isNotEmpty(productInfoList)) {
|
if (CollUtil.isNotEmpty(productInfoList) && ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) {
|
||||||
if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) {
|
|
||||||
for (ProductInfo productInfo : productInfoList) {
|
for (ProductInfo productInfo : productInfoList) {
|
||||||
if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) {
|
if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) {
|
||||||
startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList);
|
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.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType())
|
if (CollUtil.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType())
|
||||||
&& CollUtil.isNotEmpty(productInfos)) {
|
&& CollUtil.isNotEmpty(productInfos)) {
|
||||||
// 判断是否硬件,如果是硬件取标准维保三年
|
// 判断是否硬件,如果是硬件取标准维保三年
|
||||||
if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) {
|
int extendedWarrantyYears = 0;
|
||||||
startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfos.get(0), startTime, serviceInfoList);
|
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);
|
deliveryInfoVo.setServiceInfo(serviceInfoList);
|
||||||
|
|
@ -246,8 +249,8 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
|
||||||
serviceInfo.setServiceLevel(productInfo.getProductCode());
|
serviceInfo.setServiceLevel(productInfo.getProductCode());
|
||||||
serviceInfo.setServiceDescribe(productInfo.getDescription());
|
serviceInfo.setServiceDescribe(productInfo.getDescription());
|
||||||
serviceInfo.setServiceStartTime(startTime);
|
serviceInfo.setServiceStartTime(startTime);
|
||||||
serviceInfo.setServiceEndTime(DateUtils.addYears(startTime, year));
|
|
||||||
startTime = DateUtils.addYears(startTime, year);
|
startTime = DateUtils.addYears(startTime, year);
|
||||||
|
serviceInfo.setServiceEndTime(DateUtils.addDays(startTime, -1));
|
||||||
serviceInfoList.add(serviceInfo);
|
serviceInfoList.add(serviceInfo);
|
||||||
return startTime;
|
return startTime;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -529,7 +529,6 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService {
|
||||||
List<ProjectProductInfo> projectProductInfos = projectProductInfoService.selectProjectProductInfoListByOrderCode(orderCodeList);
|
List<ProjectProductInfo> projectProductInfos = projectProductInfoService.selectProjectProductInfoListByOrderCode(orderCodeList);
|
||||||
|
|
||||||
// 构建维护类型与年限的映射
|
// 构建维护类型与年限的映射
|
||||||
|
|
||||||
Map<Long, List<ProjectProductInfo>> maintenanceTypeMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getProjectId));
|
Map<Long, List<ProjectProductInfo>> maintenanceTypeMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getProjectId));
|
||||||
|
|
||||||
// 查询服务维保的产品信息
|
// 查询服务维保的产品信息
|
||||||
|
|
@ -542,8 +541,6 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService {
|
||||||
for (DeliveryInfoVo deliveryInfoVo : resultList) {
|
for (DeliveryInfoVo deliveryInfoVo : resultList) {
|
||||||
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);
|
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -650,19 +647,10 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService {
|
||||||
List<ProjectProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getProjectId());
|
List<ProjectProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getProjectId());
|
||||||
List<DeliveryInfoVo.ServiceInfo> serviceInfoList = new ArrayList<>();
|
List<DeliveryInfoVo.ServiceInfo> serviceInfoList = new ArrayList<>();
|
||||||
Date startTime = deliveryInfoVo.getServiceStartTime();
|
Date startTime = deliveryInfoVo.getServiceStartTime();
|
||||||
if (CollUtil.isNotEmpty(productInfoList)) {
|
if (CollUtil.isNotEmpty(productInfoList) && ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) {
|
||||||
if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) {
|
|
||||||
for (ProjectProductInfo productInfo : productInfoList) {
|
for (ProjectProductInfo productInfo : productInfoList) {
|
||||||
if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) {
|
if (ProductInfo.ProductTypeLevel2ServiceEnum.SOFTWARE_QA.getType().equals(productInfo.getLevel2Type()) && StringUtils.isNotEmpty(productInfo.getValue())) {
|
||||||
startTime = updateStartTimeAndAddList(deliveryInfoVo, productInfo, startTime, serviceInfoList);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,23 +658,32 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService {
|
||||||
if (CollUtil.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType())
|
if (CollUtil.isEmpty(serviceInfoList) && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType())
|
||||||
&& CollUtil.isNotEmpty(productInfos)) {
|
&& CollUtil.isNotEmpty(productInfos)) {
|
||||||
// 判断是否硬件,如果是硬件取标准维保三年
|
// 判断是否硬件,如果是硬件取标准维保三年
|
||||||
if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) {
|
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 projectProductInfo = new ProjectProductInfo();
|
||||||
projectProductInfo.setProductBomCode(productInfos.get(0).getProductCode());
|
projectProductInfo.setProductBomCode(productInfo.getProductCode());
|
||||||
projectProductInfo.setType(productInfos.get(0).getType());
|
projectProductInfo.setType(productInfo.getType());
|
||||||
projectProductInfo.setValue(productInfos.get(0).getValue());
|
projectProductInfo.setValue(productInfo.getValue());
|
||||||
projectProductInfo.setProductDesc(productInfos.get(0).getDescription());
|
projectProductInfo.setProductDesc(productInfo.getDescription());
|
||||||
startTime = updateStartTimeAndAddList(deliveryInfoVo, projectProductInfo, startTime, serviceInfoList);
|
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);
|
deliveryInfoVo.setServiceInfo(serviceInfoList);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Date updateStartTimeAndAddList(DeliveryInfoVo deliveryInfoVo, ProjectProductInfo productInfo, Date startTime, List<DeliveryInfoVo.ServiceInfo> serviceInfoList) {
|
private Date updateStartTimeAndAddList(DeliveryInfoVo deliveryInfoVo, ProjectProductInfo productInfo, Date startTime, List<DeliveryInfoVo.ServiceInfo> serviceInfoList) {
|
||||||
int year = productInfo.getValue() == null ? 0 : Integer.parseInt(productInfo.getValue());
|
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();
|
DeliveryInfoVo.ServiceInfo serviceInfo = deliveryInfoVo.new ServiceInfo();
|
||||||
serviceInfo.setServiceLevel(productInfo.getProductBomCode());
|
serviceInfo.setServiceLevel(productInfo.getProductBomCode());
|
||||||
serviceInfo.setServiceDescribe(productInfo.getProductDesc());
|
serviceInfo.setServiceDescribe(productInfo.getProductDesc());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue