refactor(sip): 重构交付列表接口返回值
- 在 DeliveryInfoVo 中添加产品编码、产品名称和产品描述字段 - 修改 DeliveryListMapper.xml 中的 SQL 查询,增加产品编码和描述字段- 重构 DeliveryListServiceImpl 中的逻辑,使用 List<ProductInfo>替代 Map<String, Integer> - 优化 OrderInfoServiceImpl 中的 setAgentInfo 和 setCustomerInfo 方法- 调整 OrderInfoVo 中的字段,移除未使用的属性master
parent
0c9ed50afb
commit
e32f3663bf
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
//服务描述
|
||||
|
|
|
@ -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;
|
||||
//客户电话
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue