diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java index dc09d4e8..8b622239 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java @@ -128,7 +128,9 @@ public class ProjectInfo extends BaseEntity private Boolean highlight; private Boolean canGenerate; /** 项目产品信息 */ - private List projectProductInfoList; + private List softwareProjectProductInfoList; + private List hardwareProjectProductInfoList; + private List maintenanceProjectProductInfoList; /** 项目操作日志信息 */ private List projectOperateLogList; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java index 6b849dba..2ab58ad4 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectProductInfo.java @@ -70,5 +70,6 @@ public class ProjectProductInfo extends BaseEntity /** 折扣 */ @Excel(name = "折扣") private BigDecimal discount; + private String type; } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java index 58d95b76..82c1edba 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectProductInfoMapper.java @@ -62,4 +62,6 @@ public interface ProjectProductInfoMapper List selectProjectProductInfoListByProjectId(Long projectId); void saveBatch(List addList); + + void updateBatch(List updateList); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java index d980b1a8..4afa65ef 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java @@ -70,7 +70,12 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { } //查询产品信息 List projectProductInfos = productInfoService.selectProjectProductInfoListByProjectId(projectInfo.getId()); - projectInfo.setProjectProductInfoList(projectProductInfos); + Map> productListMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getType)); + projectInfo.setSoftwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.SOFTWARE.getType())); + projectInfo.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<>())); + projectInfo.setMaintenanceProjectProductInfoList(maintenanceProjectProductInfoList); //查询变更记录信息 List projectWorkProgresses = workProgressService.selectProjectWorkProgressListByProjectId((projectInfo.getId())); projectInfo.setProjectWorkProgressList(projectWorkProgresses); @@ -145,7 +150,12 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { private void saveOtherInfo(ProjectInfo projectInfo1) { //插入产品信息 - List projectProductInfoList = projectInfo1.getProjectProductInfoList(); + List projectProductInfoList = projectInfo1.getHardwareProjectProductInfoList(); + if (CollUtil.isEmpty(projectProductInfoList)) { + projectProductInfoList = new ArrayList<>(); + } + projectProductInfoList.addAll(CollUtil.isNotEmpty(projectInfo1.getSoftwareProjectProductInfoList()) ? projectInfo1.getSoftwareProjectProductInfoList() : new ArrayList<>()); + projectProductInfoList.addAll(CollUtil.isNotEmpty(projectInfo1.getMaintenanceProjectProductInfoList()) ? projectInfo1.getMaintenanceProjectProductInfoList() : new ArrayList<>()); if (CollUtil.isNotEmpty(projectProductInfoList)) { for (ProjectProductInfo projectProductInfo : projectProductInfoList) { projectProductInfo.setProjectId(projectInfo1.getId()); @@ -155,6 +165,7 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { //插入变更记录信息 List projectWorkProgressList = projectInfo1.getProjectWorkProgressList(); if (CollUtil.isNotEmpty(projectWorkProgressList)) { + projectWorkProgressList = projectWorkProgressList.stream().filter(item -> item.getId() != null).collect(Collectors.toList()); for (ProjectWorkProgress workProgress : projectWorkProgressList) { workProgress.setProjectId(projectInfo1.getId()); workProgress.setWorkUser(ShiroUtils.getUserId().toString()); @@ -240,12 +251,25 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { logSimpleContent.append("1.项目信息发生变更\n"); } // 配置信息变更 - List oldProductList = oldProjectInfo.getProjectProductInfoList(); + List oldSoftWareProductList = oldProjectInfo.getSoftwareProjectProductInfoList(); - List newProductList = projectInfo.getProjectProductInfoList(); + List newSoftWareProductList = projectInfo.getSoftwareProjectProductInfoList(); // 比较产品信息 - logIndex = compareProductInfoList(logContent, logIndex, "配置", oldProductList, newProductList); + logIndex = compareProductInfoList(logContent, logIndex, "配置软件信息", oldSoftWareProductList, newSoftWareProductList); + + List oldHardwareProductList = oldProjectInfo.getHardwareProjectProductInfoList(); + + List newHardwareProductList = projectInfo.getHardwareProjectProductInfoList(); + + // 比较产品信息 + logIndex = compareProductInfoList(logContent, logIndex, "配置硬件信息", oldHardwareProductList, newHardwareProductList); + List oldMaintenanceProductList = oldProjectInfo.getMaintenanceProjectProductInfoList(); + + List newMaintenanceProductList = projectInfo.getMaintenanceProjectProductInfoList(); + + // 比较产品信息 + logIndex = compareProductInfoList(logContent, logIndex, "配置硬件信息", oldMaintenanceProductList, newMaintenanceProductList); if (logSimpleIndex != logIndex) { logSimpleContent.append(StringUtils.isNotEmpty(logSimpleContent)?"1.":"2.").append("配置信息发生变更"); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java index b3d4d7e9..e4395326 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectProductInfoServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import cn.hutool.core.collection.CollUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.sip.mapper.ProjectProductInfoMapper; @@ -95,16 +96,24 @@ public class ProjectProductInfoServiceImpl implements IProjectProductInfoService } @Override - public void saveBatch(List addList) { - List projectProductInfos = projectProductInfoMapper.selectProjectProductInfoListByProjectId(addList.get(0).getProjectId()); - Set idSet = addList.stream().map(ProjectProductInfo::getId).collect(Collectors.toSet()); + public void saveBatch(List list) { + List projectProductInfos = projectProductInfoMapper.selectProjectProductInfoListByProjectId(list.get(0).getProjectId()); + Set idSet = list.stream().map(ProjectProductInfo::getId).collect(Collectors.toSet()); String[] deleteIds = projectProductInfos.stream().filter(item -> !idSet.contains(item.getId())).map(item -> item.getId().toString()).toArray(String[]::new); //删除数据 if (deleteIds.length > 0) { projectProductInfoMapper.deleteProjectProductInfoByIds(deleteIds); } + List insertList = list.stream().filter(item -> item.getId() == null).collect(Collectors.toList()); //新增数据 - projectProductInfoMapper.saveBatch(addList); + if (CollUtil.isNotEmpty(insertList)) { + projectProductInfoMapper.saveBatch(insertList); + } + List updateList = list.stream().filter(item -> item.getId() != null).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(updateList)) { + //更新数据 + projectProductInfoMapper.updateBatch(updateList); + } } } diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml index b0b0ff4b..53c0474a 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectProductInfoMapper.xml @@ -22,7 +22,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, project_id, product_bom_code, model, product_code, product_desc, quantity, catalogue_price, catalogue_all_price, price, all_price, guidance_discount, discount, remark from project_product_info + select t1.id, t1.project_id, t1.product_bom_code, t1.model, t1.product_code, t1.product_desc, t1.quantity, t1.catalogue_price, + t1.catalogue_all_price, t1.price, t1.all_price, t1.guidance_discount, t1.discount, t1.remark from project_product_info t1 + + + select t1.id, t1.project_id, t1.product_bom_code, t1.model, t1.product_code, t1.product_desc, t1.quantity, t1.catalogue_price, + t1.catalogue_all_price, t1.price, t1.all_price, t1.guidance_discount, t1.discount, t1.remark,t2.type + from project_product_info t1 + left join product_info t2 on t1.product_bom_code = t2.product_code + @@ -118,6 +126,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + + + update project_product_info + + project_id = #{item.projectId}, + product_bom_code = #{item.productBomCode}, + model = #{item.model}, + product_code = #{item.productCode}, + product_desc = #{item.productDesc}, + quantity = #{item.quantity}, + catalogue_price = #{item.cataloguePrice}, + catalogue_all_price = #{item.catalogueAllPrice}, + price = #{item.price}, + all_price = #{item.allPrice}, + guidance_discount = #{item.guidanceDiscount}, + discount = #{item.discount}, + remark = #{item.remark}, + + where id = #{id} + + delete from project_product_info where id = #{id}