Commit d76f1994 by wenyang Committed by hongzhong

经纪人签署联合销售接口(多人联合签名,数据动态展示PDF中)

parent 3d09c3b3
...@@ -36,6 +36,7 @@ import com.yd.api.practitioner.vo.subordinate.QueryTeamMemberDetailRequestVO; ...@@ -36,6 +36,7 @@ import com.yd.api.practitioner.vo.subordinate.QueryTeamMemberDetailRequestVO;
import com.yd.api.practitioner.vo.subordinate.QueryTeamMemberDetailResponseVO; import com.yd.api.practitioner.vo.subordinate.QueryTeamMemberDetailResponseVO;
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;
import com.yd.api.practitioner.vo.unionSales.SignUnionSalesRequestVO;
import com.yd.api.result.CommonResultIDResponseVO; import com.yd.api.result.CommonResultIDResponseVO;
import com.yd.api.result.IDRequestVO; import com.yd.api.result.IDRequestVO;
import com.yd.api.result.JsonResult; import com.yd.api.result.JsonResult;
...@@ -741,4 +742,19 @@ public class PractitionerController { ...@@ -741,4 +742,19 @@ public class PractitionerController {
result.setData(responseVO); result.setData(responseVO);
return result; return result;
} }
/**
* 经纪人联合销售签名
* @param SignUnionSalesRequestVO
* @return CommonResultIDResponseVO
* @author Yan Wenyang
*/
@RequestMapping("/signUnionSales")
public Object signUnionSales(@RequestBody SignUnionSalesRequestVO requestVO) {
JsonResult result = new JsonResult();
CommonResultIDResponseVO responseVO = practitionerService.signUnionSales(requestVO);
result.addResult(responseVO);
result.setData(responseVO);
return result;
}
} }
...@@ -18,6 +18,7 @@ import com.yd.api.practitioner.vo.salestarget.*; ...@@ -18,6 +18,7 @@ import com.yd.api.practitioner.vo.salestarget.*;
import com.yd.api.practitioner.vo.setting.*; import com.yd.api.practitioner.vo.setting.*;
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;
import com.yd.api.practitioner.vo.unionSales.SignUnionSalesRequestVO;
import com.yd.api.result.CommonResultIDResponseVO; import com.yd.api.result.CommonResultIDResponseVO;
import com.yd.api.result.IDRequestVO; import com.yd.api.result.IDRequestVO;
import com.yd.dal.entity.customer.AgPoInformed; import com.yd.dal.entity.customer.AgPoInformed;
...@@ -265,4 +266,12 @@ public interface PractitionerService { ...@@ -265,4 +266,12 @@ public interface PractitionerService {
CommonResultIDResponseVO signCommitment(SignCommitmentRequestVO requestVO); CommonResultIDResponseVO signCommitment(SignCommitmentRequestVO requestVO);
QueryCommitmentByPractitionerIdResponseVO queryCommitmentByPractitionerId(PractitionerIdRequestVO requestVO); QueryCommitmentByPractitionerIdResponseVO queryCommitmentByPractitionerId(PractitionerIdRequestVO requestVO);
/**
* 经纪人联合销售签名
* @param SignUnionSalesRequestVO
* @return CommonResultIDResponseVO
* @author Yan Wenyang
*/
CommonResultIDResponseVO signUnionSales(SignUnionSalesRequestVO requestVO);
} }
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.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.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.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
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.Document;
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.libs.pdf.PDFTemplate; import com.libs.pdf.PDFTemplate;
import com.yd.api.customer.service.CustomerService; import com.yd.api.customer.service.CustomerService;
import com.yd.api.customer.vo.register.RegisterRequestVO; import com.yd.api.customer.vo.register.RegisterRequestVO;
...@@ -9,33 +65,136 @@ import com.yd.api.customer.vo.register.RegisterResponseVO; ...@@ -9,33 +65,136 @@ import com.yd.api.customer.vo.register.RegisterResponseVO;
import com.yd.api.practitioner.vo.PractitionerIdRequestVO; import com.yd.api.practitioner.vo.PractitionerIdRequestVO;
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.*; import com.yd.api.practitioner.vo.informed.QueryInformedSheetByIdResponseVO;
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.*; import com.yd.api.practitioner.vo.opportunity.ApplyForExpertSupportRequestVO;
import com.yd.api.practitioner.vo.practitionerCustomer.*; import com.yd.api.practitioner.vo.opportunity.ApplyForExpertSupportResponseVO;
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.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.*; import com.yd.api.practitioner.vo.recruit.AddRecruitTrackRequestVO;
import com.yd.api.practitioner.vo.salestarget.*; import com.yd.api.practitioner.vo.recruit.AddRecruitTrackResponseVO;
import com.yd.api.practitioner.vo.setting.*; 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.setting.ImgDeleteRequestVO;
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;
import com.yd.api.practitioner.vo.subordinate.SubordinateSystemStatisticInfo; import com.yd.api.practitioner.vo.subordinate.SubordinateSystemStatisticInfo;
import com.yd.api.practitioner.vo.unionSales.SignUnionSalesRequestVO;
import com.yd.api.practitioner.vo.unionSales.UnionSalesPractitionerInfo;
import com.yd.api.result.CommonResult; import com.yd.api.result.CommonResult;
import com.yd.api.result.CommonResultIDResponseVO; import com.yd.api.result.CommonResultIDResponseVO;
import com.yd.api.result.IDRequestVO; import com.yd.api.result.IDRequestVO;
import com.yd.dal.entity.customer.*; import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.entity.customer.practitioner.*; import com.yd.dal.entity.customer.AclCustomerLog;
import com.yd.dal.entity.marketing.*; import com.yd.dal.entity.customer.AclCustomerMembership;
import com.yd.dal.entity.meta.*; import com.yd.dal.entity.customer.AclCustomerShare;
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.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;
...@@ -46,9 +205,35 @@ import com.yd.dal.mapper.customer.AclPolicyholderMapper; ...@@ -46,9 +205,35 @@ 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.*; import com.yd.dal.service.customer.AclCustomerDALService;
import com.yd.dal.service.marketing.*; import com.yd.dal.service.customer.AclCustomerFortuneDALService;
import com.yd.dal.service.meta.*; import com.yd.dal.service.customer.AclCustomerLogDALService;
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.user.AclUserDALService; import com.yd.dal.service.user.AclUserDALService;
...@@ -72,31 +257,6 @@ import com.yd.util.CommonUtil; ...@@ -72,31 +257,6 @@ import com.yd.util.CommonUtil;
import com.yd.util.HttpUtil; import com.yd.util.HttpUtil;
import com.yd.util.PDFConfiguration; import com.yd.util.PDFConfiguration;
import com.yd.util.config.ZHBErrorConfig; import com.yd.util.config.ZHBErrorConfig;
import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
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.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@Service("practitionerService") @Service("practitionerService")
public class PractitionerServiceImpl implements com.yd.api.practitioner.service.PractitionerService { public class PractitionerServiceImpl implements com.yd.api.practitioner.service.PractitionerService {
...@@ -4267,4 +4427,339 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service. ...@@ -4267,4 +4427,339 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
return null; return null;
} }
/**
* 经纪人联合销售签名
* @param SignUnionSalesRequestVO
* @return CommonResultIDResponseVO
* @author Yan Wenyang
*/
@SuppressWarnings("unchecked")
public CommonResultIDResponseVO signUnionSales(SignUnionSalesRequestVO requestVO) {
CommonResultIDResponseVO resp = new CommonResultIDResponseVO();
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
Long unionSalesPractitionerId = requestVO.getUnionSalesPractitionerId();
Long unionSalesId = requestVO.getUnionSalesId();
String imgStr = requestVO.getImgStr();
Long practitionerId = requestVO.getPractitionerId();
if (unionSalesPractitionerId == null) {
resp.setCommonResult(new CommonResult(false, "联合销售经纪人不可为空"));
return resp;
}
if (unionSalesId == null) {
resp.setCommonResult(new CommonResult(false, "联合销售ID不可为空"));
return resp;
}
if (practitionerId == null) {
resp.setCommonResult(new CommonResult(false, "经纪人ID不可为空"));
return resp;
}
if (StringUtils.isBlank(imgStr)) {
resp.setCommonResult(new CommonResult(false, "file不可为空"));
return resp;
}
try {
UnionSalesPractitionerInfo unionSalesPractitionerInfo = null;
List<UnionSalesPractitionerInfo> unionSalesPractitioners = aclPractitionerDALService.findUnionSalesPractitionerByUnionSalesId(unionSalesId, unionSalesPractitionerId);
if(unionSalesPractitioners != null && unionSalesPractitioners.size() > 0){
BeanPropertyValueEqualsPredicate predicateClause = new BeanPropertyValueEqualsPredicate("id", unionSalesPractitionerId);
List<UnionSalesPractitionerInfo> unionSalesPractitionerInfos = (List<UnionSalesPractitionerInfo>)CollectionUtils.select(unionSalesPractitioners, predicateClause);
if(unionSalesPractitionerInfos != null && unionSalesPractitionerInfos.size() > 0){
unionSalesPractitionerInfo = unionSalesPractitionerInfos.get(0);
}
}
if (unionSalesPractitionerInfo == null) {
resp.setCommonResult(new CommonResult(false, "联合销售经纪人不存在"));
return resp;
}else if(unionSalesPractitionerInfo.getPractitionerId().longValue() != practitionerId.longValue()) {
resp.setCommonResult(new CommonResult(false, "联合销售经纪人ID 与经纪人不匹配"));
return resp;
}else if(unionSalesPractitionerInfo.getSignStatus() != null && "3".equals(unionSalesPractitionerInfo.getSignStatus())) {
resp.setCommonResult(new CommonResult(false, "不可重复签署"));
return resp;
}
if (imgStr.indexOf("data:image/png;") != -1) {
imgStr = imgStr.replace("data:image/png;base64,", "");
}
byte[] imgBytes = Base64.getDecoder().decode(imgStr);
String templatePDF = PDFConfiguration.getProperty("unionSales.pdf.template");
//模板文件生成临时文件目录
String tmpPathPDF = PDFConfiguration.getProperty("unionSales.pdf.temp.path");
//PDF模板输出临时文件
String templateResultPDF = tmpPathPDF + "signedUnionSalesTemp.pdf";
//PDF模板输出结果文件
String savePath = tmpPathPDF + "signedUnionSales.pdf";
InputStream inputStream = new ByteArrayInputStream(imgBytes);
//下载签名图片
String signPicture = this.getImgStrFilePath(tmpPathPDF, "signUnionSales.png", inputStream);
//生成最终版本的pdf
Map<String,Object> retMap = generateFinalPdf(templatePDF, templateResultPDF, savePath, signPicture, unionSalesPractitioners);
//上传至oss ossService
String ossPath = this.putContractFileToOSS("unionSales", savePath, unionSalesId);
String ossPathImg = this.putContractFileToOSS("unionSales", signPicture, unionSalesPractitionerId);
int singX = 0;
int singY = 0;
if(retMap.get("signX") != null){
singX = (int)retMap.get("signX");
}
if(retMap.get("signY") != null){
singY = (int)retMap.get("signY");
}
String signStatus = "2";
if(retMap.get("signStatus") != null){
signStatus = (String)retMap.get("signStatus");
}
if(!"1".equals(signStatus)){
aclPractitionerDALService.updateUnionSalesPractitioner(unionSalesPractitionerId, ossPathImg, singX, singY, "3");
aclPractitionerDALService.updateUnionSales(unionSalesId, ossPath, signStatus);
}else{
resp.setCommonResult(new CommonResult(false, "签署失败,请联系管理人员!"));
}
} catch (Exception e) {
e.printStackTrace();
resp.setCommonResult(new CommonResult(false, e.getMessage()));
}
return resp;
}
/**
* 生成最终版本的pdf
* @param filePath 模板路径
* @param finalPathTemp 临时文件路径
* @param savePath 最终版本的pdf生成路径
* @param signPicture 签名图片
* @param unionSalesPractitioners 业务数据
* @param void
* @author Yan Wenyang
*/
public static Map<String,Object> generateFinalPdf(String filePath,String filePathTemp,String savePath,String signPicture, List<UnionSalesPractitionerInfo> unionSalesPractitioners) {
Document document = new Document();
PdfWriter writer = null;
Map<String,Object> retMap = new HashMap<String,Object>();
FileOutputStream out = null;
try {
out = new FileOutputStream(filePathTemp);
writer = PdfWriter.getInstance(document, out);
document.open();
//动态生成PDF表格
Paragraph paragraph = generatePdfTable(unionSalesPractitioners);
document.add(paragraph);
//动态把图片插入PDF中
if(unionSalesPractitioners != null && unionSalesPractitioners.size() > 0){
String salesSignUlr = unionSalesPractitioners.get(0).getSalesSignUlr();
if(!StringUtils.isBlank(salesSignUlr)){
for (int i= 0; i< unionSalesPractitioners.size(); i++) {
UnionSalesPractitionerInfo unionSalesPractitionerInfo = unionSalesPractitioners.get(i);
if(unionSalesPractitionerInfo != null && !StringUtils.isBlank(unionSalesPractitionerInfo.getSignUlr())
&& "3".equals(unionSalesPractitionerInfo.getSignStatus())){
InputStream inputStream = null;
ByteArrayOutputStream baos = null;
try {
Map<String, Object> input = HttpUtil.getInput(unionSalesPractitionerInfo.getSignUlr());
if (!(boolean) input.get("success")) {
continue;
}
inputStream = (InputStream) input.get("is");
if (null == inputStream) {
continue;
}
baos = new ByteArrayOutputStream();
byte buff[] = new byte[1024];
int len = 0;
while ((len = inputStream.read(buff)) != -1) {
baos.write(buff, 0, len);
}
baos.flush();
com.itextpdf.text.Image jpg = com.itextpdf.text.Image.getInstance(baos.toByteArray());
jpg.scaleToFit(70, 90);
jpg.setAbsolutePosition(unionSalesPractitionerInfo.getSignX(), unionSalesPractitionerInfo.getSignY());
jpg.setAlignment(com.itextpdf.text.Image.ALIGN_CENTER);
document.add(jpg);
} catch (Exception e) {
e.printStackTrace();
}finally {
if(baos != null){
baos.close();
}
if(inputStream != null){
inputStream.close();
}
}
}
}
}
int signCount = unionSalesPractitioners.get(0).getSignCount();
int x = 100;
if((signCount+1)%3 == 2){
x = 275;
}else if((signCount+1)%3 == 0){
x = 450;
}
int y = 600;
if(signCount/3 > 0){
y = (signCount/3+1)*600;
}
com.itextpdf.text.Image jpg = com.itextpdf.text.Image.getInstance(signPicture);
jpg.scaleToFit(70, 90);
jpg.setAbsolutePosition(x, y);
jpg.setAlignment(com.itextpdf.text.Image.ALIGN_CENTER);
document.add(jpg);
retMap.put("signX", x);
retMap.put("signY", y);
String signStatus = "2";
if(signCount+1 >= unionSalesPractitioners.size()){
signStatus = "3";
}
retMap.put("signStatus", signStatus);
}
} catch (Exception e) {
retMap.put("signStatus", "1");
e.printStackTrace();
}finally {
try {
if(document != null){
document.close();
}
if(out != null){
out.close();
}
if(writer != null){
writer.close();
}
} catch (IOException e) {
retMap.put("signStatus", "1");
e.printStackTrace();
}
}
//多个PDF合并功能
String[] filePaths = {filePath,filePathTemp};
if(!mergePdfFiles(filePaths, savePath, -1)){
retMap.put("signStatus", "1");
}
return retMap;
}
/**
* 多个PDF合并功能
* @param filePaths 多个PDF的路径
* @param savePath 生成的新PDF路径
* @param pages 第几页合并(-1为最后一页)
* @return boolean 成功返回true,失败返回false
* @author Yan Wenyang
*/
public static boolean mergePdfFiles(String[] filePaths,String savePath,int pages){
Document retDocument = null;
PdfCopy copy = null;
boolean boole = true;
try {
if(filePaths != null && filePaths.length > 0){
retDocument = new Document(new PdfReader(filePaths[0]).getPageSize(1));
copy = new PdfCopy(retDocument, new FileOutputStream(savePath));
retDocument.open();
PdfImportedPage page;
for (int i = 0; i < filePaths.length; i++){
PdfReader reader = null;
try {
reader = new PdfReader(filePaths[i]);
int n = reader.getNumberOfPages();
for (int j = 1; j <= n; j++){
//页数为1,一页一页复制
retDocument.newPage();
page = copy.getImportedPage(reader, j);
copy.addPage(page);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(reader != null){
reader.close();
}
}
}
}
} catch (Exception e) {
boole = false;
e.printStackTrace();
}finally {
try {
if(copy != null){
copy.close();
}
if(retDocument != null){
retDocument.close();
}
} catch (Exception e) {
boole = false;
e.printStackTrace();
}
}
return boole;
}
/**
* 动态生成PDF表格
* @param object 动态组排PDF数据集合对象
* @return Paragraph
* @author Yan Wenyang
*/
@SuppressWarnings("unchecked")
public static Paragraph generatePdfTable(Object object) throws Exception {
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.itextpdf.text.Font fontChinese = new com.itextpdf.text.Font(bfChinese, 10.5F, com.itextpdf.text.Font.NORMAL);
Paragraph ret = new Paragraph();
PdfPTable tableBox = new PdfPTable(3);
tableBox.setWidths(new float[] { 0.4f, 0.3f, 0.3f});//每个单元格占多宽
tableBox.setWidthPercentage(80f);
//创建表格格式及内容
tableBox.addCell(getCell(new Phrase("联合销售人信息", fontChinese), 3, 1));
tableBox.addCell(getCell(new Phrase("经纪人", fontChinese), 1, 1));
tableBox.addCell(getCell(new Phrase("分佣比例", fontChinese), 1, 1));
tableBox.addCell(getCell(new Phrase("业绩比例", fontChinese), 1, 1));
if(object != null){
//遍历查询出的结果
List<UnionSalesPractitionerInfo> unionSalesPractitioners = (List<UnionSalesPractitionerInfo>)object;
for (int i= 0; i< unionSalesPractitioners.size(); i++) {
UnionSalesPractitionerInfo unionSalesPractitionerInfo = unionSalesPractitioners.get(i);
if(unionSalesPractitionerInfo != null){
tableBox.addCell(getCell(new Phrase(unionSalesPractitionerInfo.getPractitionerName(), fontChinese), 1, 1));
tableBox.addCell(getCell(new Phrase(unionSalesPractitionerInfo.getCommissionRate().toString() +"%", fontChinese), 1, 1));
tableBox.addCell(getCell(new Phrase(unionSalesPractitionerInfo.getAchievementsRate().toString() +"%", fontChinese), 1, 1));
}
}
}
ret.add(tableBox);
return ret;
}
/**
* 每个cell的格式,合并单元格情况
* @param phrase
* @param colSpan
* @param rowSpan
* @return PdfPCell
* @author Yan Wenyang
*/
public static PdfPCell getCell(Phrase phrase, int colSpan, int rowSpan) {
PdfPCell cells = new PdfPCell(phrase);
cells.setUseAscender(true);
cells.setMinimumHeight(20f);
cells.setHorizontalAlignment(1);
cells.setVerticalAlignment(5);
cells.setColspan(colSpan);
cells.setRowspan(rowSpan);
cells.setNoWrap(false);
return cells;
}
} }
package com.yd.api.practitioner.vo.unionSales;
import lombok.Data;
@Data
public class SignUnionSalesRequestVO {
private Long unionSalesPractitionerId;//联合销售经纪人ID【必填】
private Long unionSalesId;//联合销售ID【必填】
private String imgStr;//签署图片【必填】
private Long practitionerId;//经纪人ID【必填】
private String practitionerName;//经纪人名称
}
package com.yd.api.practitioner.vo.unionSales;
public class UnionSalesPractitionerInfo {
private Long id;//主键IDPRIauto_increment
private Long unionSalesId;//联合销售ID
private Long practitionerId;//经纪人ID
private String practitionerName;//经纪人名称
private Double commissionRate;//分佣比例
private Double achievementsRate;//业绩比例
private String signStatus;//签署状态(1:待签署;2:签署中;3:已签署)
private String signDate;//签署日期
private String signUlr;//签署文件
private int signX;//签署位置X
private int signY;//签署位置Y
private String flag;//标识
private String remark;//备注
private Integer isActive;//是否启用(0=No, 1=Yes)
private int signCount;//已签署总数
private String salesSignUlr;//签署文件URl
/**
* @return the id
*/
public Long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Long id) {
this.id = id;
}
/**
* @return the unionSalesId
*/
public Long getUnionSalesId() {
return unionSalesId;
}
/**
* @param unionSalesId the unionSalesId to set
*/
public void setUnionSalesId(Long unionSalesId) {
this.unionSalesId = unionSalesId;
}
/**
* @return the practitionerId
*/
public Long getPractitionerId() {
return practitionerId;
}
/**
* @param practitionerId the practitionerId to set
*/
public void setPractitionerId(Long practitionerId) {
this.practitionerId = practitionerId;
}
/**
* @return the practitionerName
*/
public String getPractitionerName() {
return practitionerName;
}
/**
* @param practitionerName the practitionerName to set
*/
public void setPractitionerName(String practitionerName) {
this.practitionerName = practitionerName;
}
/**
* @return the commissionRate
*/
public Double getCommissionRate() {
return commissionRate;
}
/**
* @param commissionRate the commissionRate to set
*/
public void setCommissionRate(Double commissionRate) {
this.commissionRate = commissionRate;
}
/**
* @return the achievementsRate
*/
public Double getAchievementsRate() {
return achievementsRate;
}
/**
* @param achievementsRate the achievementsRate to set
*/
public void setAchievementsRate(Double achievementsRate) {
this.achievementsRate = achievementsRate;
}
/**
* @return the signStatus
*/
public String getSignStatus() {
return signStatus;
}
/**
* @param signStatus the signStatus to set
*/
public void setSignStatus(String signStatus) {
this.signStatus = signStatus;
}
/**
* @return the signDate
*/
public String getSignDate() {
return signDate;
}
/**
* @param signDate the signDate to set
*/
public void setSignDate(String signDate) {
this.signDate = signDate;
}
/**
* @return the signUlr
*/
public String getSignUlr() {
return signUlr;
}
/**
* @param signUlr the signUlr to set
*/
public void setSignUlr(String signUlr) {
this.signUlr = signUlr;
}
/**
* @return the flag
*/
public String getFlag() {
return flag;
}
/**
* @param flag the flag to set
*/
public void setFlag(String flag) {
this.flag = flag;
}
/**
* @return the remark
*/
public String getRemark() {
return remark;
}
/**
* @param remark the remark to set
*/
public void setRemark(String remark) {
this.remark = remark;
}
/**
* @return the isActive
*/
public Integer getIsActive() {
return isActive;
}
/**
* @param isActive the isActive to set
*/
public void setIsActive(Integer isActive) {
this.isActive = isActive;
}
/**
* @return the signCount
*/
public int getSignCount() {
return signCount;
}
/**
* @param signCount the signCount to set
*/
public void setSignCount(int signCount) {
this.signCount = signCount;
}
/**
* @return the salesSignUlr
*/
public String getSalesSignUlr() {
return salesSignUlr;
}
/**
* @param salesSignUlr the salesSignUlr to set
*/
public void setSalesSignUlr(String salesSignUlr) {
this.salesSignUlr = salesSignUlr;
}
/**
* @return the signX
*/
public int getSignX() {
return signX;
}
/**
* @param signX the signX to set
*/
public void setSignX(int signX) {
this.signX = signX;
}
/**
* @return the signY
*/
public int getSignY() {
return signY;
}
/**
* @param signY the signY to set
*/
public void setSignY(int signY) {
this.signY = signY;
}
}
package com.yd.dal.mapper.customer; package com.yd.dal.mapper.customer;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo;import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail;import com.yd.dal.entity.customer.AclPractitioner; import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail;
import com.yd.api.practitioner.vo.unionSales.UnionSalesPractitionerInfo;
import com.yd.dal.entity.customer.AclPractitioner;
import java.util.List; import java.util.List;
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.practitioner.opportunity.OwnOpportunityInfo;import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;import com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo;import org.apache.ibatis.annotations.Param; 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.practitioner.opportunity.OwnOpportunityInfo;import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;import com.yd.dal.entity.practitioner.payscale.PayScaleBasicInfo;import org.apache.ibatis.annotations.Param;
...@@ -98,4 +101,36 @@ public interface AclPractitionerMapper { ...@@ -98,4 +101,36 @@ public interface AclPractitionerMapper {
public List<TeamMemberDetail> queryTeamMemberDetailRaiseList(List<Long> practitionerIdList); public List<TeamMemberDetail> queryTeamMemberDetailRaiseList(List<Long> practitionerIdList);
public AclPractitioner findPractitionerByRaise(Long practitionerId); public AclPractitioner findPractitionerByRaise(Long practitionerId);
}
/**
* 通过联合销售ID查询联合销售经纪人信息列表
* @param unionSalesId 联合销售ID
* @param unionSalesPractitionerId 联合销售经纪人ID
* @return List<UnionSalesPractitionerInfo> 业务对象列表
* @author Yan Wenyang
*/
List<UnionSalesPractitionerInfo> findUnionSalesPractitionerByUnionSalesId(@Param("unionSalesId")Long unionSalesId, @Param("unionSalesPractitionerId")Long unionSalesPractitionerId);
/**
* 更新联合销售经纪人信息
* @param unionSalesPractitionerId 联合销售经纪人ID
* @param ossPathImg 签署图片
* @param singX 签署位置X
* @param singY 签署位置Y
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
void updateUnionSalesPractitioner(@Param("unionSalesPractitionerId")Long unionSalesPractitionerId, @Param("ossPathImg")String ossPathImg, @Param("singX")int singX, @Param("singY")int singY, @Param("signStatus")String signStatus);
/**
* 更新联合销售信息
* @param unionSalesId 联合销售ID
* @param ossPath 签署文件
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
void updateUnionSales(@Param("unionSalesId")Long unionSalesId, @Param("ossPath")String ossPath, @Param("signStatus")String signStatus);
}
...@@ -2,6 +2,7 @@ package com.yd.dal.service.customer; ...@@ -2,6 +2,7 @@ package com.yd.dal.service.customer;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo; import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail; import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail;
import com.yd.api.practitioner.vo.unionSales.UnionSalesPractitionerInfo;
import com.yd.dal.entity.customer.AclCustomer; import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo; import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;
import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo; import com.yd.dal.entity.practitioner.opportunity.OwnOpportunityInfo;
...@@ -229,4 +230,35 @@ public interface AclPractitionerDALService { ...@@ -229,4 +230,35 @@ public interface AclPractitionerDALService {
* @return * @return
*/ */
AclPractitioner findPractitionerByRaise(Long practitionerId); AclPractitioner findPractitionerByRaise(Long practitionerId);
/**
* 通过联合销售ID查询联合销售经纪人信息列表
* @param unionSalesId 联合销售ID
* @param unionSalesPractitionerId 联合销售经纪人ID
* @return List<UnionSalesPractitionerInfo> 业务对象列表
* @author Yan Wenyang
*/
List<UnionSalesPractitionerInfo> findUnionSalesPractitionerByUnionSalesId(Long unionSalesId, Long unionSalesPractitionerId);
/**
* 更新联合销售经纪人信息
* @param unionSalesPractitionerId 联合销售经纪人ID
* @param ossPathImg 签署图片
* @param singX 签署位置X
* @param singY 签署位置Y
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
void updateUnionSalesPractitioner(Long unionSalesPractitionerId, String ossPathImg, int singX, int singY, String signStatus);
/**
* 更新联合销售信息
* @param unionSalesId 联合销售ID
* @param ossPath 签署文件
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
void updateUnionSales(Long unionSalesId, String ossPath, String signStatus);
} }
...@@ -4,6 +4,7 @@ import com.google.common.base.Strings; ...@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import com.yd.api.practitioner.service.PractitionerService; import com.yd.api.practitioner.service.PractitionerService;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo; import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail; import com.yd.api.practitioner.vo.subordinate.TeamMemberDetail;
import com.yd.api.practitioner.vo.unionSales.UnionSalesPractitionerInfo;
import com.yd.dal.entity.customer.AclCustomer; import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.entity.customer.AclPractitionerSubordinateSystem; import com.yd.dal.entity.customer.AclPractitionerSubordinateSystem;
import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo; import com.yd.dal.entity.practitioner.opportunity.PlayerSalesActivityInfo;
...@@ -336,4 +337,45 @@ public class AclPractitionerDALServiceImpl implements AclPractitionerDALService ...@@ -336,4 +337,45 @@ public class AclPractitionerDALServiceImpl implements AclPractitionerDALService
public AclPractitioner findPractitionerByRaise(Long practitionerId) { public AclPractitioner findPractitionerByRaise(Long practitionerId) {
return aclPractitionerMapper.findPractitionerByRaise(practitionerId); return aclPractitionerMapper.findPractitionerByRaise(practitionerId);
} }
/**
* 通过联合销售ID查询联合销售经纪人信息列表
* @param unionSalesId 联合销售ID
* @param unionSalesPractitionerId 联合销售经纪人ID
* @return List<UnionSalesPractitionerInfo> 业务对象列表
* @author Yan Wenyang
*/
@Override
public List<UnionSalesPractitionerInfo> findUnionSalesPractitionerByUnionSalesId(Long unionSalesId, Long unionSalesPractitionerId){
return aclPractitionerMapper.findUnionSalesPractitionerByUnionSalesId(unionSalesId, unionSalesPractitionerId);
}
/**
* 更新联合销售经纪人信息
* @param unionSalesPractitionerId 联合销售经纪人ID
* @param ossPathImg 签署图片
* @param singX 签署位置X
* @param singY 签署位置Y
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
@Override
public void updateUnionSalesPractitioner(Long unionSalesPractitionerId, String ossPathImg, int singX, int singY, String signStatus){
aclPractitionerMapper.updateUnionSalesPractitioner(unionSalesPractitionerId, ossPathImg, singX, singY, signStatus);
}
/**
* 更新联合销售信息
* @param unionSalesId 联合销售ID
* @param ossPath 签署文件
* @param signStatus 签署状态
* @return void
* @author Yan Wenyang
*/
@Override
public void updateUnionSales(Long unionSalesId, String ossPath, String signStatus){
aclPractitionerMapper.updateUnionSales(unionSalesId, ossPath, signStatus);
}
} }
...@@ -2016,4 +2016,43 @@ ...@@ -2016,4 +2016,43 @@
from ag_acl_practitioner from ag_acl_practitioner
where raise_id = #{practitionerId,jdbcType=BIGINT} where raise_id = #{practitionerId,jdbcType=BIGINT}
</select> </select>
<select id="findUnionSalesPractitionerByUnionSalesId" resultType="com.yd.api.practitioner.vo.unionSales.UnionSalesPractitionerInfo">
select
t.id as id,
t.union_sales_id as unionSalesId,
t.practitioner_id as practitionerId,
t.practitioner_name as practitionerName,
t.commission_rate as commissionRate,
t.achievements_rate as achievementsRate,
t.sign_status as signStatus,
t.sign_date as signDate,
t.sign_url as signUlr,
t.signX as signX,
t.signY as signY,
t.flag as flag,
t.is_active as isActive,
(select count(a.id) from ag_acl_union_sales_practitioner a where a.is_active = 1 and a.sign_status ='3' and a.union_sales_id = t.union_sales_id) as signCount,
(SELECT us.sign_url FROM ag_acl_union_sales us WHERE us.is_active = 1 AND us.id = t.union_sales_id) AS salesSignUlr
from ag_acl_union_sales_practitioner t where t.is_active = 1 and t.union_sales_id= #{unionSalesId}
</select>
<update id="updateUnionSalesPractitioner">
update ag_acl_union_sales_practitioner
set sign_url = #{ossPathImg},
signX = #{singX},
signY = #{singY},
sign_status = #{signStatus},
sign_date = NOW()
where id = #{unionSalesPractitionerId}
</update>
<update id="updateUnionSales">
update ag_acl_union_sales
set sign_url = #{ossPath},
sign_status = #{signStatus},
sign_date = NOW()
where id = #{unionSalesId}
</update>
</mapper> </mapper>
...@@ -24,3 +24,6 @@ informed.pdf.temp.path=/opt/tomcat8/conf/ydpdf/informed ...@@ -24,3 +24,6 @@ informed.pdf.temp.path=/opt/tomcat8/conf/ydpdf/informed
#\u7EED\u4FDD\u627F\u8BFA\u4E66\u76EE\u5F55 #\u7EED\u4FDD\u627F\u8BFA\u4E66\u76EE\u5F55
commitment.pdf.template=/opt/tomcat8/conf/ydpdf/commitment/templateCommitment.pdf commitment.pdf.template=/opt/tomcat8/conf/ydpdf/commitment/templateCommitment.pdf
commitment.pdf.temp.path=/opt/tomcat8/conf/ydpdf/commitment commitment.pdf.temp.path=/opt/tomcat8/conf/ydpdf/commitment
unionSales.pdf.template=/opt/tomcat8/conf/ydpdf/unionSales/templateUnionSalest.pdf
unionSales.pdf.temp.path=/opt/tomcat8/conf/ydpdf/unionSales/
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