From 094f528e53d935a0025bf9eb3e55a43612dc1fda Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Thu, 5 Jun 2025 17:54:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E5=A2=9E=E5=8A=A0=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ProjectOrderInfo 模型中添加软件、硬件和维护项目产品信息列表 - 实现产品信息的保存和查询功能 - 优化订单信息保存逻辑,支持产品信息的批量保存 --- .../ruoyi/sip/domain/ProjectOrderInfo.java | 3 ++ .../impl/ProjectOrderInfoServiceImpl.java | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java index 57af71c1..b33cb876 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java @@ -171,4 +171,7 @@ public class ProjectOrderInfo extends BaseEntity { private List contractFileList; private List configFileList; + private List softwareProjectProductInfoList; + private List hardwareProjectProductInfoList; + private List maintenanceProjectProductInfoList; } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java index 13de27c8..161e98d1 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.sip.service.impl; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -9,15 +10,11 @@ import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; -import com.ruoyi.sip.domain.Cnarea; -import com.ruoyi.sip.domain.ProjectOrderFileLog; -import com.ruoyi.sip.service.ICnareaService; -import com.ruoyi.sip.service.IProjectOrderFileLogService; +import com.ruoyi.sip.domain.*; +import com.ruoyi.sip.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.sip.mapper.ProjectOrderInfoMapper; -import com.ruoyi.sip.domain.ProjectOrderInfo; -import com.ruoyi.sip.service.IProjectOrderInfoService; import com.ruoyi.common.core.text.Convert; /** @@ -34,6 +31,8 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { @Autowired private IProjectOrderFileLogService fileLogService; @Autowired + private IProjectProductInfoService productInfoService; + @Autowired private ICnareaService cnareaService; /** * 查询订单管理 @@ -44,6 +43,16 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { @Override public ProjectOrderInfo selectProjectOrderInfoById(Long id) { ProjectOrderInfo projectOrderInfo = projectOrderInfoMapper.selectProjectOrderInfoById(id); + + List projectProductInfos = productInfoService.selectProjectProductInfoListByProjectId(projectOrderInfo.getProjectId()); + Map> productListMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getType)); + projectOrderInfo.setSoftwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.SOFTWARE.getType())); + projectOrderInfo.setHardwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.HARDWARE.getType())); + List maintenanceProjectProductInfoList = productListMap.getOrDefault(ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType(), new ArrayList<>()); + maintenanceProjectProductInfoList.addAll(productListMap.getOrDefault(ProductInfo.ProductTypeEnum.SOFTWARE_MAINTENANCE.getType(), new ArrayList<>())); + projectOrderInfo.setMaintenanceProjectProductInfoList(maintenanceProjectProductInfoList); + + List projectOrderFileLogs = fileLogService.listByOrderId(Collections.singletonList(id)); Map> fileLogMap = projectOrderFileLogs.stream().collect(Collectors.groupingBy(ProjectOrderFileLog::getFileType)); @@ -76,9 +85,26 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { projectOrderInfo.setOrderCode(orderNumber); projectOrderInfo.setCreateTime(DateUtils.getNowDate()); projectOrderInfo.setCreateBy(ShiroUtils.getUserId().toString()); + saveProductInfo(projectOrderInfo); return projectOrderInfoMapper.insertProjectOrderInfo(projectOrderInfo); } + private void saveProductInfo(ProjectOrderInfo projectOrderInfo) { + //插入产品信息 + List projectProductInfoList = projectOrderInfo.getHardwareProjectProductInfoList(); + if (CollUtil.isEmpty(projectProductInfoList)) { + projectProductInfoList = new ArrayList<>(); + } + projectProductInfoList.addAll(CollUtil.isNotEmpty(projectOrderInfo.getSoftwareProjectProductInfoList()) ? projectOrderInfo.getSoftwareProjectProductInfoList() : new ArrayList<>()); + projectProductInfoList.addAll(CollUtil.isNotEmpty(projectOrderInfo.getMaintenanceProjectProductInfoList()) ? projectOrderInfo.getMaintenanceProjectProductInfoList() : new ArrayList<>()); + if (CollUtil.isNotEmpty(projectProductInfoList)) { + for (ProjectProductInfo projectProductInfo : projectProductInfoList) { + projectProductInfo.setProjectId(projectOrderInfo.getId()); + } + productInfoService.saveBatch(projectProductInfoList); + } + } + /** * 生成订单编号 * @@ -122,6 +148,7 @@ public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { } projectOrderInfo.setUpdateBy(ShiroUtils.getUserId().toString()); projectOrderInfo.setUpdateTime(DateUtils.getNowDate()); + saveProductInfo(projectOrderInfo); return projectOrderInfoMapper.updateProjectOrderInfo(projectOrderInfo); }