Commit 80955531 by Mahjong

Merge remote-tracking branch 'origin/dev' into dev

parents 9d3ad856 8c1362ee
......@@ -6,10 +6,7 @@ import com.yd.api.agms.vo.dashboard.*;
import com.yd.api.agms.vo.fortune.*;
import com.yd.api.agms.vo.hiring.*;
import com.yd.api.agms.vo.insurer.SealUploadResponseVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingListRequestVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingListResponseVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingSaveRequestVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingSaveResponseVO;
import com.yd.api.agms.vo.practitioner.*;
import com.yd.api.agms.vo.sharing.ControllerResponseVO;
import com.yd.api.agms.vo.statistics.FinancialStatisticsRequestVO;
import com.yd.api.agms.vo.statistics.FinancialStatisticsResponseVO;
......@@ -19,6 +16,7 @@ import com.yd.api.agms.vo.tag.TagUpdateRequestVO;
import com.yd.api.agms.vo.tag.TagUpdateResponseVO;
import com.yd.api.agms.vo.tag.TagViewUpdateRequestVO;
import com.yd.api.agms.vo.tag.TagViewUpdateResponseVO;
import com.yd.api.result.CommonResultResponseVO;
import com.yd.api.result.JsonResult;
import com.yd.util.CommonUtil;
import com.yd.util.JsonUtil;
......@@ -52,13 +50,14 @@ public class AgmsController {
/**
* AGMS -- 财务管理报表
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/financialPredictStatistics")
public Object financialPredictStatistics(@RequestBody FinancialStatisticsRequestVO requestVO, HttpServletResponse response){
public Object financialPredictStatistics(@RequestBody FinancialStatisticsRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
FinancialStatisticsResponseVO responseVO = agmsStatisticsService.financialPredictStatistics(requestVO,response);
FinancialStatisticsResponseVO responseVO = agmsStatisticsService.financialPredictStatistics(requestVO, response);
result.addResult(responseVO);
result.setData(responseVO);
return result;
......@@ -66,11 +65,12 @@ public class AgmsController {
/**
* AGMS -- Dashboard查询 PEP活动管理
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsPEP")
public Object statisticsPEP(@RequestBody StatisticsPEPRequestVO requestVO){
public Object statisticsPEP(@RequestBody StatisticsPEPRequestVO requestVO) {
JsonResult result = new JsonResult();
StatisticsPEPResponseVO responseVO = agmsDashboardService.statisticsPEP(requestVO);
result.addResult(responseVO);
......@@ -80,11 +80,12 @@ public class AgmsController {
/**
* AGMS -- Dashboard查询 商机预测
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsOpportunity")
public Object statisticsOpportunity(@RequestBody StatisticsOpportunityRequestVO requestVO){
public Object statisticsOpportunity(@RequestBody StatisticsOpportunityRequestVO requestVO) {
JsonResult result = new JsonResult();
StatisticsOpportunityResponseVO responseVO = agmsDashboardService.statisticsOpportunity(requestVO);
result.addResult(responseVO);
......@@ -94,11 +95,12 @@ public class AgmsController {
/**
* AGMS -- Dashboard查询 预测统计查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsForecastTotal")
public Object statisticsForecastTotal(@RequestBody StatisticsForecastTotalRequestVO requestVO){
public Object statisticsForecastTotal(@RequestBody StatisticsForecastTotalRequestVO requestVO) {
JsonResult result = new JsonResult();
StatisticsForecastTotalResponseVO responseVO = agmsDashboardService.statisticsForecastTotal(requestVO);
result.addResult(responseVO);
......@@ -108,11 +110,12 @@ public class AgmsController {
/**
* AGMS -- Dashboard查询 销售统计查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsSales")
public Object statisticsSales(@RequestBody StatisticsSalesRequestVO requestVO){
public Object statisticsSales(@RequestBody StatisticsSalesRequestVO requestVO) {
JsonResult result = new JsonResult();
StatisticsSalesResponseVO responseVO = agmsDashboardService.statisticsSales(requestVO);
result.addResult(responseVO);
......@@ -122,11 +125,12 @@ public class AgmsController {
/**
* AGMS -- Dashboard查询 经纪人统计查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/statisticsPractitioner")
public Object statisticsPractitioner(@RequestBody StatisticsPractitionerRequestVO requestVO){
public Object statisticsPractitioner(@RequestBody StatisticsPractitionerRequestVO requestVO) {
JsonResult result = new JsonResult();
StatisticsPractitionerResponseVO responseVO = agmsDashboardService.statisticsPractitioner(requestVO);
result.addResult(responseVO);
......@@ -136,13 +140,14 @@ public class AgmsController {
/**
* AGMS -- 商机统计报表
*
* @param requestVO requestVO
* @return 响应数据
*/
@RequestMapping(value="/leadsStatistics")
public Object leadsStatistics(@RequestBody LeadsStatisticsRequestVO requestVO,HttpServletResponse response) {
@RequestMapping(value = "/leadsStatistics")
public Object leadsStatistics(@RequestBody LeadsStatisticsRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
LeadsStatisticsResponseVO responseVO = agmsStatisticsService.leadsStatistics(requestVO,response);
LeadsStatisticsResponseVO responseVO = agmsStatisticsService.leadsStatistics(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
......@@ -150,10 +155,11 @@ public class AgmsController {
/**
* AGMS -- 修改佣金发放状态
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/commissionPayoutStatusUpdate")
@RequestMapping(value = "/commissionPayoutStatusUpdate")
public Object commissionPayoutStatusUpdate(@RequestBody CommissionPayoutStatusUpdateRequestVO requestVO) {
JsonResult result = new JsonResult();
CommissionPayoutStatusUpdateResponseVO responseVO = agmsFortuneService.commissionPayoutStatusUpdate(requestVO);
......@@ -164,10 +170,11 @@ public class AgmsController {
/**
* AGMS -- 发佣添加备注
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/commissionPayoutAddRemark")
@RequestMapping(value = "/commissionPayoutAddRemark")
public Object commissionPayoutAddRemark(@RequestBody CommissionPayoutAddRemarkRequestVO requestVO) {
JsonResult result = new JsonResult();
CommissionPayoutStatusUpdateResponseVO responseVO = agmsFortuneService.commissionPayoutAddRemark(requestVO);
......@@ -178,11 +185,12 @@ public class AgmsController {
/**
* AGMS -- 修改佣金发放状态列表
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/commissionPayoutStatusQuery")
public Object commissionPayoutStatusQuery(@RequestBody CommissionPayoutStatusQueryRequestVO requestVO){
@RequestMapping(value = "/commissionPayoutStatusQuery")
public Object commissionPayoutStatusQuery(@RequestBody CommissionPayoutStatusQueryRequestVO requestVO) {
JsonResult result = new JsonResult();
CommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.commissionPayoutStatusQuery(requestVO);
result.setData(responseVO);
......@@ -192,13 +200,14 @@ public class AgmsController {
/**
* AGMS -- 支付列表查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/withdrawQuery")
public Object withdrawQuery(@RequestBody WithdrawQueryRequestVO requestVO){
public Object withdrawQuery(@RequestBody WithdrawQueryRequestVO requestVO) {
JsonResult result = new JsonResult();
WithdrawQueryResponseVO withdrawQueryResponseVO = agmsFortuneService.withdrawQuery(requestVO);
WithdrawQueryResponseVO withdrawQueryResponseVO = agmsFortuneService.withdrawQuery(requestVO);
result.addResult(withdrawQueryResponseVO);
result.setData(withdrawQueryResponseVO);
return result;
......@@ -206,10 +215,11 @@ public class AgmsController {
/**
* AGMS -- 提现财富对应订单查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/fortunePayToOrder")
@RequestMapping(value = "/fortunePayToOrder")
public Object fortunePayToOrder(@RequestBody FortunePayToOrderRequestVO requestVO) {
JsonResult result = new JsonResult();
FortunePayToOrderResponseVO responseVO = agmsFortuneService.fortunePayToOrder(requestVO);
......@@ -220,10 +230,11 @@ public class AgmsController {
/**
* AGMS -- 财富批量支付
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/fortunePay")
@RequestMapping(value = "/fortunePay")
public Object fortunePay(@RequestBody FortunePayRequestVO requestVO) {
JsonResult result = new JsonResult();
FortunePayResponseVO responseVO = agmsFortuneService.fortunePay(requestVO);
......@@ -234,13 +245,14 @@ public class AgmsController {
/**
* AGMS -- 发佣检核导出
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/exportCommissionPayoutStatusQuery")
@RequestMapping(value = "/exportCommissionPayoutStatusQuery")
public Object exportCommissionPayoutStatusQuery(@RequestBody CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
ExportCommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.exportCommissionPayoutStatusQuery(requestVO,response);
ExportCommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.exportCommissionPayoutStatusQuery(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
......@@ -248,13 +260,14 @@ public class AgmsController {
/**
* AGMS -- 保单发佣清算明细报表导出
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/exportCommissionPayoutStatusQuerySheet2")
@RequestMapping(value = "/exportCommissionPayoutStatusQuerySheet2")
public Object exportCommissionPayoutStatusQuerySheet2(@RequestBody CommissionPayoutStatusQueryRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
ExportCommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.exportCommissionPayoutStatusQuerySheet2(requestVO,response);
ExportCommissionPayoutStatusQueryResponseVO responseVO = agmsFortuneService.exportCommissionPayoutStatusQuerySheet2(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
......@@ -262,13 +275,14 @@ public class AgmsController {
/**
* AGMS -- 导出财富文档
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/exportFortunePay")
@RequestMapping(value = "/exportFortunePay")
public Object exportFortunePay(@RequestBody ExportFortunePayRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
ExportFortunePayResponseVO responseVO = agmsFortuneService.exportFortunePay(requestVO,response);
ExportFortunePayResponseVO responseVO = agmsFortuneService.exportFortunePay(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
......@@ -276,9 +290,10 @@ public class AgmsController {
/**
* AGMS -- 查询预计发佣日期
*
* @return 响应数据
*/
@RequestMapping(value="/fortunePayoutBatchQuery",method = RequestMethod.GET)
@RequestMapping(value = "/fortunePayoutBatchQuery", method = RequestMethod.GET)
public Object fortunePayoutBatchQuery() {
JsonResult result = new JsonResult();
FortunePayoutBatchQueryResponseVO responseVO = agmsFortuneService.fortunePayoutBatchQuery();
......@@ -289,10 +304,11 @@ public class AgmsController {
/**
* AGMS -- 经纪人审批详情查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/practitionerHiringDetail")
@RequestMapping(value = "/practitionerHiringDetail")
public Object practitionerHiringDetail(@RequestBody PractitionerHiringDetailRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerHiringDetailResponseVO responseVO = agmsHiringService.practitionerHiringDetail(requestVO);
......@@ -303,10 +319,11 @@ public class AgmsController {
/**
* AGMS -- 经纪人审批列表查询
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/practitionerHiringListOld")
@RequestMapping(value = "/practitionerHiringListOld")
public Object practitionerHiringListOld(@RequestBody PractitionerHiringListRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerHiringListResponseVO responseVO = agmsHiringService.practitionerHiringList(requestVO);
......@@ -317,11 +334,12 @@ public class AgmsController {
/**
* AGMS -- 经纪人审批
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping("/practitionerHiringApprove")
public Object practitionerHiringApprove(@RequestBody PractitionerHiringApproveRequestVO requestVO){
public Object practitionerHiringApprove(@RequestBody PractitionerHiringApproveRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerHiringApproveResponseVO responseVO = agmsHiringService.practitionerHiringApprove(requestVO);
result.addResult(responseVO);
......@@ -331,10 +349,11 @@ public class AgmsController {
/**
* AGMS -- 经纪人审批列表查询第二版
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/practitionerHiringList")
@RequestMapping(value = "/practitionerHiringList")
public Object practitionerHiringList(@RequestBody PractitionerHiringListRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerHiringListResponseVO responseVO = agmsHiringService.practitionerHiringListV2(requestVO);
......@@ -342,40 +361,73 @@ public class AgmsController {
result.addResult(responseVO);
return result;
}
/**
* AGMS -- 经纪人报聘列表查询
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value = "/practitionerApplyList")
public Object practitionerApplyList(@RequestBody PractitionerHiringListRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerHiringListResponseVO responseVO = agmsHiringService.practitionerApplyList(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* AGMS -- 经纪人报聘列表导出
* @param requestVO 请求数据
* @param response 返回数据流
* @return 响应数据
*/
@RequestMapping(value = "/exportPractitionerApplyList")
public Object exportPractitionerApplyList(@RequestBody PractitionerHiringListRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
CommonResultResponseVO responseVO = agmsHiringService.exportPractitionerApplyList(requestVO,response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 上传公司印章接口
*
* @param sealFile
* @param loginId
* @param insurerBranchId
* @param insurerBranchDeptId
* @return
*/
@RequestMapping(value="/sealUpload")
@RequestMapping(value = "/sealUpload")
public Object sealUpload(@RequestParam(value = "sealFile") MultipartFile sealFile,
@RequestParam(value = "loginId",required = true) Long loginId,
@RequestParam(value = "insurerBranchId",required = false) Long insurerBranchId,
@RequestParam(value = "insurerBranchDeptId",required = false) Long insurerBranchDeptId) {
@RequestParam(value = "loginId", required = true) Long loginId,
@RequestParam(value = "insurerBranchId", required = false) Long insurerBranchId,
@RequestParam(value = "insurerBranchDeptId", required = false) Long insurerBranchDeptId) {
JsonResult result = new JsonResult();
SealUploadResponseVO responseVO = agmsInsurerService.sealUpload(sealFile,loginId,insurerBranchId,insurerBranchDeptId);
SealUploadResponseVO responseVO = agmsInsurerService.sealUpload(sealFile, loginId, insurerBranchId, insurerBranchDeptId);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
@RequestMapping(value="/controller")
public Object controller(@RequestParam String action, @RequestParam(required = false) String callback, @RequestParam(value = "upfile",required = false) MultipartFile upfile) {
@RequestMapping(value = "/controller")
public Object controller(@RequestParam String action, @RequestParam(required = false) String callback, @RequestParam(value = "upfile", required = false) MultipartFile upfile) {
ControllerResponseVO responseVO = agmsSharingService.controller(action, upfile);
if (!CommonUtil.isNullOrBlank(callback)) {
return callback +"(" + JSON.toJSONString(responseVO) + ")";
return callback + "(" + JSON.toJSONString(responseVO) + ")";
}
return responseVO;
}
/**
* AGMS -- 经纪人保存文章
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/practitionerFileSharingSave")
@RequestMapping(value = "/practitionerFileSharingSave")
public Object practitionerFileSharingSave(@RequestBody PractitionerFileSharingSaveRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerFileSharingSaveResponseVO responseVO = agmsPractitionerService.practitionerFileSharingSave(requestVO);
......@@ -386,10 +438,11 @@ public class AgmsController {
/**
* AGMS -- 经纪人查询文章
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/practitionerFileSharingList")
@RequestMapping(value = "/practitionerFileSharingList")
public Object practitionerFileSharingList(@RequestBody PractitionerFileSharingListRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerFileSharingListResponseVO responseVO = agmsPractitionerService.practitionerFileSharingList(requestVO);
......@@ -400,10 +453,11 @@ public class AgmsController {
/**
* AGMS -- 标签修改
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/tagUpdate")
@RequestMapping(value = "/tagUpdate")
public Object tagUpdate(@RequestBody TagUpdateRequestVO requestVO) {
JsonResult result = new JsonResult();
TagUpdateResponseVO responseVO = agmsTagService.tagUpdate(requestVO);
......@@ -414,33 +468,131 @@ public class AgmsController {
/**
* AGMS -- 前端显示标签 保存与修改
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/tagViewUpdate")
public Object tagViewUpdate(@RequestBody TagViewUpdateRequestVO requestVO) throws Exception{
@RequestMapping(value = "/tagViewUpdate")
public Object tagViewUpdate(@RequestBody TagViewUpdateRequestVO requestVO) throws Exception {
JsonResult result = new JsonResult();
TagViewUpdateResponseVO responseVO = agmsTagService.tagViewUpdate(requestVO,null);
TagViewUpdateResponseVO responseVO = agmsTagService.tagViewUpdate(requestVO, null);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* AGMS -- 前端显示标签 保存与修改,支持图片上次
*
* @param requestVO 请求数据
* @return 响应数据
*/
@RequestMapping(value="/tagViewFileUpdate")
public Object tagViewFileUpdate(@RequestParam(value = "requestVO",required = true) String requestVO,
@RequestParam(value = "tagViewImage",required = false) MultipartFile tagViewImage) throws Exception{
requestVO = new String(requestVO.getBytes("ISO-8859-1"),"UTF-8");
TagViewUpdateRequestVO request = (TagViewUpdateRequestVO)JsonUtil.jsonToObj(requestVO, TagViewUpdateRequestVO.class);
JsonResult result = new JsonResult();
TagViewUpdateResponseVO responseVO = agmsTagService.tagViewUpdate(request,tagViewImage);
@RequestMapping(value = "/tagViewFileUpdate")
public Object tagViewFileUpdate(@RequestParam(value = "requestVO", required = true) String requestVO,
@RequestParam(value = "tagViewImage", required = false) MultipartFile tagViewImage) throws Exception {
requestVO = new String(requestVO.getBytes("ISO-8859-1"), "UTF-8");
TagViewUpdateRequestVO request = (TagViewUpdateRequestVO) JsonUtil.jsonToObj(requestVO, TagViewUpdateRequestVO.class);
JsonResult result = new JsonResult();
TagViewUpdateResponseVO responseVO = agmsTagService.tagViewUpdate(request, tagViewImage);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人日程管理
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerSchedule")
public Object practitionerSchedule(@RequestBody PractitionerScheduleRequestVO requestVO) throws Exception {
JsonResult result = new JsonResult();
PractitionerScheduleResponseVO responseVO = agmsPractitionerService.practitionerSchedule(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人日程管理导出
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerScheduleExport")
public Object practitionerScheduleExport(@RequestBody PractitionerScheduleRequestVO requestVO, HttpServletResponse response) throws Exception {
JsonResult result = new JsonResult();
CommonResultResponseVO responseVO = agmsPractitionerService.practitionerScheduleExport(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人销售目标
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerLeadsGoals")
public Object practitionerLeadsGoals(@RequestBody PractitionerLeadsGoalsRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerLeadsGoalsResponseVO responseVO = agmsPractitionerService.practitionerLeadsGoals(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人销售目标导出
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerLeadsGoalsExport")
public Object practitionerLeadsGoalsExport(@RequestBody PractitionerLeadsGoalsRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
CommonResultResponseVO responseVO = agmsPractitionerService.practitionerLeadsGoalsExport(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人活动量
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerActivity")
public Object practitionerActivity(@RequestBody PractitionerActivityRequestVO requestVO) {
JsonResult result = new JsonResult();
PractitionerActivityResponseVO responseVO = agmsPractitionerService.practitionerActivity(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 经纪人活动量导出
*
* @param requestVO
* @return
* @throws Exception
*/
@RequestMapping(value = "/practitionerActivityExport")
public Object practitionerActivityExport(@RequestBody PractitionerActivityRequestVO requestVO, HttpServletResponse response) {
JsonResult result = new JsonResult();
CommonResultResponseVO responseVO = agmsPractitionerService.practitionerActivityExport(requestVO, response);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
}
package com.yd.api.agms.service;
import javax.servlet.http.HttpServletResponse;
import com.yd.api.agms.vo.hiring.*;
import com.yd.api.result.CommonResultResponseVO;
/**
* @author xxy
......@@ -28,4 +31,9 @@ public interface AgmsHiringService {
PractitionerHiringApproveResponseVO practitionerHiringApprove(PractitionerHiringApproveRequestVO requestVO);
PractitionerHiringListResponseVO practitionerHiringListV2(PractitionerHiringListRequestVO requestVO);
PractitionerHiringListResponseVO practitionerApplyList(PractitionerHiringListRequestVO requestVO);
CommonResultResponseVO exportPractitionerApplyList(PractitionerHiringListRequestVO requestVO,HttpServletResponse response);
}
package com.yd.api.agms.service;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingListRequestVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingListResponseVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingSaveRequestVO;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharingSaveResponseVO;
import com.yd.api.agms.vo.practitioner.*;
import com.yd.api.result.CommonResultResponseVO;
import javax.servlet.http.HttpServletResponse;
/**
* @author xxy
......@@ -22,4 +22,21 @@ public interface AgmsPractitionerService {
* @return 响应数据
*/
PractitionerFileSharingListResponseVO practitionerFileSharingList(PractitionerFileSharingListRequestVO requestVO);
/**
* 经纪人日程管理
* @param requestVO
* @return
*/
PractitionerScheduleResponseVO practitionerSchedule(PractitionerScheduleRequestVO requestVO);
CommonResultResponseVO practitionerScheduleExport(PractitionerScheduleRequestVO requestVO, HttpServletResponse response);
PractitionerLeadsGoalsResponseVO practitionerLeadsGoals(PractitionerLeadsGoalsRequestVO requestVO);
CommonResultResponseVO practitionerLeadsGoalsExport(PractitionerLeadsGoalsRequestVO requestVO, HttpServletResponse response);
PractitionerActivityResponseVO practitionerActivity(PractitionerActivityRequestVO requestVO);
CommonResultResponseVO practitionerActivityExport(PractitionerActivityRequestVO requestVO, HttpServletResponse response);
}
......@@ -911,7 +911,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
payIds[i] = withdraws.get(i).getPayId();
}
List<FortunePayToOrderInfo> fortunePayToOrderInfos = agmsFortuneDalService.fortunePayToOrder(payIds);
createCSV(fortunePayToOrderInfos, response);
createCSV(fortunePayToOrderInfos, response, requestVO);
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
......@@ -957,6 +957,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
practitionerSubordinateInfo.setDeptId(requestVO.getInsurerBranchDeptId());
List<Long> subsystemIdList = aclPractitionerSubordinateSystemDalService.getLongs(practitionerSubordinateInfo);
info.setSubsystemIdList(subsystemIdList);
info.setChannelType("2");//对私报表
List<CommissionPayoutStatus> commissionPayoutStatusList = agmsFortuneDalService.commissionPayoutStatusQuery(info);
......@@ -978,6 +979,8 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
XSSFWorkbook wkb = new XSSFWorkbook();
// 保单发佣清算明细报表Sheet页
generateSheet2(wkb, fortuneIdList, fortuneIdList2);
// 对公渠道清算报表Sheet页
generateSheet3(wkb, info);
// 设置响应
String fn = "ZHB_SalaryReport_" + System.currentTimeMillis() + ".xlsx";
String headStr = "attachment; filename=\"" + fn + "\"";
......@@ -986,6 +989,26 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
return responseVO;
}
private void generateSheet3(XSSFWorkbook wkb, CommissionPayoutStatusQueryInfo info) {
XSSFSheet sheet3 = wkb.createSheet("对公渠道清算报表");
// 1.设置表头
String[] columnName = new String[]{"序号", "对账月", "投保人", "保单号", "保司", "保费", "产品", "承保时间", "年期",
"FYC%", "RYC%", "保单FYC", "保单RYC", "渠道",
"收款账户名称", "D01首年渠道服务费", "D02续年渠道服务费", "基本法属性", "D91渠道加扣款1", "D92渠道加扣款2"};
// 2.1 查询Sheet3数据
info.setChannelType("1");
List<CommissionPayoutStatus> commissionPayoutStatusList = agmsFortuneDalService.commissionPayoutStatusQuery(info);
List<Long> fortuneIdList = new ArrayList<>();
commissionPayoutStatusList.forEach(i -> fortuneIdList.add(i.getFortuneId()));
List<Map<String, Object>> dataList = null;
if (fortuneIdList.size() > 0) {
dataList = agmsFortuneDalService.querySheet3Data(fortuneIdList);
}
// 3.填充数据
generateSheet(sheet3, columnName, dataList);
}
@Override
public CommissionPayoutStatusUpdateResponseVO commissionPayoutAddRemark(CommissionPayoutAddRemarkRequestVO requestVO) {
CommissionPayoutStatusUpdateResponseVO responseVO = new CommissionPayoutStatusUpdateResponseVO();
......@@ -1026,18 +1049,25 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
"R01-首年度直接销售佣金(旧)", "R02-续年度直接销售拥金(旧)", "R03-续年度辅导佣金(旧)", "R04-续年度绩效奖金(旧)",
"S1推荐人", "S2推荐人", "S2体系推荐率", "S2体系推荐奖金¥", "S3推荐人", "S3体系推荐率", "S3体系推荐奖金¥",
"S2育成人", "S2育成人职级", "S2育成奖金率", "S2育成金额", "S3育成人", "S3育成人职级", "S3育成奖金率", "S3育成金额",
"其它税前加扣款1", "其它税前加扣款2", "其它税前加扣款3", "其它税前加扣款4", "其它"};
XSSFRow rownum = sheet2.createRow(0);
for (int j = 0; j < columnName.length; j++) {
rownum.createCell(j).setCellValue(columnName[j]);
}
// 2.查询Sheet2数据
"其它税前加扣款1", "其它税前加扣款2", "其它税前加扣款3", "其它税前加扣款4", "其它", "C11-独立经纪人展业津贴",
"D01-首年渠道服务费", "D02-续年渠道服务费", "D91-渠道加扣款1", "D92-渠道加扣款2"};
// 2.1 查询Sheet2数据
List<Map<String, Object>> dataList = agmsFortuneDalService.querySheet2Data(fortuneIdList, fortuneIdList2);
// 将结果集中的推荐人、体系等id替换为中文
// 2.2 将结果集中的推荐人、体系等id替换为中文
if (CollectionUtils.isNotEmpty(dataList)) {
exportSalaryDetailsSheet2queryOrganization(dataList);
}
// 3.遍历数据,产生数据行
// 3.填充数据
generateSheet(sheet2, columnName, dataList);
}
private void generateSheet(XSSFSheet sheet2, String[] columnName, List<Map<String, Object>> dataList) {
// 1.创建表头
XSSFRow rownum = sheet2.createRow(0);
for (int j = 0; j < columnName.length; j++) {
rownum.createCell(j).setCellValue(columnName[j]);
}
// 2.遍历数据,产生数据行
if (null != dataList) {
for (int i = 0; i < dataList.size(); i++) {
Map<String, Object> values = dataList.get(i);
......@@ -1051,6 +1081,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
}
}
private void exportSalaryDetailsSheet2queryOrganization(List<Map<String, Object>> list) {
List<AclPractitioner> aclPractitionerList = aclPractitionerDALService.findAll();
......@@ -1157,7 +1188,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
private void exportCommissionPayoutStatusQueryCSV(List<CommissionPayoutStatus> commissionPayoutStatusList, HttpServletResponse response) {
String[] columnName = new String[]{"序号", "来佣检核年月", "发佣状态", "预计发佣年月", "实际发佣年月", "保险公司", "保单号", "保费", "来佣金额", "佣金类型", "应发佣率", "应发金额",
"经纪人", "经纪人职级", "体系", "营业部", "购买方案", "缴费年限", "保障期间", "备注"};
"渠道", "经纪人", "经纪人职级", "体系", "营业部", "购买方案", "缴费年限", "保障期间", "备注"};
String tableName = "YD_CommissionPayout" + System.currentTimeMillis() + ".csv";
String CSV_COLUMN_SEPARATOR = ",";//CSV文件列分隔符
......@@ -1185,6 +1216,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
buf.append(info.getCommissionType() == null ? "" : info.getCommissionType()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getReferralRate() == null ? 0 : info.getReferralRate()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getReferralAmount() == null ? 0 : info.getReferralAmount()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getChannelName() == null ? "" : info.getChannelName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerName() == null ? "" : info.getPractitionerName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerLevel() == null ? "" : info.getPractitionerLevel()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getSubordinateSystemName() == null ? "" : info.getSubordinateSystemName()).append(CSV_COLUMN_SEPARATOR);
......@@ -1255,9 +1287,14 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
}
}
private void createCSV(List<FortunePayToOrderInfo> fortunePayToOrderInfos, HttpServletResponse response) {
private void createCSV(List<FortunePayToOrderInfo> fortunePayToOrderInfos, HttpServletResponse response, ExportFortunePayRequestVO requestVO) {
String charset = "UTF-8"; // 读取字符编码
String[] columnName = new String[]{"序号", "预计发佣年月", "经纪人", "佣金", "应发佣金", "首年销售佣金(fyc)", "保单号", "保费", "佣金率", "发佣状态", "佣金类型", "手机号", "职级", "分公司", "营业部", "体系", "购买方案"};
String[] columnName = new String[]{"序号", "预计发佣年月", "所属渠道", "经纪人", "佣金", "应发佣金", "首年销售佣金(fyc)", "保单号", "保费", "佣金率", "发佣状态", "佣金类型", "手机号", "职级", "分公司", "营业部", "体系", "购买方案"};
// 如果是渠道到处报表,用不同的表头
if (requestVO.getChannelId() != null) {
columnName = new String[]{"序号", "发佣年月", "所属渠道", "经纪人", "佣金", "应发佣金", "首年销售佣金(fyc)", "保单号", "保费", "佣金率", "发佣状态", "佣金类型", "手机号", "职级", "分公司", "营业部", "体系", "购买方案"};
}
String tableName = "YD_Export_Fortune_Pay";
String CSV_COLUMN_SEPARATOR = ",";//CSV文件列分隔符
String CSV_ROW_SEPARATOR = "\r\n";//CSV文件行分隔符
......@@ -1274,7 +1311,8 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
FortunePayToOrderInfo info = fortunePayToOrderInfos.get(i);//遍历每个对象
buf.append(i + 1).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPayoutYearmonth()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getChannelName() == null ? "" : info.getChannelName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerName() == null ? "" : info.getPractitionerName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getCommissionAmount() == null ? 0 : info.getCommissionAmount()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getReferralAmount() == null ? 0 : info.getReferralAmount()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getFycAmount() == null ? 0 : info.getFycAmount()).append(CSV_COLUMN_SEPARATOR);
......@@ -1283,7 +1321,7 @@ public class AgmsFortuneServiceImpl implements AgmsFortuneService {
buf.append(info.getCommissionRate() == null ? 0 : info.getCommissionRate()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getCommissionPayoutStatus()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getCommissionType() == null ? "" : info.getCommissionType()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getMobileNo()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getMobileNo() == null ? info.getContactPhone() : info.getMobileNo()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerLevel() == null ? "" : info.getPractitionerLevel()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getInsurerBranchName() == null ? "" : info.getInsurerBranchName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getInsurerBranchDeptName() == null ? "" : info.getInsurerBranchDeptName()).append(CSV_COLUMN_SEPARATOR);
......
package com.yd.api.agms.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.yd.api.agms.service.AgmsHiringService;
import com.yd.api.agms.vo.hiring.*;
import com.yd.api.result.CommonResult;
import com.yd.api.result.CommonResultResponseVO;
import com.yd.dal.entity.agms.hiring.*;
import com.yd.dal.entity.customer.*;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.meta.MdDropOptions;
import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import com.yd.dal.entity.practitioner.hiring.HiringApproveRecords;
......@@ -31,11 +34,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author xxy
......@@ -161,6 +166,7 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
}
@Override
@Transactional
public PractitionerHiringApproveResponseVO practitionerHiringApprove(PractitionerHiringApproveRequestVO requestVO) {
PractitionerHiringApproveResponseVO responseVO = new PractitionerHiringApproveResponseVO();
......@@ -168,14 +174,9 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
Long hiringBasicInfoId = requestVO.getHiringBasicInfoId();
AclPractitionerHiringBasicInfo basicInfo = basicInfoMapper.selectByPrimaryKey(hiringBasicInfoId);
if (basicInfo != null && StringUtils.isNotEmpty(basicInfo.getApproveStatus())) {
List<AclPractitionerHiringApproveRecords> recordsList = aclPractitionerHiringApproveRecordsDalService.queryListByBasicInfoId(hiringBasicInfoId);
for (AclPractitionerHiringApproveRecords record : recordsList) {
if (record.getStepSeq().equals(String.valueOf(hiringApproveStepsSeq))) {
responseVO.setCommonResult(new CommonResult(false, "当前流程已审批,请勿重复提交"));
return responseVO;
}
}
if (basicInfo != null && StringUtils.isNotEmpty(basicInfo.getApproveStatus()) && basicInfo.getApproveStatus().compareTo(String.valueOf(hiringApproveStepsSeq)) >= 0) {
responseVO.setCommonResult(new CommonResult(false, "当前流程已审批,请勿重复提交"));
return responseVO;
}
Integer plateform = requestVO.getPlateform();
......@@ -207,7 +208,7 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
//判断当前操作人是否具有当前流程的审批权限
Integer currentStepSeq = requestVO.getHiringApproveStepsSeq();
if (currentStepSeq == null) {
responseVO.setCommonResult(new CommonResult(false, "审批已结束"));
responseVO.setCommonResult(new CommonResult(false, "hiringApproveStepsSeq为空,审批已结束"));
return;
}
BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("stepSeq", currentStepSeq);
......@@ -237,6 +238,14 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
}
}
}
// 如果是回退
if (CommonUtil.isNullOrZero(requestVO.getApprovingStatus())) {
Integer stepSeqStart = this.getRecordsRollBackStepSeqStart(requestVO.getStepsSeqBackTo());
if (!Integer.valueOf("0").equals(stepSeqStart) && stepSeqStart >= step.getStepSeq()) {
responseVO.setCommonResult(new CommonResult(false, "只能退回到已审核的步骤"));
return;
}
}
//保存审批结果
saveRecords(practitionerId, mobileNo, hiringApproveStepsList, requestVO, responseVO);
......@@ -312,6 +321,9 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
try {
Long loginId = requestVO.getLoginId();
String status = requestVO.getStatus();
if (!CommonUtil.isNullOrBlank(requestVO.getName())) {
requestVO.setName("%"+requestVO.getName()+"%");
}
List<PractitionerHiringListInfo> list;
if ("0".equals(status)) {
......@@ -322,7 +334,6 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
int pageSize = pageInfo.getPageSize();
PageInfo<PractitionerHiringListInfo> page = PageInfoUtils.list2PageInfo(list, pageNum, pageSize);
resp.setPractitionerHiringList(page);
} else {
// 通过loginId查询此登入者的经纪人id
Long loginPractitionerId = agmsHiringDalService.findPractitionerIdByLoginId(loginId);
......@@ -338,6 +349,144 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
return resp;
}
/**
* AGMS -- 经纪人报聘列表查询
* @param requestVO 请求数据
* @return 响应数据
*/
@Override
public PractitionerHiringListResponseVO practitionerApplyList(PractitionerHiringListRequestVO requestVO) {
PractitionerHiringListResponseVO resp = new PractitionerHiringListResponseVO();
resp.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("800001")));
if (requestVO == null) {
resp.setCommonResult(new CommonResult(false, "请求对象不能为空!"));
return resp;
}else{
if (CommonUtil.isNullOrBlank(requestVO.getStatus())) {
resp.setCommonResult(new CommonResult(false, "请求信息中【审批状态】不能为空!"));
return resp;
}else if (CommonUtil.isNullOrBlank(requestVO.getEndDate())) {
resp.setCommonResult(new CommonResult(false, "请求信息中【报聘申请结束日期】不能为空!"));
return resp;
}
}
if (!CommonUtil.isNullOrBlank(requestVO.getName())) {
requestVO.setName("%"+requestVO.getName()+"%");
}
try {
List<PractitionerHiringListInfo> list = agmsHiringDalService.practitionerApplyList(requestVO);
resp.setPractitionerHiringList(PageInfoUtils.list2PageInfo(list, requestVO.getPageInfo().getPageNum(), requestVO.getPageInfo().getPageSize()));
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
/**
* AGMS -- 经纪人报聘列表导出
* @param requestVO 请求数据
* @param response 返回数据流
* @return 响应数据
*/
@Override
public CommonResultResponseVO exportPractitionerApplyList(PractitionerHiringListRequestVO requestVO,HttpServletResponse response) {
CommonResultResponseVO resp = new CommonResultResponseVO();
resp.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("800001")));
if (requestVO == null) {
resp.setCommonResult(new CommonResult(false, "请求对象不能为空!"));
return resp;
}else{
if (CommonUtil.isNullOrBlank(requestVO.getStatus())) {
resp.setCommonResult(new CommonResult(false, "请求信息中【审批状态】不能为空!"));
return resp;
}else if (CommonUtil.isNullOrBlank(requestVO.getEndDate())) {
resp.setCommonResult(new CommonResult(false, "请求信息中【报聘申请结束日期】不能为空!"));
return resp;
}
}
if (!CommonUtil.isNullOrBlank(requestVO.getName())) {
requestVO.setName("%"+requestVO.getName()+"%");
}
try {
List<PractitionerHiringListInfo> list = agmsHiringDalService.practitionerApplyList(requestVO);
createCSV(list, response);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
private void createCSV(List<PractitionerHiringListInfo> practitionerHiringListInfos, HttpServletResponse response) {
String charset = "UTF-8"; // 读取字符编码
String[] columnName = new String[]{"序号", "审批状态", "审批日期", "姓名", "手机号", "报聘职级", "辅导人", "介绍人", "体系", "分公司", "申请日期"};
String tableName = "YD_Export_PractitionerArrly";
String CSV_COLUMN_SEPARATOR = ",";//CSV文件列分隔符
String CSV_ROW_SEPARATOR = "\r\n";//CSV文件行分隔符
// 保证线程安全
StringBuilder buf = new StringBuilder();
// 组装表头
for (String title : columnName) {
buf.append(title).append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_ROW_SEPARATOR);
// 组装数据
if (CollectionUtils.isNotEmpty(practitionerHiringListInfos)) {
for (int i = 0; i < practitionerHiringListInfos.size(); i++) {
PractitionerHiringListInfo info = practitionerHiringListInfos.get(i);//遍历每个对象
buf.append(i + 1).append(CSV_COLUMN_SEPARATOR);
if("0".equals(info.getStatus())){
buf.append("拒绝").append(CSV_COLUMN_SEPARATOR);
}else if("1".equals(info.getStatus())){
buf.append("通过").append(CSV_COLUMN_SEPARATOR);
}else if(info.getStatus() == null){
buf.append("待审批").append(CSV_COLUMN_SEPARATOR);
}else{
buf.append(info.getStatus()).append(CSV_COLUMN_SEPARATOR);
}
buf.append(info.getApprovingTime() == null ? "" : info.getApprovingTime()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getName() == null ? "" : info.getName()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getMobileNo() == null ? "" : info.getMobileNo()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getPractitionerLevel() == null ? "" : info.getPractitionerLevel()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getMentor() == null ? "" : info.getMentor()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getIntroducer() == null ? "" : info.getIntroducer()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getSubsystem() == null ? "" : info.getSubsystem()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getBranch() == null ? "" : info.getBranch()).append(CSV_COLUMN_SEPARATOR);
buf.append(info.getApplicationTime() == null ? "" : info.getApplicationTime()).append(CSV_COLUMN_SEPARATOR);
buf.append(CSV_ROW_SEPARATOR);
}
}
// 设置文件后缀
String fn = tableName + System.currentTimeMillis() + ".csv";
String headStr = "attachment; filename=\"" + fn + "\"";
// 设置响应
response.setContentType("APPLICATION/ms-csv.numberformat");
response.setCharacterEncoding(charset);
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();
os.write(buf.toString().getBytes("GBK"));
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@SuppressWarnings("unchecked")
private void saveRecords(Long loginPractitionerId,
String mobileNo, List<MdPractitionerHiringApproveSteps> hiringApproveStepsList,
......@@ -345,6 +494,7 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
PractitionerHiringApproveResponseVO responseVO) {
Long basicInfoId = requestVO.getHiringBasicInfoId();
String stepsSeqBackTo = requestVO.getStepsSeqBackTo();
BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate("stepSeq", requestVO.getHiringApproveStepsSeq());
List<MdPractitionerHiringApproveSteps> steps = (List<MdPractitionerHiringApproveSteps>) CollectionUtils.select(hiringApproveStepsList, predicate);
......@@ -374,12 +524,21 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
AclPractitionerHiringBasicInfo updateObj = new AclPractitionerHiringBasicInfo();
updateObj.setId(basicInfoId);
updateObj.setApproveStatus(step.getStepSeq().toString());
basicInfoMapper.updateByPrimaryKeySelective(updateObj);
if (CommonUtil.isNullOrZero(requestVO.getApprovingStatus())) {
if (stepsSeqBackTo == null) {
basicInfoMapper.changeBasicinfoUpdatable(basicInfoId);
} else {
updateObj.setApproveStatus(stepsSeqBackTo);
basicInfoMapper.updateByPrimaryKeySelective(updateObj);
}
} else {
basicInfoMapper.updateByPrimaryKeySelective(updateObj);
}
if (CommonUtil.isNullOrZero(requestVO.getApprovingStatus())) {
// 审批拒绝 1.更新basicInfo表审批状态为 "null-可修改" 2.删除全部审批记录
basicInfoMapper.changeBasicinfoUpdatable(basicInfoId);
aclPractitionerHiringApproveRecordsDalService.deleteByHiringBasicInfoId(basicInfoId);
// 审批回退, 将指定审批记录设置"回退"状态
Integer stepSeqStart = this.getRecordsRollBackStepSeqStart(stepsSeqBackTo);
this.setRecordsRollBack(stepSeqStart, step.getStepSeq(), requestVO.getRejectNote(), basicInfoId);
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return;
......@@ -420,6 +579,131 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
}
private Integer getRecordsRollBackStepSeqStart(String stepsSeqBackTo) {
Integer stepSeqStart;
if ("-2".equals(stepsSeqBackTo)) {
stepSeqStart = 1;
} else if ("1".equals(stepsSeqBackTo)) {
stepSeqStart = 2;
} else if ("2".equals(stepsSeqBackTo)) {
stepSeqStart = 3;
} else if ("3".equals(stepsSeqBackTo)) {
stepSeqStart = 4;
} else if ("4".equals(stepsSeqBackTo)) {
stepSeqStart = 5;
} else {
stepSeqStart = 0;
}
return stepSeqStart;
}
private void setRecordsRollBack(Integer stepSeqStart, Integer stepSeq, String rejectNote, Long basicInfoId) {
rejectNote = StringUtils.isBlank(rejectNote) ? "无" : rejectNote;
String approveName = null;
if (Integer.valueOf("1").equals(stepSeqStart)) {
approveName = "辅导人";
} else if (Integer.valueOf("2").equals(stepSeqStart)) {
approveName = "体系负责人";
} else if (Integer.valueOf("3").equals(stepSeqStart)) {
approveName = "公司运营主管";
} else if (Integer.valueOf("4").equals(stepSeqStart)) {
approveName = "寿险总经理";
} else if (Integer.valueOf("5").equals(stepSeqStart)) {
approveName = "公司总经理";
} else if (Integer.valueOf("0").equals(stepSeqStart)) {
approveName = "报聘人";
}
// 1.获取通知人员列表
ArrayList<Map<String, String>> list = new ArrayList<>();
// 2.查询审批记录
List<AclPractitionerHiringApproveRecords> recordsList = aclPractitionerHiringApproveRecordsDalService.queryListByBasicInfoId(basicInfoId);
// 2.1 如果有审批记录,筛选需要提醒的审批经纪人id
List<Long> practitionerIds = recordsList.stream()
.filter(i -> (Integer.parseInt(i.getStepSeq()) >= stepSeqStart && Integer.parseInt(i.getStepSeq()) < stepSeq)
)
.map(AclPractitionerHiringApproveRecords::getApprovingPractitionerId)
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(practitionerIds)) {
List<PractitionerInfo> practitionerList = aclPractitionerDalService.findPractitionerInfoByIdList(practitionerIds);
for (PractitionerInfo practitionerInfo : practitionerList) {
Map<String, String> map = new HashMap<>();
map.put("name", practitionerInfo.getName());
map.put("mobileNo", practitionerInfo.getMobileNo());
map.put("ydWechatOpenid", practitionerInfo.getYdWechatOpenid());
list.add(map);
}
}
// 2.2 如果退回到报聘人,还要提醒报聘人
if (Integer.valueOf("0").equals(stepSeqStart)) {
AclPractitionerHiringBasicInfo basicInfo = aclPractitionerHiringBasicInfoDalService.findById(basicInfoId);
AclCustomer customer = aclCustomerDalService.findByMobileNo(basicInfo.getMobileNo());
Map<String, String> map = new HashMap<>();
map.put("name", basicInfo.getName());
map.put("mobileNo", basicInfo.getMobileNo());
map.put("ydWechatOpenid", customer == null ? null : customer.getYdWechatOpenid());
list.add(map);
}
// 3.回退提醒发消息(短信和微信推送)
if (CollectionUtils.isNotEmpty(list)) {
this.approveRollBackNoticeSendMsg(approveName, rejectNote, list, basicInfoId);
}
}
private void approveRollBackNoticeSendMsg(String approveName, String rejectNote, List<Map<String, String>> practitionerList, Long basicInfoId) {
AclPractitionerHiringBasicInfo basicInfo = aclPractitionerHiringBasicInfoDalService.findById(basicInfoId);
// 查询辅导人所在S1,S2,S3
AclPractitionerHiringMembership hiringMemberShip = practitionerHiringDalService.queryHiringMemberShip(basicInfoId);
// 报聘人组织关系
String orgInfo = practitionerHiringDalService.getHiringOrganizationInfo(basicInfo, hiringMemberShip);
// 短信模板
String templateCode = systemConfigService.getSingleConfigValue("ALI_SMS_HiringApproveRollBackNotice");
String jumpUrl = systemConfigService.getSingleConfigValue("hiringApprove_page_url");
// 被提醒人的姓名手机号
String mobileNo;
String name;
for (Map<String, String> practitioner : practitionerList) {
mobileNo = practitioner.get("mobileNo");
name = practitioner.get("name");
// 1.发短信
if (StringUtils.isNotBlank(mobileNo)) {
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》电子报聘退回发送短信");
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + name + ": " + mobileNo);
// 短信内容 ${name},您好!${hiringName}报聘审批被退回至${approveName}
JSONObject content = new JSONObject();
content.put("name", name);
content.put("hiringName", orgInfo);
if (mobileNo.equals(basicInfo.getMobileNo())) {
content.put("approveName", "公众号,退回原因<" + rejectNote + ">");
} else {
content.put("approveName", approveName + ",退回原因<" + rejectNote + ">" + ",请至“赢家平台>我的团队-报聘审批”进行查看审批,谢谢!" + jumpUrl);
}
sendService.sendEmailOrSMS("sms", mobileNo, "0", content.toJSONString(), templateCode, null, null, "电子报聘审批退回", 99, basicInfoId);
} else {
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》电子报聘聘退回发送短信电话号码不存在");
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + name + ": " + mobileNo);
}
// 2.微信公众号推送
}
// 微信模板
String firstValue = "name,您好!hiringName经纪人报聘审批被退回";
firstValue = firstValue.replace("hiringName", orgInfo);
StringBuffer stringBuffer = new StringBuffer(firstValue);
stringBuffer.append(";审批退回,退回原因<").append(rejectNote).append(">");
// 用现有方法发微信
agmsHiringDalService.noticeSendWeChatMsg(stringBuffer.toString(), "退回待审批", practitionerList, basicInfo);
}
private boolean isHasNextStep(Long loginPractitionerId, String mobileNo, Long basicInfoId, MdPractitionerHiringApproveSteps nextStep) {
// 判断是辅导人和团队长
if (!CommonUtil.isNullOrZero(loginPractitionerId)) {
......@@ -495,6 +779,13 @@ public class AgmsHiringServiceImpl implements AgmsHiringService {
practitioner.setEducationLevel(basicInfo.getLastGraduateCode());
practitioner.setGraduatedUniversity(basicInfo.getLastGraduateSchool());
practitioner.setMentorId(membership.getMentorPractitionerId());
if(practitioner.getMentorId() != null){
AclPractitioner aclPractitionerMentor = aclPractitionerDalService.findById(practitioner.getMentorId());
if(aclPractitionerMentor != null && aclPractitionerMentor.getMentorId() != null){
practitioner.setInMentorId(aclPractitionerMentor.getMentorId());
}
}
practitioner.setIntroducerId(membership.getIntroducerPractitionerId());
practitioner.setGender(basicInfo.getGender());
practitioner.setHiringBasicInfoId(hiringBasicInfoId);
......
package com.yd.api.agms.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yd.api.agms.service.AgmsPractitionerService;
import com.yd.api.agms.vo.practitioner.*;
import com.yd.api.result.CommonResult;
import com.yd.api.result.CommonResultResponseVO;
import com.yd.dal.entity.customer.AclCustomer;
import com.yd.dal.entity.customer.AclPractitionerFileSharing;
import com.yd.dal.service.agms.AgmsPractitionerDALService;
......@@ -12,11 +14,16 @@ import com.yd.dal.service.customer.AclPractitionerFileSharingDALService;
import com.yd.util.CommonUtil;
import com.yd.util.config.ZHBErrorConfig;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/**
* @author xxy
......@@ -30,11 +37,12 @@ public class AgmsPractitionerServiceImpl implements AgmsPractitionerService {
private AgmsPractitionerDALService agmsPractitionerDALService;
@Autowired
private AclPractitionerDALService aclPractitionerDALService;
@Override
public PractitionerFileSharingSaveResponseVO practitionerFileSharingSave(PractitionerFileSharingSaveRequestVO requestVO) {
PractitionerFileSharingSaveResponseVO responseVO = new PractitionerFileSharingSaveResponseVO();
AclPractitionerFileSharing fileSharing = new AclPractitionerFileSharing();
BeanUtils.copyProperties(requestVO,fileSharing);
BeanUtils.copyProperties(requestVO, fileSharing);
fileSharing.setUpdatedBy(requestVO.getLoginId());
Long id = aclPractitionerFileSharingDalService.saveOrUpdate(fileSharing);
responseVO.setId(id);
......@@ -45,15 +53,15 @@ public class AgmsPractitionerServiceImpl implements AgmsPractitionerService {
@Override
public PractitionerFileSharingListResponseVO practitionerFileSharingList(PractitionerFileSharingListRequestVO requestVO) {
PractitionerFileSharingListResponseVO responseVO = new PractitionerFileSharingListResponseVO();
Long[] mdDropOptionIds=null;
if (!CommonUtil.isNullOrBlank(requestVO.getMdDropOptionId())){
mdDropOptionIds=(Long[]) ConvertUtils.convert(requestVO.getMdDropOptionId().split(","),Long.class);
Long[] mdDropOptionIds = null;
if (!CommonUtil.isNullOrBlank(requestVO.getMdDropOptionId())) {
mdDropOptionIds = (Long[]) ConvertUtils.convert(requestVO.getMdDropOptionId().split(","), Long.class);
}
//等保调整
if(null != requestVO.getPractitionerId()){
List<AclCustomer> findByObjSortable = aclPractitionerDALService.getAclCustomers(requestVO.getPractitionerId(),null);
if(null == findByObjSortable ){
responseVO.setCommonResult(new CommonResult(false,ZHBErrorConfig.getErrorInfo("630028")));
if (null != requestVO.getPractitionerId()) {
List<AclCustomer> findByObjSortable = aclPractitionerDALService.getAclCustomers(requestVO.getPractitionerId(), null);
if (null == findByObjSortable) {
responseVO.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("630028")));
return responseVO;
}
}
......@@ -71,4 +79,191 @@ public class AgmsPractitionerServiceImpl implements AgmsPractitionerService {
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
@Override
public PractitionerScheduleResponseVO practitionerSchedule(PractitionerScheduleRequestVO requestVO) {
PractitionerScheduleResponseVO resp = new PractitionerScheduleResponseVO();
Long practitionerId = requestVO.getPractitionerId();
String trackDate = requestVO.getTrackTime();
// if (StringUtils.isEmpty(trackDate) || null == practitionerId) {
// resp.setCommonResult(new CommonResult(true, "经纪人id和查询时间不能为空"));
// return resp;
// }
List<PractitionerScheduleInfo> list;
try {
PageInfo<PractitionerScheduleInfo> page = requestVO.getPage();
PageHelper.startPage(page.getPageNum(), page.getPageSize(), null);
list = agmsPractitionerDALService.practitionerSchedule(requestVO);
PageInfo<PractitionerScheduleInfo> pageInfo = new PageInfo<>(list);
// 设置resp
resp.setList(pageInfo.getList());
pageInfo.setList(null);
resp.setPage(pageInfo);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
} catch (Exception e) {
e.printStackTrace();
resp.setCommonResult(new CommonResult(false, e.getMessage()));
}
return resp;
}
@Override
public CommonResultResponseVO practitionerScheduleExport(PractitionerScheduleRequestVO requestVO, HttpServletResponse response) {
CommonResultResponseVO resp = new CommonResultResponseVO();
List<Map<String, Object>> dataList = agmsPractitionerDALService.practitionerScheduleExport(requestVO);
// 表头和表名
String[] columnName = new String[]{"序号", "经纪人姓名", "日期", "日程类型", "日程内容", "任务开始时间", "任务结束时间", "备注", "设置时间"};
String tableName = "PractitionerSchedule" + System.currentTimeMillis() + ".csv";
// 导出
this.exportCSV(tableName, columnName, dataList, response);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return resp;
}
@Override
public PractitionerLeadsGoalsResponseVO practitionerLeadsGoals(PractitionerLeadsGoalsRequestVO requestVO) {
PractitionerLeadsGoalsResponseVO resp = new PractitionerLeadsGoalsResponseVO();
List<PractitionerLeadsGoalsInfo> list;
try {
PageInfo<PractitionerLeadsGoalsInfo> page = requestVO.getPage();
PageHelper.startPage(page.getPageNum(), page.getPageSize(), null);
list = agmsPractitionerDALService.practitionerLeadsGoals(requestVO);
PageInfo<PractitionerLeadsGoalsInfo> pageInfo = new PageInfo<>(list);
// 设置resp
resp.setList(pageInfo.getList());
pageInfo.setList(null);
resp.setPage(pageInfo);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
} catch (Exception e) {
e.printStackTrace();
resp.setCommonResult(new CommonResult(false, e.getMessage()));
}
return resp;
}
@Override
public CommonResultResponseVO practitionerLeadsGoalsExport(PractitionerLeadsGoalsRequestVO requestVO, HttpServletResponse response) {
CommonResultResponseVO resp = new CommonResultResponseVO();
List<Map<String, Object>> dataList = agmsPractitionerDALService.practitionerLeadsGoalsExport(requestVO);
String[] columnName = new String[]{"序号", "经纪人姓名", "目标类型", "设置年份或月份", "保费", "佣金", "件数", "件均保费", "设置时间"};
String tableName = "PractitionerLeadsGoals" + System.currentTimeMillis() + ".csv";
this.exportCSV(tableName, columnName, dataList, response);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return resp;
}
@Override
public PractitionerActivityResponseVO practitionerActivity(PractitionerActivityRequestVO requestVO) {
PractitionerActivityResponseVO resp = new PractitionerActivityResponseVO();
List<PractitionerActivityInfo> list;
try {
PageInfo<PractitionerActivityInfo> page = requestVO.getPage();
PageHelper.startPage(page.getPageNum(), page.getPageSize(), null);
list = agmsPractitionerDALService.practitionerActivity(requestVO);
PageInfo<PractitionerActivityInfo> pageInfo = new PageInfo<>(list);
// 设置resp
resp.setList(pageInfo.getList());
pageInfo.setList(null);
resp.setPage(pageInfo);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
} catch (Exception e) {
e.printStackTrace();
resp.setCommonResult(new CommonResult(false, e.getMessage()));
}
return resp;
}
@Override
public CommonResultResponseVO practitionerActivityExport(PractitionerActivityRequestVO requestVO, HttpServletResponse response) {
CommonResultResponseVO resp = new CommonResultResponseVO();
List<Map<String, Object>> dataList = agmsPractitionerDALService.practitionerActivityExport(requestVO);
String[] columnName = new String[]{"序号", "经纪人", "活动量类型", "活动量分值", "日期"};
String tableName = "PractitionerActivity" + System.currentTimeMillis() + ".csv";
this.exportCSV(tableName, columnName, dataList, response);
resp.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return resp;
}
private void exportCSV(String tableName, String[] columnName, List<Map<String, Object>> dataList, HttpServletResponse response) {
// String[] columnName = new String[]{"序号", "经纪人姓名", "日期", "日程类型", "日程内容", "任务开始时间", "任务结束时间", "备注", "设置时间"};
// String tableName = "PractitionerSchedule" + System.currentTimeMillis() + ".csv";
String CSV_COLUMN_SEPARATOR = ",";//CSV文件列分隔符
String CSV_ROW_SEPARATOR = "\r\n";//CSV文件行分隔符
// 保证线程安全
StringBuilder buf = new StringBuilder();
// 组装表头
for (String title : columnName) {
buf.append(title).append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_ROW_SEPARATOR);
// 组装数据
if (CollectionUtils.isNotEmpty(dataList)) {
Map<String, Object> map = null;
for (int i = 0; i < dataList.size(); i++) {
map = dataList.get(i);//遍历每个对象
// 序号
buf.append(i + 1).append(CSV_COLUMN_SEPARATOR);
for (int j = 1; j < columnName.length; j++) {
buf.append(map.get(j + "") == null ? "" : map.get(j + "")).append("\t").append(CSV_COLUMN_SEPARATOR);
}
buf.append(CSV_ROW_SEPARATOR);
}
}
// 设置文件后缀
setCSVResponse(response, tableName, buf);
}
private void setCSVResponse(HttpServletResponse response, String fn, StringBuilder data) {
String charset = "UTF-8"; // 读取字符编码
// String fn = tableName + System.currentTimeMillis() + ".csv";
String headStr = "attachment; filename=\"" + fn + "\"";
// 设置响应
response.setContentType("APPLICATION/ms-csv.numberformat");
response.setCharacterEncoding(charset);
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();
os.write(data.toString().getBytes("GBK"));
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
......@@ -67,7 +67,15 @@ public class CommissionPayoutStatusQueryRequestVO {
private Long s3Id;
private Long s2Id;
private Long s1Id;
/**
* 渠道Id
*/
private Long channelId;
/**
* 渠道类型: 对公:1; 对私:2
*/
private String channelType;
private PageInfo<CommissionPayoutStatus> page;
public Long getInsurerId() {
......@@ -212,5 +220,22 @@ public class CommissionPayoutStatusQueryRequestVO {
public void setCommissionTypeDropOptionCodeList(List<String> commissionTypeDropOptionCodeList) {
this.commissionTypeDropOptionCodeList = commissionTypeDropOptionCodeList;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getChannelType() {
return channelType;
}
public void setChannelType(String channelType) {
this.channelType = channelType;
}
}
......@@ -45,6 +45,8 @@ public class ExportFortunePayRequestVO {
private Long s3Id;
private Long s2Id;
private Long s1Id;
private Long channelId;
private String channelType;
/**
* 获取 预计发佣年月
......@@ -205,4 +207,21 @@ public class ExportFortunePayRequestVO {
", commissionPayoutStatus=" + commissionPayoutStatus +
'}';
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getChannelType() {
return channelType;
}
public void setChannelType(String channelType) {
this.channelType = channelType;
}
}
......@@ -47,5 +47,8 @@ public class WithdrawQueryRequestVO {
private String systemFlag;
private Long s3Id;
private Long s2Id;
private Long s1Id;
private Long s1Id;
private Long channelId;
private String channelType;
}
......@@ -25,10 +25,14 @@ public class PractitionerHiringApproveRequestVO {
*/
private Integer hiringApproveStepsSeq;
/**
* 1:通过,0:驳回
* 1:通过,0:驳回(回退)
*/
private Long approvingStatus;
/**
* 回退到哪一个节点(null:报聘人, -2:辅导人, 1:体系负责人, 2:公司运营主管, 3:寿险总经理, 4:公司总经理)
*/
private String stepsSeqBackTo;
/**
* 备注,驳回原因
*/
private String rejectNote;
......@@ -141,4 +145,12 @@ public class PractitionerHiringApproveRequestVO {
public void setPractitionerId(Long practitionerId) {
this.practitionerId = practitionerId;
}
public String getStepsSeqBackTo() {
return stepsSeqBackTo;
}
public void setStepsSeqBackTo(String stepsSeqBackTo) {
this.stepsSeqBackTo = stepsSeqBackTo;
}
}
......@@ -18,6 +18,8 @@ public class PractitionerHiringListRequestVO {
private Long s3Id;
private Long s2Id;
private Long s1Id;
private String startDate;
private String endDate;
private PageInfo<PractitionerHiringListInfo> pageInfo;
......@@ -115,4 +117,21 @@ public class PractitionerHiringListRequestVO {
public void setS1Id(Long s1Id) {
this.s1Id = s1Id;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
package com.yd.api.agms.vo.practitioner;
import lombok.Data;
@Data
public class PractitionerActivityInfo {
private String practitionerName;
private String type;
private String score;
private String timePeriod;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import lombok.Data;
@Data
public class PractitionerActivityRequestVO {
private Long practitionerId;
private String startDate;
private String endDate;
private PageInfo<PractitionerActivityInfo> page;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import com.yd.api.result.CommonResult;
import lombok.Data;
import java.util.List;
@Data
public class PractitionerActivityResponseVO {
private CommonResult commonResult;
private List<PractitionerActivityInfo> list;
private PageInfo<PractitionerActivityInfo> page;
}
package com.yd.api.agms.vo.practitioner;
import lombok.Data;
import java.util.Date;
@Data
public class PractitionerLeadsGoalsInfo {
/**
* p.name 经纪人名称,
* CASE (t.statistic_time_unit) WHEN 1 THEN '年度目标' WHEN 3 THEN '月度目标' ELSE '其他' END 目标类型,
* t.seq_time 设置年份或者月份,
* t.premium 保费,t.commission 佣金,
* t.pieces 件数,
* t.piece_average_premium 件均保费,
* t.created_at 设置时间
*/
private String practitionerName;
private String type;
private String seqTime;
private String premium;
private String commission;
private String pieces;
private String pieceAveragePremium;
private Date createdAt;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import lombok.Data;
@Data
public class PractitionerLeadsGoalsRequestVO {
private String date;
private Long practitionerId;
private Integer type;
private PageInfo<PractitionerLeadsGoalsInfo> page;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import com.yd.api.result.CommonResult;
import lombok.Data;
import java.util.List;
@Data
public class PractitionerLeadsGoalsResponseVO {
private CommonResult commonResult;
private List<PractitionerLeadsGoalsInfo> list;
private PageInfo<PractitionerLeadsGoalsInfo> page;
}
package com.yd.api.agms.vo.practitioner;
import lombok.Data;
import java.util.Date;
@Data
public class PractitionerScheduleInfo {
/**
* p.name 经纪人名称,
* 日程,
* CASE (t.task_type) WHEN 1 THEN '商机' WHEN 2 THEN '增员' ELSE '其他' END 日程类型,
* op.drop_option_name 日程内容,
* t.track_time 日程,
* t.task_time_from 任务开始时间,
* task_time_end 任务结束时间,
* t.notice 备注,
* t.created_at 设置时间
*/
private String practitionerName;
private String trackTime;
private String taskType;
private String dropOptionName;
private String taskTimeFrom;
private String taskTimeEnd;
private String notice;
private Date createdAt;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import lombok.Data;
@Data
public class PractitionerScheduleRequestVO {
private String trackTime;
private Long practitionerId;
private Integer taskType;
private String dropOptionName;
private PageInfo<PractitionerScheduleInfo> page;
}
package com.yd.api.agms.vo.practitioner;
import com.github.pagehelper.PageInfo;
import com.yd.api.result.CommonResult;
import lombok.Data;
import java.util.List;
@Data
public class PractitionerScheduleResponseVO {
private CommonResult commonResult;
private List<PractitionerScheduleInfo> list;
private PageInfo<PractitionerScheduleInfo> page;
}
......@@ -1221,6 +1221,8 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
List<RenewalYearPerformanceCommission> c12List = new ArrayList<>();
List<Commission> c13List = new ArrayList<>();
List<Commission> c14List = new ArrayList<>();
List<Commission> d01List = new ArrayList<>();
List<Commission> d02List = new ArrayList<>();
List<OtherCommission> otherCommissionLis = new ArrayList<>();
......@@ -1231,7 +1233,7 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
List<WithdrawLabelInfo> list = agmsFortuneDalService.salaryPolicyNoDetails(info);
if(null != list && list.size() >0){
for(WithdrawLabelInfo withdrawLabelInfo : list){
if ("C01,C02,C03,C04,C05,C08,C11,R03,C14,C15,R02,".indexOf(withdrawLabelInfo.getDropOptionCode()+",") != -1) {
if ("C01,C02,C03,C04,C05,C08,C11,R03,C14,C15,R02,D01,D02,".indexOf(withdrawLabelInfo.getDropOptionCode()+",") != -1) {
Commission commission = new Commission();
commission.setCommission(withdrawLabelInfo.getReferralAmount().doubleValue());//佣金
commission.setCustomer(withdrawLabelInfo.getInsurerName());//保险公司
......@@ -1284,6 +1286,12 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
if ("C14".equals(withdrawLabelInfo.getDropOptionCode())) {
c14List.add(commission);
}
if ("D01".equals(withdrawLabelInfo.getDropOptionCode())) {
d01List.add(commission);
}
if ("D02".equals(withdrawLabelInfo.getDropOptionCode())) {
d02List.add(commission);
}
//体系推荐奖
if ("C15".equals(withdrawLabelInfo.getDropOptionCode())) {
RecommendSystemCommission recommendSystemCommission = new RecommendSystemCommission();
......@@ -1347,7 +1355,7 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
}
//C99:其他,C98:公司激励奖金,C97:其它税前加扣款,C96:加码奖金,C95:季度奖金,C94,银盾在线佣金
if ("C99,C94,C95,C96,C97,C98,S01,S03,".indexOf(withdrawLabelInfo.getDropOptionCode()+",") != -1) {
if ("C99,C94,C95,C96,C97,C98,S01,S03,D91,D92,".indexOf(withdrawLabelInfo.getDropOptionCode()+",") != -1) {
OtherCommission otherCommission = new OtherCommission();
otherCommission.setComments(withdrawLabelInfo.getRemark());
otherCommission.setCommissionName(withdrawLabelInfo.getCommissionType());
......@@ -1423,7 +1431,10 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
responseBody.setOtherCommissionList(newOtherCommissionLis);
//C11 独立经纪人展业津贴
responseBody.setIndependentBrokerAllowanceList(c11List);
//D01 首年渠道服务费
responseBody.setChannelFristYearCommissionList(d01List);
//D02 续年渠道服务费
responseBody.setChannelRenewalYearCommissionList(d02List);
}
/**
......@@ -1517,7 +1528,7 @@ public class PractitionerBasicInfoServiceImpl implements PractitionerBasicInfoSe
if ("C14".equals(commissionType)) {
return "A-006";
}
return null;
return commissionType;
}
private void queryYdOnlineCommission(SearchStaffSalaryDetailsRequestBody requestVO, SearchStaffSalaryDetailsResponseBody responseBody) {
......
......@@ -442,7 +442,7 @@ public class PractitionerHiringServiceImpl implements PractitionerHiringService
hiringListInfoList = practitionerHiringDalService.queryUnhandledList(practitionerId);
} else {
// 当前经纪人通过或拒绝的记录
int status = Long.valueOf("1").equals(approvingStatus) ? 1 : 0;
int status = approvingStatus.intValue();
hiringListInfoList = practitionerHiringDalService.queryHandledList(practitionerId, status);
}
......
......@@ -754,6 +754,15 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
practitionerItem.setPractitionerId(practitionerIdForOnLine.toString());
}
practitionerIdItem = practitionerItem.getPractitionerId();
if (practitionerId.equals(practitionerIdItem)) {//赋值、
if(boole){
BeanUtils.copyProperties(practitionerItem, practitionerInfo);
practitionerInfo.setRank(rank);
}
if (rank > 10) {
break;
}
}
if (rank <= 10) {//排名
if(practitionerId.equals(practitionerIdItem)){
if(!boole) continue;
......@@ -766,13 +775,6 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
fortuneStatistics.setRank(rank);
rankList.add(fortuneStatistics);
}
if (practitionerId.equals(practitionerIdItem)) {//赋值
BeanUtils.copyProperties(practitionerItem, practitionerInfo);
practitionerInfo.setRank(rank);
if (rank > 10) {
break;
}
}
rank++;
}
}
......
......@@ -104,6 +104,14 @@ public class CommissionPayoutStatus {
private String monthPeriod;
private String remark;
/**
* 渠道类型: 对公:1; 对私:2或者空
*/
private String channelType;
/**
* 所属渠道
*/
private String channelName;
public String getCommissionPayoutYearmonth() {
return commissionPayoutYearmonth;
......@@ -283,6 +291,7 @@ public class CommissionPayoutStatus {
", commissionPayoutStatus='" + commissionPayoutStatus + '\'' +
", monthPeriod='" + monthPeriod + '\'' +
", remark='" + remark + '\'' +
", channelType='" + channelType + '\'' +
'}';
}
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
......@@ -301,4 +310,28 @@ public class CommissionPayoutStatus {
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 渠道类型: 对公:1; 对私:2或者空
* @return the channelType
*/
public String getChannelType() {
return channelType;
}
/**
* 渠道类型: 对公:1; 对私:2或者空
* @param channelType the channelType to set
*/
public void setChannelType(String channelType) {
this.channelType = channelType;
}
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
}
......@@ -64,6 +64,12 @@ public class CommissionPayoutStatusQueryInfo {
* 体系子集id
*/
List<Long> subsystemIdList;
/**
* 渠道Id
*/
private Long channelId;
private String channelType;//渠道类型: 对公:1; 对私:2或者空
private PageInfo<CommissionPayoutStatus> page;
......@@ -184,4 +190,21 @@ public class CommissionPayoutStatusQueryInfo {
public void setCommissionTypeDropOptionCodeList(List<String> commissionTypeDropOptionCodeList) {
this.commissionTypeDropOptionCodeList = commissionTypeDropOptionCodeList;
}
public Long getChannelId() {
return channelId;
}
public void setChannelId(Long channelId) {
this.channelId = channelId;
}
public String getChannelType() {
return channelType;
}
public void setChannelType(String channelType) {
this.channelType = channelType;
}
}
......@@ -98,6 +98,15 @@ public class FortunePayToOrderInfo {
*/
private BigDecimal fycAmount;
/**
* 渠道名称
*/
private String channelName;
/**
* 渠道联系人手机号
*/
private String contactPhone;
/**
* 获取 保险公司
......@@ -422,8 +431,24 @@ public class FortunePayToOrderInfo {
public void setFycAmount(BigDecimal fycAmount) {
this.fycAmount = fycAmount;
}
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
public String getContactPhone() {
return contactPhone;
}
public void setContactPhone(String contactPhone) {
this.contactPhone = contactPhone;
}
@Override
@Override
public String toString() {
return "FortunePayToOrderInfo{" +
"insurerName='" + insurerName + '\'' +
......@@ -444,6 +469,8 @@ public class FortunePayToOrderInfo {
", insurerBranchDeptName='" + insurerBranchDeptName + '\'' +
", subordinateSystemName='" + subordinateSystemName + '\'' +
", fycAmount=" + fycAmount +
", channelName=" + channelName +
", contactPhone=" + contactPhone +
'}';
}
}
......
......@@ -3,7 +3,6 @@ package com.yd.dal.entity.agms.fortune;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author xxy
......@@ -18,7 +17,10 @@ public class WithdrawLabelInfo {
* 预计发佣年月
*/
private String payoutYearmonth;
/**
* 所属渠道
*/
private String channelName;
/**
* 经纪人
*/
......@@ -158,6 +160,7 @@ public class WithdrawLabelInfo {
*匹配佣奖率的金额
*/
private BigDecimal calculationAmount;
private String channelType;
}
......
......@@ -43,5 +43,8 @@ public class WithdrawQueryInfo {
* 体系子集id
*/
List<Long> subsystemIdList;
private Long channelId;
private String channelType;
}
......@@ -208,6 +208,11 @@ public class AclPractitioner {
private Long mentorId;
/**
* FK ag_acl_practitioner.id 间接辅导人
*/
private Long inMentorId;
/**
* FK ag_acl_practitioner.id 介绍人
*/
private Long introducerId;
......
package com.yd.dal.entity.customer;
import java.util.Date;
import lombok.Data;
import java.util.Date;
/**
* 報聘经纪人報聘审批记录
*/
......@@ -74,4 +75,8 @@ public class AclPractitionerHiringApproveRecords {
private Date updatedAt;
private Long updatedBy;
/**
* 0=No, 1=Yes
*/
private Integer isBack;
}
\ No newline at end of file
......@@ -53,4 +53,11 @@ public interface AgmsFortuneMapper {
List<Long> querySalePractitionerFortune1(List<Long> fortuneIdList);
void commissionPayoutAddRemark(CommissionPayoutAddRemarkRequestVO requestVO);
/**
* 对公渠道清算报表
* @param fortuneIdList
* @return
*/
List<Map<String, Object>> querySheet3Data(List<Long> fortuneIdList);
}
......@@ -78,5 +78,17 @@ public interface AgmsHiringMapper {
@Param("name")String name
);
List<PractitionerHiringListInfo> queryS2List(@Param("approveStatus")String approveStatus);
List<PractitionerHiringListInfo> queryS2List(@Param("approveStatus")String approveStatus,
@Param("name")String name);
Page<PractitionerHiringListInfo> practitionerApplyList(@Param("approveStatus")String approveStatus,
@Param("list")List<String> canAprroveGrades,
@Param("branchId")Long branchId,
@Param("deptId")Long deptId,
@Param("subsystemIdList")List<Long> subsystemIdList,
@Param("name")String name,
@Param("startDate")String startDate,
@Param("endDate")String endDate
);
}
package com.yd.dal.mapper.agms;
import com.github.pagehelper.Page;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharing;
import com.yd.api.agms.vo.practitioner.SharePractitionerInfo;
import com.yd.api.agms.vo.practitioner.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author xxy
*/
......@@ -22,4 +24,17 @@ public interface AgmsPractitionerMapper {
@Param("isActive") Integer isActive);
SharePractitionerInfo findSharePractitioner(String shareCode);
List<PractitionerScheduleInfo> practitionerSchedule(PractitionerScheduleRequestVO requestVO);
List<PractitionerLeadsGoalsInfo> practitionerLeadsGoals(PractitionerLeadsGoalsRequestVO requestVO);
List<Map<String, Object>> practitionerScheduleExport(PractitionerScheduleRequestVO requestVO);
List<Map<String, Object>> practitionerLeadsGoalsExport(PractitionerLeadsGoalsRequestVO requestVO);
List<PractitionerActivityInfo> practitionerActivity(PractitionerActivityRequestVO requestVO);
List<Map<String, Object>> practitionerActivityExport(PractitionerActivityRequestVO requestVO);
}
package com.yd.dal.mapper.customer;
import com.yd.api.practitioner.vo.businessCard.Certificate;
import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardRequestVO;
import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardResponseVO;
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 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 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;
public interface AclPractitionerMapper {
int deleteByPrimaryKey(Long id);
......@@ -152,5 +158,6 @@ public interface AclPractitionerMapper {
* @author Yan Wenyang
*/
List<Certificate> findCertificate(List<Long> certIdList);
List<PractitionerInfo> findPractitionerInfoByIdList(List<Long> idList);
}
......@@ -53,4 +53,6 @@ public interface AgmsFortuneDALService {
List<Long> querySalePractitionerFortune1(List<Long> fortuneIdList);
void commissionPayoutAddRemark(CommissionPayoutAddRemarkRequestVO requestVO);
List<Map<String, Object>> querySheet3Data(List<Long> fortuneIdList);
}
......@@ -3,10 +3,12 @@ package com.yd.dal.service.agms;
import com.github.pagehelper.PageInfo;
import com.yd.api.agms.vo.hiring.PractitionerHiringListRequestVO;
import com.yd.dal.entity.agms.hiring.*;
import com.yd.dal.entity.customer.AclPractitionerHiringBasicInfo;
import com.yd.dal.entity.customer.AclPractitionerHiringMembership;
import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import java.util.List;
import java.util.Map;
/**
* @author xxy
......@@ -65,10 +67,14 @@ public interface AgmsHiringDALService {
PageInfo<PractitionerHiringListInfo> queryHandledList(Long practitionerId, String status,
PractitionerHiringListRequestVO requestVO);
List<PractitionerHiringListInfo> practitionerApplyList(PractitionerHiringListRequestVO requestVO);
List<PractitionerHiringListInfo> queryUnhandledList(PractitionerHiringListRequestVO requestVO);
AclPractitionerHiringMembership queryHiringMemberShip(Long hiringBasicInfoId);
void noticeNextStep(MdPractitionerHiringApproveSteps nextStep, Long basicInfoId);
void noticeSendWeChatMsg(String firstValue, String noticeMsg, List<Map<String, String>> practitionerList, AclPractitionerHiringBasicInfo basicInfo);
}
package com.yd.dal.service.agms;
import com.github.pagehelper.PageInfo;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharing;
import com.yd.api.agms.vo.practitioner.SharePractitionerInfo;
import com.yd.api.agms.vo.practitioner.*;
import java.util.List;
import java.util.Map;
/**
* @author xxy
......@@ -19,4 +21,16 @@ public interface AgmsPractitionerDALService {
PageInfo<PractitionerFileSharing> practitionerFileSharingList(Long id ,Long practitionerId,String shareCode,Long[] mdDropOptionId, Integer isActive, int pageNum, int size);
SharePractitionerInfo findSharePractitioner(String shareCode);
List<PractitionerScheduleInfo> practitionerSchedule(PractitionerScheduleRequestVO requestVO);
List<PractitionerLeadsGoalsInfo> practitionerLeadsGoals(PractitionerLeadsGoalsRequestVO requestVO);
List<Map<String, Object>> practitionerScheduleExport(PractitionerScheduleRequestVO requestVO);
List<Map<String, Object>> practitionerLeadsGoalsExport(PractitionerLeadsGoalsRequestVO requestVO);
List<PractitionerActivityInfo> practitionerActivity(PractitionerActivityRequestVO requestVO);
List<Map<String, Object>> practitionerActivityExport(PractitionerActivityRequestVO requestVO);
}
......@@ -103,4 +103,9 @@ public class AgmsFortuneDALServiceImpl implements AgmsFortuneDALService {
fortune.setUpdatedAt(new Date());
aclCustomerFortuneMapper.updateByPrimaryKeySelective(fortune);
}
@Override
public List<Map<String, Object>> querySheet3Data(List<Long> fortuneIdList) {
return agmsFortuneMapper.querySheet3Data(fortuneIdList);
}
}
......@@ -181,58 +181,42 @@ public class AgmsHiringDALServiceImpl implements AgmsHiringDALService {
}
// 1.3 查询审批人列表
List<PractitionerInfo> practitionerList = aclPractitionerDALService.findPractitionerInfoByMobileList(Arrays.asList(mobileNoArray));
// 2.报聘人组织关系, 姓名
StringBuilder name2 = new StringBuilder();
String s3SubordinateSystemName = hiringMemberShip.getS3SubordinateSystemName();
String s2SubordinateSystemName = hiringMemberShip.getS2SubordinateSystemName();
String s1SubordinateSystemName = hiringMemberShip.getS1SubordinateSystemName();
boolean flag = false;
if (StringUtils.isNotEmpty(s3SubordinateSystemName)) {
name2.append(s3SubordinateSystemName);
if (s3SubordinateSystemName.indexOf("纵队") < 0) {
name2.append("纵队");
}
flag = true;
}
if (StringUtils.isNotEmpty(s2SubordinateSystemName)) {
name2.append(s2SubordinateSystemName);
if (s2SubordinateSystemName.indexOf("体系") < 0) {
name2.append("体系");
}
flag = true;
}
if (StringUtils.isNotEmpty(s1SubordinateSystemName)) {
name2.append(s1SubordinateSystemName);
if (s1SubordinateSystemName.indexOf("分部") < 0) {
name2.append("分部");
}
flag = true;
}
if (flag) {
name2.append("的");
}
name2.append(basicInfo.getName());
// 2.获取报聘人组织架构信息
String orgInfo = practitionerHiringDalService.getHiringOrganizationInfo(basicInfo, hiringMemberShip);
// 发送短信通知下一位审批人进行审批
this.noticeSendSMS(name2.toString(), practitionerList, basicInfo);
this.noticeSendSMS(orgInfo, practitionerList, basicInfo);
// 公众号推送通知下一位审批人进行审批
this.noticeSendWeChatMsg(name2.toString(), practitionerList, basicInfo);
String firstValue = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_FIRST_HIRING");
firstValue = firstValue.replace("hiringName", orgInfo);
ArrayList<Map<String, String>> list = new ArrayList<>();
for (PractitionerInfo practitionerInfo : practitionerList) {
Map<String, String> map = new HashMap<>();
map.put("name", practitionerInfo.getName());
map.put("mobileNo", practitionerInfo.getMobileNo());
map.put("ydWechatOpenid", practitionerInfo.getYdWechatOpenid());
list.add(map);
}
this.noticeSendWeChatMsg(firstValue, "待审批", list, basicInfo);
}
private void noticeSendWeChatMsg(String hiringName, List<PractitionerInfo> practitionerList, AclPractitionerHiringBasicInfo basicInfo) {
@Override
public void noticeSendWeChatMsg(String firstValue, String noticeMsg, List<Map<String, String>> practitionerList, AclPractitionerHiringBasicInfo basicInfo) {
// 读取数据库配置
String templateId = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_ID_HIRING");
String jumpUrl = systemConfigService.getSingleConfigValue("hiringApprove_page_url");
String firstValue = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_FIRST_HIRING");
// String firstValue = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_FIRST_HIRING");
String remarkValue = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_REMARK_HIRING");
String color = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_COLOR_XB");
// 组装模板数据
TemplateDataInfo dataInfo = new TemplateDataInfo();
DataDetailInfo first = new DataDetailInfo();
DataDetailInfo keyword1 = new DataDetailInfo("待审批", color);
DataDetailInfo keyword1 = new DataDetailInfo(noticeMsg, color);
DataDetailInfo keyword2 = new DataDetailInfo(CommonUtil.dateParseString(basicInfo.getCreatedAt(),"yyyy-MM-dd HH:mm:ss"), null);
DataDetailInfo remark = new DataDetailInfo(remarkValue, null);
......@@ -248,20 +232,20 @@ public class AgmsHiringDALServiceImpl implements AgmsHiringDALService {
sendTemplateRequest.setData(dataInfo);
sendTemplateRequest.setUrl(jumpUrl);
for (PractitionerInfo practitionerInfo : practitionerList) {
for (Map<String, String> practitionerInfo : practitionerList) {
// openId不为null, 执行
if (StringUtils.isNotBlank(practitionerInfo.getYdWechatOpenid())) {
sendTemplateRequest.setToUser(practitionerInfo.getYdWechatOpenid());
if (StringUtils.isNotBlank(practitionerInfo.get("ydWechatOpenid"))) {
sendTemplateRequest.setToUser(practitionerInfo.get("ydWechatOpenid"));
// 审批人姓名
first.setValue(firstValue.replace("name", practitionerInfo.getName()).replace("hiringName", hiringName));
first.setValue(firstValue.replace("name", practitionerInfo.get("name")));
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》发送微信模板消息审批人");
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + practitionerInfo.getName());
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + practitionerInfo.get("name"));
// 微信通知
wechatService.sendTemplateMessage(sendTemplateRequest);
} else {
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》发送微信模板消息审批人openId为空");
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + practitionerInfo.getName());
logger.error("【》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》" + practitionerInfo.get("name"));
}
}
}
......@@ -399,7 +383,7 @@ public class AgmsHiringDALServiceImpl implements AgmsHiringDALService {
}
if (canAprroveGrades.contains("30")) {
List<PractitionerHiringListInfo> s2List = agmsHiringMapper.queryS2List(approveStatus);
List<PractitionerHiringListInfo> s2List = agmsHiringMapper.queryS2List(approveStatus,requestVO.getName());
dataList.addAll(s2List);
}
......@@ -412,4 +396,23 @@ public class AgmsHiringDALServiceImpl implements AgmsHiringDALService {
return uniqueList;
}
@Override
public List<PractitionerHiringListInfo> practitionerApplyList(PractitionerHiringListRequestVO requestVO) {
PageHelper.clearPage();//偶然遇到了这个问题,同一个查询结果一会是10个(预期),一会是真实个数(刷新/重启应用就又变成真实个数) 查看日志,发现了问题:结果为10个时查询SQL自动加上了Limit 10
//体系查询调整,如果体系为S3,则需要查询它下面的所有子集
PractitionerSubordinateInfo practitionerSubordinateInfo = new PractitionerSubordinateInfo();
BeanUtils.copyProperties(requestVO,practitionerSubordinateInfo);
practitionerSubordinateInfo.setInsurerBranchId(requestVO.getBranchId());
List<Long> subsystemIdList = aclPractitionerSubordinateSystemDalService.getLongs(practitionerSubordinateInfo);
List<PractitionerHiringListInfo> resultList = agmsHiringMapper.practitionerApplyList(requestVO.getStatus(), null,
requestVO.getBranchId(),
requestVO.getDeptId(),
subsystemIdList,
requestVO.getName(),
requestVO.getStartDate(),
requestVO.getEndDate());
return resultList;
}
}
......@@ -3,14 +3,16 @@ package com.yd.dal.service.agms.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yd.api.agms.vo.practitioner.PractitionerFileSharing;
import com.yd.api.agms.vo.practitioner.SharePractitionerInfo;
import com.yd.api.agms.vo.practitioner.*;
import com.yd.dal.mapper.agms.AgmsPractitionerMapper;
import com.yd.dal.service.agms.AgmsPractitionerDALService;
import com.yd.util.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* @author xxy
*/
......@@ -33,4 +35,34 @@ public class AgmsPractitionerDALServiceImpl implements AgmsPractitionerDALServic
}
return mapper.findSharePractitioner(shareCode);
}
@Override
public List<PractitionerScheduleInfo> practitionerSchedule(PractitionerScheduleRequestVO requestVO) {
return mapper.practitionerSchedule(requestVO);
}
@Override
public List<PractitionerLeadsGoalsInfo> practitionerLeadsGoals(PractitionerLeadsGoalsRequestVO requestVO) {
return mapper.practitionerLeadsGoals(requestVO);
}
@Override
public List<Map<String, Object>> practitionerScheduleExport(PractitionerScheduleRequestVO requestVO) {
return mapper.practitionerScheduleExport(requestVO);
}
@Override
public List<Map<String, Object>> practitionerLeadsGoalsExport(PractitionerLeadsGoalsRequestVO requestVO) {
return mapper.practitionerLeadsGoalsExport(requestVO);
}
@Override
public List<PractitionerActivityInfo> practitionerActivity(PractitionerActivityRequestVO requestVO) {
return mapper.practitionerActivity(requestVO);
}
@Override
public List<Map<String, Object>> practitionerActivityExport(PractitionerActivityRequestVO requestVO) {
return mapper.practitionerActivityExport(requestVO);
}
}
package com.yd.dal.service.customer;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.yd.api.practitioner.vo.businessCard.Certificate;
import com.yd.api.practitioner.vo.businessCard.PractitionerBusinessCardResponseVO;
import com.yd.api.practitioner.vo.payscale.PayScaleInfo;
......@@ -18,6 +13,10 @@ 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.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service("aclPractitionerDALService")
public interface AclPractitionerDALService {
......@@ -221,6 +220,8 @@ public interface AclPractitionerDALService {
List<PractitionerInfo> findPractitionerInfoByMobileList(List<String> mobileList);
List<PractitionerInfo> findPractitionerInfoByIdList(List<Long> idList);
List<PayScaleInfo> queryEGHistorySalaryPDFByPractitionerId(Long practitionerId);
/**
......
......@@ -14,5 +14,7 @@ public interface AclPractitionerHiringApproveRecordsDALService {
List<AclPractitionerHiringApproveRecords> queryListByBasicInfoId(Long hiringBasicInfoId);
int deleteByHiringBasicInfoId(Long basicInfoId);
void updateBatch(List<AclPractitionerHiringApproveRecords> records);
}
package com.yd.dal.service.customer.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import com.google.common.base.Strings;
import com.yd.api.practitioner.service.PractitionerService;
import com.yd.api.practitioner.vo.businessCard.Certificate;
......@@ -40,6 +26,18 @@ import com.yd.util.auth.setting.JwtTokenUtil;
import com.yd.util.deshandler.DESTypeHandler;
import com.yd.util.intercept.annotation.TargetDataSource;
import com.yd.util.intercept.commons.DataSourceKey;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("aclPractitionerDALService")
public class AclPractitionerDALServiceImpl implements AclPractitionerDALService {
......@@ -270,6 +268,11 @@ public class AclPractitionerDALServiceImpl implements AclPractitionerDALService
}
@Override
public List<PractitionerInfo> findPractitionerInfoByIdList(List<Long> idList) {
return aclPractitionerMapper.findPractitionerInfoByIdList(idList);
}
@Override
public List<PayScaleInfo> queryEGHistorySalaryPDFByPractitionerId(Long practitionerId) {
return aclPractitionerMapper.queryEGHistorySalaryPDFByPractitionerId(practitionerId);
}
......
......@@ -31,4 +31,9 @@ public class AclPractitionerHiringApproveRecordsDALServiceImpl implements AclPra
public int deleteByHiringBasicInfoId(Long hiringBasicInfoId) {
return mapper.deleteByHiringBasicInfoId(hiringBasicInfoId);
}
@Override
public void updateBatch(List<AclPractitionerHiringApproveRecords> records) {
mapper.updateBatch(records);
}
}
package com.yd.dal.service.practitioner;
import com.yd.api.practitioner.vo.hiring.PractitionerHiringContractTerms;
import com.yd.dal.entity.customer.AclPractitionerHiringBasicInfo;
import com.yd.dal.entity.customer.AclPractitionerHiringMembership;
import com.yd.dal.entity.practitioner.hiring.*;
......@@ -106,4 +107,14 @@ public interface PractitionerHiringDALService {
* @return
*/
AclPractitionerHiringMembership queryHiringMemberShip(Long hiringBasicInfoId);
/**
* 获取报聘经纪人组织架构信息
* XX纵队XX体系XX分部的XX经纪人
*
* @param basicInfo
* @param hiringMemberShip
* @return
*/
String getHiringOrganizationInfo(AclPractitionerHiringBasicInfo basicInfo, AclPractitionerHiringMembership hiringMemberShip);
}
......@@ -2,14 +2,12 @@ package com.yd.dal.service.practitioner.impl;
import com.yd.api.practitioner.vo.hiring.PractitionerHiringContractTerms;
import com.yd.dal.entity.agms.hiring.PractitionerHiringListInfo;
import com.yd.dal.entity.customer.AclPractitioner;
import com.yd.dal.entity.customer.AclPractitionerHiringMembership;
import com.yd.dal.entity.customer.AclPractitionerSubordinateSystem;
import com.yd.dal.entity.customer.CustomerFileUpload;
import com.yd.dal.entity.customer.*;
import com.yd.dal.entity.customer.practitioner.PractitionerInfo;
import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import com.yd.dal.entity.practitioner.hiring.*;
import com.yd.dal.mapper.agms.AgmsHiringMapper;
import com.yd.dal.mapper.customer.AclPractitionerHiringBasicInfoMapper;
import com.yd.dal.mapper.customer.AclPractitionerHiringMembershipMapper;
import com.yd.dal.mapper.customer.AclPractitionerMapper;
import com.yd.dal.mapper.practitioner.PractitionerHiringMapper;
......@@ -21,6 +19,7 @@ import com.yd.dal.service.practitioner.PractitionerHiringDALService;
import com.yd.dal.service.user.AclUserDALService;
import com.yd.rmi.cache.SystemConfigService;
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;
......@@ -55,6 +54,8 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
private AclUserDALService aclUserDalService;
@Autowired
private AclPractitionerSubordinateSystemDALService aclPractitionerSubordinateSystemDALService;
@Autowired
private AclPractitionerHiringBasicInfoMapper basicInfoMapper;
@Override
public List<HiringListInfo> findHiringList(Long practitionerId, Long approvingStatus) {
......@@ -88,14 +89,18 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
@Override
public List<HiringApproveRecords> findHiringApproveRecordsList(Long hiringBasicInfoId) {
// 当前审核状态
AclPractitionerHiringBasicInfo basicInfo = basicInfoMapper.selectByPrimaryKey(hiringBasicInfoId);
String approveStatus = basicInfo.getApproveStatus();
List<HiringApproveRecords> records = practitionerHiringMapper.findHiringApproveRecordsList(hiringBasicInfoId);
PractitionerInfo practitionerInfo;
CustomerFileUpload fileUpload;
String imagePath;
String levelName;
// 创建一个Map
Map<Long, HiringApproveRecords> map = new HashMap<>();
for (HiringApproveRecords item : records) {
// 获取职级
practitionerInfo = aclPractitionerDALService.findPractitionerInfoByPractitionerId(item.getApprovingPractitionerId());
......@@ -106,12 +111,15 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
item.setHeadImagePath(imagePath);
item.setLevelName(levelName);
}
map.put(item.getApproveStepId(), item);
// 如果已审核结束,则不需要手动创建未审批的流程
if ("0".equals(approveStatus)) {
return records;
}
// 声明最终返回的List
List<HiringApproveRecords> resultList = new ArrayList<>();
List<HiringApproveRecords> resultList = new ArrayList<>(records);
// 所有的审批流程
List<MdPractitionerHiringApproveSteps> stepsList = systemConfigService.findHiringApproveStepsAll();
// 当前经纪人的报聘职级
......@@ -124,10 +132,9 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
subsystemOwnerName = (approvedBy != null) ? approvedBy.getName() : "";
}
HiringApproveRecords record;
for (MdPractitionerHiringApproveSteps step : stepsList) {
// S2前2步不用审批
if ((mdDropOptionName.indexOf("S2")>=0 || mdDropOptionName.indexOf("S3")>=0)
if ((mdDropOptionName.indexOf("S2") >= 0 || mdDropOptionName.indexOf("S3") >= 0)
&& (step.getStepSeq() == 1 || step.getStepSeq() == 2)
) {
continue;
......@@ -138,16 +145,16 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
) {
continue;
}
record = map.get(step.getId());
if (record != null) {
resultList.add(record);
} else {
if(approveStatus == null){
approveStatus = "-2";
}
if (step.getStepSeq() > Integer.parseInt(approveStatus)) {
HiringApproveRecords obj = new HiringApproveRecords();
obj.setApproveStepId(step.getId());
obj.setApproveStepName(step.getStepName());
obj.setApprovingStatusId(Long.valueOf("2"));
obj.setApprovingStatus("未审批");
// 获取每一步审批人姓名
if ("mentor".equals(step.getApproveRole())) {
obj.setApprovingPractitionerName(hiringMemberShip.getMentor());
......@@ -157,7 +164,6 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
String names = aclUserDalService.selectNamesByMobileNos(step.getAppointedApprovePractitioners());
obj.setApprovingPractitionerName(names);
}
resultList.add(obj);
}
}
......@@ -258,7 +264,7 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
}
if (canAprroveGrades.contains("30")) {
List<PractitionerHiringListInfo> s2List = agmsHiringMapper.queryS2List(approveStatus);
List<PractitionerHiringListInfo> s2List = agmsHiringMapper.queryS2List(approveStatus,null);
dataList.addAll(s2List);
}
}
......@@ -291,40 +297,40 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
@Override
public String getApproveStatusByStepSeq(Integer stepSeq) {
switch (stepSeq) {
case 1 :
return "-2";
case 2 :
return "1";
case 3 :
return "2";
case 4 :
return "3";
case 5 :
return "4";
case 6 :
return "5";
if (Integer.valueOf(1).equals(stepSeq)) {
return "-2";
} else if (Integer.valueOf(2).equals(stepSeq)) {
return "1";
} else if (Integer.valueOf(3).equals(stepSeq)) {
return "2";
} else if (Integer.valueOf(4).equals(stepSeq)) {
return "3";
} else if (Integer.valueOf(5).equals(stepSeq)) {
return "4";
} else if (Integer.valueOf(6).equals(stepSeq)) {
return "5";
} else {
return null;
}
return null;
}
@Override
public Integer getNextStepSeqByApproveStatus(String approveStatus) {
switch (approveStatus) {
case "-2" :
return Integer.valueOf("1");
case "1" :
return Integer.valueOf("2");
case "2" :
return Integer.valueOf("3");
case "3" :
return Integer.valueOf("4");
case "4" :
return Integer.valueOf("5");
case "5" :
return Integer.valueOf("6");
if ("-2".equals(approveStatus)) {
return Integer.valueOf("1");
} else if ("1".equals(approveStatus)) {
return Integer.valueOf("2");
} else if ("2".equals(approveStatus)) {
return Integer.valueOf("3");
} else if ("3".equals(approveStatus)) {
return Integer.valueOf("4");
} else if ("4".equals(approveStatus)) {
return Integer.valueOf("5");
} else if ("5".equals(approveStatus)) {
return Integer.valueOf("6");
} else {
return null;
}
return null;
}
@Override
......@@ -384,4 +390,39 @@ public class PractitionerHiringDALServiceImpl implements PractitionerHiringDALSe
}
return hiringMemberShip;
}
@Override
public String getHiringOrganizationInfo(AclPractitionerHiringBasicInfo basicInfo, AclPractitionerHiringMembership hiringMemberShip) {
StringBuilder orgInfo = new StringBuilder();
String s3SubordinateSystemName = hiringMemberShip.getS3SubordinateSystemName();
String s2SubordinateSystemName = hiringMemberShip.getS2SubordinateSystemName();
String s1SubordinateSystemName = hiringMemberShip.getS1SubordinateSystemName();
boolean flag = false;
if (StringUtils.isNotEmpty(s3SubordinateSystemName)) {
orgInfo.append(s3SubordinateSystemName);
if (s3SubordinateSystemName.indexOf("纵队") < 0) {
orgInfo.append("纵队");
}
flag = true;
}
if (StringUtils.isNotEmpty(s2SubordinateSystemName)) {
orgInfo.append(s2SubordinateSystemName);
if (s2SubordinateSystemName.indexOf("体系") < 0) {
orgInfo.append("体系");
}
flag = true;
}
if (StringUtils.isNotEmpty(s1SubordinateSystemName)) {
orgInfo.append(s1SubordinateSystemName);
if (s1SubordinateSystemName.indexOf("分部") < 0) {
orgInfo.append("分部");
}
flag = true;
}
if (flag) {
orgInfo.append("的");
}
return orgInfo.append(basicInfo.getName()).toString();
}
}
......@@ -43,11 +43,10 @@ public class MailServiceImpl implements MailService {
@Override
public void sysWarning(String warningSubject,String warningMessage) {
String toAddress = "simon.cheng@ydinsurance.cn";
String toAddress = "wenyang.yan@ydinsurance.cn";
List<String> ccList = systemConfigService.getListConfigValue("SysWarningCCAddress");
String[] ccAddresses = new String[ccList.size()];
ccList.toArray(ccAddresses);
// String[] ccAddress = new String[]{"water.wang@autogeneral.cn","sweet.zhang@autogeneral.cn","jerold.chen@autogeneral.cn"};
String subject = "【"+ SpringContextUtil.getEnvironmentName()+"环境】"+warningSubject;
String messageText = CommonUtil.currentIP()+" "+warningMessage;
String imageFile = null;
......@@ -70,11 +69,10 @@ public class MailServiceImpl implements MailService {
@Override
public void sysException(String warningSubject, String warningMessage) {
// if("prod".equals(SpringContextUtil.getActiveProfile())){
String toAddress = "water.wang@ydinsurance.cn";//"simon.cheng@autogeneral.cn";
String toAddress = "wenyang.yan@ydinsurance.cn";//"simon.cheng@autogeneral.cn";
List<String> ccList = systemConfigService.getListConfigValue("SysWarningCCAddress");
String[] ccAddresses = new String[ccList.size()];
ccList.toArray(ccAddresses);
// String[] ccAddress = new String[]{"water.wang@autogeneral.cn","sweet.zhang@autogeneral.cn","jerold.chen@autogeneral.cn"};
String subject = "【"+SpringContextUtil.getEnvironmentName()+"环境】"+warningSubject;
String messageText = CommonUtil.currentIP()+" "+warningMessage;
String imageFile = null;
......
......@@ -226,8 +226,8 @@ public class AliMailInterfServiceImpl implements AliMailInterfService {
public static void main(String[] args){
AliMailInterfServiceImpl service = new AliMailInterfServiceImpl();
String toAddress = "water.wang@autogeneral.cn";
String[] ccAddresses = new String[]{"water.wang@autogeneral.cn","1034346366@qq.com"};
String toAddress = "wenyang.yan@ydinsurance.cn";
String[] ccAddresses = new String[]{"wenyang.yan@ydinsurance.cn","1034346366@qq.com"};
String subject = "您已成功通过安吉保购买保险产品";
String messageText = ""
+"尊敬的XX,您好!"
......
......@@ -50,7 +50,8 @@ public class SearchStaffSalaryDetailsResponseBody {
private List<RenewalYearPerformanceCommission> breedingBonusList;//育成奖金
private List<Commission> independentBrokerAllowanceList;//独立经纪人展业津贴
private List<Commission> direcSalesAddWeightList;//直接销售加码佣金
private List<Commission> channelFristYearCommissionList;//D01-首年渠道服务费
private List<Commission> channelRenewalYearCommissionList;//D02-续年渠道服务费
public SearchStaffSalaryDetailsResponseBody() {
......@@ -248,4 +249,20 @@ public class SearchStaffSalaryDetailsResponseBody {
public void setDirecSalesAddWeightList(List<Commission> direcSalesAddWeightList) {
this.direcSalesAddWeightList = direcSalesAddWeightList;
}
public List<Commission> getChannelFristYearCommissionList() {
return channelFristYearCommissionList;
}
public void setChannelFristYearCommissionList(List<Commission> channelFristYearCommissionList) {
this.channelFristYearCommissionList = channelFristYearCommissionList;
}
public List<Commission> getChannelRenewalYearCommissionList() {
return channelRenewalYearCommissionList;
}
public void setChannelRenewalYearCommissionList(List<Commission> channelRenewalYearCommissionList) {
this.channelRenewalYearCommissionList = channelRenewalYearCommissionList;
}
}
......@@ -27,45 +27,6 @@
<select id="commissionPayoutStatusQuery"
parameterType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatusQueryInfo"
resultType="com.yd.dal.entity.agms.fortune.CommissionPayoutStatus">
<!-- select
o.id orderId,
f.id fortuneId,
c.check_yearmonth commissionPayoutYearmonth,
i.name insurerName,
if(o.config_level = 2,p.name,pp.name) productName,
o.policy_no policyNo,
if(o.payment_term IS NOT NULL ,CONCAT(o.payment_term,(case o.payment_term_unit when 'Y' then '年' when 'M' then '月' else '日' END ) ),(SELECT e.element_text from ag_po_order_life_product_elements e where o.id = e.order_id and e.factor_code like 'f_pay_term' LIMIT 1)) paymentTermUnit,
if(o.cover_term IS NOT NULL ,o.cover_term_type ,(SELECT e.element_text from ag_po_order_life_product_elements e where o.id = e.order_id and e.factor_code like 'f_coverage_term' LIMIT 1)) coverTermType,
o.order_price orderPrice,
pra.name practitionerName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
f.practitioner_level practitionerLevel,
f.commission_amount commissionAmount,
f.commission_type commissionType,
f.referral_rate referralRate,
f.referral_amount referralAmount,
op.drop_option_name commissionPayoutStatus,
pb.payout_yearmonth monthPeriod
from ag_acl_customer_fortune f
LEFT JOIN ag_po_order o
LEFT JOIN ag_acl_insurer i ON i.id = o.insurer_id
LEFT JOIN ag_product p ON p.id = o.product_id
LEFT JOIN ag_product_plan pp ON pp.id = o.plan_id
ON o.id = f.order_id
LEFT JOIN ag_acl_practitioner pra
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
Left Join ag_acl_practitioner_setting setting on setting.practitioner_id = pra.id
ON pra.customer_id = f.customer_id
LEFT JOIN ag_acl_customer_fortune_payout_batch pb ON pb.id = f.payout_batch_id
LEFT JOIN ag_md_drop_options op
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
ON op.drop_option_code = f.commission_payout_status
left join ag_po_order_commission_check c on o.commission_check_id = c.id
where o.commission_check_status = 2
AND mas.drop_code like 'Commission_Payout_Status'
and setting.practitioner_type_id = 28 -->
SELECT distinct o.id orderId,t.id fortuneId,
c.check_yearmonth commissionPayoutYearmonth,
i.name insurerName,IF(o.config_level = 2,p.name,pp.name) productName,o.policy_no policyNo,
......@@ -73,6 +34,7 @@
IF(o.cover_term IS NOT NULL ,o.cover_term_type ,(SELECT e.element_text FROM ag_po_order_life_product_elements e WHERE o.id = e.order_id AND e.factor_code LIKE 'f_coverage_term' LIMIT 1)) coverTermType,
o.order_price orderPrice,
pra.name practitionerName,
cha.name channelName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
op1.drop_option_name practitionerLevel,
......@@ -83,7 +45,8 @@
t.predict_month_period predictMonthPeriod,
op.drop_option_name commissionPayoutStatus,
t.remark,
pb.payout_yearmonth monthPeriod
pb.payout_yearmonth monthPeriod,
t.channel_type channelType
FROM ag_acl_customer_fortune t
LEFT JOIN ag_po_order o ON o.id = t.order_id
LEFT JOIN ag_product p ON p.id = o.product_id
......@@ -98,16 +61,15 @@
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
LEFT JOIN ag_md_drop_options op1 ON op1.id = setting.practitioner_level
LEFT JOIN ag_md_drop_master mas1 ON mas1.id = op1.drop_master_id
LEFT JOIN (SELECT distinct poc.order_id,poc.commission_period,c.* FROM ag_po_order_commission poc,ag_po_order_commission_check c
LEFT JOIN ag_acl_channel_new cha ON cha.id = t.channel_id
LEFT JOIN (select distinct poc.order_id,poc.commission_period,c.* FROM ag_po_order_commission poc,ag_po_order_commission_check c
WHERE poc.commission_check_id=c.id AND poc.commission_status='2' AND poc.commission_type='1'
<if test="item.commissionPayoutYearmonth == null">
GROUP BY poc.order_id,poc.commission_period
</if>
) c ON c.order_id=t.order_id AND c.commission_period=t.commission_period
WHERE t.settlement_type = '1'
AND mas.drop_code = 'Fortune_Payout_Status'
AND mas1.scenario_code = 'practitioner_level'
and setting.practitioner_type_id = 28
WHERE ((t.settlement_type='1' and setting.practitioner_type_id=28 and mas1.scenario_code='practitioner_level' ) or (t.settlement_type='3' and t.order_id is not null))
and mas.drop_code = 'Fortune_Payout_Status'
and EXISTS(select 1 from ag_po_order_commission poc
where poc.commission_status='2' and poc.commission_type='1'
and poc.order_id=t.order_id and poc.commission_period=t.commission_period)
......@@ -118,46 +80,46 @@
AND i.id = #{item.insurerId,jdbcType=BIGINT}
</if>
<if test="item.insurerBranchId != null">
and pra.insurer_branch_id = #{item.insurerBranchId,jdbcType=BIGINT}
and pra.insurer_branch_id = #{item.insurerBranchId,jdbcType=BIGINT}
</if>
<if test="item.channelId != null">
and cha.id = #{item.channelId,jdbcType=BIGINT}
</if>
<if test="item.channelType != null">
and t.channel_type = #{item.channelType,jdbcType=VARCHAR}
</if>
<if test="item.insurerBranchDeptId != null">
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
</if>
<if test="item.subsystemIdList != null and item.subsystemIdList.size() > 0">
and sub.id in
<foreach collection="item.subsystemIdList" index="index" item="subordinateSystemId" open="(" separator="," close=")">
#{subordinateSystemId}
</foreach>
</if>
<if test="item.commissionTypeDropOptionCodeList != null and item.commissionTypeDropOptionCodeList.size() > 0">
and t.drop_option_code in
<foreach collection="item.commissionTypeDropOptionCodeList" index="index" item="dropOptionCode" open="(" separator="," close=")">
#{dropOptionCode}
</foreach>
</if>
<if test="item.practitionerId != null">
and pra.id = #{item.practitionerId,jdbcType=BIGINT}
</if>
<if test="item.commissionPayoutStatus != null">
and t.status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
</if>
<if test="item.commissionPayoutYearmonth != null">
and (c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR}
or (t.drop_option_code in(select distinct t.commission_type FROM ag_settlement_rule_base t where t.calculation_method='3' and t.is_active=1)
and QUARTER(DATE_SUB(STR_TO_DATE(CONCAT(c.check_yearmonth,'-01'), "%Y-%m-%d"),INTERVAL 1 MONTH))=QUARTER(DATE_SUB(STR_TO_DATE(CONCAT(#{item.commissionPayoutYearmonth,jdbcType=VARCHAR},'-01'), "%Y-%m-%d"),INTERVAL 1 MONTH))))
</if>
<if test="item.predictMonthPeriod != null">
and DATE_FORMAT(t.predict_month_period, '%Y-%m') = #{item.predictMonthPeriod,jdbcType=VARCHAR}
</if>
<if test="item.payoutYearmonth != null">
and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR}
</if>
<!-- <if test="item.subordinateSystemId != null">
and sub.id = #{item.subordinateSystemId,jdbcType=BIGINT}
</if>-->
<if test="item.subsystemIdList != null and item.subsystemIdList.size() > 0">
and sub.id in
<foreach collection="item.subsystemIdList" index="index" item="subordinateSystemId" open="(" separator="," close=")">
#{subordinateSystemId}
</foreach>
</if>
<if test="item.commissionTypeDropOptionCodeList != null and item.commissionTypeDropOptionCodeList.size() > 0">
and t.drop_option_code in
<foreach collection="item.commissionTypeDropOptionCodeList" index="index" item="dropOptionCode" open="(" separator="," close=")">
#{dropOptionCode}
</foreach>
</if>
<if test="item.practitionerId != null">
and pra.id = #{item.practitionerId,jdbcType=BIGINT}
</if>
<if test="item.commissionPayoutStatus != null">
and t.status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
<if test="'1'.equals(item.commissionPayoutStatus)">
and oc.commission_check_id is not null
</if>
</if>
<if test="item.commissionPayoutYearmonth != null">
and (c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR}
or (t.drop_option_code in(select distinct t.commission_type FROM ag_settlement_rule_base t where t.calculation_method='3' and t.is_active=1)
and QUARTER(DATE_SUB(STR_TO_DATE(CONCAT(c.check_yearmonth,'-01'), "%Y-%m-%d"),INTERVAL 1 MONTH))=QUARTER(DATE_SUB(STR_TO_DATE(CONCAT(#{item.commissionPayoutYearmonth,jdbcType=VARCHAR},'-01'), "%Y-%m-%d"),INTERVAL 1 MONTH))))
</if>
<if test="item.predictMonthPeriod != null">
and DATE_FORMAT(t.predict_month_period, '%Y-%m') = #{item.predictMonthPeriod,jdbcType=VARCHAR}
</if>
<if test="item.payoutYearmonth != null">
and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR}
</if>
<if test="item.policyNo == null">
UNION ALL
SELECT '' orderId,t.id fortuneId,'' commissionPayoutYearmonth,'' insurerName,'' productName,
......@@ -166,6 +128,7 @@
'' coverTermType,
'0.00' orderPrice,
pra.name practitionerName,
cha.name channelName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
op1.drop_option_name practitionerLevel,
......@@ -176,7 +139,8 @@
t.predict_month_period predictMonthPeriod,
op.drop_option_name commissionPayoutStatus,
t.remark,
pb.payout_yearmonth monthPeriod
pb.payout_yearmonth monthPeriod,
t.channel_type channelType
FROM ag_acl_customer_fortune t
LEFT JOIN ag_acl_practitioner pra ON pra.id = t.practitioner_id
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
......@@ -187,40 +151,39 @@
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
LEFT JOIN ag_md_drop_options op1 ON op1.id = setting.practitioner_level
LEFT JOIN ag_md_drop_master mas1 ON mas1.id = op1.drop_master_id
WHERE t.settlement_type = '2'
LEFT JOIN ag_acl_channel_new cha ON cha.id = t.channel_id
WHERE ((t.settlement_type='2' and mas1.scenario_code='practitioner_level' and setting.practitioner_type_id=28) or (t.settlement_type='3' and t.order_id is null))
AND mas.drop_code = 'Fortune_Payout_Status'
AND mas1.scenario_code = 'practitioner_level'
and setting.practitioner_type_id = 28
<if test="item.insurerBranchId != null">
and pra.insurer_branch_id = #{item.insurerBranchId,jdbcType=BIGINT}
and pra.insurer_branch_id = #{item.insurerBranchId,jdbcType=BIGINT}
</if>
<if test="item.insurerBranchDeptId != null">
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
</if>
<!-- <if test="item.subordinateSystemId != null">
and sub.id = #{item.subordinateSystemId,jdbcType=BIGINT}
</if>-->
<if test="item.channelId != null">
and cha.id = #{item.channelId,jdbcType=BIGINT}
</if>
<if test="item.channelType != null">
and t.channel_type = #{item.channelType,jdbcType=VARCHAR}
</if>
<if test="item.subsystemIdList != null and item.subsystemIdList.size() > 0">
and sub.id in
<foreach collection="item.subsystemIdList" index="index" item="subordinateSystemId" open="(" separator="," close=")">
#{subordinateSystemId}
</foreach>
</if>
<if test="item.commissionTypeDropOptionCodeList != null and item.commissionTypeDropOptionCodeList.size() > 0">
and t.drop_option_code in
<foreach collection="item.commissionTypeDropOptionCodeList" index="index" item="dropOptionCode" open="(" separator="," close=")">
#{dropOptionCode}
</foreach>
</if>
<if test="item.commissionTypeDropOptionCodeList != null and item.commissionTypeDropOptionCodeList.size() > 0">
and t.drop_option_code in
<foreach collection="item.commissionTypeDropOptionCodeList" index="index" item="dropOptionCode" open="(" separator="," close=")">
#{dropOptionCode}
</foreach>
</if>
<if test="item.practitionerId != null">
and pra.id = #{item.practitionerId,jdbcType=BIGINT}
</if>
<if test="item.commissionPayoutStatus != null">
and t.status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
</if>
<!-- <if test="item.commissionPayoutYearmonth != null"> -->
<!-- and c.check_yearmonth = #{item.commissionPayoutYearmonth,jdbcType=VARCHAR} -->
<!-- </if> -->
<if test="item.predictMonthPeriod != null">
and DATE_FORMAT(t.predict_month_period, '%Y-%m') = #{item.predictMonthPeriod,jdbcType=VARCHAR}
</if>
......@@ -248,7 +211,9 @@
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
ib.branch_name insurerBranchName,
f.fyc_amount fycAmount
f.fyc_amount fycAmount,
cha.name channelName,
cha.contact_phone contactPhone
from ag_acl_customer_fortune f
left join ag_po_order o on o.id = f.order_id
left join ag_product_plan pp on pp.id = o.plan_id
......@@ -260,8 +225,8 @@
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
LEFT JOIN ag_md_drop_options op
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id
ON op.drop_option_code = f.commission_payout_status
LEFT JOIN ag_md_drop_master mas ON mas.id = op.drop_master_id ON op.drop_option_code = f.commission_payout_status
LEFT JOIN ag_acl_channel_new cha ON cha.id = f.channel_id
where (o.status = 3 or o.status = 4 or o.status is null)
AND mas.drop_code like 'Commission_Payout_Status'
AND (f.order_price != 0 or f.order_price is null)
......@@ -308,44 +273,51 @@
<result column="calculationFormula" jdbcType="VARCHAR" property="calculationFormula"/>
<result column="calculationRate" jdbcType="DECIMAL" property="calculationRate" />
<result column="calculationAmount" jdbcType="DECIMAL" property="calculationAmount" />
<result column="channelType" jdbcType="VARCHAR" property="channelType" />
</resultMap>
<select id="transformForWithdrawLabel"
parameterType="com.yd.dal.entity.agms.fortune.WithdrawQueryInfo"
resultMap="WithdrawLabelInfo">
select distinct pay.id payId,
pay.withdraw_id withdrawId,
pb.payout_yearmonth payoutYearmonth,
pra.name practitionerName,
pay.withdraw_amount referralAmount,
pra.mobile_no mobileNo,
opt.drop_option_name practitionerLevel,
ib.branch_name insurerBranchName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
if(pay.pay_status = 0, 2, 4) commissionPayoutStatus,
date_format(pay.pay_date, '%Y-%m-%d %H:%i:%s') payDate,
pra.ID practitionerId,
if(salary.taxout_amount is null,0,salary.taxout_amount) taxAmount,
if(salary.net_amount is null,0,salary.net_amount) afterTaxAmount,
ib.id insurerBranchId,
salary.is_active isActive
select pay.id payId,
pay.withdraw_id withdrawId,
pb.payout_yearmonth payoutYearmonth,
cha.name channelName,
pra.name practitionerName,
pay.withdraw_amount referralAmount,
pra.mobile_no mobileNo,
opt.drop_option_name practitionerLevel,
ib.branch_name insurerBranchName,
dept.name insurerBranchDeptName,
sub.name subordinateSystemName,
if(pay.pay_status = 0, 2, 4) commissionPayoutStatus,
date_format(pay.pay_date, '%Y-%m-%d %H:%i:%s') payDate,
pra.ID practitionerId,
if(salary.taxout_amount is null,0,salary.taxout_amount) taxAmount,
if(salary.net_amount is null,0,salary.net_amount) afterTaxAmount,
ib.id insurerBranchId,
salary.is_active isActive,
f.channel_type channelType
from ag_acl_customer_fortune_pay pay
inner join ag_acl_customer_fortune f on f.fortune_payed_id = pay.id
<!-- inner JOIN ag_po_order o on o.id = f.order_id -->
inner join ag_acl_customer_fortune_payout_batch pb on pb.id = f.payout_batch_id
inner JOIN ag_acl_practitioner pra on pay.customer_id = pra.customer_id
LEFT JOIN ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id
LEFT JOIN ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
LEFT JOIN ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
inner join ag_acl_practitioner_setting setting on pra.id = setting.practitioner_id
left join ag_acl_practitioner pra on pay.customer_id = pra.customer_id
left join ag_acl_insurer_branch ib on ib.id = pra.insurer_branch_id
left join ag_acl_insurer_branch_dept dept ON pra.dept_id = dept.id
left join ag_acl_practitioner_subordinate_system sub ON sub.id = pra.subordinate_system_id
left join ag_acl_practitioner_setting setting on pra.id = setting.practitioner_id
left join ag_md_drop_options opt on opt.id = setting.practitioner_level
left join ag_acl_life_practitioner_salary salary on salary.practitioner_id=pra.id and salary.`year_month`=REPLACE (pb.payout_yearmonth, '-', '')
left join ag_acl_channel_new cha ON cha.id = f.channel_id
where
setting.practitioner_type_id = 28
<!-- and pay.withdraw_amount != 0 -->
(setting.practitioner_type_id=28 or f.settlement_type='3')
<if test="item.channelId != null">
and cha.id = #{item.channelId,jdbcType=BIGINT}
</if>
<if test="item.channelType != null">
and f.channel_type = #{item.channelType,jdbcType=VARCHAR}
</if>
<if test="item.payoutYearmonth != null">
and pb.payout_yearmonth = #{item.payoutYearmonth,jdbcType=VARCHAR}
</if>
......@@ -355,9 +327,6 @@
<if test="item.insurerBranchDeptId != null">
and dept.id = #{item.insurerBranchDeptId,jdbcType=BIGINT}
</if>
<!-- <if test="item.subordinateSystemId != null">
and sub.id = #{item.subordinateSystemId,jdbcType=BIGINT}
</if>-->
<if test="item.subsystemIdList != null and item.subsystemIdList.size() > 0">
and sub.id in
<foreach collection="item.subsystemIdList" index="index" item="subordinateSystemId" open="(" separator="," close=")">
......@@ -370,6 +339,7 @@
<if test="item.commissionPayoutStatus != null">
and f.commission_payout_status = #{item.commissionPayoutStatus,jdbcType=BIGINT}
</if>
GROUP BY pay.id
order by pb.payout_yearmonth
</select>
......@@ -469,7 +439,7 @@
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' /*渠道*/,
(select name from ag_acl_channel_new where id = f.channel_id) '18' /*渠道*/,
ifnull(coalesce(l.s1_id,l.s2_id,l.s3_id),(SELECT a.subordinate_system_id from ag_acl_practitioner a where a.id = f.sale_practitioner_id)) as '19' /*FYC体系*/,
ifnull(l.practitioner_name,(select t.name from ag_acl_practitioner t where t.id = f.sale_practitioner_id)) '20' /*销售经纪人*/,
ifnull(l.practitioner_level,
......@@ -714,7 +684,11 @@
sum(case when drop_option_code ='C14' then f.calculation_rate else null end) '64' /*C14直接销售加码佣金率*/,
sum(case when drop_option_code ='C14' then f.referral_amount else null end) '65' /*C14直接销售加码佣金*/,
if(o.settlement_rule_type=1,'简单基本法','标准基本法') '66' /*基本法属性*/,
IF(f.rule_id is null, if(o.settlement_rule_type=1,'简单基本法','标准基本法'),
(select (case settlement_rule_type when 1 then '简单基本法' when 2 then '标准基本法' when 3 then '特殊结算' when 4 then if(o.settlement_rule_type=1,'简单基本法','标准基本法') end)
from ag_settlement_rule_base where id = f.rule_id
)
) '66' /*基本法属性*/,
sum(case when drop_option_code ='S01' then f.referral_amount else null end) '67' /*S01-首年度销售佣金*/,
(SELECT GROUP_CONCAT(referral_amount)
FROM ag_acl_customer_fortune t
......@@ -840,6 +814,13 @@
sum(case when drop_option_code ='C97' then f.referral_amount else null end) as '90' /*其它税前加扣款3*/,
sum(case when drop_option_code ='C98' then f.referral_amount else null end) as '91' /*其它税前加扣款4*/,
sum(case when drop_option_code ='C99' then f.referral_amount else null end) as '92' /*其它*/,
sum(case when drop_option_code ='C11' then f.referral_amount else null end) as '93' /*C11-独立经纪人展业津贴*/,
sum(case when drop_option_code ='D01' then f.referral_amount else null end) as '94' /*D01-首年渠道服务费*/,
sum(case when drop_option_code ='D02' then f.referral_amount else null end) as '95' /*D02-续年渠道服务费*/,
sum(case when drop_option_code ='D91' then f.referral_amount else null end) as '96' /*D91-渠道加扣款1*/,
sum(case when drop_option_code ='D92' then f.referral_amount else null end) as '97' /*D92-渠道加扣款2*/,
f.order_id,
l.customer_id
FROM ag_acl_customer_fortune f
......@@ -881,12 +862,12 @@
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' /*渠道*/,
(select name from ag_acl_channel_new where id = f.channel_id) '18' /*渠道*/,
coalesce(l.s1_id,l.s2_id,l.s3_id) as '19' /*FYC体系*/,
l.practitioner_name '20' /*销售经纪人*/,
l.practitioner_level '21' /*经纪人职级*/,
if(f.grade_commission_rate is not null,f.grade_commission_rate,'100') '22' /*职级率*/,
null as '23' /*首年销售佣金*/,
null as '24' /*续年销售佣金*/,
......@@ -946,7 +927,12 @@
null as '64' /*C14直接销售加码佣金率*/,
null as '65' /*C14直接销售加码佣金*/,
if(o.settlement_rule_type=1,'简单基本法','标准基本法') '66' /*基本法属性*/,
<!-- if(o.settlement_rule_type=1,'简单基本法','标准基本法') '66' /*基本法属性*/, -->
IF(f.rule_id is null, if(o.settlement_rule_type=1,'简单基本法','标准基本法'),
(select (case settlement_rule_type when 1 then '简单基本法' when 2 then '标准基本法' when 3 then '特殊结算' when 4 then if(o.settlement_rule_type=1,'简单基本法','标准基本法') end)
from ag_settlement_rule_base where id = f.rule_id
)
) '66' /*基本法属性*/,
null as '67' /*S01-首年度销售佣金*/,
null as '68' /*S03-首年度辅导奖金*/,
......@@ -976,6 +962,12 @@
null as '91' /*其它税前加扣款4*/,
null as '92' /*其它*/,
null as '93' /*C11-独立经纪人展业津贴*/,
null as '94' /*D01-首年渠道服务费*/,
null as '95' /*D02-续年渠道服务费*/,
null as '96' /*D91-渠道加扣款1*/,
null as '97' /*D92-渠道加扣款2*/,
f.order_id,
f.customer_id
......@@ -993,6 +985,50 @@
ORDER BY '2'
</select>
<select id="querySheet3Data" resultType="java.util.LinkedHashMap">
select
(SELECT t.commission_time FROM ag_po_order_commission t WHERE
t.commission_status='2' and t.commission_type='1'
and t.order_id=f.order_id and t.commission_period=f.commission_period limit 1 ) '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' ,
if(p.name is not null, p.name, (select tp.name from ag_product_plan tp where tp.id = o.plan_id)) '5' /*产品*/,
o.underwriting_date '6',
CONCAT(o.payment_term, (case o.payment_term_unit when 'Y' then '年' when 'M' then '月' else '年' END)) '7',
if(o.fyc_rate,o.fyc_rate,'') '8' /*'FYC%'*/,
if(f.commission_period!=1,f.fyc_rate,'') '9' /*'RYC%'*/,
o.fyc_amount '10'/*保单FYC*/,
if(f.commission_period!=1,f.fyc_amount,'') '11' /*保单RYC*/,
cn.name '12' /*渠道*/,
cn.account_name as '13' /*收款账户名称*/,
sum(case when f.drop_option_code ='D01' then f.referral_amount else null end) '14' /*D01首年渠道服务费*/,
sum(case when f.drop_option_code ='D02' then f.referral_amount else null end) '15' /*D02续年渠道服务费*/,
'特殊结算' as '16' /*基本法属性*/,
sum(case when f.drop_option_code ='D91' then f.referral_amount else null end) as '17' /*D91渠道加扣款1*/,
sum(case when f.drop_option_code ='D92' then f.referral_amount else null end) as '18' /*D92渠道加扣款2*/,
f.order_id,
f.channel_id
FROM ag_acl_customer_fortune f
LEFT JOIN ag_acl_channel_new cn on cn.id = f.channel_id
LEFT JOIN ag_acl_practitioner pra on pra.customer_id = f.customer_id
LEFT JOIN ag_acl_practitioner_setting ps on ps.practitioner_id = pra.id
LEFT JOIN ag_md_drop_options op1 ON op1.id = ps.practitioner_level
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.channel_type = '1'
AND f.id in <foreach collection="list" item="item" open="(" separator="," close=")"> #{item,jdbcType=BIGINT} </foreach>
GROUP BY f.order_id, f.channel_id
</select>
<select id="querySalePractitionerFortune1" parameterType="list" resultType="Long">
SELECT f.id
FROM ag_acl_customer_fortune f
......
......@@ -229,10 +229,12 @@
<if test="status != null">
<choose>
<when test='status == "1" '>
and t.approving_status = 1
and (b.approve_status >= t.approve_step_id OR b.approve_status = 0)
</when>
<when test='status == "2" '>
and t.approving_status = 0
and ((b.approve_status != 0 and b.approve_status &lt; t.approve_step_id-1) or b.approve_status is null)
and t.id &lt;= (select max(a.id) from ag_acl_practitioner_hiring_approve_records a where a.hiring_basic_info_id = t.hiring_basic_info_id and a.approving_status=0)
<!-- and (t.approving_status = 0 or b.approve_status < t.approve_step_id or b.approve_status is null) -->
</when>
</choose>
</if>
......@@ -253,7 +255,7 @@
</foreach>
</if>
<if test="name != null">
and b.name = #{name}
and b.name like #{name}
</if>
</select>
......@@ -300,7 +302,7 @@
</foreach>
</if>
<if test="name != null">
and b.name = #{name}
and b.name like #{name}
</if>
</select>
......@@ -324,6 +326,9 @@
<if test="approveStatus != null">
and b.approve_status = #{approveStatus}
</if>
<if test="name != null">
and b.name like #{name}
</if>
and m.md_drop_option_id
in (select md.id
from ag_md_drop_options md
......@@ -334,4 +339,78 @@
)
</select>
<select id="practitionerApplyList" resultMap="practitionerHiringListInfo">
select b.id hiringBasicInfoId,
b.name name,
b.mobile_no mobileNo,
m.md_drop_option_name practitionerLevel,
m.mentor mentor,
m.introducer introducer,
m.subsystem subsystem,
m.branch branch,
date_format(b.created_at, '%Y-%m-%d %H:%i:%s') applicationTime,
<if test="approveStatus != null">
<choose>
<when test='approveStatus == "1" '>
#{approveStatus} as status,
(select max(r.created_at) from ag_acl_practitioner_hiring_approve_records r where r.hiring_basic_info_id = b.id ) as approvingTime
</when>
<when test='approveStatus == "0" '>
null as status,
null as approvingTime
</when>
<when test='approveStatus == "2" '>
'0' as status,
null as approvingTime
</when>
</choose>
</if>
from ag_acl_practitioner_hiring_basic_info b
left join ag_acl_practitioner_hiring_membership m on b.id = m.hiring_basic_info_id
left join ag_acl_practitioner_subordinate_system sys on sys.id = m.subsystem_id
where 1 = 1
<if test="approveStatus != null">
<choose>
<when test='approveStatus == "0" '>
and (b.approve_status not in ('0' , '-1') or b.approve_status is null)
</when>
<when test='approveStatus == "1" '>
and b.approve_status = '0'
</when>
<when test='approveStatus == "2" '>
and b.approve_status = '-1'
</when>
</choose>
</if>
<if test="startDate != null ">
and b.created_at &gt;= #{startDate}
</if>
<if test="endDate != null ">
and b.created_at &lt;= #{endDate}
</if>
<if test="list != null and list.size() > 0">
and m.md_drop_option_id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="branchId != null">
and m.branch_id = #{branchId}
</if>
<if test="deptId != null">
and sys.dept_id = #{deptId}
</if>
<if test="subsystemIdList != null and subsystemIdList.size() > 0">
and m.subsystem_id in
<foreach collection="subsystemIdList" index="index" item="subsystemId" open="(" separator="," close=")">
#{subsystemId}
</foreach>
</if>
<if test="name != null">
and b.name like #{name}
</if>
order by b.id desc
</select>
</mapper>
......@@ -80,4 +80,197 @@
LEFT JOIN ag_acl_file_upload uw ON uw.target_type = 1 AND uw.target_id = p.id AND uw.is_active = 1 AND uw.target_use_for = 9
WHERE os.share_code = #{shareCode,jdbcType=VARCHAR}
</select>
<select id="practitionerSchedule" resultType="com.yd.api.agms.vo.practitioner.PractitionerScheduleInfo">
SELECT
p.name practitionerName,
(CASE (t.task_type) WHEN 1 THEN '商机' WHEN 2 THEN '增员' ELSE '其他' END) taskType,
op.drop_option_name dropOptionName,
t.track_time trackTime,
t.task_time_from taskTimeFrom,
task_time_end taskTimeEnd,
t.notice ,
t.created_at createdAt
FROM ag_mkt_schedule_task_tracking t, ag_acl_practitioner p, ag_md_drop_options op
WHERE t.practitioner_id = p.id AND op.id = t.md_drop_option_id
<if test="trackTime != null">
AND date_format(t.track_time, '%Y-%m-%d') &gt;= #{trackTime,jdbcType=VARCHAR} AND date_format(t.track_time, '%Y-%m-%d') &lt;= #{trackTime,jdbcType=VARCHAR}
</if>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
<if test="taskType != null">
AND t.task_type = #{taskType,jdbcType=BIGINT}
</if>
<if test="dropOptionName != null">
AND op.drop_option_name like concat(concat('%',#{dropOptionName,jdbcType=VARCHAR}),'%')
</if>
AND t.is_active = 1
</select>
<select id="practitionerScheduleExport" resultType="map">
SELECT
p.name '1',
date_format(t.track_time, '%Y-%m-%d') '2',
(CASE (t.task_type) WHEN 1 THEN '商机' WHEN 2 THEN '增员' ELSE '其他' END) '3',
op.drop_option_name '4',
t.task_time_from '5',
task_time_end '6',
REPLACE(t.notice,',',';') '7',
date_format(t.created_at, '%Y-%m-%d %H:%i:%s') '8'
FROM ag_mkt_schedule_task_tracking t, ag_acl_practitioner p, ag_md_drop_options op
WHERE t.practitioner_id = p.id AND op.id = t.md_drop_option_id
<if test="trackTime != null">
AND date_format(t.track_time, '%Y-%m-%d') &gt;= #{trackTime,jdbcType=VARCHAR} AND date_format(t.track_time, '%Y-%m-%d') &lt;= #{trackTime,jdbcType=VARCHAR}
</if>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
<if test="taskType != null">
AND t.task_type = #{taskType,jdbcType=BIGINT}
</if>
<if test="dropOptionName != null">
AND op.drop_option_name like concat(concat('%',#{dropOptionName,jdbcType=VARCHAR}),'%')
</if>
AND t.is_active = 1
</select>
<select id="practitionerLeadsGoals" resultType="com.yd.api.agms.vo.practitioner.PractitionerLeadsGoalsInfo">
SELECT
p.name practitionerName,
(CASE (t.statistic_time_unit) WHEN 1 THEN '年度目标' WHEN 3 THEN '月度目标' ELSE '其他' END) type,
if(t.statistic_time_unit = 3, concat(year(t.created_at),'-',t.seq_time), t.seq_time) seqTime,
t.premium ,
t.commission ,
t.pieces ,
t.piece_average_premium pieceAveragePremium,
t.created_at createdAt
FROM ag_mkt_leads_goals t,ag_acl_practitioner p
WHERE t.practitioner_id = p.id
<choose>
<when test="type != null and date != null">
AND t.statistic_time_unit = #{type,jdbcType=BIGINT}
<if test="type == 1">
AND year(t.created_at) = year(str_to_date(#{date,jdbcType=VARCHAR}, '%Y-%m'))
</if>
<if test="type == 3">
AND year(t.created_at) = left(#{date,jdbcType=VARCHAR}, 4)+0
AND t.seq_time = right(#{date,jdbcType=VARCHAR}, 2)+0
</if>
</when>
<when test="type != null and date == null">
AND t.statistic_time_unit = #{type,jdbcType=BIGINT}
</when>
<otherwise>
<if test="date != null">
AND t.statistic_time_unit = 3
AND year(t.created_at) = left(#{date,jdbcType=VARCHAR}, 4)+0
AND t.seq_time = right(#{date,jdbcType=VARCHAR}, 2)+0
</if>
</otherwise>
</choose>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
AND t.is_active = 1
</select>
<select id="practitionerLeadsGoalsExport" resultType="map">
SELECT
p.name '1',
(CASE (t.statistic_time_unit) WHEN 1 THEN '年度目标' WHEN 3 THEN '月度目标' ELSE '其他' END) '2',
if(t.statistic_time_unit = 3, concat(year(t.created_at),'-',t.seq_time), t.seq_time) '3',
t.premium '4',
t.commission '5',
t.pieces '6',
t.piece_average_premium '7',
date_format(t.created_at, '%Y-%m-%d %H:%i:%s') '8'
FROM ag_mkt_leads_goals t,ag_acl_practitioner p
WHERE t.practitioner_id = p.id
<choose>
<when test="type != null and date != null">
AND t.statistic_time_unit = #{type,jdbcType=BIGINT}
<if test="type == 1">
AND year(t.created_at) = year(str_to_date(#{date,jdbcType=VARCHAR}, '%Y-%m'))
</if>
<if test="type == 3">
AND year(t.created_at) = left(#{date,jdbcType=VARCHAR}, 4)+0
AND t.seq_time = right(#{date,jdbcType=VARCHAR}, 2)+0
</if>
</when>
<when test="type != null and date == null">
AND t.statistic_time_unit = #{type,jdbcType=BIGINT}
</when>
<otherwise>
<if test="date != null">
AND t.statistic_time_unit = 3
AND year(t.created_at) = left(#{date,jdbcType=VARCHAR}, 4)+0
AND t.seq_time = right(#{date,jdbcType=VARCHAR}, 2)+0
</if>
</otherwise>
</choose>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
AND t.is_active = 1
</select>
<select id="practitionerActivity" resultType="com.yd.api.agms.vo.practitioner.PractitionerActivityInfo">
SELECT
p.name practitionerName,
(CASE
WHEN (o.drop_master_id = 14) THEN '增员'
WHEN (o.drop_master_id = 16) THEN '销售'
WHEN (o.id = 226) THEN '辅导'
WHEN (o.id = 227) THEN '培训'
WHEN (o.id = 229) THEN '会议'
ELSE '其他'
END) type,
SUM(track_score) score,
YEARWEEK(DATE_FORMAT(t.track_time, '%Y-%m-%d')) timePeriod
FROM ag_mkt_schedule_task_tracking t, ag_acl_practitioner p, ag_md_drop_options o
WHERE t.practitioner_id = p.id AND o.id = t.md_drop_option_id
AND (o.drop_master_id IN(14,16) OR o.id IN(226,227,229))
<if test="startDate != null">
AND date_format(t.track_time, '%Y-%m-%d') &gt;= #{startDate,jdbcType=VARCHAR}
</if>
<if test="endDate != null">
AND date_format(t.track_time, '%Y-%m-%d') &lt;= #{endDate,jdbcType=VARCHAR}
</if>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
AND t.is_active = 1
GROUP BY p.name, o.drop_master_id, YEARWEEK(DATE_FORMAT(t.track_time, '%Y-%m-%d'))
</select>
<select id="practitionerActivityExport" resultType="map">
SELECT
p.name '1',
(CASE
WHEN (o.drop_master_id = 14) THEN '增员'
WHEN (o.drop_master_id = 16) THEN '销售'
WHEN (o.id = 226) THEN '辅导'
WHEN (o.id = 227) THEN '培训'
WHEN (o.id = 229) THEN '会议'
ELSE '其他'
END) '2',
SUM(track_score) '3',
YEARWEEK(DATE_FORMAT(t.track_time, '%Y-%m-%d')) '4'
FROM ag_mkt_schedule_task_tracking t, ag_acl_practitioner p, ag_md_drop_options o
WHERE t.practitioner_id = p.id AND o.id = t.md_drop_option_id
AND (o.drop_master_id IN(14,16) OR o.id IN(226,227,229))
<if test="startDate != null">
AND t.track_time &gt;= DATE #{startDate,jdbcType=VARCHAR}
</if>
<if test="endDate != null">
AND t.track_time &lt;= DATE #{endDate,jdbcType=VARCHAR}
</if>
<if test="practitionerId != null">
AND t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
</if>
AND t.is_active = 1
GROUP BY p.name, o.drop_master_id, YEARWEEK(DATE_FORMAT(t.track_time, '%Y-%m-%d'))
</select>
</mapper>
\ No newline at end of file
......@@ -17,12 +17,13 @@
<result column="created_by" jdbcType="BIGINT" property="createdBy" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="updated_by" jdbcType="BIGINT" property="updatedBy" />
<result column="is_back" jdbcType="INTEGER" property="isBack" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, hiring_basic_info_id, approve_step_id, approve_step_name, approving_practitioner_id,
approving_status, reject_note, is_active, created_at, created_by, updated_at, updated_by,
interview_assessment
interview_assessment, is_back
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--@mbg.generated-->
......@@ -233,6 +234,11 @@
when id = #{item.id,jdbcType=BIGINT} then #{item.updatedAt,jdbcType=TIMESTAMP}
</foreach>
</trim>
<trim prefix="is_back = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=BIGINT} then #{item.isBack,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="updated_by = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=BIGINT} then #{item.updatedBy,jdbcType=BIGINT}
......
......@@ -44,6 +44,7 @@
<result column="education_level" jdbcType="VARCHAR" property="educationLevel" />
<result column="graduated_university" jdbcType="VARCHAR" property="graduatedUniversity" />
<result column="mentor_id" jdbcType="BIGINT" property="mentorId" />
<result column="in_mentor_id" jdbcType="BIGINT" property="inMentorId" />
<result column="introducer_id" jdbcType="BIGINT" property="introducerId" />
<result column="gender" jdbcType="INTEGER" property="gender" />
<result column="contract_oss_path" jdbcType="VARCHAR" property="contractOssPath" />
......@@ -66,7 +67,7 @@
employee_no, contract_no, is_active, created_at, created_by, updated_at, updated_by,
province_id, province_name, city_id, city_name, cert_list, bio_intro, bio_intro_two, wechat_id,
qq_id, is_profile_show, is_name_show, is_mobile_show, education_level, graduated_university,
mentor_id, introducer_id, gender, contract_oss_path, hiring_basic_info_id, can_login_dyd,
mentor_id,in_mentor_id, introducer_id, gender, contract_oss_path, hiring_basic_info_id, can_login_dyd,
can_see_salary_list,raise_id,s1_id,s2_id,s3_id,email,email_is_active
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
......@@ -95,7 +96,7 @@
city_id, city_name, cert_list,
bio_intro,bio_intro_two, wechat_id, qq_id,
is_profile_show, is_name_show, is_mobile_show,
education_level, graduated_university, mentor_id,
education_level, graduated_university, mentor_id, in_mentor_id,
introducer_id, gender, contract_oss_path,
hiring_basic_info_id, can_login_dyd, can_see_salary_list,
detail_address,account_bank,bank_card_no,email,s1_id,s2_id,s3_id
......@@ -112,7 +113,7 @@
#{cityId,jdbcType=BIGINT}, #{cityName,jdbcType=VARCHAR}, #{certList,jdbcType=VARCHAR},
#{bioIntro,jdbcType=LONGVARCHAR},#{bioIntroTwo,jdbcType=LONGVARCHAR}, #{wechatId,jdbcType=VARCHAR}, #{qqId,jdbcType=VARCHAR},
#{isProfileShow,jdbcType=INTEGER}, #{isNameShow,jdbcType=INTEGER}, #{isMobileShow,jdbcType=INTEGER},
#{educationLevel,jdbcType=VARCHAR}, #{graduatedUniversity,jdbcType=VARCHAR}, #{mentorId,jdbcType=BIGINT},
#{educationLevel,jdbcType=VARCHAR}, #{graduatedUniversity,jdbcType=VARCHAR}, #{mentorId,jdbcType=BIGINT}, #{inMentorId,jdbcType=BIGINT},
#{introducerId,jdbcType=BIGINT}, #{gender,jdbcType=INTEGER}, #{contractOssPath,jdbcType=VARCHAR},
#{hiringBasicInfoId,jdbcType=BIGINT}, #{canLoginDyd,jdbcType=BIGINT}, #{canSeeSalaryList,jdbcType=BIGINT},
#{detailAddress},#{accountBank,jdbcType=VARCHAR}, #{bankCardNo,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR},
......@@ -240,6 +241,9 @@
<if test="mentorId != null">
mentor_id,
</if>
<if test="inMentorId != null">
in_mentor_id,
</if>
<if test="introducerId != null">
introducer_id,
</if>
......@@ -380,6 +384,9 @@
<if test="mentorId != null">
#{mentorId,jdbcType=BIGINT},
</if>
<if test="inMentorId != null">
#{inMentorId,jdbcType=BIGINT},
</if>
<if test="introducerId != null">
#{introducerId,jdbcType=BIGINT},
</if>
......@@ -524,6 +531,9 @@
<if test="mentorId != null">
mentor_id = #{mentorId,jdbcType=BIGINT},
</if>
<if test="inMentorId != null">
in_mentor_id = #{inMentorId,jdbcType=BIGINT},
</if>
<if test="introducerId != null">
introducer_id = #{introducerId,jdbcType=BIGINT},
</if>
......@@ -587,6 +597,7 @@
education_level = #{educationLevel,jdbcType=VARCHAR},
graduated_university = #{graduatedUniversity,jdbcType=VARCHAR},
mentor_id = #{mentorId,jdbcType=BIGINT},
in_mentor_id = #{inMentorId,jdbcType=BIGINT},
introducer_id = #{introducerId,jdbcType=BIGINT},
gender = #{gender,jdbcType=INTEGER},
contract_oss_path = #{contractOssPath,jdbcType=VARCHAR},
......@@ -1152,7 +1163,7 @@
employee_no, contract_no, is_active, created_at, created_by, updated_at, updated_by,
province_id, province_name, city_id, city_name, cert_list, bio_intro,bio_intro_two, wechat_id,
qq_id, is_profile_show, is_name_show, is_mobile_show, education_level, graduated_university,
mentor_id, introducer_id, gender, contract_oss_path, hiring_basic_info_id, can_login_dyd,
mentor_id,in_mentor_id, introducer_id, gender, contract_oss_path, hiring_basic_info_id, can_login_dyd,
can_see_salary_list)
values
<foreach collection="list" item="item" separator=",">
......@@ -1169,7 +1180,7 @@
#{item.cityName,jdbcType=VARCHAR}, #{item.certList,jdbcType=VARCHAR}, #{item.bioIntro,jdbcType=LONGVARCHAR},#{item.bioIntroTwo,jdbcType=LONGVARCHAR},
#{item.wechatId,jdbcType=VARCHAR}, #{item.qqId,jdbcType=VARCHAR}, #{item.isProfileShow,jdbcType=INTEGER},
#{item.isNameShow,jdbcType=INTEGER}, #{item.isMobileShow,jdbcType=INTEGER}, #{item.educationLevel,jdbcType=VARCHAR},
#{item.graduatedUniversity,jdbcType=VARCHAR}, #{item.mentorId,jdbcType=BIGINT},
#{item.graduatedUniversity,jdbcType=VARCHAR}, #{item.mentorId,jdbcType=BIGINT},#{item.inMentorId,jdbcType=BIGINT},
#{item.introducerId,jdbcType=BIGINT}, #{item.gender,jdbcType=INTEGER}, #{item.contractOssPath,jdbcType=VARCHAR},
#{item.hiringBasicInfoId,jdbcType=BIGINT}, #{item.canLoginDyd,jdbcType=BIGINT},
#{item.canSeeSalaryList,jdbcType=BIGINT})
......@@ -1957,6 +1968,37 @@
and p.is_active = 1
</select>
<select id="findPractitionerInfoByIdList" resultMap="practitioner_info_map">
select
p.customer_id as customerId,
p.id as practitionerId,
p.name as name,
p.gender as gender,
s.practitioner_type_id as practitionerType,
sys.name as subsystem,
o.drop_option_code as levelCode,
o.drop_option_name as levelName,
b.branch_name as insurerBranchName,
p.subordinate_system_id as subordinateId,
p.wechat_id as weChatId,
p.qq_id as qqId,
p.practitioner_reg_no as practitionerRegNo,
p.mobile_no,
p.mentor_id mentorId,
c.yd_wechat_openid,
p.can_see_salary_list as canSeeSalaryList
from ag_acl_practitioner p
left join ag_acl_customer c on c.id = p.customer_id
left join ag_acl_insurer_branch b on p.insurer_branch_id = b.id
left join ag_acl_practitioner_subordinate_system sys on p.subordinate_system_id = sys.id
left join ag_acl_practitioner_setting s on p.id = s.practitioner_id
left join ag_md_drop_options o on s.practitioner_level = o.id
where p.id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
and p.is_active = 1
</select>
<select id="queryEGHistorySalaryPDFByPractitionerId" resultType="com.yd.api.practitioner.vo.payscale.PayScaleInfo">
select p.id,
......
......@@ -216,7 +216,18 @@
from
ag_acl_practitioner_hiring_approve_records t
where t.approving_practitioner_id = #{practitionerId,jdbcType=BIGINT}
and t.approving_status = #{approvingStatus,jdbcType=BIGINT}
<if test="approvingStatus != null">
<choose>
<when test='approvingStatus == "1" '>
and (b.approve_status >= t.approve_step_id OR b.approve_status = 0)
</when>
<when test='approvingStatus == "2" '>
and ((b.approve_status != 0 and b.approve_status &lt; t.approve_step_id-1) or b.approve_status is null)
and t.id &lt;= (select max(a.id) from ag_acl_practitioner_hiring_approve_records a where a.hiring_basic_info_id = t.hiring_basic_info_id and a.approving_status=0)
<!-- and (t.approving_status = 0 or b.approve_status < t.approve_step_id or b.approve_status is null) -->
</when>
</choose>
</if>
)
</select>
......
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