Commit 68222f12 by jianan

商机回访排序

parent 8b96d0f1
package com.yd.api.practitioner.service.impl; package com.yd.api.practitioner.service.impl;
import static java.util.stream.Collectors.toList;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Base64;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.itextpdf.text.BaseColor; import com.itextpdf.text.*;
import com.itextpdf.text.Chunk; import com.itextpdf.text.pdf.*;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.LineSeparator; import com.itextpdf.text.pdf.draw.LineSeparator;
import com.libs.pdf.PDFTemplate; import com.libs.pdf.PDFTemplate;
import com.yd.api.customer.service.CustomerService; import com.yd.api.customer.service.CustomerService;
...@@ -83,97 +20,24 @@ import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardRequestVO ...@@ -83,97 +20,24 @@ import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardRequestVO
import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardResponseVO; import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardResponseVO;
import com.yd.api.practitioner.vo.commitment.QueryCommitmentByPractitionerIdResponseVO; import com.yd.api.practitioner.vo.commitment.QueryCommitmentByPractitionerIdResponseVO;
import com.yd.api.practitioner.vo.commitment.SignCommitmentRequestVO; import com.yd.api.practitioner.vo.commitment.SignCommitmentRequestVO;
import com.yd.api.practitioner.vo.informed.QueryInformedSheetByIdResponseVO; import com.yd.api.practitioner.vo.informed.*;
import com.yd.api.practitioner.vo.informed.QueryInformedSheetListRequestVO;
import com.yd.api.practitioner.vo.informed.QueryInformedSheetListResponseVO;
import com.yd.api.practitioner.vo.informed.SaveInformedSheetRequestVO;
import com.yd.api.practitioner.vo.informed.SignInformedSheetRequestVO;
import com.yd.api.practitioner.vo.informed.UpdateInformedSheetByIdRequestVO;
import com.yd.api.practitioner.vo.login.CanSeeSalaryListResponseVO; import com.yd.api.practitioner.vo.login.CanSeeSalaryListResponseVO;
import com.yd.api.practitioner.vo.login.PractitionerLoginBasicInfo; import com.yd.api.practitioner.vo.login.PractitionerLoginBasicInfo;
import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO; import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO;
import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO; import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO;
import com.yd.api.practitioner.vo.media.MediaGetReqVO; import com.yd.api.practitioner.vo.media.MediaGetReqVO;
import com.yd.api.practitioner.vo.media.MediaGetRespVO; import com.yd.api.practitioner.vo.media.MediaGetRespVO;
import com.yd.api.practitioner.vo.opportunity.ApplyForExpertSupportRequestVO; import com.yd.api.practitioner.vo.opportunity.*;
import com.yd.api.practitioner.vo.opportunity.ApplyForExpertSupportResponseVO; import com.yd.api.practitioner.vo.practitionerCustomer.*;
import com.yd.api.practitioner.vo.opportunity.OpportunityBasicInformationInfo;
import com.yd.api.practitioner.vo.opportunity.OpportunityConsultationInfo;
import com.yd.api.practitioner.vo.opportunity.OpportunityCustomerTag;
import com.yd.api.practitioner.vo.opportunity.OpportunityDeleteRequestVO;
import com.yd.api.practitioner.vo.opportunity.OpportunityRecordInfo;
import com.yd.api.practitioner.vo.opportunity.OpportunityRecordSituationInfo;
import com.yd.api.practitioner.vo.opportunity.OpportunityScore;
import com.yd.api.practitioner.vo.opportunity.OpportunityStatisticsRequestVO;
import com.yd.api.practitioner.vo.opportunity.OpportunityStatisticsResponseVO;
import com.yd.api.practitioner.vo.opportunity.OpportunitySurveyAnswers;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityBasicInformationSaveRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityBasicInformationSaveResponseVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityDetailQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityDetailQueryResponseVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityQueryResponseVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityRecordSaveRequestVO;
import com.yd.api.practitioner.vo.opportunity.OwnOpportunityRecordSaveResponseVO;
import com.yd.api.practitioner.vo.opportunity.PlayerSalesActivityQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.PlayerSalesActivityQueryResponseVO;
import com.yd.api.practitioner.vo.opportunity.SalesPerformanceForecastInfo;
import com.yd.api.practitioner.vo.opportunity.SalesPerformanceForecastListQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.SalesPerformanceForecastListQueryResponseVO;
import com.yd.api.practitioner.vo.opportunity.SalesScoreDetail;
import com.yd.api.practitioner.vo.opportunity.SalesScoreDetailQueryRequestVO;
import com.yd.api.practitioner.vo.opportunity.SalesScoreDetailQueryResponseVO;
import com.yd.api.practitioner.vo.practitionerCustomer.CustomerHolder;
import com.yd.api.practitioner.vo.practitionerCustomer.QueryCustomerHolderListResponesVO;
import com.yd.api.practitioner.vo.practitionerCustomer.QueryCustomerInsuredListRequestVO;
import com.yd.api.practitioner.vo.practitionerCustomer.QueryCustomerInsuredListResponesVO;
import com.yd.api.practitioner.vo.practitionerCustomer.QueryPolicyListByHolderCustomerIdRequestVO;
import com.yd.api.practitioner.vo.practitionerCustomer.QueryPolicyListByHolderCustomerIdResponesVO;
import com.yd.api.practitioner.vo.rank.AclCustomerFortuneStatistics; import com.yd.api.practitioner.vo.rank.AclCustomerFortuneStatistics;
import com.yd.api.practitioner.vo.rank.PractitionerInfoForAchievement; import com.yd.api.practitioner.vo.rank.PractitionerInfoForAchievement;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO; import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO; import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.recruit.AddRecruitTrackRequestVO; import com.yd.api.practitioner.vo.recruit.*;
import com.yd.api.practitioner.vo.recruit.AddRecruitTrackResponseVO; import com.yd.api.practitioner.vo.salestarget.*;
import com.yd.api.practitioner.vo.recruit.PotentialActivityQueryRequestVO;
import com.yd.api.practitioner.vo.recruit.PotentialActivityQueryResponseVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsActionsInfo;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsActionsQueryRequestVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsActionsQueryResponseVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsActionsUpdateRequestVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsActionsUpdateResponseVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsQueryRequestVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsQueryResponseVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsSettingRequestVO;
import com.yd.api.practitioner.vo.recruit.PotentialGoalsSettingResponseVO;
import com.yd.api.practitioner.vo.recruit.PractitionerPotentialInfo;
import com.yd.api.practitioner.vo.recruit.RecruitGoalForMonth;
import com.yd.api.practitioner.vo.recruit.RecruitListRequestVO;
import com.yd.api.practitioner.vo.recruit.RecruitListResponseVO;
import com.yd.api.practitioner.vo.recruit.RecruitRequestVO;
import com.yd.api.practitioner.vo.recruit.RecruitResponseVO;
import com.yd.api.practitioner.vo.recruit.RecruitTrackInfo;
import com.yd.api.practitioner.vo.recruit.RecruitTrackQueryRequestVO;
import com.yd.api.practitioner.vo.recruit.RecruitTrackQueryResponseVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetActions;
import com.yd.api.practitioner.vo.salestarget.SalesTargetMonth;
import com.yd.api.practitioner.vo.salestarget.SalesTargetMonthSaveRequestVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetMonthSaveResponseVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetQueryRequestVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetQueryResponseVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetSaveRequestVO;
import com.yd.api.practitioner.vo.salestarget.SalesTargetSaveResponseVO;
import com.yd.api.practitioner.vo.salestarget.TeamActionsAverageQueryRequestVO;
import com.yd.api.practitioner.vo.salestarget.TeamActionsAverageQueryResponseVO;
import com.yd.api.practitioner.vo.sechedule.AddScheduleTrackRequestVO; import com.yd.api.practitioner.vo.sechedule.AddScheduleTrackRequestVO;
import com.yd.api.practitioner.vo.sechedule.AddScheduleTrackResponseVO; import com.yd.api.practitioner.vo.sechedule.AddScheduleTrackResponseVO;
import com.yd.api.practitioner.vo.setting.ImgDeleteRequestVO; import com.yd.api.practitioner.vo.setting.*;
import com.yd.api.practitioner.vo.setting.ImgDeleteResponseVO;
import com.yd.api.practitioner.vo.setting.LifeImg;
import com.yd.api.practitioner.vo.setting.SettingQueryRequestVO;
import com.yd.api.practitioner.vo.setting.SettingQueryResponseVO;
import com.yd.api.practitioner.vo.setting.SettingSaveRequestVO;
import com.yd.api.practitioner.vo.setting.SettingSaveResponseVO;
import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberInfo; import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberInfo;
import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryRequestVO; import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryRequestVO;
import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryResponseVO; import com.yd.api.practitioner.vo.subordinate.SubordinateSystemMemberQueryResponseVO;
...@@ -184,40 +48,10 @@ import com.yd.api.result.CommonResult; ...@@ -184,40 +48,10 @@ import com.yd.api.result.CommonResult;
import com.yd.api.result.CommonResultIDResponseVO; import com.yd.api.result.CommonResultIDResponseVO;
import com.yd.api.result.CommonResultResponseVO; import com.yd.api.result.CommonResultResponseVO;
import com.yd.api.result.IDRequestVO; import com.yd.api.result.IDRequestVO;
import com.yd.dal.entity.customer.AclCustomer; import com.yd.dal.entity.customer.*;
import com.yd.dal.entity.customer.AclCustomerLog; import com.yd.dal.entity.customer.practitioner.*;
import com.yd.dal.entity.customer.AclCustomerMembership; import com.yd.dal.entity.marketing.*;
import com.yd.dal.entity.customer.AclCustomerShare; import com.yd.dal.entity.meta.*;
import com.yd.dal.entity.customer.AclFileUpload;
import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.AclPractitionerPotential;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssigneds;
import com.yd.dal.entity.customer.AclPractitionerPotentialGoals;
import com.yd.dal.entity.customer.AclPractitionerPotentialGoalsActions;
import com.yd.dal.entity.customer.AclPractitionerSetting;
import com.yd.dal.entity.customer.AclPractitionerSubordinateSystem;
import com.yd.dal.entity.customer.AgPoInformed;
import com.yd.dal.entity.customer.CustomerFileUpload;
import com.yd.dal.entity.customer.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerRankInfo;
import com.yd.dal.entity.customer.practitioner.PractitionerSubordinateInfo;
import com.yd.dal.entity.customer.practitioner.SubordinateSystemMemberInfoE;
import com.yd.dal.entity.marketing.AgSfpAppointmentRecord;
import com.yd.dal.entity.marketing.MktLeadsAssignedTrack;
import com.yd.dal.entity.marketing.MktLeadsAssigneds;
import com.yd.dal.entity.marketing.MktLeadsExpertAssign;
import com.yd.dal.entity.marketing.MktLeadsExpertRequest;
import com.yd.dal.entity.marketing.MktLeadsGoals;
import com.yd.dal.entity.marketing.MktLeadsGoalsActions;
import com.yd.dal.entity.marketing.MktLeadsPool;
import com.yd.dal.entity.meta.MdDropMaster;
import com.yd.dal.entity.meta.MdDropOptions;
import com.yd.dal.entity.meta.MdGoalsCalculateExpression;
import com.yd.dal.entity.meta.MdMkCampaign;
import com.yd.dal.entity.meta.MdTag;
import com.yd.dal.entity.meta.ObjectCollectionTagged;
import com.yd.dal.entity.order.CustomerPolicyInfo; import com.yd.dal.entity.order.CustomerPolicyInfo;
import com.yd.dal.entity.order.PoOrder; import com.yd.dal.entity.order.PoOrder;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
...@@ -229,35 +63,9 @@ import com.yd.dal.mapper.customer.AclPolicyholderMapper; ...@@ -229,35 +63,9 @@ import com.yd.dal.mapper.customer.AclPolicyholderMapper;
import com.yd.dal.mapper.customer.AgPoInformedMapper; import com.yd.dal.mapper.customer.AgPoInformedMapper;
import com.yd.dal.mapper.marketing.MktLeadsAssignedsMapper; import com.yd.dal.mapper.marketing.MktLeadsAssignedsMapper;
import com.yd.dal.service.agms.AgmsDashboardDALService; import com.yd.dal.service.agms.AgmsDashboardDALService;
import com.yd.dal.service.customer.AclCustomerDALService; import com.yd.dal.service.customer.*;
import com.yd.dal.service.customer.AclCustomerFortuneDALService; import com.yd.dal.service.marketing.*;
import com.yd.dal.service.customer.AclCustomerLogDALService; import com.yd.dal.service.meta.*;
import com.yd.dal.service.customer.AclCustomerMembershipDALService;
import com.yd.dal.service.customer.AclCustomerShareDALService;
import com.yd.dal.service.customer.AclFileUploadDALService;
import com.yd.dal.service.customer.AclPractitionerDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialAssignedTrackDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialAssignedsDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialGoalsActionsDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialGoalsDALService;
import com.yd.dal.service.customer.AclPractitionerSettingDALService;
import com.yd.dal.service.customer.AclPractitionerSubordinateSystemDALService;
import com.yd.dal.service.marketing.MktLeadsAssignedTrackDALService;
import com.yd.dal.service.marketing.MktLeadsAssignedsDALService;
import com.yd.dal.service.marketing.MktLeadsExpertAssignDALService;
import com.yd.dal.service.marketing.MktLeadsExpertRequestDALService;
import com.yd.dal.service.marketing.MktLeadsGoalsActionsDALService;
import com.yd.dal.service.marketing.MktLeadsGoalsDALService;
import com.yd.dal.service.marketing.MktLeadsPoolDALService;
import com.yd.dal.service.meta.MdCodeDALService;
import com.yd.dal.service.meta.MdDropMasterDALService;
import com.yd.dal.service.meta.MdDropOptionsDALService;
import com.yd.dal.service.meta.MdGoalsCalculateExpressionDALService;
import com.yd.dal.service.meta.MdGoalsCalculateExpressionService;
import com.yd.dal.service.meta.MdMkCampaignDALService;
import com.yd.dal.service.meta.MdTagDALService;
import com.yd.dal.service.meta.ObjectCollectionTaggedDALService;
import com.yd.dal.service.order.PoOrderDALService; import com.yd.dal.service.order.PoOrderDALService;
import com.yd.dal.service.survey.SurveyCustomerAnswersDALService; import com.yd.dal.service.survey.SurveyCustomerAnswersDALService;
import com.yd.dal.service.systemMessage.AclSystemMessageService; import com.yd.dal.service.systemMessage.AclSystemMessageService;
...@@ -278,23 +86,44 @@ import com.yd.rmi.n22.staff.service.N22StaffService; ...@@ -278,23 +86,44 @@ import com.yd.rmi.n22.staff.service.N22StaffService;
import com.yd.rmi.tencent.wechat.service.WechatService; import com.yd.rmi.tencent.wechat.service.WechatService;
import com.yd.rmi.tencent.wechat.vo.WeChatInfoByENV; import com.yd.rmi.tencent.wechat.vo.WeChatInfoByENV;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.DataDetailInfo; import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.*;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.MiniProgramSfpInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.SendTemplateRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.SendTemplateSfpRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.TemplateDataInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest; import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest; import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest;
import com.yd.rmi.tencent.wechatinterf.service.WechatInterfService; import com.yd.rmi.tencent.wechatinterf.service.WechatInterfService;
import com.yd.util.CommonUtil; import com.yd.util.*;
import com.yd.util.HttpUtil;
import com.yd.util.JsonUtil;
import com.yd.util.PDFConfiguration;
import com.yd.util.SpringContextUtil;
import com.yd.util.config.ZHBErrorConfig; import com.yd.util.config.ZHBErrorConfig;
import com.yd.util.deshandler.DESTypeHandler; import com.yd.util.deshandler.DESTypeHandler;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.imageio.ImageIO;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@Service("practitionerService") @Service("practitionerService")
@Slf4j @Slf4j
...@@ -1065,6 +894,7 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -1065,6 +894,7 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
opportunityDateMap.put(poOrder.getCustomerId(), poOrder.getId()); opportunityDateMap.put(poOrder.getCustomerId(), poOrder.getId());
} }
} }
List<OwnOpportunityInfo> ownOpportunityInfos = aclPractitionerDALService.ownOpportunityQuery(practitionerId); List<OwnOpportunityInfo> ownOpportunityInfos = aclPractitionerDALService.ownOpportunityQuery(practitionerId);
for (OwnOpportunityInfo info : ownOpportunityInfos) { for (OwnOpportunityInfo info : ownOpportunityInfos) {
info.setOrderId(opportunityDateMap.get(info.getOpportunityId())); info.setOrderId(opportunityDateMap.get(info.getOpportunityId()));
...@@ -1072,10 +902,11 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -1072,10 +902,11 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
DESTypeHandler jpaCryptoConverter = new DESTypeHandler(); DESTypeHandler jpaCryptoConverter = new DESTypeHandler();
info.setMobileNo(jpaCryptoConverter.decode(info.getMobileNo())); info.setMobileNo(jpaCryptoConverter.decode(info.getMobileNo()));
} }
} }
responseVO.setOwnOpportunityInfos(ownOpportunityInfos); //根据回访状态排序
List<OwnOpportunityInfo> list = sort(ownOpportunityInfos);
responseVO.setOwnOpportunityInfos(list);
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000"))); responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO; return responseVO;
} }
...@@ -1823,6 +1654,30 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -1823,6 +1654,30 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
return responseVO; return responseVO;
} }
/**
* 1.未回访的排在最上面
* 2.已回访的记录按回访时间升序排列
* 3.没有回访状态的按原来的排序逻辑
*
*/
private List<OwnOpportunityInfo> sort(List<OwnOpportunityInfo> ownOpportunityInfos) {
List<OwnOpportunityInfo> list1 = new ArrayList<>();
List<OwnOpportunityInfo> list2 = new ArrayList<>();
//商机分组
for (OwnOpportunityInfo opportunity : ownOpportunityInfos) {
if (opportunity.getReturnVisitTime() != null) {
list2.add(opportunity);
} else {
list1.add(opportunity);
}
}
//未跟进的排在最上面,已回访的记录按回访时间升序排列
list2.sort(Comparator.comparing(OwnOpportunityInfo::getReturnVisitTime));
list1.addAll(list2);
return list1;
}
private void getResponseMessage(List<PractitionerPotentialInfo> potentialInfoList, Map<Long, String> trackStatusMap, Map<Long, String> recruitSourceMap, PractitionerPotentialInfo item, Map<Long, String> remarkMap, Map<Long, Date> timeToOnBoardingMap) { private void getResponseMessage(List<PractitionerPotentialInfo> potentialInfoList, Map<Long, String> trackStatusMap, Map<Long, String> recruitSourceMap, PractitionerPotentialInfo item, Map<Long, String> remarkMap, Map<Long, Date> timeToOnBoardingMap) {
PractitionerPotentialInfo potentialInfo = new PractitionerPotentialInfo(); PractitionerPotentialInfo potentialInfo = new PractitionerPotentialInfo();
......
package com.yd.dal.entity.practitioner.opportunity; package com.yd.dal.entity.practitioner.opportunity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class OwnOpportunityInfo { public class OwnOpportunityInfo {
private Long opportunityId; private Long opportunityId;
...@@ -17,5 +20,6 @@ public class OwnOpportunityInfo { ...@@ -17,5 +20,6 @@ public class OwnOpportunityInfo {
private Long expertType;//0.经纪人指派 1.专家指派 private Long expertType;//0.经纪人指派 1.专家指派
private Long sfpMainId; private Long sfpMainId;
private String wechatNo; private String wechatNo;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date returnVisitTime;
} }
...@@ -1519,6 +1519,7 @@ ...@@ -1519,6 +1519,7 @@
<result column="expertType" property="expertType" /> <result column="expertType" property="expertType" />
<result column="sfpMainId" property="sfpMainId" /> <result column="sfpMainId" property="sfpMainId" />
<result column="wechatNo" property="wechatNo" /> <result column="wechatNo" property="wechatNo" />
<result column="returnVisitTime" property="returnVisitTime" />
</resultMap> </resultMap>
<select id="ownOpportunityQuery" resultMap="opportunityQuery"> <select id="ownOpportunityQuery" resultMap="opportunityQuery">
SELECT SELECT
...@@ -1535,7 +1536,8 @@ ...@@ -1535,7 +1536,8 @@
p.remark remark, p.remark remark,
p.appointment_record_id appointmentRecordId, p.appointment_record_id appointmentRecordId,
p.sfp_main_id sfpMainId, p.sfp_main_id sfpMainId,
c.wechat_no wechatNo c.wechat_no wechatNo,
(SELECT t.created_at from ag_mkt_leads_assigned_track t LEFT JOIN ag_md_drop_options op ON op.id = t.md_drop_option_id where t.leads_assigned_id = a.id and op.drop_option_code='returnvisit' ORDER BY t.created_at DESC LIMIT 1) returnVisitTime
FROM FROM
ag_mkt_leads_assigneds a ag_mkt_leads_assigneds a
left join ag_mkt_leads_expert_request r on r.customer_id = a.customer_id and r.is_active =1 left join ag_mkt_leads_expert_request r on r.customer_id = a.customer_id and r.is_active =1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment