diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java index 9e2ba4d54..8657255a8 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStageEnum.java @@ -36,7 +36,7 @@ public enum WorkflowStageEnum { public static final HashMap getWorkflowStageMap(){ HashMap result = new HashMap<>(); result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode()); - result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_8.getCode()); + result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_7.getCode()); result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_7.getCode()); return result; } diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 62a911d94..5316b4a10 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -386,6 +386,7 @@ hpll.id as partnerLineId, hpci.qualify_verify_id as qualifyVerifyId, hpci.intention_contract_no as intentionContractNo, + hpll.workflow_stage as workflowStage, hpi.pass_time as passTime, hpi.pass_reason as passReason, hpi.recorder as recorderId, diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java index b0ffe2fc3..281d0794a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaTreeVO.java @@ -54,7 +54,7 @@ public class OpenAreaTreeVO { public static List convertTree(List allOpenArea, String keyword, Boolean applyFlag){ long startTime = System.currentTimeMillis(); List firstArea = allOpenArea.stream().filter(o -> Objects.isNull(o.getParentId())).collect(Collectors.toList()); - Map> openAreaParentMap = allOpenArea.stream().filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); + Map> openAreaParentMap = allOpenArea.stream().distinct().filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); List allTree = new ArrayList<>(); for (HyOpenAreaInfoDO openAreaInfo : firstArea) { OpenAreaTreeVO node = copyProperties(openAreaInfo); @@ -62,29 +62,33 @@ public class OpenAreaTreeVO { node.setChildNode(childList); allTree.add(node); } + //不需要过滤 直接返回 + if(StringUtils.isBlank(keyword) && (Objects.isNull(applyFlag) || !applyFlag)){ + return allTree; + } log.info("1#耗时:{}", System.currentTimeMillis() - startTime); Map> childMap = allTree.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getChildNode())); List filterList = allOpenArea.stream().filter(o -> (StringUtils.isBlank(keyword) || o.getAreaPath().contains(keyword)) && (Objects.isNull(applyFlag) || AreaStatusEnum.OPEN.getCode().equals(o.getAreaStatus()) || AreaStatusEnum.OPEN.getCode().equals(o.getAreaStatus()))) .collect(Collectors.toList()); Map openAreaMap = allOpenArea.stream().collect(Collectors.toMap(k -> k.getId(), Function.identity())); - List list = new ArrayList<>(); + List filterAndParentList = new ArrayList<>(); //向上处理节点 for (HyOpenAreaInfoDO openAreaInfo : filterList) { - list.add(openAreaInfo); + filterAndParentList.add(openAreaInfo); while (Objects.nonNull(openAreaInfo) && Objects.nonNull(openAreaInfo.getParentId())){ openAreaInfo = openAreaMap.get(openAreaInfo.getParentId()); - if(Objects.isNull(openAreaInfo)){ - continue; + if(Objects.nonNull(openAreaInfo) && !filterAndParentList.contains(openAreaInfo)){ + filterAndParentList.add(openAreaInfo); } - list.add(openAreaInfo); } } log.info("2#耗时:{}", System.currentTimeMillis() - startTime); List resultList = new ArrayList<>(); - List filterFirstArea = list.stream().filter(o -> Objects.isNull(o.getParentId())).distinct().collect(Collectors.toList()); - Map> filterOpenAreaParentMap = list.stream().filter(Objects::nonNull).filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); + List filterFirstArea = filterAndParentList.stream().filter(o -> Objects.isNull(o.getParentId())).collect(Collectors.toList()); + Map> filterOpenAreaParentMap = filterAndParentList.stream().filter(Objects::nonNull).filter(o->Objects.nonNull(o.getParentId())).collect(Collectors.groupingBy(k -> k.getParentId())); for (HyOpenAreaInfoDO openAreaInfo : filterFirstArea) { + Long id = openAreaInfo.getId(); OpenAreaTreeVO node = copyProperties(openAreaInfo); List childList = dealChild(openAreaInfo, filterOpenAreaParentMap); if(CollectionUtils.isEmpty(childList)){ diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java index 71b479450..3ac58a5eb 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/InterviewVO.java @@ -25,6 +25,9 @@ public class InterviewVO { @ApiModelProperty(value = "线索id", required = true) private Long partnerLineId; + @ApiModelProperty(value = "线索状态") + private Long workflowStage; + @ApiModelProperty("资质审核流程id") private String qualifyVerifyId; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java index a62df02c9..1780a81e2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java @@ -76,5 +76,17 @@ public class JobHandler { } } + @XxlJob("approvalReminder") + public void approvalReminder(){ + try { + log.info("审批即将超时提醒开始"); + hyPartnerInterviewPlanService.approvalReminder(); + log.info("审批即将超时提醒结束"); + XxlJobHelper.handleSuccess(); + }catch (Exception e){ + log.error("审批即将超时提醒定时任务异常",e); + XxlJobHelper.log("审批即将超时提醒定时任务异常"+e.getMessage()); + } + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java index c4351a7f1..6d79a8ca1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/HyPartnerInterviewPlanService.java @@ -62,4 +62,5 @@ public interface HyPartnerInterviewPlanService { * @return */ void updateAbsentInterview() throws ApiException; + void approvalReminder() throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java index 9851eb0f8..83b82e4f7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java @@ -72,14 +72,14 @@ public class CommonServiceImpl implements CommonService { if(partnerCertificationInfoDO != null){ intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); } - return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "发起加盟商资质审核|"+intentionContractNo); + return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "发起加盟商资质审核 | "+intentionContractNo); }else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) { HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId); String intentionContractNo = null; if(partnerCertificationInfoDO != null){ intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); } - return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "审核通过|"+intentionContractNo); + return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "审核通过 | "+intentionContractNo); } return null; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java index 392e151ee..47da93a8d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerIntentInfoServiceImpl.java @@ -184,13 +184,16 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic hyPartnerUserInfoDAO.updateByPrimaryKeySelective(hyPartnerUserInfoDO); // 更新线索状态和招商经理 HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(request.getPartnerLineId()); - Boolean flag = hyPartnerLineInfoService.assignFollowUser(request.getPartnerId(), request.getWantShopArea(), request.getAcceptAdjustType()); - hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); - if (flag){ - String investmentManager = hyPartnerLineInfoService.getAssignFollowUser(request.getPartnerId(), "intent"); - hyPartnerLineInfoDO.setInvestmentManager(investmentManager); + //是公海线索 才会修改线索状态与招商经理 + if (LineStatusEnum.PUBLIC_SEAS.getCode().equals(hyPartnerLineInfoDO.getLineStatus())){ + Boolean flag = hyPartnerLineInfoService.assignFollowUser(request.getPartnerId(), request.getWantShopArea(), request.getAcceptAdjustType()); + hyPartnerLineInfoDO.setLineStatus(flag ? LineStatusEnum.PRIVATE_SEAS.getCode() : LineStatusEnum.PUBLIC_SEAS.getCode()); + if (flag){ + String investmentManager = hyPartnerLineInfoService.getAssignFollowUser(request.getPartnerId(), "intent"); + hyPartnerLineInfoDO.setInvestmentManager(investmentManager); + } + hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } - hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO); } if (StringUtil.isNotBlank(request.getWantShopArea())){ HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(request.getWantShopArea())); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index 8caac2ed0..31c0d1b37 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -221,6 +221,16 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan handleOverTimeInterview(interviewBaseInfoList,"超时未面试"); } + @Override + public void approvalReminder() throws ApiException { + //查询即将超时但未审批的面试 + HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); + hyPartnerInterviewPlanDO.setDeleted(Boolean.FALSE); + hyPartnerInterviewPlanDO.setApplicationApproved(0); +// hyPartnerInterviewPlanDO.setStartTime(); + List hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO); + } + /** * 统一处理面试超时情况,包括超时未预约和超时未面试 * @param interviewBaseInfoList diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index 0670591fe..0724c00dd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -587,6 +587,8 @@ public class InterviewServiceImpl implements InterviewService { //根据加盟商用户ID查询面试官ID HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); hyPartnerInterviewPlanDO.setPartnerId(partnerId); + hyPartnerInterviewPlanDO.setPartnerLineId(Long.valueOf(lineId)); + hyPartnerInterviewPlanDO.setDeleted(false); List hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO); //如果查询结果为空,则去线索中获取招商经理,面试官只有两个阶段,一个是在第一次申请时不存在面试安排直接取招商经理,第二个时面试信息中可修改面试官信息,这个时候以面试信息中为准 if (CollectionUtils.isEmpty(hyPartnerInterviewPlanDOS)) {