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 cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.core.domain.AjaxResult;
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.ProductInfoMapper;
import com.ruoyi.sip.vo.DeliveryInfoVo;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import com.ruoyi.sip.mapper.DeliveryListMapper;
import com.ruoyi.sip.domain.DeliveryList;
@ -154,7 +156,9 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
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);
// 设置服务等级和服务结束时间
for (DeliveryInfoVo deliveryInfoVo : deliveryInfoVos) {
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeYearMap, productInfos);
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);
}
return deliveryInfoVos;
@ -200,25 +204,39 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
/**
* DeliveryInfoVo
*/
private void updateDeliveryInfoVo(DeliveryInfoVo deliveryInfoVo, Map<Long, Map<String, Integer>> maintenanceTypeYearMap, List<ProductInfo> productInfos) {
Map<String, Integer> yearMap = maintenanceTypeYearMap.get(deliveryInfoVo.getOrderId());
if (yearMap != null) {
Integer year;
private void updateDeliveryInfoVo(DeliveryInfoVo deliveryInfoVo, Map<Long, List<ProductInfo>> maintenanceTypeMap, List<ProductInfo> productInfos) {
List<ProductInfo> productInfoList = maintenanceTypeMap.get(deliveryInfoVo.getOrderId());
if (CollUtil.isNotEmpty(productInfoList)) {
int year = 0;
StringJoiner desc=new StringJoiner(";");
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 {
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())
&& CollUtil.isNotEmpty(productInfos)) {
// 判断是否硬件,如果是硬件取标准维保三年
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));
}
}

View File

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

View File

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

View File

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

View File

@ -59,7 +59,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t2.delivery_date as service_start_time,
t3.order_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
FROM delivery_list t1
inner JOIN order_delivery t2 ON t1.delivery_id = t2.id