refactor(sip): 重构交付列表接口返回值

- 在 DeliveryInfoVo 中添加产品编码、产品名称和产品描述字段
- 修改 DeliveryListMapper.xml 中的 SQL 查询,增加产品编码和描述字段- 重构 DeliveryListServiceImpl 中的逻辑,使用 List<ProductInfo>替代 Map<String, Integer>
- 优化 OrderInfoServiceImpl 中的 setAgentInfo 和 setCustomerInfo 方法- 调整 OrderInfoVo 中的字段,移除未使用的属性
master
chenhao 2025-05-16 10:57:36 +08:00
parent 0c9ed50afb
commit e32f3663bf
5 changed files with 64 additions and 38 deletions

View File

@ -6,6 +6,7 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
@ -17,6 +18,7 @@ import com.ruoyi.sip.dto.ApiDataQueryDto;
import com.ruoyi.sip.mapper.OrderInfoMapper; import com.ruoyi.sip.mapper.OrderInfoMapper;
import com.ruoyi.sip.mapper.ProductInfoMapper; import com.ruoyi.sip.mapper.ProductInfoMapper;
import com.ruoyi.sip.vo.DeliveryInfoVo; import com.ruoyi.sip.vo.DeliveryInfoVo;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.sip.mapper.DeliveryListMapper; import com.ruoyi.sip.mapper.DeliveryListMapper;
import com.ruoyi.sip.domain.DeliveryList; import com.ruoyi.sip.domain.DeliveryList;
@ -154,7 +156,9 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
List<OrderList> orderListList = infoMapper.listMaintenanceByOrderIdList(orderIdList); List<OrderList> orderListList = infoMapper.listMaintenanceByOrderIdList(orderIdList);
// 构建维护类型与年限的映射 // 构建维护类型与年限的映射
Map<Long, Map<String, Integer>> maintenanceTypeYearMap = buildMaintenanceTypeYearMap(orderListList); // Map<Long, Map<String, Integer>> maintenanceTypeYearMap = buildMaintenanceTypeYearMap(orderListList);
Map<Long, List<ProductInfo>> maintenanceTypeMap = orderListList.stream().filter(item -> item.getProductInfo() != null).collect(
Collectors.groupingBy(OrderList::getOrderId, Collectors.mapping(OrderList::getProductInfo, Collectors.toList())));
// 查询标准硬件维保的产品信息 // 查询标准硬件维保的产品信息
@ -163,7 +167,7 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
List<ProductInfo> productInfos = productInfoMapper.selectProductInfoList(productInfo); List<ProductInfo> productInfos = productInfoMapper.selectProductInfoList(productInfo);
// 设置服务等级和服务结束时间 // 设置服务等级和服务结束时间
for (DeliveryInfoVo deliveryInfoVo : deliveryInfoVos) { for (DeliveryInfoVo deliveryInfoVo : deliveryInfoVos) {
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeYearMap, productInfos); updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);
} }
return deliveryInfoVos; return deliveryInfoVos;
@ -200,25 +204,39 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
/** /**
* DeliveryInfoVo * DeliveryInfoVo
*/ */
private void updateDeliveryInfoVo(DeliveryInfoVo deliveryInfoVo, Map<Long, Map<String, Integer>> maintenanceTypeYearMap, List<ProductInfo> productInfos) { private void updateDeliveryInfoVo(DeliveryInfoVo deliveryInfoVo, Map<Long, List<ProductInfo>> maintenanceTypeMap, List<ProductInfo> productInfos) {
Map<String, Integer> yearMap = maintenanceTypeYearMap.get(deliveryInfoVo.getOrderId()); List<ProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getOrderId());
if (yearMap != null) { if (CollUtil.isNotEmpty(productInfoList)) {
Integer year; int year = 0;
StringJoiner desc=new StringJoiner(";");
if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) { if (ProductInfo.ProductTypeEnum.SOFTWARE.getType().equals(deliveryInfoVo.getProductType())) {
year = yearMap.getOrDefault(ProductInfo.ProductTypeEnum.SOFTWARE_MAINTENANCE.getType(), 0); for (ProductInfo productInfo : productInfoList) {
if (ProductInfo.ProductTypeEnum.SOFTWARE_MAINTENANCE.getType().equals(productInfo.getType()) && StringUtils.isNotEmpty(productInfo.getValue())) {
year += Integer.parseInt(productInfo.getValue());
desc.add(productInfo.getDescription());
}
}
} else { } else {
year = yearMap.getOrDefault(ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType(), 0); for (ProductInfo productInfo : productInfoList) {
if (ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType().equals(productInfo.getType()) && StringUtils.isNotEmpty(productInfo.getValue())) {
year += Integer.parseInt(productInfo.getValue());
desc.add(productInfo.getDescription());
}
}
} }
if (year == 0 && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType()) if (year == 0 && ProductInfo.ProductTypeEnum.HARDWARE.getType().equals(deliveryInfoVo.getProductType())
&& CollUtil.isNotEmpty(productInfos)) { && CollUtil.isNotEmpty(productInfos)) {
// 判断是否硬件,如果是硬件取标准维保三年 // 判断是否硬件,如果是硬件取标准维保三年
if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) { if (StringUtils.isNotEmpty(productInfos.get(0).getValue())) {
year = Integer.valueOf(productInfos.get(0).getValue()); year = Integer.parseInt(productInfos.get(0).getValue());
} }
} }
deliveryInfoVo.setServiceLevel(year.toString()); deliveryInfoVo.setServiceLevel(Integer.toString(year));
deliveryInfoVo.setServiceDescribe(desc.toString());
deliveryInfoVo.setServiceEndTime(DateUtils.addYears(deliveryInfoVo.getServiceStartTime(), year)); deliveryInfoVo.setServiceEndTime(DateUtils.addYears(deliveryInfoVo.getServiceStartTime(), year));
} }
} }

View File

@ -175,7 +175,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService
orderInfoVo.setOrderName(orderInfo.getOrderName()); orderInfoVo.setOrderName(orderInfo.getOrderName());
orderInfoVo.setVersionCode(orderInfo.getVersionCode()); orderInfoVo.setVersionCode(orderInfo.getVersionCode());
// 固定值待确认 // 固定值待确认
orderInfoVo.setBgType(DictUtils.getDictLabel("bg_type", orderInfo.getBgType())); // orderInfoVo.setBgType(DictUtils.getDictLabel("bg_type", orderInfo.getBgType()));
orderInfoVo.setLastUpdateTime(orderInfo.getUpdatedAt()); orderInfoVo.setLastUpdateTime(orderInfo.getUpdatedAt());
// 设置代表处信息 // 设置代表处信息
setAgentInfo(orderInfoVo, agentInfoMap.get(orderInfo.getOrderAgentCode())); setAgentInfo(orderInfoVo, agentInfoMap.get(orderInfo.getOrderAgentCode()));
@ -217,15 +217,15 @@ public class OrderInfoServiceImpl implements IOrderInfoService
*/ */
private void setAgentInfo(OrderInfoVo orderInfoVo, AgentInfo agentInfo) { private void setAgentInfo(OrderInfoVo orderInfoVo, AgentInfo agentInfo) {
if (agentInfo != null) { if (agentInfo != null) {
orderInfoVo.setOrderAgentCode(agentInfo.getAgentCode()); // orderInfoVo.setOrderAgentCode(agentInfo.getAgentCode());
orderInfoVo.setOrderAgentName(agentInfo.getAgentName()); // orderInfoVo.setOrderAgentName(agentInfo.getAgentName());
orderInfoVo.setDeliveredAgentCode(agentInfo.getAgentCode()); // orderInfoVo.setDeliveredAgentCode(agentInfo.getAgentCode());
orderInfoVo.setDeliveredAgentName(agentInfo.getAgentName()); // orderInfoVo.setDeliveredAgentName(agentInfo.getAgentName());
orderInfoVo.setRevenueAgentCode(agentInfo.getAgentCode()); // orderInfoVo.setRevenueAgentCode(agentInfo.getAgentCode());
orderInfoVo.setRevenueAgentName(agentInfo.getAgentName()); // orderInfoVo.setRevenueAgentName(agentInfo.getAgentName());
orderInfoVo.setSaleName(agentInfo.getContactPerson()); orderInfoVo.setSaleName(agentInfo.getContactPerson());
orderInfoVo.setSaleEmail(agentInfo.getContactEmail()); orderInfoVo.setSaleEmail(agentInfo.getContactEmail());
orderInfoVo.setSalePhone(agentInfo.getContactPhone()); // orderInfoVo.setSalePhone(agentInfo.getContactPhone());
} }
} }
@ -234,11 +234,11 @@ public class OrderInfoServiceImpl implements IOrderInfoService
*/ */
private void setCustomerInfo(OrderInfoVo orderInfoVo, OrderInfo dto) { private void setCustomerInfo(OrderInfoVo orderInfoVo, OrderInfo dto) {
if (dto != null) { if (dto != null) {
orderInfoVo.setCustomerCode(dto.getCustomerCode()); // orderInfoVo.setCustomerCode(dto.getCustomerCode());
orderInfoVo.setCustomerName(dto.getCustomerName()); orderInfoVo.setCustomerName(dto.getCustomerName());
orderInfoVo.setCustomerPostcode(dto.getCustomerPostcode()); // orderInfoVo.setCustomerPostcode(dto.getCustomerPostcode());
orderInfoVo.setIndustryType(DictUtils.getDictLabel("industry_type",dto.getIndustryType())); // orderInfoVo.setIndustryType(DictUtils.getDictLabel("industry_type",dto.getIndustryType()));
orderInfoVo.setCustomerAddress(dto.getCustomerAddress()); // orderInfoVo.setCustomerAddress(dto.getCustomerAddress());
orderInfoVo.setContactPerson(dto.getCustomerContact()); orderInfoVo.setContactPerson(dto.getCustomerContact());
orderInfoVo.setContactEmail(dto.getCustomerEmail()); orderInfoVo.setContactEmail(dto.getCustomerEmail());
orderInfoVo.setContactPhone(dto.getCustomerPhone()); orderInfoVo.setContactPhone(dto.getCustomerPhone());

View File

@ -28,6 +28,12 @@ public class DeliveryInfoVo {
private String versionCode; private String versionCode;
//条码 //条码
private String serialNumber; private String serialNumber;
private String productCode;
@JsonIgnore
private String productName;
private String productDescription;
//服务级别 //服务级别
private String serviceLevel; private String serviceLevel;
//服务描述 //服务描述

View File

@ -26,32 +26,32 @@ public class OrderInfoVo {
private String orderName; private String orderName;
//版本号 //版本号
private String versionCode; private String versionCode;
//下单代表处 // //下单代表处
private String orderAgentName; // private String orderAgentName;
private String orderAgentCode; // private String orderAgentCode;
//交付代表 // //交付代表
private String deliveredAgentName; // private String deliveredAgentName;
private String deliveredAgentCode; // private String deliveredAgentCode;
//收益代表 // //收益代表
private String revenueAgentName; // private String revenueAgentName;
private String revenueAgentCode; // private String revenueAgentCode;
//销售人员 //销售人员
private String saleName; private String saleName;
private String saleEmail; private String saleEmail;
private String salePhone; // private String salePhone;
// 客户编码 // 客户编码
private String customerCode; // private String customerCode;
// 客户名称 // 客户名称
private String customerName; private String customerName;
//客户邮编 //客户邮编
private String customerPostcode; // private String customerPostcode;
//BG属性 //BG属性
private String bgType; // private String bgType;
//一级行业 //一级行业
private String industryType; // private String industryType;
//客户地址 //客户地址
private String customerAddress; // private String customerAddress;
//客户联系人 //客户联系人
private String contactPerson; private String contactPerson;
//客户电话 //客户电话

View File

@ -59,7 +59,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t2.delivery_date as service_start_time, t2.delivery_date as service_start_time,
t3.order_code, t3.order_code,
t3.version_code, t3.version_code,
t4.product_name as service_describe, t4.product_name ,
t4.product_code,
t4.description as product_description,
t4.type as product_type t4.type as product_type
FROM delivery_list t1 FROM delivery_list t1
inner JOIN order_delivery t2 ON t1.delivery_id = t2.id inner JOIN order_delivery t2 ON t1.delivery_id = t2.id