From c91e52d04f3c875650a0c9702ca686706fea9a87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=B5=A9?= Date: Tue, 4 Apr 2023 23:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A7=E4=BB=B6=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=95=B0=E6=8D=AE=E8=BF=81=E7=A7=BB=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=A5=E5=8F=A3=E6=A0=B9=E6=8D=AE=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=90=8C=E6=AD=A5=E5=B7=B2=E5=8F=91=E5=B8=83=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/config/shiro/ShiroConfig.java | 1 + .../ParamsManifestEOController.java | 11 + .../service/IParamsManifestEOService.java | 2 + .../impl/ParamsManifestEOServiceImpl.java | 1672 +++++++++-------- 4 files changed, 878 insertions(+), 808 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java index bbd70a8f2..12d079f64 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java @@ -166,6 +166,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/project/projectTaskInventoryConditionAssessmentEO/initConditionAssessment", "anon"); // 初始化项目当前状态数据接口 filterChainDefinitionMap.put("/todoCenter/projectProcess/initHistoryData", "anon"); // 待办中心-初始化历史数据接口排除 filterChainDefinitionMap.put("/project/projectTaskInventoryEO/disposeHistoryData", "anon"); // 项目库-任务清单 处理历史数据接口 + filterChainDefinitionMap.put("/params/manifest/updateModel", "anon"); // 项目库-任务清单 处理历史数据接口 // 添加自己的过滤器并且取名为jwt Map filterMap = new HashMap(1); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsManifestEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsManifestEOController.java index 211aaeb69..33d95004a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsManifestEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/controller/ParamsManifestEOController.java @@ -161,6 +161,17 @@ public class ParamsManifestEOController extends JeroController updateModel(String mid, String version,String cid) { + boolean isSuccess = paramsManifestEOService.updateModel(mid,version, cid); + if (isSuccess) { + return Result.OK("更新成功!"); + } else { + return Result.error("更新失败!"); + } + } + /** * 编辑 * diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsManifestEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsManifestEOService.java index 613f739ae..faccdc37e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsManifestEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsManifestEOService.java @@ -97,4 +97,6 @@ public interface IParamsManifestEOService extends IService { // 参数模板删除时,记录参数模板名称到清单 boolean setTemplateName(List paramsTemplateIds); + + boolean updateModel(String mid,String version, String cid); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java index f50b53ad1..b042e0dff 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.DictModel; @@ -65,390 +66,444 @@ import java.util.stream.Collectors; /** * @Description: 参数清单 * @Author: jero-boot - * @Date: 2022-05-05 + * @Date: 2022-05-05 * @Version: V1.0 */ @Service @Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public class ParamsManifestEOServiceImpl extends ServiceImpl implements IParamsManifestEOService { - @Autowired - private ParamsManifestEOMapper paramsManifestEOMapper; + @Autowired + private ParamsManifestEOMapper paramsManifestEOMapper; - @Autowired - private IParamsTemplateEOService paramsTemplateEOService; + @Autowired + private IParamsTemplateEOService paramsTemplateEOService; - @Autowired - private IParamsCollectManifestEOService paramsCollectManifestEOService; + @Autowired + private IParamsCollectManifestEOService paramsCollectManifestEOService; - @Autowired - private IParamsInfoPublishEOService paramsInfoPublishEOService; + @Autowired + private IParamsInfoPublishEOService paramsInfoPublishEOService; - @Autowired - private IProjectRelatedPersonnelService projectRelatedPersonnelService; + @Autowired + private IProjectRelatedPersonnelService projectRelatedPersonnelService; - @Autowired - private ISysUserService sysUserService; + @Autowired + private ISysUserService sysUserService; - @Autowired - private ParamsConfigEOMapper paramsConfigEOMapper; + @Autowired + private ParamsConfigEOMapper paramsConfigEOMapper; - @Autowired - private ParamsCollectManifestEOMapper paramsCollectManifestEOMapper; + @Autowired + private ParamsCollectManifestEOMapper paramsCollectManifestEOMapper; - @Autowired - private IParamsManifestHistoryEOService paramsManifestHistoryEOService; + @Autowired + private IParamsManifestHistoryEOService paramsManifestHistoryEOService; - @Autowired - private IParamsConfigEOService paramsConfigEOService; + @Autowired + private IParamsConfigEOService paramsConfigEOService; - @Autowired - private IParamsConfigDataEOService paramsConfigDataEOService; + @Autowired + private IParamsConfigDataEOService paramsConfigDataEOService; - @Autowired - private IParamsReportEOService paramsReportEOService; + @Autowired + private IParamsReportEOService paramsReportEOService; - @Autowired - private SysDictMapper sysDictMapper; + @Autowired + private SysDictMapper sysDictMapper; - @Autowired - private IProjectLibraryBaseService projectLibraryBaseService; + @Autowired + private IProjectLibraryBaseService projectLibraryBaseService; - @Autowired - private IParamsReportDetailEOService paramsReportDetailEOService; + @Autowired + private IParamsReportDetailEOService paramsReportDetailEOService; - @Autowired - private IProjectUserPermissionService projectUserPermissionService; + @Autowired + private IProjectUserPermissionService projectUserPermissionService; - @Autowired - private ISysDictService sysDictService; + @Autowired + private ISysDictService sysDictService; - /** - * 保存 - * - * @param paramsManifestEO - * @return - */ - @Override + /** + * 保存 + * + * @param paramsManifestEO + * @return + */ + @Override public boolean add(ParamsManifestEO paramsManifestEO) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); - queryWrapper.eq(ParamsManifestEO::getProjectId, paramsManifestEO.getProjectId()); - List paramsManifestEOList = list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { - if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { - throw new JeroBootException("Title already exists!"); - } else { - throw new JeroBootException("标题已存在!"); - } - } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); + queryWrapper.eq(ParamsManifestEO::getProjectId, paramsManifestEO.getProjectId()); + List paramsManifestEOList = list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { + if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { + throw new JeroBootException("Title already exists!"); + } else { + throw new JeroBootException("标题已存在!"); + } + } - String paramsManifestId = UUID.randomUUID().toString().replace("-",""); + String paramsManifestId = UUID.randomUUID().toString().replace("-", ""); - // 根据主项目ID 查询 相关项目版本的项目ID - String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), paramsManifestEO.getProjectId()); + // 根据主项目ID 查询 相关项目版本的项目ID + String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), paramsManifestEO.getProjectId()); - // 根据参数模板id发布版本查询对应参数项集合 - List paramsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestEO.getParamsTemplateId(),paramsManifestEO.getParamsTemplatePublishVersion()); + // 根据参数模板id发布版本查询对应参数项集合 + List paramsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestEO.getParamsTemplateId(), paramsManifestEO.getParamsTemplatePublishVersion()); - // 复制参数项 - List paramsCollectManifestEOList = new ArrayList<>(); - for (ParamsInfoPublishEO source : paramsInfoPublishEOList) { - ParamsCollectManifestEO target = new ParamsCollectManifestEO(); - BeanUtils.copyProperties(source, target); - target.setId(UUID.randomUUID().toString().replace("-","")); - target.setParamsManifestId(paramsManifestId); - target.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); - target.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 设置删除标识 - target.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 设置添加标识 - target.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 设置变更标识 - target.setVersion(1); // 设置参数项初始版本为 1 + // 复制参数项 + List paramsCollectManifestEOList = new ArrayList<>(); + for (ParamsInfoPublishEO source : paramsInfoPublishEOList) { + ParamsCollectManifestEO target = new ParamsCollectManifestEO(); + BeanUtils.copyProperties(source, target); + target.setId(UUID.randomUUID().toString().replace("-", "")); + target.setParamsManifestId(paramsManifestId); + target.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); + target.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 设置删除标识 + target.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 设置添加标识 + target.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 设置变更标识 + target.setVersion(1); // 设置参数项初始版本为 1 - if (!ControlTypeEnum.Title.getValue().equals(source.getControlType())) { - // 根据负责领域处理工程接口人(零个,一个,多个): 领域中仅有一个人时,添加该字段 - ProjectRelatedPersonnel projectRelatedPersonnel = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritory(projectVersionId, source.getDutyTerritory()); - if (ObjectUtil.isNotEmpty(projectRelatedPersonnel)) { - String sdtId = projectRelatedPersonnel.getEngineeringInterfacePerson(); - if (StringUtils.isNotBlank(sdtId) && !sdtId.contains(",")) { // 领域中仅有一个人时,添加该字段 - SysUser sysUser = sysUserService.getById(sdtId); - if (ObjectUtil.isNotEmpty(sysUser)) { - target.setSdt(sysUser.getUsername()); - } - } - } - } + if (!ControlTypeEnum.Title.getValue().equals(source.getControlType())) { + // 根据负责领域处理工程接口人(零个,一个,多个): 领域中仅有一个人时,添加该字段 + ProjectRelatedPersonnel projectRelatedPersonnel = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritory(projectVersionId, source.getDutyTerritory()); + if (ObjectUtil.isNotEmpty(projectRelatedPersonnel)) { + String sdtId = projectRelatedPersonnel.getEngineeringInterfacePerson(); + if (StringUtils.isNotBlank(sdtId) && !sdtId.contains(",")) { // 领域中仅有一个人时,添加该字段 + SysUser sysUser = sysUserService.getById(sdtId); + if (ObjectUtil.isNotEmpty(sysUser)) { + target.setSdt(sysUser.getUsername()); + } + } + } + } - paramsCollectManifestEOList.add(target); - } - paramsCollectManifestEOService.saveBatch(paramsCollectManifestEOList); + paramsCollectManifestEOList.add(target); + } + paramsCollectManifestEOService.saveBatch(paramsCollectManifestEOList); - // 对应参数模板发布版本 前端传过来 - paramsManifestEO.setId(paramsManifestId); - paramsManifestEO.setProjectVersionId(projectVersionId); - paramsManifestEO.setState(ManifestStateEnum.UNCOLLECTED.getValue()); - paramsManifestEO.setVersion(1); // 默认版本为 1 + // 对应参数模板发布版本 前端传过来 + paramsManifestEO.setId(paramsManifestId); + paramsManifestEO.setProjectVersionId(projectVersionId); + paramsManifestEO.setState(ManifestStateEnum.UNCOLLECTED.getValue()); + paramsManifestEO.setVersion(1); // 默认版本为 1 Date now = new Date(); paramsManifestEO.setCreateTime(now); paramsManifestEO.setUpdateTime(now); return save(paramsManifestEO); } - /** - * 更新 只对标题进行编辑 - * - * @param paramsManifestEO - * @return - */ - @Override - public boolean editById(ParamsManifestEO paramsManifestEO) { - ParamsManifestEO oldParamsManifestEO = getById(paramsManifestEO.getId()); - if (!oldParamsManifestEO.getTitle().equals(paramsManifestEO.getTitle())) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); - queryWrapper.eq(ParamsManifestEO::getProjectId, oldParamsManifestEO.getProjectId()); - List paramsManifestEOList = list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { - if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { - throw new JeroBootException("Title already exists!"); - } else { - throw new JeroBootException("标题已存在!"); - } - } - } + @Override + public boolean updateModel(String mid, String version, String cid) { + try{ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ParamsCollectManifestEO::getParamsManifestId, cid); + List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); + // 根据参数模板id发布版本查询对应参数项集合 + List paramsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(mid, Integer.parseInt(version)); - // 根据主项目ID 查询 相关项目版本的项目ID - String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), oldParamsManifestEO.getProjectId()); + // 复制参数项 + for (ParamsInfoPublishEO source : paramsInfoPublishEOList) { + boolean isHave = false; + for (ParamsCollectManifestEO target : paramsCollectManifestEOList) { + if (target.getNioNumber().equals(source.getNioNumber())) { + isHave = true; + //复制模版信息 + target.setIsMust(source.getIsMust()); + target.setParamsName(source.getParamsName()); + target.setParamsBatch(source.getParamsBatch()); + target.setDutyTerritory(source.getDutyTerritory()); + target.setControlType(source.getControlType()); + target.setControlValues(source.getControlValues()); + target.setControlVerify(source.getControlVerify()); + target.setFileTemplateConnectId(source.getFileTemplateConnectId()); + } + } + if(!isHave){ + //新增 + ParamsCollectManifestEO target = new ParamsCollectManifestEO(); + BeanUtils.copyProperties(source, target); + target.setId(UUID.randomUUID().toString().replace("-", "")); + target.setParamsManifestId(cid); + target.setState(CollectManifestStateEnum.WAIT_FILL.getValue()); + target.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 设置删除标识 + target.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 设置添加标识 + target.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 设置变更标识 + target.setVersion(1); // 设置参数项初始版本为 1 - ParamsManifestEO updateEO = new ParamsManifestEO(); - updateEO.setId(paramsManifestEO.getId()); - updateEO.setTitle(paramsManifestEO.getTitle()); - updateEO.setProjectVersion(paramsManifestEO.getProjectVersion()); - updateEO.setExplanation(paramsManifestEO.getExplanation()); - updateEO.setProjectVersionId(projectVersionId); - Date now = new Date(); - updateEO.setUpdateTime(now); - return updateById(updateEO); + if (!ControlTypeEnum.Title.getValue().equals(source.getControlType())) { + target.setSdt("song.gao2.o"); + target.setDre("song.gao2.o"); + } + paramsCollectManifestEOList.add(target); + } + } + paramsCollectManifestEOService.saveOrUpdateBatch(paramsCollectManifestEOList); + }catch (Exception e){ + e.printStackTrace(); + return false; + } + return true; } - /** - * 通过id删除 - * - * @param id - * @return - */ - @Override + /** + * 更新 只对标题进行编辑 + * + * @param paramsManifestEO + * @return + */ + @Override + public boolean editById(ParamsManifestEO paramsManifestEO) { + ParamsManifestEO oldParamsManifestEO = getById(paramsManifestEO.getId()); + if (!oldParamsManifestEO.getTitle().equals(paramsManifestEO.getTitle())) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); + queryWrapper.eq(ParamsManifestEO::getProjectId, oldParamsManifestEO.getProjectId()); + List paramsManifestEOList = list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { + if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { + throw new JeroBootException("Title already exists!"); + } else { + throw new JeroBootException("标题已存在!"); + } + } + } + + // 根据主项目ID 查询 相关项目版本的项目ID + String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), oldParamsManifestEO.getProjectId()); + + ParamsManifestEO updateEO = new ParamsManifestEO(); + updateEO.setId(paramsManifestEO.getId()); + updateEO.setTitle(paramsManifestEO.getTitle()); + updateEO.setProjectVersion(paramsManifestEO.getProjectVersion()); + updateEO.setExplanation(paramsManifestEO.getExplanation()); + updateEO.setProjectVersionId(projectVersionId); + Date now = new Date(); + updateEO.setUpdateTime(now); + return updateById(updateEO); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override public boolean deleteById(String id, String cut) { - ParamsManifestEO paramsManifestEO = this.paramsManifestEOMapper.selectById(id); - // 如果该清单状态不是未收集,按照之前的逻辑判断是否能删除,如果是未收集 可以直接删 - if(!StringUtils.equals(ManifestStateEnum.UNCOLLECTED.getValue(),paramsManifestEO.getState())){ - // 判断清单收集状态,已完成状态才可删除 - Map map = paramsCollectManifestEOService.isCollectFinished(id); - Boolean finish = (Boolean) map.get("finish"); - if (!finish) { - if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("清单收集中,无法删除!"); - } else { - throw new JeroBootException("Manifest collection, and cannot be deleted!"); - } - } - } + ParamsManifestEO paramsManifestEO = this.paramsManifestEOMapper.selectById(id); + // 如果该清单状态不是未收集,按照之前的逻辑判断是否能删除,如果是未收集 可以直接删 + if (!StringUtils.equals(ManifestStateEnum.UNCOLLECTED.getValue(), paramsManifestEO.getState())) { + // 判断清单收集状态,已完成状态才可删除 + Map map = paramsCollectManifestEOService.isCollectFinished(id); + Boolean finish = (Boolean) map.get("finish"); + if (!finish) { + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("清单收集中,无法删除!"); + } else { + throw new JeroBootException("Manifest collection, and cannot be deleted!"); + } + } + } - // 关联删除配置 - LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); - configEOQueryWrapper.eq(ParamsConfigEO::getParamsManifestId, id); - paramsConfigEOMapper.delete(configEOQueryWrapper); + // 关联删除配置 + LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); + configEOQueryWrapper.eq(ParamsConfigEO::getParamsManifestId, id); + paramsConfigEOMapper.delete(configEOQueryWrapper); - // 关联删除收集的参数项(包含配置数据) - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ParamsCollectManifestEO::getParamsManifestId, id); - List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { - List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); - paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); + // 关联删除收集的参数项(包含配置数据) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ParamsCollectManifestEO::getParamsManifestId, id); + List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { + List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); + paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); - } + } - // 删除对应的历史版本数据 - List idList = new ArrayList<>(); - idList.add(id); - paramsManifestHistoryEOService.deleteAllHistoryVersion(idList); + // 删除对应的历史版本数据 + List idList = new ArrayList<>(); + idList.add(id); + paramsManifestHistoryEOService.deleteAllHistoryVersion(idList); - // 添加上报库的项目名称和清单标题 - paramsReportEOService.setProjectNameAndTitle(idList); + // 添加上报库的项目名称和清单标题 + paramsReportEOService.setProjectNameAndTitle(idList); return removeById(id); } - /** - * 批量删除 - * - * @param ids - * @return - */ - @Override + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override public boolean deleteByIds(List ids, String cut) { - // 判断清单收集状态,已完成状态才可删除 - ids.forEach(id-> { - ParamsManifestEO paramsManifestEO = this.paramsManifestEOMapper.selectById(id); - if(paramsManifestEO != null){ - // 如果该清单状态不是未收集,按照之前的逻辑判断是否能删除,如果是未收集 可以直接删 - if(!StringUtils.equals(ManifestStateEnum.UNCOLLECTED.getValue(),paramsManifestEO.getState())){ - Map map = paramsCollectManifestEOService.isCollectFinished(id); - Boolean finish = (Boolean) map.get("finish"); - if (!finish) { - ParamsManifestEO manifestEO = getById(id); + // 判断清单收集状态,已完成状态才可删除 + ids.forEach(id -> { + ParamsManifestEO paramsManifestEO = this.paramsManifestEOMapper.selectById(id); + if (paramsManifestEO != null) { + // 如果该清单状态不是未收集,按照之前的逻辑判断是否能删除,如果是未收集 可以直接删 + if (!StringUtils.equals(ManifestStateEnum.UNCOLLECTED.getValue(), paramsManifestEO.getState())) { + Map map = paramsCollectManifestEOService.isCollectFinished(id); + Boolean finish = (Boolean) map.get("finish"); + if (!finish) { + ParamsManifestEO manifestEO = getById(id); - if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("清单:" + manifestEO.getTitle() + "收集中,无法删除!"); - } else { - throw new JeroBootException("Manifest " + manifestEO.getTitle() + "collection, and cannot be deleted!"); - } - } - } - } - }); - // 关联删除配置 - LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); - configEOQueryWrapper.in(ParamsConfigEO::getParamsManifestId, ids); - paramsConfigEOMapper.delete(configEOQueryWrapper); + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("清单:" + manifestEO.getTitle() + "收集中,无法删除!"); + } else { + throw new JeroBootException("Manifest " + manifestEO.getTitle() + "collection, and cannot be deleted!"); + } + } + } + } + }); + // 关联删除配置 + LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); + configEOQueryWrapper.in(ParamsConfigEO::getParamsManifestId, ids); + paramsConfigEOMapper.delete(configEOQueryWrapper); - // 关联删除收集的参数项(包含配置数据) - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(ParamsCollectManifestEO::getParamsManifestId, ids); - List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { - List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); - paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); + // 关联删除收集的参数项(包含配置数据) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ParamsCollectManifestEO::getParamsManifestId, ids); + List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { + List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); + paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); - } + } - // 删除对应的历史版本数据 - paramsManifestHistoryEOService.deleteAllHistoryVersion(ids); + // 删除对应的历史版本数据 + paramsManifestHistoryEOService.deleteAllHistoryVersion(ids); - // 添加上报库的项目名称和清单标题 - paramsReportEOService.setProjectNameAndTitle(ids); + // 添加上报库的项目名称和清单标题 + paramsReportEOService.setProjectNameAndTitle(ids); return removeByIds(ids); } - /** - * 删除项目下的所有收集清单 - * - * @param projectId - * @return - */ - @Override + /** + * 删除项目下的所有收集清单 + * + * @param projectId + * @return + */ + @Override public boolean deleteByProjectId(String projectId) { - // 查询项目下的所有清单 - LambdaQueryWrapper manifestEOQueryWrapper = new LambdaQueryWrapper<>(); - manifestEOQueryWrapper.eq(ParamsManifestEO :: getProjectId, projectId); - List paramsManifestEOList = list(manifestEOQueryWrapper); - List ids = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { - ids = paramsManifestEOList.stream().map(ParamsManifestEO::getId).collect(Collectors.toList()); + // 查询项目下的所有清单 + LambdaQueryWrapper manifestEOQueryWrapper = new LambdaQueryWrapper<>(); + manifestEOQueryWrapper.eq(ParamsManifestEO::getProjectId, projectId); + List paramsManifestEOList = list(manifestEOQueryWrapper); + List ids = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { + ids = paramsManifestEOList.stream().map(ParamsManifestEO::getId).collect(Collectors.toList()); - // 关联删除配置 - LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); - configEOQueryWrapper.in(ParamsConfigEO::getParamsManifestId, ids); - paramsConfigEOMapper.delete(configEOQueryWrapper); + // 关联删除配置 + LambdaQueryWrapper configEOQueryWrapper = new LambdaQueryWrapper<>(); + configEOQueryWrapper.in(ParamsConfigEO::getParamsManifestId, ids); + paramsConfigEOMapper.delete(configEOQueryWrapper); - // 关联删除收集的参数项(包含配置数据) - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(ParamsCollectManifestEO::getParamsManifestId, ids); - List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { - List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); - paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); + // 关联删除收集的参数项(包含配置数据) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ParamsCollectManifestEO::getParamsManifestId, ids); + List paramsCollectManifestEOList = paramsCollectManifestEOService.list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsCollectManifestEOList)) { + List paramsCollectManifestIdList = paramsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getId).collect(Collectors.toList()); + paramsCollectManifestEOService.deleteByIds(paramsCollectManifestIdList); - } + } - // 删除对应的历史版本数据 - paramsManifestHistoryEOService.deleteAllHistoryVersion(ids); + // 删除对应的历史版本数据 + paramsManifestHistoryEOService.deleteAllHistoryVersion(ids); - // 添加上报库的项目名称和清单标题 - paramsReportEOService.setProjectNameAndTitle(ids); + // 添加上报库的项目名称和清单标题 + paramsReportEOService.setProjectNameAndTitle(ids); - } - return removeByIds(ids); + } + return removeByIds(ids); } - /** - * 通过id查询 - * - * @param id - * @return - */ - @Override + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override public ParamsManifestEO queryById(String id) { return getById(id); } /** - * 列表查询 - * - * @return - */ - @Override + * 列表查询 + * + * @return + */ + @Override public List queryList() { return list(); } - @Override - public IPage getNewestPublishPage(Page page, ParamsTemplateEO paramsTemplateEO) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.gt(ParamsTemplateEO::getVersion, 0) // 已发布的 - .eq(StringUtils.isNotEmpty(paramsTemplateEO.getRegion()), ParamsTemplateEO::getRegion, paramsTemplateEO.getRegion()) // 查询条件:适用地区 - .like(StringUtils.isNotEmpty(paramsTemplateEO.getParamsTemplateName()), ParamsTemplateEO::getParamsTemplateName, paramsTemplateEO.getParamsTemplateName()) // 查询条件:参数模板 - .orderByDesc(ParamsTemplateEO::getCreateTime); // 按创建时间倒叙排序 - return paramsTemplateEOService.page(page, queryWrapper); - } + @Override + public IPage getNewestPublishPage(Page page, ParamsTemplateEO paramsTemplateEO) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.gt(ParamsTemplateEO::getVersion, 0) // 已发布的 + .eq(StringUtils.isNotEmpty(paramsTemplateEO.getRegion()), ParamsTemplateEO::getRegion, paramsTemplateEO.getRegion()) // 查询条件:适用地区 + .like(StringUtils.isNotEmpty(paramsTemplateEO.getParamsTemplateName()), ParamsTemplateEO::getParamsTemplateName, paramsTemplateEO.getParamsTemplateName()) // 查询条件:参数模板 + .orderByDesc(ParamsTemplateEO::getCreateTime); // 按创建时间倒叙排序 + return paramsTemplateEOService.page(page, queryWrapper); + } - @Override - public IPage pageInfo(IPage page, ParamsManifestEO paramsManifestEO) { + @Override + public IPage pageInfo(IPage page, ParamsManifestEO paramsManifestEO) { // paramsManifestEO.setOrderByField("title"); // paramsManifestEO.setOrderBy("1"); - IPage rows = paramsManifestEOMapper.pageInfo(page, paramsManifestEO); - return rows; - } + IPage rows = paramsManifestEOMapper.pageInfo(page, paramsManifestEO); + return rows; + } - /** - * 变更扩展 - * 仅能选择一条进行变更扩展 - * 状态为已完成的清单可进行变更扩展 - * @param id - * @return - */ - @Override - public boolean changeExtension(String id, String cut) { - // 变更扩展时,将历史清单数据 连同历史参数项收集数据 备份到相关历史表中 - paramsManifestHistoryEOService.addForChangeExtension(id); + /** + * 变更扩展 + * 仅能选择一条进行变更扩展 + * 状态为已完成的清单可进行变更扩展 + * + * @param id + * @return + */ + @Override + public boolean changeExtension(String id, String cut) { + // 变更扩展时,将历史清单数据 连同历史参数项收集数据 备份到相关历史表中 + paramsManifestHistoryEOService.addForChangeExtension(id); - // 将模板最新版本和项目中参数项进行比对 - ParamsManifestEO paramsManifestEO = getById(id); - Map map = paramsCollectManifestEOService.isCollectFinished(id); - Boolean finish = (Boolean) map.get("finish"); - if (!finish) { - if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("清单收集中,无法发起变更!"); - } else { - throw new JeroBootException("Manifest collection, and cannot be initiated change!"); - } - } + // 将模板最新版本和项目中参数项进行比对 + ParamsManifestEO paramsManifestEO = getById(id); + Map map = paramsCollectManifestEOService.isCollectFinished(id); + Boolean finish = (Boolean) map.get("finish"); + if (!finish) { + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("清单收集中,无法发起变更!"); + } else { + throw new JeroBootException("Manifest collection, and cannot be initiated change!"); + } + } // if (paramsManifestEO.getState().equals(ManifestStateEnum.COLLECTING.getValue())) { // throw new JeroBootException("清单收集中,无法发起变更!"); // } - // 查询项目引用的模板是否是最新版本 - Integer newestVersion = paramsInfoPublishEOService.getNewestVersionByParamsTemplateId(paramsManifestEO.getParamsTemplateId()); - if (newestVersion == null) { - if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("查询不到模板最新发布版本!"); - } else { - throw new JeroBootException("Can not find the latest template!"); - } - } + // 查询项目引用的模板是否是最新版本 + Integer newestVersion = paramsInfoPublishEOService.getNewestVersionByParamsTemplateId(paramsManifestEO.getParamsTemplateId()); + if (newestVersion == null) { + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("查询不到模板最新发布版本!"); + } else { + throw new JeroBootException("Can not find the latest template!"); + } + } // if (newestVersion == paramsManifestEO.getParamsTemplatePublishVersion()) { // if (CutEnum.CN.getValue().equals(cut)) { @@ -458,535 +513,536 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl newParamsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestEO.getParamsTemplateId(), newestVersion); - // 查询项目所有参数项(这时候参数项都收集完了) - ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); - paramsCollectManifestEO.setParamsManifestId(id); - List oldParamsCollectManifestEOList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); + // 查询最新版模板参数项 + List newParamsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestEO.getParamsTemplateId(), newestVersion); + // 查询项目所有参数项(这时候参数项都收集完了) + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + paramsCollectManifestEO.setParamsManifestId(id); + List oldParamsCollectManifestEOList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); - // 查询上报库的项目所有参数项的配置数据 - ParamsReportEO paramsReportEO = paramsReportEOService.queryByOldParamsManifestId(id, paramsManifestEO.getVersion()); - List> paramsReportConfigDataList = paramsReportDetailEOService.listInfoForChange(paramsReportEO.getId()); + // 查询上报库的项目所有参数项的配置数据 + ParamsReportEO paramsReportEO = paramsReportEOService.queryByOldParamsManifestId(id, paramsManifestEO.getVersion()); + List> paramsReportConfigDataList = paramsReportDetailEOService.listInfoForChange(paramsReportEO.getId()); - // 比较模板参数项 和 项目参数项 - // nio编号一样时,比较参数填写规则(控件类型,控件备选值,控件校验)是否一样;nio编号不一样时,不用管,用户自己添加 - List oldNioNumberList = oldParamsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getNioNumber).collect(Collectors.toList()); - List sameList = newParamsInfoPublishEOList.stream().filter(e->oldNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList()); + // 比较模板参数项 和 项目参数项 + // nio编号一样时,比较参数填写规则(控件类型,控件备选值,控件校验)是否一样;nio编号不一样时,不用管,用户自己添加 + List oldNioNumberList = oldParamsCollectManifestEOList.stream().map(ParamsCollectManifestEO::getNioNumber).collect(Collectors.toList()); + List sameList = newParamsInfoPublishEOList.stream().filter(e -> oldNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList()); - List newNioNumberList = sameList.stream().map(ParamsInfoPublishEO::getNioNumber).collect(Collectors.toList()); - List diffList = oldParamsCollectManifestEOList.stream().filter(e->!newNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList()); + List newNioNumberList = sameList.stream().map(ParamsInfoPublishEO::getNioNumber).collect(Collectors.toList()); + List diffList = oldParamsCollectManifestEOList.stream().filter(e -> !newNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList()); - List delCollectManifestIdList = new ArrayList<>(); - List updateCollectManifestEOList = new ArrayList<>(); - List updateConfigDataEOList = new ArrayList<>(); + List delCollectManifestIdList = new ArrayList<>(); + List updateCollectManifestEOList = new ArrayList<>(); + List updateConfigDataEOList = new ArrayList<>(); - // 模板里没有,清单里有 - if (CollectionUtil.isNotEmpty(diffList)) { - for (ParamsCollectManifestEO oldCollectManifestEO : diffList) { - ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO(); - updateCollectManifestEO.setId(oldCollectManifestEO.getId()); - updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue()); - updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项 - updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项 - updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 + // 模板里没有,清单里有 + if (CollectionUtil.isNotEmpty(diffList)) { + for (ParamsCollectManifestEO oldCollectManifestEO : diffList) { + ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO(); + updateCollectManifestEO.setId(oldCollectManifestEO.getId()); + updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue()); + updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项 + updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项 + updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 - updateCollectManifestEOList.add(updateCollectManifestEO); - } - } + updateCollectManifestEOList.add(updateCollectManifestEO); + } + } - // 模板里有,清单里也有 - if (CollectionUtil.isNotEmpty(sameList)) { - for (ParamsInfoPublishEO paramsInfoPublishEO : sameList) { - ParamsCollectManifestEO oldCollectManifestEO = oldParamsCollectManifestEOList.stream() - .filter(e -> e.getNioNumber().equals(paramsInfoPublishEO.getNioNumber())) - .collect(Collectors.toList()).get(0); - String newControlType = paramsInfoPublishEO.getControlType(); - String newControlVerify = paramsInfoPublishEO.getControlVerify(); - String newControlValues = paramsInfoPublishEO.getControlValues(); + // 模板里有,清单里也有 + if (CollectionUtil.isNotEmpty(sameList)) { + for (ParamsInfoPublishEO paramsInfoPublishEO : sameList) { + ParamsCollectManifestEO oldCollectManifestEO = oldParamsCollectManifestEOList.stream() + .filter(e -> e.getNioNumber().equals(paramsInfoPublishEO.getNioNumber())) + .collect(Collectors.toList()).get(0); + String newControlType = paramsInfoPublishEO.getControlType(); + String newControlVerify = paramsInfoPublishEO.getControlVerify(); + String newControlValues = paramsInfoPublishEO.getControlValues(); - String oldControlType = oldCollectManifestEO.getControlType(); - String oldControlVerify = oldCollectManifestEO.getControlVerify(); - String oldControlValues = oldCollectManifestEO.getControlValues(); + String oldControlType = oldCollectManifestEO.getControlType(); + String oldControlVerify = oldCollectManifestEO.getControlVerify(); + String oldControlValues = oldCollectManifestEO.getControlValues(); - ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO(); - BeanUtils.copyProperties(paramsInfoPublishEO, updateCollectManifestEO); - // 比较参数填写规则 - if (!newControlType.equals(oldControlType) - || (newControlVerify != null && !newControlVerify.equals(oldControlVerify)) - || (oldControlVerify != null && !oldControlVerify.equals(newControlVerify)) - || (newControlValues != null && !newControlValues.equals(oldControlValues)) - || (oldControlValues != null && !oldControlValues.equals(newControlValues))) { + ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO(); + BeanUtils.copyProperties(paramsInfoPublishEO, updateCollectManifestEO); + // 比较参数填写规则 + if (!newControlType.equals(oldControlType) + || (newControlVerify != null && !newControlVerify.equals(oldControlVerify)) + || (oldControlVerify != null && !oldControlVerify.equals(newControlVerify)) + || (newControlValues != null && !newControlValues.equals(oldControlValues)) + || (oldControlValues != null && !oldControlValues.equals(newControlValues))) { - // 参数填写规则改变,删除参数项配置数据,状态变为:待发起收集,拍列表前边 - updateCollectManifestEO.setId(oldCollectManifestEO.getId()); // 为收集参数项id - updateCollectManifestEO.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); - updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_AFTER.getValue()); // 因新发布模板中该参数项控件变化,标记为变更后参数项 - updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项 - updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 + // 参数填写规则改变,删除参数项配置数据,状态变为:待发起收集,拍列表前边 + updateCollectManifestEO.setId(oldCollectManifestEO.getId()); // 为收集参数项id + updateCollectManifestEO.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); + updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_AFTER.getValue()); // 因新发布模板中该参数项控件变化,标记为变更后参数项 + updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项 + updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 // updateCollectManifestEO.setControlType(newControlType); // updateCollectManifestEO.setControlVerify(newControlVerify); // updateCollectManifestEO.setControlValues(newControlValues); - delCollectManifestIdList.add(oldCollectManifestEO.getId()); - } else { - // 参数填写规则没有改变,状态变为:变更 - updateCollectManifestEO.setId(oldCollectManifestEO.getId()); - updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue()); - updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项 - updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项 - updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 - - } - // 更新附件模板字段 - if (StringUtils.isNotEmpty(paramsInfoPublishEO.getFileTemplateConnectId())) { - updateCollectManifestEO.setFileTemplateConnectId(paramsInfoPublishEO.getFileTemplateConnectId()); - } - - updateCollectManifestEOList.add(updateCollectManifestEO); - } - } - - // 查询配置信息 - List configIdList = paramsConfigEOService.queryList(id).stream().map(ParamsConfigEO::getId).collect(Collectors.toList()); - List paramsConfigDataEOList = paramsConfigDataEOService.queryListByConfigIdList(configIdList); - // 按照上报库参数项配置数据 更新 参数收集清单配置数据 - List> reportConfigDataEOList = new ArrayList<>(); - List configDataEOList = new ArrayList<>(); - for (ParamsCollectManifestEO updateCollectManifestEO : updateCollectManifestEOList) { - for (String configId : configIdList) { - reportConfigDataEOList = paramsReportConfigDataList.stream().filter(e-> updateCollectManifestEO.getNioNumber().equals(e.get("nio_number")) - && configId.equals(e.get("old_params_config_id"))).collect(Collectors.toList()); - configDataEOList = paramsConfigDataEOList.stream().filter(e-> updateCollectManifestEO.getId().equals(e.getParamsCollectManifestId()) - && configId.equals(e.getParamsConfigId())).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(reportConfigDataEOList) && CollectionUtil.isNotEmpty(configDataEOList)) { - ParamsConfigDataEO updateParamsConfigDataEO = new ParamsConfigDataEO(); - updateParamsConfigDataEO.setId(String.valueOf(configDataEOList.get(0).getId())); - updateParamsConfigDataEO.setTextData((String) reportConfigDataEOList.get(0).get("text_data")); - updateParamsConfigDataEO.setPullData((String) reportConfigDataEOList.get(0).get("pull_data")); - updateParamsConfigDataEO.setFileConnectId((String) reportConfigDataEOList.get(0).get("file_connect_id")); - updateConfigDataEOList.add(updateParamsConfigDataEO); - } else if (CollectionUtil.isNotEmpty(reportConfigDataEOList) && CollectionUtil.isEmpty(configDataEOList)) { - ParamsConfigDataEO addParamsConfigDataEO = new ParamsConfigDataEO(); - addParamsConfigDataEO.setId(UUID.randomUUID().toString().replace("-", "")); - addParamsConfigDataEO.setTextData((String) reportConfigDataEOList.get(0).get("text_data")); - addParamsConfigDataEO.setPullData((String) reportConfigDataEOList.get(0).get("pull_data")); - addParamsConfigDataEO.setFileConnectId((String) reportConfigDataEOList.get(0).get("file_connect_id")); - addParamsConfigDataEO.setParamsConfigId(configId); - addParamsConfigDataEO.setParamsCollectManifestId(updateCollectManifestEO.getId()); - updateConfigDataEOList.add(addParamsConfigDataEO); - } - } - } - if (CollectionUtil.isNotEmpty(updateConfigDataEOList)) { - paramsConfigDataEOService.saveOrUpdateBatch(updateConfigDataEOList); - - } - - // 删除参数项配置数据 - if (CollectionUtil.isNotEmpty(delCollectManifestIdList)) { - paramsConfigDataEOService.deleteByParamsCollectManifestIdList(delCollectManifestIdList); - } - - // 更新项目参数项 - paramsCollectManifestEOService.updateBatchById(updateCollectManifestEOList); - - // 参数清单版本加 1 - ParamsManifestEO updateManifestEO = new ParamsManifestEO(); - updateManifestEO.setId(id); - updateManifestEO.setVersion(paramsManifestEO.getVersion() + 1); - updateManifestEO.setParamsTemplatePublishVersion(newestVersion); - updateManifestEO.setState(ManifestStateEnum.COLLECTING.getValue()); // 变更扩展后,清单状态为收集中 - return updateById(updateManifestEO); - } - - @Override - public List getHistoryVersionList(String paramsManifestId) { - return paramsManifestHistoryEOService.getHistoryVersionList(paramsManifestId); - - } - - @Override - public IPage getAllManifest(IPage page, String projectName) { - IPage rows = paramsManifestEOMapper.pageInfoAll(projectName, ManifestStateEnum.FINISHED.getValue(), page); - return rows; - } - - @Override - public ParamsManifestEO copy(ParamsManifestEO paramsManifestEO, String sourceManifestId) { - // 判断清单收集状态,已完成状态才可复制 - Map map = paramsCollectManifestEOService.isCollectFinished(sourceManifestId); - Boolean finish = (Boolean) map.get("finish"); - if (!finish) { - if (CutEnum.CN.getValue().equals(paramsManifestEO.getCut())) { - throw new JeroBootException("清单收集中,无法复制!"); - } else { - throw new JeroBootException("Manifest collection, and cannot be copied!"); - } - } - - String paramsTemplateId = paramsManifestEO.getParamsTemplateId(); - int paramsTemplatePublishVersion = paramsManifestEO.getParamsTemplatePublishVersion(); - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); - queryWrapper.eq(ParamsManifestEO::getProjectId, paramsManifestEO.getProjectId()); - List paramsManifestEOList = list(queryWrapper); - if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { - if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { - throw new JeroBootException("Title already exists!"); - } else { - throw new JeroBootException("标题已存在!"); - } - } - - // 根据主项目ID 查询 相关项目版本的项目ID - String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), paramsManifestEO.getProjectId()); - - // 查询所有模板参数项 - List paramsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsTemplateId, paramsTemplatePublishVersion); - - // 查询所有清单参数项 - ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); - paramsCollectManifestEO.setParamsManifestId(sourceManifestId); - List paramsCollectManifestEOList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); - - // 查询清单配置 - List paramsConfigEOList = paramsConfigEOService.queryList(sourceManifestId); - - // 定义 - Map configIdMap = new HashMap<>(); // 旧-新配置id对应关系 - List addCollectManifestEOList = new ArrayList<>(); // 需要添加的参数项 - List addConfigEOList = new ArrayList<>(); // 需要添加的配置 - List addConfigDataEOList = new ArrayList<>(); // 需要添加的配置数据 - - String addManifestId = UUID.randomUUID().toString().replace("-",""); // 参数清单id - - // 配置: 复制清单的 - for (ParamsConfigEO configEO : paramsConfigEOList) { - ParamsConfigEO addConfigEO = new ParamsConfigEO(); - BeanUtils.copyProperties(configEO, addConfigEO); - String addConfigId = UUID.randomUUID().toString().replace("-", ""); - addConfigEO.setId(addConfigId); - addConfigEO.setParamsManifestId(addManifestId); - addConfigEO.setCreateBy(null); - addConfigEO.setCreateTime(null); - addConfigEO.setUpdateBy(null); - addConfigEO.setUpdateTime(null); - addConfigEO.setSysOrgCode(null); - addConfigEOList.add(addConfigEO); - - configIdMap.put(configEO.getId(), addConfigId); - } - - // 将清单参数项 和 模板参数项 对比 - for (ParamsInfoPublishEO publishEO : paramsInfoPublishEOList) { - String nioNumber = publishEO.getNioNumber(); - String controlType = publishEO.getControlType(); - String controlValues = publishEO.getControlValues(); - String controlVerify = publishEO.getControlVerify(); - - List manifestEOList = paramsCollectManifestEOList.stream() - .filter(e->nioNumber.equals(e.getNioNumber()) - && controlType.equals(e.getControlType()) - && ((controlValues != null && controlValues.equals(e.getControlValues())) || (controlValues == null && null == e.getControlValues())) - && ((controlVerify != null && controlVerify.equals(e.getControlVerify())) || (controlVerify == null && null == e.getControlVerify()))) - .collect(Collectors.toList()); - - - String addCollectManifestId = UUID.randomUUID().toString().replace("-",""); // 参数项id - if (CollectionUtil.isNotEmpty(manifestEOList)) { - ParamsCollectManifestEO collectManifestEO = manifestEOList.get(0); - - // 配置数据: nio编号,控件类型,控件备选值,控件校验 均一致时 将清单参数项项复制到模板参数项,否则不复制 - for (ParamsConfigEO configEO : paramsConfigEOList) { - // ParamsConfigDataEO configDataEO = paramsConfigDataEOService.queryByConfigIdAndCollectManifestId(configEO.getId(), collectManifestEO.getId()); - - List configDataEOList = this.paramsConfigDataEOService.queryListByConfigIdAndCollectManifestId(configEO.getId(), collectManifestEO.getId()); - if(CollectionUtils.isNotEmpty(configDataEOList)){ - for (ParamsConfigDataEO configDataEO : configDataEOList) { - ParamsConfigDataEO addConfigDataEO = new ParamsConfigDataEO(); - if (ObjectUtil.isNotEmpty(configDataEO)) { - BeanUtils.copyProperties(configDataEO, addConfigDataEO); - - addConfigDataEO.setId(null); - addConfigDataEO.setCreateBy(null); - addConfigDataEO.setCreateTime(null); - addConfigDataEO.setUpdateBy(null); - addConfigDataEO.setUpdateTime(null); - addConfigDataEO.setSysOrgCode(null); - addConfigDataEO.setParamsConfigId(configIdMap.get(configEO.getId())); - addConfigDataEO.setParamsCollectManifestId(addCollectManifestId); - addConfigDataEOList.add(addConfigDataEO); - } - } - } - } - } - - // 固定列数据: 保留模板参数项的 - ParamsCollectManifestEO addCollectManifestEO = new ParamsCollectManifestEO(); - BeanUtils.copyProperties(publishEO, addCollectManifestEO); - addCollectManifestEO.setId(addCollectManifestId); - addCollectManifestEO.setParamsManifestId(addManifestId); - addCollectManifestEO.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); - addCollectManifestEO.setVersion(1); - // 根据负责领域处理工程接口人(零个,一个,多个): 领域中仅有一个人时,添加该字段 - ProjectRelatedPersonnel projectRelatedPersonnel = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritory(projectVersionId, addCollectManifestEO.getDutyTerritory()); - if (ObjectUtil.isNotEmpty(projectRelatedPersonnel)) { - String sdtId = projectRelatedPersonnel.getEngineeringInterfacePerson(); - if (StringUtils.isNotBlank(sdtId) && !sdtId.contains(",")) { // 领域中仅有一个人时,添加该字段 - SysUser sysUser = sysUserService.getById(sdtId); - if (ObjectUtil.isNotEmpty(sysUser)) { - addCollectManifestEO.setSdt(sysUser.getUsername()); - } - } - } - - addCollectManifestEO.setCreateBy(null); - addCollectManifestEO.setCreateTime(null); - addCollectManifestEO.setUpdateBy(null); - addCollectManifestEO.setUpdateTime(null); - addCollectManifestEO.setSysOrgCode(null); - addCollectManifestEOList.add(addCollectManifestEO); - - } - - // 添加参数项 - paramsCollectManifestEOService.saveBatch(addCollectManifestEOList); - - // 添加配置 - paramsConfigEOService.saveBatch(addConfigEOList); - - // 添加配置数据 - paramsConfigDataEOService.saveBatch(addConfigDataEOList); - - // 添加参数清单 - paramsManifestEO.setId(addManifestId); - paramsManifestEO.setState(ManifestStateEnum.UNCOLLECTED.getValue()); - paramsManifestEO.setVersion(1); // 默认版本为 1 - save(paramsManifestEO); - - return paramsManifestEO; - } - - @Override - public ParamsManifestVO getProjectById(String projectId, String projectVersion,String cut) { - ParamsManifestVO paramsManifestVO = paramsManifestEOMapper.getProjectById(projectId); - String targetMarket = paramsManifestVO.getTargetMarket();//目标市场 - if(StringUtils.isNotEmpty(targetMarket)){ - List regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); - targetMarket = getTargetMarket(cut, regionList, targetMarket); - } - paramsManifestVO.setProjectName(paramsManifestVO.getProjectName()+"-"+ targetMarket + "-" + projectVersion); // 项目名称加上 相关项目版本 - return paramsManifestVO; - } - - private String getTargetMarket(String cut, List regionList, String targetMarket) { - //适用地区 - List dictModelList = new ArrayList<>(); - String region = ""; - if(com.jero.modules.system.util.StringUtils.isNotBlank(targetMarket)){ - for (String s : targetMarket.split(",")) { - List dictModelListTemp = regionList.stream() - .filter(e -> s.equals(e.getValue())).collect(Collectors.toList()); - dictModelList.addAll(dictModelListTemp); - } - - if(dictModelList.size() != 0){ - StringBuilder sb = new StringBuilder(); - for (DictModel dictModel : dictModelList) { - if(CutEnum.CN.getValue().equals(cut)){ - sb.append(dictModel.getText()+","); - }else{ - sb.append(dictModel.getTextEn()+","); - } - } - if(com.jero.modules.system.util.StringUtils.isNotBlank(sb)){ - region = sb.substring(0,sb.length()-1); - } - } - } - return region; - } - - @Override - public List> labelListForProjectDetails(String projectId) { - return paramsManifestEOMapper.labelListForProjectDetails(projectId); - } - - @Override - public Map getStatisticsForProjectDetails(String paramsManifestId, String cut) { - // 查询所有责任领域 - List dutyTerritoryDictList = sysDictMapper.queryDictItemsByCode("duty_territory"); - - Map result = new LinkedHashMap<>(); - List dutyTerritoryNameList = new LinkedList<>(); - List> notStartList = new LinkedList<>(); - List> collectingList = new LinkedList<>(); - List> submitList = new LinkedList<>(); - List> syncReportList = new LinkedList<>(); - double totalAll = 0; - double notStartTotal = 0; - double collectingTotal = 0; - double submitTotal = 0; - double syncReportTotal = 0; - - - // 统计清单参数 - ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); - paramsCollectManifestEO.setParamsManifestId(paramsManifestId); - List> listAll = paramsCollectManifestEOMapper.listInfoForExport(paramsCollectManifestEO, null); - - // 循环责任领域,计算每个责任领域中的四种状态数据 - for (DictModel item : dutyTerritoryDictList) { - - // 计算数量 - double notStartNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.get("state")) - || CollectManifestStateEnum.SDT_BACK.getValue().equals(e.get("state")) - || CollectManifestStateEnum.CHANGE.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory"))) - .count(); // 未开始的参数项 数量 - - double collectingNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.get("state")) - || CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.get("state")) - || CollectManifestStateEnum.DRE_BACK.getValue().equals(e.get("state")) - || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory"))) - .count(); // 收集中的参数项 数量 - - double submitNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SUBMIT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory"))) - .count(); // 已提交的参数项 数量 - - double syncReportNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory"))) - .count(); // 已同步上报库的参数项 数量 - - // 计算百分比 - double total = notStartNumber + collectingNumber + submitNumber + syncReportNumber; // 当前责任领域参数项总数 - String notStartPercent = getRatio(notStartNumber, total); // 未开始的参数项 百分比 - String collectingPercent = getRatio(collectingNumber, total); // 收集中的参数项 百分比 - String submitPercent = getRatio(submitNumber, total); // 已提交的参数项 百分比 - String syncReportPercent = getRatio(syncReportNumber, total); // 已同步上报库的参数项 百分比 - - // 累加 - totalAll += total; - notStartTotal += notStartNumber; - collectingTotal += collectingNumber; - submitTotal += submitNumber; - syncReportTotal += syncReportNumber; - - - // 组装数据 返回前端 - if (notStartNumber == collectingNumber && collectingNumber == submitNumber && submitNumber == syncReportNumber && syncReportNumber == 0) { - continue; - } - - if (CutEnum.EN.getValue().equals(cut)) { - dutyTerritoryNameList.add(item.getTextEn()); - } else { - dutyTerritoryNameList.add(item.getText()); - } - - getData(notStartList, notStartNumber, notStartPercent); - getData(collectingList, collectingNumber, collectingPercent); - getData(submitList, submitNumber, submitPercent); - getData(syncReportList, syncReportNumber, syncReportPercent); - - } - - // 设置全部 - if (CutEnum.EN.getValue().equals(cut)) { - dutyTerritoryNameList.add(0, "All"); - } else { - dutyTerritoryNameList.add(0, "全部"); - } - - Map notStartMap = new HashMap<>(); - notStartMap.put("quantity", notStartTotal); - notStartMap.put("percentage", getRatio(notStartTotal, totalAll)); - notStartList.add(0, notStartMap); - - Map collectinMap = new HashMap<>(); - collectinMap.put("quantity", collectingTotal); - collectinMap.put("percentage", getRatio(collectingTotal, totalAll)); - collectingList.add(0, collectinMap); - - Map submitMap = new HashMap<>(); - submitMap.put("quantity", submitTotal); - submitMap.put("percentage", getRatio(submitTotal, totalAll)); - submitList.add(0, submitMap); - - Map syncReportMap = new HashMap<>(); - syncReportMap.put("quantity", syncReportTotal); - syncReportMap.put("percentage", getRatio(syncReportTotal, totalAll)); - syncReportList.add(0, syncReportMap); - - // - result.put("dutyTerritory", dutyTerritoryNameList); - result.put("notStart", notStartList); - result.put("collecting", collectingList); - result.put("submit", submitList); - result.put("syncReport", syncReportList); - - return result; - } - - @Override - public boolean setTemplateName(List paramsTemplateIds) { - List updateManifestEOList = new ArrayList<>(); - - // 查询被删除模板信息 - LambdaQueryWrapper paramsTemplateEOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - paramsTemplateEOLambdaQueryWrapper.in(ParamsTemplateEO::getId, paramsTemplateIds); - List paramsTemplateEOList = paramsTemplateEOService.list(paramsTemplateEOLambdaQueryWrapper); - List paramsTemplateIdList = paramsTemplateEOList.stream().map(ParamsTemplateEO::getId).collect(Collectors.toList()); - - // 查询被删除模板的所有清单 - LambdaQueryWrapper paramsManifestEOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - paramsManifestEOLambdaQueryWrapper.in(ParamsManifestEO::getParamsTemplateId, paramsTemplateIdList); - List paramsManifestEOList = list(paramsManifestEOLambdaQueryWrapper); - - paramsTemplateEOList.forEach(templateEO-> { - // 查询使用该模板的所有清单 - List paramsManifestEOS = paramsManifestEOList.stream() - .filter(e-> templateEO.getId().equals(e.getParamsTemplateId())) - .collect(Collectors.toList()); - - paramsManifestEOS.forEach(manifestEO -> { - ParamsManifestEO updateManifestEO = new ParamsManifestEO(); - updateManifestEO.setId(manifestEO.getId()); - updateManifestEO.setParamsTemplateName(templateEO.getParamsTemplateName()); - updateManifestEO.setFinishTime(manifestEO.getFinishTime()); - - updateManifestEOList.add(updateManifestEO); - }); - - }); - return updateBatchById(updateManifestEOList); - } - - private void getData(List> data, double quantity, String percentage) { - Map map = new HashMap<>(); - map.put("quantity", quantity); - map.put("percentage", percentage); - data.add(map); - } - - /** - * 计算百分比 - * @param d1 - * @param d2 - * @return - */ - private String getRatio(Double d1, Double d2) { - if (d1 == null || d2 == null || d2 <= 0) { + delCollectManifestIdList.add(oldCollectManifestEO.getId()); + } else { + // 参数填写规则没有改变,状态变为:变更 + updateCollectManifestEO.setId(oldCollectManifestEO.getId()); + updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue()); + updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项 + updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项 + updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项 + + } + // 更新附件模板字段 + if (StringUtils.isNotEmpty(paramsInfoPublishEO.getFileTemplateConnectId())) { + updateCollectManifestEO.setFileTemplateConnectId(paramsInfoPublishEO.getFileTemplateConnectId()); + } + + updateCollectManifestEOList.add(updateCollectManifestEO); + } + } + + // 查询配置信息 + List configIdList = paramsConfigEOService.queryList(id).stream().map(ParamsConfigEO::getId).collect(Collectors.toList()); + List paramsConfigDataEOList = paramsConfigDataEOService.queryListByConfigIdList(configIdList); + // 按照上报库参数项配置数据 更新 参数收集清单配置数据 + List> reportConfigDataEOList = new ArrayList<>(); + List configDataEOList = new ArrayList<>(); + for (ParamsCollectManifestEO updateCollectManifestEO : updateCollectManifestEOList) { + for (String configId : configIdList) { + reportConfigDataEOList = paramsReportConfigDataList.stream().filter(e -> updateCollectManifestEO.getNioNumber().equals(e.get("nio_number")) + && configId.equals(e.get("old_params_config_id"))).collect(Collectors.toList()); + configDataEOList = paramsConfigDataEOList.stream().filter(e -> updateCollectManifestEO.getId().equals(e.getParamsCollectManifestId()) + && configId.equals(e.getParamsConfigId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(reportConfigDataEOList) && CollectionUtil.isNotEmpty(configDataEOList)) { + ParamsConfigDataEO updateParamsConfigDataEO = new ParamsConfigDataEO(); + updateParamsConfigDataEO.setId(String.valueOf(configDataEOList.get(0).getId())); + updateParamsConfigDataEO.setTextData((String) reportConfigDataEOList.get(0).get("text_data")); + updateParamsConfigDataEO.setPullData((String) reportConfigDataEOList.get(0).get("pull_data")); + updateParamsConfigDataEO.setFileConnectId((String) reportConfigDataEOList.get(0).get("file_connect_id")); + updateConfigDataEOList.add(updateParamsConfigDataEO); + } else if (CollectionUtil.isNotEmpty(reportConfigDataEOList) && CollectionUtil.isEmpty(configDataEOList)) { + ParamsConfigDataEO addParamsConfigDataEO = new ParamsConfigDataEO(); + addParamsConfigDataEO.setId(UUID.randomUUID().toString().replace("-", "")); + addParamsConfigDataEO.setTextData((String) reportConfigDataEOList.get(0).get("text_data")); + addParamsConfigDataEO.setPullData((String) reportConfigDataEOList.get(0).get("pull_data")); + addParamsConfigDataEO.setFileConnectId((String) reportConfigDataEOList.get(0).get("file_connect_id")); + addParamsConfigDataEO.setParamsConfigId(configId); + addParamsConfigDataEO.setParamsCollectManifestId(updateCollectManifestEO.getId()); + updateConfigDataEOList.add(addParamsConfigDataEO); + } + } + } + if (CollectionUtil.isNotEmpty(updateConfigDataEOList)) { + paramsConfigDataEOService.saveOrUpdateBatch(updateConfigDataEOList); + + } + + // 删除参数项配置数据 + if (CollectionUtil.isNotEmpty(delCollectManifestIdList)) { + paramsConfigDataEOService.deleteByParamsCollectManifestIdList(delCollectManifestIdList); + } + + // 更新项目参数项 + paramsCollectManifestEOService.updateBatchById(updateCollectManifestEOList); + + // 参数清单版本加 1 + ParamsManifestEO updateManifestEO = new ParamsManifestEO(); + updateManifestEO.setId(id); + updateManifestEO.setVersion(paramsManifestEO.getVersion() + 1); + updateManifestEO.setParamsTemplatePublishVersion(newestVersion); + updateManifestEO.setState(ManifestStateEnum.COLLECTING.getValue()); // 变更扩展后,清单状态为收集中 + return updateById(updateManifestEO); + } + + @Override + public List getHistoryVersionList(String paramsManifestId) { + return paramsManifestHistoryEOService.getHistoryVersionList(paramsManifestId); + + } + + @Override + public IPage getAllManifest(IPage page, String projectName) { + IPage rows = paramsManifestEOMapper.pageInfoAll(projectName, ManifestStateEnum.FINISHED.getValue(), page); + return rows; + } + + @Override + public ParamsManifestEO copy(ParamsManifestEO paramsManifestEO, String sourceManifestId) { + // 判断清单收集状态,已完成状态才可复制 + Map map = paramsCollectManifestEOService.isCollectFinished(sourceManifestId); + Boolean finish = (Boolean) map.get("finish"); + if (!finish) { + if (CutEnum.CN.getValue().equals(paramsManifestEO.getCut())) { + throw new JeroBootException("清单收集中,无法复制!"); + } else { + throw new JeroBootException("Manifest collection, and cannot be copied!"); + } + } + + String paramsTemplateId = paramsManifestEO.getParamsTemplateId(); + int paramsTemplatePublishVersion = paramsManifestEO.getParamsTemplatePublishVersion(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ParamsManifestEO::getTitle, paramsManifestEO.getTitle()); + queryWrapper.eq(ParamsManifestEO::getProjectId, paramsManifestEO.getProjectId()); + List paramsManifestEOList = list(queryWrapper); + if (CollectionUtil.isNotEmpty(paramsManifestEOList)) { + if (CutEnum.EN.getValue().equals(paramsManifestEO.getCut())) { + throw new JeroBootException("Title already exists!"); + } else { + throw new JeroBootException("标题已存在!"); + } + } + + // 根据主项目ID 查询 相关项目版本的项目ID + String projectVersionId = projectLibraryBaseService.getIdByVersionAndParentId(paramsManifestEO.getProjectVersion(), paramsManifestEO.getProjectId()); + + // 查询所有模板参数项 + List paramsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsTemplateId, paramsTemplatePublishVersion); + + // 查询所有清单参数项 + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + paramsCollectManifestEO.setParamsManifestId(sourceManifestId); + List paramsCollectManifestEOList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); + + // 查询清单配置 + List paramsConfigEOList = paramsConfigEOService.queryList(sourceManifestId); + + // 定义 + Map configIdMap = new HashMap<>(); // 旧-新配置id对应关系 + List addCollectManifestEOList = new ArrayList<>(); // 需要添加的参数项 + List addConfigEOList = new ArrayList<>(); // 需要添加的配置 + List addConfigDataEOList = new ArrayList<>(); // 需要添加的配置数据 + + String addManifestId = UUID.randomUUID().toString().replace("-", ""); // 参数清单id + + // 配置: 复制清单的 + for (ParamsConfigEO configEO : paramsConfigEOList) { + ParamsConfigEO addConfigEO = new ParamsConfigEO(); + BeanUtils.copyProperties(configEO, addConfigEO); + String addConfigId = UUID.randomUUID().toString().replace("-", ""); + addConfigEO.setId(addConfigId); + addConfigEO.setParamsManifestId(addManifestId); + addConfigEO.setCreateBy(null); + addConfigEO.setCreateTime(null); + addConfigEO.setUpdateBy(null); + addConfigEO.setUpdateTime(null); + addConfigEO.setSysOrgCode(null); + addConfigEOList.add(addConfigEO); + + configIdMap.put(configEO.getId(), addConfigId); + } + + // 将清单参数项 和 模板参数项 对比 + for (ParamsInfoPublishEO publishEO : paramsInfoPublishEOList) { + String nioNumber = publishEO.getNioNumber(); + String controlType = publishEO.getControlType(); + String controlValues = publishEO.getControlValues(); + String controlVerify = publishEO.getControlVerify(); + + List manifestEOList = paramsCollectManifestEOList.stream() + .filter(e -> nioNumber.equals(e.getNioNumber()) + && controlType.equals(e.getControlType()) + && ((controlValues != null && controlValues.equals(e.getControlValues())) || (controlValues == null && null == e.getControlValues())) + && ((controlVerify != null && controlVerify.equals(e.getControlVerify())) || (controlVerify == null && null == e.getControlVerify()))) + .collect(Collectors.toList()); + + + String addCollectManifestId = UUID.randomUUID().toString().replace("-", ""); // 参数项id + if (CollectionUtil.isNotEmpty(manifestEOList)) { + ParamsCollectManifestEO collectManifestEO = manifestEOList.get(0); + + // 配置数据: nio编号,控件类型,控件备选值,控件校验 均一致时 将清单参数项项复制到模板参数项,否则不复制 + for (ParamsConfigEO configEO : paramsConfigEOList) { + // ParamsConfigDataEO configDataEO = paramsConfigDataEOService.queryByConfigIdAndCollectManifestId(configEO.getId(), collectManifestEO.getId()); + + List configDataEOList = this.paramsConfigDataEOService.queryListByConfigIdAndCollectManifestId(configEO.getId(), collectManifestEO.getId()); + if (CollectionUtils.isNotEmpty(configDataEOList)) { + for (ParamsConfigDataEO configDataEO : configDataEOList) { + ParamsConfigDataEO addConfigDataEO = new ParamsConfigDataEO(); + if (ObjectUtil.isNotEmpty(configDataEO)) { + BeanUtils.copyProperties(configDataEO, addConfigDataEO); + + addConfigDataEO.setId(null); + addConfigDataEO.setCreateBy(null); + addConfigDataEO.setCreateTime(null); + addConfigDataEO.setUpdateBy(null); + addConfigDataEO.setUpdateTime(null); + addConfigDataEO.setSysOrgCode(null); + addConfigDataEO.setParamsConfigId(configIdMap.get(configEO.getId())); + addConfigDataEO.setParamsCollectManifestId(addCollectManifestId); + addConfigDataEOList.add(addConfigDataEO); + } + } + } + } + } + + // 固定列数据: 保留模板参数项的 + ParamsCollectManifestEO addCollectManifestEO = new ParamsCollectManifestEO(); + BeanUtils.copyProperties(publishEO, addCollectManifestEO); + addCollectManifestEO.setId(addCollectManifestId); + addCollectManifestEO.setParamsManifestId(addManifestId); + addCollectManifestEO.setState(CollectManifestStateEnum.WAIT_COLLECT.getValue()); + addCollectManifestEO.setVersion(1); + // 根据负责领域处理工程接口人(零个,一个,多个): 领域中仅有一个人时,添加该字段 + ProjectRelatedPersonnel projectRelatedPersonnel = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritory(projectVersionId, addCollectManifestEO.getDutyTerritory()); + if (ObjectUtil.isNotEmpty(projectRelatedPersonnel)) { + String sdtId = projectRelatedPersonnel.getEngineeringInterfacePerson(); + if (StringUtils.isNotBlank(sdtId) && !sdtId.contains(",")) { // 领域中仅有一个人时,添加该字段 + SysUser sysUser = sysUserService.getById(sdtId); + if (ObjectUtil.isNotEmpty(sysUser)) { + addCollectManifestEO.setSdt(sysUser.getUsername()); + } + } + } + + addCollectManifestEO.setCreateBy(null); + addCollectManifestEO.setCreateTime(null); + addCollectManifestEO.setUpdateBy(null); + addCollectManifestEO.setUpdateTime(null); + addCollectManifestEO.setSysOrgCode(null); + addCollectManifestEOList.add(addCollectManifestEO); + + } + + // 添加参数项 + paramsCollectManifestEOService.saveBatch(addCollectManifestEOList); + + // 添加配置 + paramsConfigEOService.saveBatch(addConfigEOList); + + // 添加配置数据 + paramsConfigDataEOService.saveBatch(addConfigDataEOList); + + // 添加参数清单 + paramsManifestEO.setId(addManifestId); + paramsManifestEO.setState(ManifestStateEnum.UNCOLLECTED.getValue()); + paramsManifestEO.setVersion(1); // 默认版本为 1 + save(paramsManifestEO); + + return paramsManifestEO; + } + + @Override + public ParamsManifestVO getProjectById(String projectId, String projectVersion, String cut) { + ParamsManifestVO paramsManifestVO = paramsManifestEOMapper.getProjectById(projectId); + String targetMarket = paramsManifestVO.getTargetMarket();//目标市场 + if (StringUtils.isNotEmpty(targetMarket)) { + List regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); + targetMarket = getTargetMarket(cut, regionList, targetMarket); + } + paramsManifestVO.setProjectName(paramsManifestVO.getProjectName() + "-" + targetMarket + "-" + projectVersion); // 项目名称加上 相关项目版本 + return paramsManifestVO; + } + + private String getTargetMarket(String cut, List regionList, String targetMarket) { + //适用地区 + List dictModelList = new ArrayList<>(); + String region = ""; + if (com.jero.modules.system.util.StringUtils.isNotBlank(targetMarket)) { + for (String s : targetMarket.split(",")) { + List dictModelListTemp = regionList.stream() + .filter(e -> s.equals(e.getValue())).collect(Collectors.toList()); + dictModelList.addAll(dictModelListTemp); + } + + if (dictModelList.size() != 0) { + StringBuilder sb = new StringBuilder(); + for (DictModel dictModel : dictModelList) { + if (CutEnum.CN.getValue().equals(cut)) { + sb.append(dictModel.getText() + ","); + } else { + sb.append(dictModel.getTextEn() + ","); + } + } + if (com.jero.modules.system.util.StringUtils.isNotBlank(sb)) { + region = sb.substring(0, sb.length() - 1); + } + } + } + return region; + } + + @Override + public List> labelListForProjectDetails(String projectId) { + return paramsManifestEOMapper.labelListForProjectDetails(projectId); + } + + @Override + public Map getStatisticsForProjectDetails(String paramsManifestId, String cut) { + // 查询所有责任领域 + List dutyTerritoryDictList = sysDictMapper.queryDictItemsByCode("duty_territory"); + + Map result = new LinkedHashMap<>(); + List dutyTerritoryNameList = new LinkedList<>(); + List> notStartList = new LinkedList<>(); + List> collectingList = new LinkedList<>(); + List> submitList = new LinkedList<>(); + List> syncReportList = new LinkedList<>(); + double totalAll = 0; + double notStartTotal = 0; + double collectingTotal = 0; + double submitTotal = 0; + double syncReportTotal = 0; + + + // 统计清单参数 + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + paramsCollectManifestEO.setParamsManifestId(paramsManifestId); + List> listAll = paramsCollectManifestEOMapper.listInfoForExport(paramsCollectManifestEO, null); + + // 循环责任领域,计算每个责任领域中的四种状态数据 + for (DictModel item : dutyTerritoryDictList) { + + // 计算数量 + double notStartNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.get("state")) + || CollectManifestStateEnum.SDT_BACK.getValue().equals(e.get("state")) + || CollectManifestStateEnum.CHANGE.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory"))) + .count(); // 未开始的参数项 数量 + + double collectingNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.get("state")) + || CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.get("state")) + || CollectManifestStateEnum.DRE_BACK.getValue().equals(e.get("state")) + || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory"))) + .count(); // 收集中的参数项 数量 + + double submitNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SUBMIT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory"))) + .count(); // 已提交的参数项 数量 + + double syncReportNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory"))) + .count(); // 已同步上报库的参数项 数量 + + // 计算百分比 + double total = notStartNumber + collectingNumber + submitNumber + syncReportNumber; // 当前责任领域参数项总数 + String notStartPercent = getRatio(notStartNumber, total); // 未开始的参数项 百分比 + String collectingPercent = getRatio(collectingNumber, total); // 收集中的参数项 百分比 + String submitPercent = getRatio(submitNumber, total); // 已提交的参数项 百分比 + String syncReportPercent = getRatio(syncReportNumber, total); // 已同步上报库的参数项 百分比 + + // 累加 + totalAll += total; + notStartTotal += notStartNumber; + collectingTotal += collectingNumber; + submitTotal += submitNumber; + syncReportTotal += syncReportNumber; + + + // 组装数据 返回前端 + if (notStartNumber == collectingNumber && collectingNumber == submitNumber && submitNumber == syncReportNumber && syncReportNumber == 0) { + continue; + } + + if (CutEnum.EN.getValue().equals(cut)) { + dutyTerritoryNameList.add(item.getTextEn()); + } else { + dutyTerritoryNameList.add(item.getText()); + } + + getData(notStartList, notStartNumber, notStartPercent); + getData(collectingList, collectingNumber, collectingPercent); + getData(submitList, submitNumber, submitPercent); + getData(syncReportList, syncReportNumber, syncReportPercent); + + } + + // 设置全部 + if (CutEnum.EN.getValue().equals(cut)) { + dutyTerritoryNameList.add(0, "All"); + } else { + dutyTerritoryNameList.add(0, "全部"); + } + + Map notStartMap = new HashMap<>(); + notStartMap.put("quantity", notStartTotal); + notStartMap.put("percentage", getRatio(notStartTotal, totalAll)); + notStartList.add(0, notStartMap); + + Map collectinMap = new HashMap<>(); + collectinMap.put("quantity", collectingTotal); + collectinMap.put("percentage", getRatio(collectingTotal, totalAll)); + collectingList.add(0, collectinMap); + + Map submitMap = new HashMap<>(); + submitMap.put("quantity", submitTotal); + submitMap.put("percentage", getRatio(submitTotal, totalAll)); + submitList.add(0, submitMap); + + Map syncReportMap = new HashMap<>(); + syncReportMap.put("quantity", syncReportTotal); + syncReportMap.put("percentage", getRatio(syncReportTotal, totalAll)); + syncReportList.add(0, syncReportMap); + + // + result.put("dutyTerritory", dutyTerritoryNameList); + result.put("notStart", notStartList); + result.put("collecting", collectingList); + result.put("submit", submitList); + result.put("syncReport", syncReportList); + + return result; + } + + @Override + public boolean setTemplateName(List paramsTemplateIds) { + List updateManifestEOList = new ArrayList<>(); + + // 查询被删除模板信息 + LambdaQueryWrapper paramsTemplateEOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + paramsTemplateEOLambdaQueryWrapper.in(ParamsTemplateEO::getId, paramsTemplateIds); + List paramsTemplateEOList = paramsTemplateEOService.list(paramsTemplateEOLambdaQueryWrapper); + List paramsTemplateIdList = paramsTemplateEOList.stream().map(ParamsTemplateEO::getId).collect(Collectors.toList()); + + // 查询被删除模板的所有清单 + LambdaQueryWrapper paramsManifestEOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + paramsManifestEOLambdaQueryWrapper.in(ParamsManifestEO::getParamsTemplateId, paramsTemplateIdList); + List paramsManifestEOList = list(paramsManifestEOLambdaQueryWrapper); + + paramsTemplateEOList.forEach(templateEO -> { + // 查询使用该模板的所有清单 + List paramsManifestEOS = paramsManifestEOList.stream() + .filter(e -> templateEO.getId().equals(e.getParamsTemplateId())) + .collect(Collectors.toList()); + + paramsManifestEOS.forEach(manifestEO -> { + ParamsManifestEO updateManifestEO = new ParamsManifestEO(); + updateManifestEO.setId(manifestEO.getId()); + updateManifestEO.setParamsTemplateName(templateEO.getParamsTemplateName()); + updateManifestEO.setFinishTime(manifestEO.getFinishTime()); + + updateManifestEOList.add(updateManifestEO); + }); + + }); + return updateBatchById(updateManifestEOList); + } + + private void getData(List> data, double quantity, String percentage) { + Map map = new HashMap<>(); + map.put("quantity", quantity); + map.put("percentage", percentage); + data.add(map); + } + + /** + * 计算百分比 + * + * @param d1 + * @param d2 + * @return + */ + private String getRatio(Double d1, Double d2) { + if (d1 == null || d2 == null || d2 <= 0) { // return "0.00%"; - return "0.00"; // 前端不需要返百分号 - } - NumberFormat percent = NumberFormat.getPercentInstance(); - percent.setMaximumFractionDigits(2); - percent.setMinimumFractionDigits(2); - String result = percent.format(d1/d2); - return result.substring(0,result.lastIndexOf("%")); // 前端不需要返百分号 - } + return "0.00"; // 前端不需要返百分号 + } + NumberFormat percent = NumberFormat.getPercentInstance(); + percent.setMaximumFractionDigits(2); + percent.setMinimumFractionDigits(2); + String result = percent.format(d1 / d2); + return result.substring(0, result.lastIndexOf("%")); // 前端不需要返百分号 + } }