Commit a169324f by jianan

4and5-保单发佣明细报表4

parent 5e5a8c4c
......@@ -233,6 +233,20 @@ public class AgmsController {
}
/**
* AGMS -- 保单发佣清算明细报表导出
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/exportCommissionPayoutStatusQuerySheet2")
public Object exportCommissionPayoutStatusQuerySheet2(@RequestBody CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
ExportCommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.exportCommissionPayoutStatusQuerySheet2(requestVO,response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* AGMS -- 导出财富文档
* @param requestVO 请求数据
* @return 响应数据
......
......@@ -66,4 +66,6 @@ public interface AgmsFortuneService {
FortunePayoutBatchQueryResponseVO fortunePayoutBatchQuery();
ExportCommissionPayoutStatusQueryResponseVO exportCommissionPayoutStatusQuery(CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response);
ExportCommissionPayoutStatusQueryResponseVO exportCommissionPayoutStatusQuerySheet2(CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response);
}
......@@ -10,6 +10,7 @@ import com.yd.api.result.CommonResult;
import com.yd.dal.entity.agms.fortune.*;
import com.yd.dal.entity.customer.*;
import com.yd.dal.entity.customer.practitioner.PractitionerSubordinateInfo;
import com.yd.dal.entity.meta.MdDropOptions;
import com.yd.dal.entity.meta.MdIncometaxRate;
import com.yd.dal.entity.order.PoOrder;
import com.yd.dal.entity.product.Product;
......@@ -27,6 +28,11 @@ import com.yd.util.CommonUtil;
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.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -103,6 +109,8 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
private AclPolicyholderService aclPolicyholderService;
@Autowired
private SendService sendService;
@Autowired
private AclPractitionerDALService aclPractitionerDALService;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -110,7 +118,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
CommissionPayoutStatusUpdateResponseVO responseVO = new CommissionPayoutStatusUpdateResponseVO();
CommonResult commonResult = check(requestVO);
Long[] fortuneIds = requestVO.getFortuneIds();
//2.可发放 3.保留
//2. 0.作废 1.待来佣 2.可发放 3.保留
String paymentStatus = requestVO.getPaymentStatus();
Long loginId = requestVO.getLoginId();
//查询出需修改的佣金发放状态的财富
......@@ -930,6 +938,157 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
return responseVO;
}
@Override
public ExportCommissionPayoutStatusQueryResponseVO exportCommissionPayoutStatusQuerySheet2(CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response) {
ExportCommissionPayoutStatusQueryResponseVO responseVO = new ExportCommissionPayoutStatusQueryResponseVO();
CommissionPayoutStatusQueryInfo info = new CommissionPayoutStatusQueryInfo();
BeanUtils.copyProperties(requestVO, info);
//体系查询调整,如果体系为S3,则需要查询它下面的所有子集
PractitionerSubordinateInfo practitionerSubordinateInfo = new PractitionerSubordinateInfo();
BeanUtils.copyProperties(requestVO, practitionerSubordinateInfo);
practitionerSubordinateInfo.setDeptId(requestVO.getInsurerBranchDeptId());
List<Long> subsystemIdList = aclPractitionerSubordinateSystemDalService.getLongs(practitionerSubordinateInfo);
info.setSubsystemIdList(subsystemIdList);
List<CommissionPayoutStatus> commissionPayoutStatusList = agmsFortuneDalService.commissionPayoutStatusQuery(info);
List<Long> fortuneIdList = new ArrayList<>();
for (CommissionPayoutStatus item : commissionPayoutStatusList) {
fortuneIdList.add(item.getFortuneId());
}
System.out.println(fortuneIdList.toString());
// 导出xlsx
XSSFWorkbook wkb = new XSSFWorkbook();
// 保单发佣清算明细报表Sheet页
generateSheet2(wkb, fortuneIdList);
// 设置响应
String fn = "ZHB_SalaryReport_" + System.currentTimeMillis() + ".xlsx";
String headStr = "attachment; filename=\"" + fn + "\"";
xlsxDownload(wkb, headStr, response);
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
private void generateSheet2(XSSFWorkbook wkb, List<Long> fortuneIdList) {
XSSFSheet sheet2 = wkb.createSheet("保单发佣清算明细报表");
// 1.设置表头
String[] columnName = new String[]{"序号", "对账月", "投保人", "保单号", "保司", "保费", "产品", "承保时间", "年期",
"FYC%", "业绩折标率%", "分佣%", "业绩%", "RYC%", "保单FYC", "佣金FYC", "业绩FYC", "保单RYC", "佣金RYC", "渠道",
"FYC体系", "销售经纪人", "销售经纪人职级", "职级率",
"首年销售佣金", "续年销售佣金", "续期辅导人", "续期辅导奖金率", "续期辅导奖", "经纪人月销售加码奖金%", "经纪人月销售加码奖金",
"推荐人", "个人推荐率", "个人推荐奖¥", "体系推荐率", "体系推荐奖金¥",
"一代辅导人", "一代辅导人职级", "一代辅导人职级岗位津贴%", "一代辅导人岗位津贴",
"二代辅导人", "二代辅导人职级", "二代辅导人职级岗位津贴%", "二代辅导人岗位津贴",
"所属 S1分部", "S1团队达标奖金率", "S1团队达标奖金¥(季度)", "S1团队长辅导津贴比率", "S1团队长辅导津贴", "S1续期绩效奖金",
"所属 S2体系", "S2团队达标奖金率", "S2团队达标奖金¥(季度)", "S2团队长辅导津贴比率", "S2团队长辅导津贴", "S2续期绩效奖金",
"所属 S3纵队", "S3团队达标奖金率", "S3团队达标奖金¥(季度)", "S3团队长辅导津贴比率", "S3团队长辅导津贴",
"育成人", "育成人职级", "育成奖金率", "育成金额",
"C14直接销售加码佣金率", "C14直接销售加码佣金",
"基本法属性", "S01-首年度销售佣金", "S03-首年度辅导奖金"};
XSSFRow rownum = sheet2.createRow(0);
for (int j = 0; j < columnName.length; j++) {
rownum.createCell(j).setCellValue(columnName[j]);
}
// 2.查询Sheet2数据
List<Map<String, Object>> dataList = agmsFortuneDalService.querySheet2Data(fortuneIdList);
// 将结果集中的推荐人、体系等id替换为中文
if (CollectionUtils.isNotEmpty(dataList)) {
exportSalaryDetailsSheet2queryOrganization(dataList);
}
// 3.遍历数据,产生数据行
if ( null != dataList) {
for (int i = 0; i < dataList.size(); i++) {
Map<String, Object> values = dataList.get(i);
rownum = sheet2.createRow(i + 1);
// 每行序号
rownum.createCell(0).setCellValue(i + 1);
for (int j = 0; j < columnName.length; j++) {
rownum.createCell(j + 1).setCellValue(values.get(j + "") != null ? values.get(j + "").toString() : "");
}
}
}
}
private void exportSalaryDetailsSheet2queryOrganization(List<Map<String, Object>> list) {
List<AclPractitioner> aclPractitionerList = aclPractitionerDALService.findAll();
Map<Long, AclPractitioner> aclPractitionerMap = new HashMap<>();
if (aclPractitionerList != null && aclPractitionerList.size() > 0) {
for (AclPractitioner item : aclPractitionerList) {
aclPractitionerMap.put(item.getId(), item);
}
}
List<AclPractitionerSubordinateSystem> subordinateSystemList = aclPractitionerSubordinateSystemDalService.findAll();
Map<Long, AclPractitionerSubordinateSystem> subordinateSystemMap = new HashMap<>();
if (subordinateSystemList != null && subordinateSystemList.size() > 0) {
for (AclPractitionerSubordinateSystem item : subordinateSystemList) {
subordinateSystemMap.put(item.getId(), item);
}
}
//经纪人
AclPractitioner practitioner = null;
//所属体系
AclPractitionerSubordinateSystem subordinateSystem = null;
//数据字典
MdDropOptions dropOptions = null;
Map<String, Object> item = null;
for (int i = 0; i < list.size(); i++) {
item = list.get(i);
//FYC体系 [19]
if (null != item.get("19") && StringUtils.isNotBlank(item.get("19").toString())) {
subordinateSystem = subordinateSystemMap.get(Long.valueOf(item.get("19").toString()));
item.put("19", subordinateSystem != null ? subordinateSystem.getName() : null);
}
//经纪人职级 [21]
if (null != item.get("21") && StringUtils.isNotBlank(item.get("21").toString())) {
dropOptions = systemConfigService.getDropOptionInfo("practitioner_level", item.get("21").toString(), "practitioner_level");
item.put("21", dropOptions != null ? dropOptions.getDropOptionName() : null);
}
//续期辅导人 [25]
if (null != item.get("25") && StringUtils.isNotBlank(item.get("25").toString())) {
practitioner = aclPractitionerMap.get(Long.valueOf(item.get("25").toString()));
item.put("25", practitioner != null ? practitioner.getName() : null);
}
//推荐人 [30]
if (null != item.get("30") && StringUtils.isNotBlank(item.get("30").toString())) {
practitioner = aclPractitionerMap.get(Long.valueOf(item.get("30").toString()));
item.put("30", practitioner != null ? practitioner.getName() : null);
}
//一代辅导人 [35]
if (null != item.get("35") && StringUtils.isNotBlank(item.get("35").toString())) {
practitioner = aclPractitionerMap.get(Long.valueOf(item.get("35").toString()));
item.put("35", practitioner != null ? practitioner.getName() : null);
}
//二代辅导人 [39]
if (null != item.get("39") && StringUtils.isNotBlank(item.get("39").toString())) {
practitioner = aclPractitionerMap.get(Long.valueOf(item.get("39").toString()));
item.put("39", practitioner != null ? practitioner.getName() : null);
}
//所属S1分部 [43]
if (null != item.get("43") && StringUtils.isNotBlank(item.get("43").toString())) {
subordinateSystem = subordinateSystemMap.get(Long.valueOf(item.get("43").toString()));
item.put("43", subordinateSystem != null ? subordinateSystem.getName() : null);
}
//所属S2体系 [49]
if (null != item.get("49") && StringUtils.isNotBlank(item.get("49").toString())) {
subordinateSystem = subordinateSystemMap.get(Long.valueOf(item.get("49").toString()));
item.put("49", subordinateSystem != null ? subordinateSystem.getName() : null);
}
//所属S3纵队 [55]
if (null != item.get("55") && StringUtils.isNotBlank(item.get("55").toString())) {
subordinateSystem = subordinateSystemMap.get(Long.valueOf(item.get("55").toString()));
item.put("55", subordinateSystem != null ? subordinateSystem.getName() : null);
}
//育成人 [60]
if (null != item.get("60") && StringUtils.isNotBlank(item.get("60").toString())) {
practitioner = aclPractitionerMap.get(Long.valueOf(item.get("60").toString()));
item.put("60", practitioner != null ? practitioner.getName() : null);
}
}
}
private void exportCommissionPayoutStatusQueryCSV(List<CommissionPayoutStatus> commissionPayoutStatusList, HttpServletResponse response) {
String[] columnName = new String[]{"序号", "来佣检核年月", "发佣状态", "预计发佣年月", "实际发佣年月", "保险公司", "保单号", "保费", "来佣金额", "佣金类型", "应发佣率", "应发金额",
"经纪人", "经纪人职级", "体系", "营业部", "购买方案", "缴费年限", "保障期间"};
......@@ -1004,6 +1163,30 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
}
}
public static void xlsxDownload(Workbook wkb, String headStr, HttpServletResponse response) {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", headStr);
response.setHeader("Cache-Control", "max-age=30");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Pragma", "public");
OutputStream os = null;
try {
os = response.getOutputStream();
wkb.write(os);
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private void createCSV(List<FortunePayToOrderInfo> fortunePayToOrderInfos, HttpServletResponse response) {
String charset = "UTF-8"; // 读取字符编码
......
......@@ -43,7 +43,7 @@ public class CommissionPayoutStatusQueryRequestVO {
private Long practitionerId;
/**
* 发佣状态 暂不开放 可发 保留 已发并关账
* 发佣状态 0-作废 1-待来佣 2-可发 3-保留 4-已发并关账
*/
private Long commissionPayoutStatus;
......
......@@ -15,7 +15,7 @@ public class CommissionPayoutStatusUpdateRequestVO {
/**
* 佣金发放状态
* 2.可发放 3.保留
* 0.作废 1.待来佣 2.可发放 3.保留
*/
private String paymentStatus;
......
package com.yd.dal.mapper.agms;
import com.yd.dal.entity.agms.fortune.*;
import com.yd.dal.entity.customer.AclCustomerFortune;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author xxy
......@@ -45,6 +45,5 @@ public interface AgmsFortuneMapper {
*/
List<WithdrawLabelInfo> salaryPolicyNoDetails(@Param("item")WithdrawQueryInfo info);
List<Map<String, Object>> querySheet2Data(List<Long> fortuneIdList);
}
package com.yd.dal.service.agms;
import com.yd.dal.entity.agms.fortune.*;
import com.yd.dal.entity.agms.fortune.CommissionPayoutStatus;
import com.yd.dal.entity.agms.fortune.CommissionPayoutStatusQueryInfo;
import com.yd.dal.entity.agms.fortune.CustomerFortuneStatisticalInfo;
import com.yd.dal.entity.customer.AclCustomerFortune;
import java.util.List;
import java.util.Map;
......@@ -49,4 +45,5 @@ public interface AgmsFortuneDALService {
*/
List<WithdrawLabelInfo> salaryPolicyNoDetails(WithdrawQueryInfo info);
List<Map<String, Object>> querySheet2Data(List<Long> fortuneIdList);
}
......@@ -72,4 +72,9 @@ public class AgmsFortuneDALServiceImpl implements AgmsFortuneDALService {
public List<WithdrawLabelInfo> salaryPolicyNoDetails(WithdrawQueryInfo info) {
return agmsFortuneMapper.salaryPolicyNoDetails(info);
}
@Override
public List<Map<String, Object>> querySheet2Data(List<Long> fortuneIdList) {
return agmsFortuneMapper.querySheet2Data(fortuneIdList);
}
}
......@@ -13,6 +13,7 @@ import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
......@@ -261,6 +262,24 @@ public class SystemConfigService implements CommandLineRunner{
return mdDropOption;
}
public MdDropOptions getDropOptionInfo(String elementKey, String dropOptionId, String masterCode) {
if (CommonUtil.isNullOrBlank(elementKey) || CommonUtil.isNullOrBlank(masterCode) || CommonUtil.isNullOrBlank(dropOptionId)) {
return null;
}
ConcurrentHashMap<String, MdDropOptions> mdDropOptionsMap;
Element element = systemConfigCache.get(elementKey);
if (element != null && element.getObjectValue() != null) {
mdDropOptionsMap = (ConcurrentHashMap<String, MdDropOptions>) element.getObjectValue();
} else {
List<MdDropOptions> mdDropOptionsList = mdDropOptionsDALService.findByDropMasterCode(masterCode);
mdDropOptionsMap = new ConcurrentHashMap<>();
mdDropOptionsList.forEach(i -> mdDropOptionsMap.put(i.getId() + "", i));
element = new Element(elementKey, mdDropOptionsMap);
systemConfigCache.put(element);
}
return mdDropOptionsMap.get(dropOptionId);
}
@SuppressWarnings("unchecked")
public List<MdPractitionerHiringApproveSteps> findHiringApproveStepsByPractitionerLevel(String practitionerLevelCode) {
List<MdPractitionerHiringApproveSteps> hiringApproveSteps = new ArrayList<>();
......
......@@ -423,4 +423,113 @@
</select>
<select id="querySheet2Data" resultType="java.util.LinkedHashMap">
select
pb.payout_yearmonth '0' /*对账月*/,
(select name from ag_acl_policyholder where order_id = f.order_id and type=2) '1',
o.policy_no '2',
i.name '3' /*保司*/,
o.order_price '4' ,
p.name '5' /*产品*/,
o.underwriting_date '6',
CONCAT(o.payment_term, (case o.payment_term_unit when 'Y' then '年' when 'M' then '月' else '日' END)) '7',
if(f.commission_period=1,f.fyc_rate,'') '8' /*'FYC%'*/,
if(f.order_id!=null, IFNULL(p.is_achievement_statistic,'100'), '') '9' /*'业绩折标率%'*/,
if(f.id=min(f.id),f.share_rate,'') '10' /*'分佣%'*/,
if(f.id=min(f.id),f.achievements_rate,'') '11' /*'业绩%'*/,
if(f.commission_period!=1,f.fyc_rate,'') '12' /*'RYC%'*/,
if(f.id=min(f.id),f.fyc_amount,'') '13'/*保单FYC*/,
if(f.id=min(f.id),f.referral_amount,'') '14' /*佣金FYC*/,
if(f.id=min(f.id),f.achievements,'') '15' /*业绩FYC*/,
if(f.commission_period!=1,f.fyc_amount,'') '16' /*保单RYC*/,
if(f.commission_period!=1,f.referral_amount,'') '17' /*佣金RYC*/,
(select name from ag_acl_channel where id = f.channel_id) '18' /*渠道*/,
coalesce(l.s1_id,l.s2_id,l.s3_id) '19' /*FYC体系*/,
pra.name '20' /*销售经纪人*/,
ps.practitioner_level '21' /*经纪人职级*/,
if(f.id=min(f.id),f.grade_commission_rate,'') '22' /*职级率*/,
sum(case when drop_option_code ='C01' then f.referral_amount else '' end) '23' /*首年销售佣金*/,
sum(case when drop_option_code ='C02' then f.referral_amount else '' end) '24' /*续年销售佣金*/,
if(f.commission_period!=1,l.mentor_id,'') '25' /*续期辅导人*/,
if(f.commission_period!=1,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C06' and practitioner_id = l.mentor_id),
'') '26' /*续期辅导奖金率*/,
if(f.commission_period!=1,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C06' and practitioner_id = l.mentor_id),
'') '27' /*续期辅导奖*/,
sum(case when drop_option_code ='C04' then f.calculation_rate else '' end) '28' /*'经纪人月销售加码奖金%'*/,
sum(case when drop_option_code ='C04' then f.referral_amount else '' end) '29' /*经纪人月销售加码奖金*/,
l.introducer_id '30' /*推荐人*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C05' and practitioner_id = l.introducer_id) '31' /*个人推荐率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C05' and practitioner_id = l.introducer_id) '32' /*个人推荐奖¥*/,
sum(case when drop_option_code ='C15' then f.calculation_rate else '' end) '33' /*体系推荐率*/,
sum(case when drop_option_code ='C15' then f.referral_amount else '' end) '34' /*体系推荐奖金¥*/,
l.mentor_id '35' /*一代辅导人*/,
l.mentor_level '36' /*一代辅导人职级*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C06' and practitioner_id = l.mentor_id) '37' /*'一代辅导人职级岗位津贴%'*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C06' and practitioner_id = l.mentor_id) '38' /*一代辅导人岗位津贴*/,
l.in_mentor_id '39' /*二代辅导人*/,
l.in_mentor_level '40' /*二代辅导人职级*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C07' and practitioner_id = l.in_mentor_id) '41' /*'二代辅导人职级岗位津贴%'*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where order_id=f.order_id and drop_option_code ='C07' and practitioner_id = l.in_mentor_id) '42' /*二代辅导人岗位津贴*/,
l.s1_id '43' /*所属S1分部*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s1_team_leader_id) '44' /*S1团队达标奖金率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s1_team_leader_id) '45' /*'S1团队达标奖金¥(季度)'*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s1_team_leader_id) '46' /*S1团队长辅导津贴比率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s1_team_leader_id) '47' /*S1团队长辅导津贴*/,
'' as '48' /*S1续期绩效奖金*/,
l.s2_id '49' /*所属S2体系*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s2_team_leader_id) '50' /*S2团队达标奖金率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s2_team_leader_id) '51' /*'S2团队达标奖金¥(季度)'*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s2_team_leader_id) '52' /*S2团队长辅导津贴比率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s2_team_leader_id) '53' /*S2团队长辅导津贴*/,
'' as '54' /*S2续期绩效奖金*/,
l.s3_id '55' /*所属S3纵队*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s3_team_leader_id) '56' /*S3团队达标奖金率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C08' and order_id=f.order_id and practitioner_id = l.s3_team_leader_id) '57' /*'S3团队达标奖金¥(季度)'*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s3_team_leader_id) '58' /*S3团队长辅导津贴比率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C10' and order_id=f.order_id and practitioner_id = l.s3_team_leader_id) '59' /*S3团队长辅导津贴*/,
l.raise_id '60' /*育成人*/,
l.raise_level '61' /*育成人职级*/,
(SELECT group_concat(calculation_rate) from ag_acl_customer_fortune where drop_option_code ='C09' and order_id=f.order_id and practitioner_id = l.raise_id) '62' /*育成奖金率*/,
(SELECT group_concat(referral_amount) from ag_acl_customer_fortune where drop_option_code ='C09' and order_id=f.order_id and practitioner_id = l.raise_id) '63' /*育成金额*/,
sum(case when drop_option_code ='C14' then f.calculation_rate else '' end) '64' /*C14直接销售加码佣金率*/,
sum(case when drop_option_code ='C14' then f.referral_amount else '' end) '65' /*C14直接销售加码佣金*/,
if(o.settlement_rule_type=1,'简单基本法','标准基本法') '66' /*基本法属性*/,
sum(case when drop_option_code ='S01' then f.referral_amount else '' end) '67' /*S01-首年度销售佣金*/,
sum(case when drop_option_code ='S03' then f.referral_amount else '' end) '68' /*S03-首年度辅导奖金*/,
f.order_id,
f.practitioner_id
FROM ag_acl_customer_fortune f
LEFT JOIN ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id
LEFT JOIN ag_acl_life_insurance_practitioner l on l.order_id = f.order_id and l.practitioner_id = f.practitioner_id
LEFT JOIN ag_acl_practitioner pra on pra.id = f.practitioner_id
LEFT JOIN ag_acl_practitioner_setting ps on ps.practitioner_id = f.practitioner_id
LEFT JOIN ag_po_order o on o.id = f.order_id
LEFT JOIN ag_acl_insurer i on i.id = o.insurer_id
LEFT JOIN ag_product p on p.id = o.product_id
WHERE
f.id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item,jdbcType=BIGINT}
</foreach>
GROUP BY f.order_id, f.practitioner_id
</select>
</mapper>
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