diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/InviteExpertListItemVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/InviteExpertListItemVO.java index 15295e7..8170155 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/InviteExpertListItemVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/vo/InviteExpertListItemVO.java @@ -29,6 +29,9 @@ public class InviteExpertListItemVO extends ExpertBasicInfoVO { @ApiModelProperty("手机号") private String mobile; + @ApiModelProperty("是否是专家组长") + private Boolean isHeadman; + @ApiModelProperty("专家会议ID") private Long expertMeetingId; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java index ac0a65b..161c061 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/ExpertInviteManage.java @@ -67,7 +67,7 @@ public class ExpertInviteManage { private final ExpertInviteHelper expertInviteHelper; private final IExpertUserFullInfoService expertUserFullInfoService; private final IMeetingService meetingService; - private final IExpertAvoidCompanyService iExpertAvoidCompanyService; + private final IExpertAvoidCompanyService expertAvoidCompanyService; private final YxtCallOrSmsHelper yxtCallOrSmsHelper; private static final Predicate> COLL_EMPTY = (coll) -> coll != null && coll.isEmpty(); @@ -114,27 +114,17 @@ public class ExpertInviteManage { /** * 如果抽取回避单位和专家回避单位一致,同样需要回避该专家 * - * @param companyNames / + * @param unitCodeList / * @return / */ - private List avoidCompanyExpertIds(List companyNames) { - if (CollUtil.isEmpty(companyNames)) { + private List avoidCompanyExpertIds(List unitCodeList) { + if (CollUtil.isEmpty(unitCodeList)) { return new ArrayList<>(); } - List dealCompanyNames = new ArrayList<>(); - for (String companyName : companyNames) { - if (companyName.contains(",")) { - String[] splitCompanyNames = companyName.split(","); - for (String splitCompanyName : splitCompanyNames) { - dealCompanyNames.add(splitCompanyName); - } - } else { - dealCompanyNames.add(companyName); - } - } - List expertAvoidCompanyList = iExpertAvoidCompanyService.list(Wrappers.lambdaQuery(ExpertAvoidCompany.class) - .in(ExpertAvoidCompany::getCompanyName, dealCompanyNames)); - return expertAvoidCompanyList.stream().map(ExpertAvoidCompany::getUserId).distinct().collect(Collectors.toList()); + LambdaQueryWrapper query = Wrappers.lambdaQuery(ExpertAvoidCompany.class) + .in(ExpertAvoidCompany::getCompanyUniqCode, unitCodeList); + List expertAvoidCompanyList = expertAvoidCompanyService.list(query); + return CollUtils.fieldList(expertAvoidCompanyList, ExpertAvoidCompany::getUserId); } private List mergeExpertIdsByCondition(RandomInviteRuleDTO rule, AvoidRuleDTO avoidInfo) { @@ -268,22 +258,14 @@ public class ExpertInviteManage { boolean avoidCompany = CollUtil.isNotEmpty(avoidRule.getAvoidUnitIdList()); Set tmpAvoidCompany = new HashSet<>(); if (avoidCompany) { - List companyIds = avoidRule.getAvoidUnitIdList(); - for (String companyId : companyIds) { - if (companyId.contains(",")) { - String[] splitCompanyIds = companyId.split(","); - Collections.addAll(tmpAvoidCompany, splitCompanyIds); - } else { - tmpAvoidCompany.add(companyId); - } - } + tmpAvoidCompany.addAll(avoidRule.getAvoidUnitIdList()); } // 回避信息 LambdaQueryWrapper query = buildBaseExpertQuery(); - query.notIn(!tmpAvoidCompany.isEmpty(), ExpertUserFullInfo::getCompany, tmpAvoidCompany); + query.notIn(!tmpAvoidCompany.isEmpty(), ExpertUserFullInfo::getCompanyUniqCode, tmpAvoidCompany); if (avoidCompany) { query.notExists("select 1 from expert_avoid_company eac where eac.user_id = nd_expert_user_full_info.user_id" + - " and company_name in ({0})", CollUtils.joinByComma(avoidRule.getAvoidUnitIdList())); + " and company_uniq_code in ({0})", CollUtils.joinByComma(avoidRule.getAvoidUnitIdList())); } // 处理专家层级 addRegionLimit(query, randomRule); @@ -322,7 +304,7 @@ public class ExpertInviteManage { if (userInfoList.isEmpty()) { return result; } - Map> userGroupByUnit = CollUtils.group(userInfoList, ExpertUserFullInfo::getCompany); + Map> userGroupByUnit = CollUtils.group(userInfoList, ExpertUserFullInfo::getCompanyUniqCode); result.setTotal(userInfoList.size()); // count为空表示数量校验 if (randomRule.getCount() == null || result.getTotal() >= randomRule.getCount()) { @@ -357,9 +339,9 @@ public class ExpertInviteManage { return result; } LambdaQueryWrapper query = buildBaseExpertQuery(); - query.notIn(ExpertUserFullInfo::getCompany, avoidRule.getAvoidUnitIdList()); + query.notIn(ExpertUserFullInfo::getCompanyUniqCode, avoidRule.getAvoidUnitIdList()); query.notExists("select 1 from expert_avoid_company eac where eac.user_id = nd_expert_user_full_info.user_id" + - " and company_name in ({0})", CollUtils.joinByComma(avoidRule.getAvoidOrgIdList())); + " and company_uniq_code in ({0})", CollUtils.joinByComma(avoidRule.getAvoidOrgIdList())); // 处理专家层级 if (StrUtils.isNotBlank(randomRule.getExpertRegionCode())) { @@ -411,7 +393,7 @@ public class ExpertInviteManage { List tempExpertIds = CollUtils.fieldList(removeExpertByCompany, MeetingExpert::getExpertId); // 移除确认参加、通知中的、拒绝参加、已取消 userFullInfos.removeIf(w -> tempExpertIds.contains(w.getUserId()) || removeExpertIds.contains(w.getUserId())); - Map> userGroupByUnit = CollUtils.group(userFullInfos, ExpertUserFullInfo::getCompany); + Map> userGroupByUnit = CollUtils.group(userFullInfos, ExpertUserFullInfo::getCompanyUniqCode); result.setTotal(userGroupByUnit.size()); result.setExperts(inviteGroupByCompany(userGroupByUnit, count)); return result; @@ -439,7 +421,7 @@ public class ExpertInviteManage { * * @param expertGroupByUnit 需要抽取的人 * @param count 抽取数量 - * @return java.util.List + * @return 抽取到的专家信息 * @author WendyYang **/ private List inviteGroupByCompany(Map> expertGroupByUnit, Integer count) { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java index 8440879..464634e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java @@ -456,6 +456,7 @@ public class MeetingManage { item.setMobile(me.getMobile()); item.setNoticeTime(me.getCreateOn()); item.setRuleId(me.getRuleId()); + item.setIsHeadman(me.getIsHeadman()); if (NOTICING.eq(me.getStatus())) { item.setNoticeStatus("通知中"); } else { diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml index e8420d5..e371beb 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml +++ b/pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingExpertMapper.xml @@ -67,7 +67,7 @@ diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java index ed11320..570d09c 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java @@ -107,6 +107,9 @@ public class ConstructionPlanManage { String regionCode = projectInfo.getAreaCode(); + //放入文件 + projectInfo.setConstructionPlanFile(projectDto.getConstructionPlanFile()); + WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) .eq(WflowModels::getRegionCode, regionCode) .eq(WflowModels::getProcessType, ProjectProcessStageEnum.CONSTRUCTION_PROJECT_APPROVAL_PROCESS.getCode()) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/DeclaredProjectManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/DeclaredProjectManage.java index 9037a04..3db3a2a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/DeclaredProjectManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/DeclaredProjectManage.java @@ -278,7 +278,7 @@ public class DeclaredProjectManage { projectApplication.setProjectId(project.getId()); return projectApplication; }).collect(Collectors.toList()); - projectApplicationService.saveBatch(applications); + projectApplicationService.saveOrUpdateBatch(applications); } //保存项目和实例的关系 ProjectInst projectInst = new ProjectInst(); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PrequalificationDeclaredProjectManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PrequalificationDeclaredProjectManage.java index 4811bd3..809fd76 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PrequalificationDeclaredProjectManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/PrequalificationDeclaredProjectManage.java @@ -2,23 +2,16 @@ package com.ningdatech.pmapi.projectdeclared.manage; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.NdDateUtils; -import com.ningdatech.pmapi.common.constant.CommonConst; -import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum; import com.ningdatech.pmapi.common.helper.UserInfoHelper; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.util.ExcelDownUtil; import com.ningdatech.pmapi.common.util.ExcelExportStyle; -import com.ningdatech.pmapi.projectdeclared.model.dto.DeclaredProjectExportDTO; import com.ningdatech.pmapi.projectdeclared.model.dto.DefaultDeclaredDTO; import com.ningdatech.pmapi.projectdeclared.model.dto.PretrialDeclaredExportDTO; -import com.ningdatech.pmapi.projectdeclared.model.dto.ProjectConditionDTO; import com.ningdatech.pmapi.projectdeclared.model.req.PrequalificationDeclaredListReq; import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; @@ -26,33 +19,22 @@ import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; import com.ningdatech.pmapi.projectlib.model.entity.Project; -import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; -import com.ningdatech.pmapi.projectlib.service.IProjectInstService; import com.ningdatech.pmapi.projectlib.service.IProjectService; import com.ningdatech.pmapi.staging.service.IProjectStagingService; import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; -import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; import com.ningdatech.pmapi.user.util.LoginUserUtil; -import com.wflow.bean.entity.WflowModels; import com.wflow.exception.BusinessException; -import com.wflow.workflow.bean.dto.OrgInfoDTO; -import com.wflow.workflow.bean.vo.ProcessStartParamsVo; -import com.wflow.workflow.service.ProcessInstanceService; -import com.wflow.workflow.service.ProcessModelService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; - import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDateTime; -import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -108,9 +90,9 @@ public class PrequalificationDeclaredProjectManage { VUtils.isTrue(!ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(projectInfo.getStatus()) || !ProjectStatusEnum.NOT_APPROVED.getCode().equals(projectInfo.getStage())) .throwMessage("提交失败 该项目不是 待预审状态或者未立项阶段"); - //TODO 再判断 该项目是否 真实走完 单位内部审批 - //使用状态机 进入下一步 看看需不需要走省级审批 + //使用状态机 进入下一步 看看需不需要走省级审批 放入文件 + projectInfo.setHigherLineSuperOrgReviewComments(projectDto.getHigherLineSuperOrgReviewComments()); stateMachineUtils.pass(projectInfo); String instanceId = null; //如果是省级部门 需要联审的(申报金额大于1000万 并且是市级项目)