Commit 8395e03e by jianan

续年佣金计算-已退保10

parent 65642149
......@@ -107,7 +107,7 @@ public class LifeCommissionServiceImpl implements LifeCommissionService {
private void validateContinuePremium(List<ComeCommissionParams> paramsList) throws Exception {
// 提示信息
StringBuffer stringBuffer = new StringBuffer("以下来佣的往期来佣未检核: ");
StringBuffer stringBuffer = new StringBuffer("以下来佣未检核: ");
List<String> commissionNos = new ArrayList<>();
for (ComeCommissionParams params: paramsList) {
......@@ -146,39 +146,19 @@ public class LifeCommissionServiceImpl implements LifeCommissionService {
private void processOrderAndFortune(List<ComeCommissionParams> paramsList, String status, String loginId, String checkBatch) {
// 获取首年度佣金的orderId, 只有首年佣金才更新order记录和fortune记录
List<Long> orderIds = new ArrayList<>();
Long orderId;
for (ComeCommissionParams params: paramsList) {
if ("1".equals(params.getCommissionPeriod())) {
orderIds.add(params.getOrderId());
}
}
if (orderIds.size() == 0) {
return;
}
// 操作前先检查是否已关账
// 查询对应订单记录
List<PoOrder> orders = poOrderDALService.findByIds(orderIds);
// 查询保单下的所有寿险经纪人的fortune记录
List<AclCustomerFortune> fortuneList = customerFortuneDalService.queryLifeFortuneListByOrderIds(orderIds);
// 已关帐的订单,则该笔订单来佣比对状态不能改为待来佣和已比对,但能改为已退保
// 处理历史记录,暂时关闭
// this.validateClosed(orders, fortuneList, status);
String fortuneCommissionPayoutStatus;
if ("2".equals(status)) {//已比对
fortuneCommissionPayoutStatus = "2";
orderId = params.getOrderId();
orderIds.add(orderId);
} else if ("3".equals(status)) {//已退保
fortuneCommissionPayoutStatus = "1";
} else {//待来佣
fortuneCommissionPayoutStatus = "1";
this.updateOrderAndFortune(orderId, status, loginId, checkBatch);
}
}
this.updateOrderAndFortune(orderIds, fortuneList, status, fortuneCommissionPayoutStatus, loginId, checkBatch);
// 订单已退保后发送邮件通知运营
if ("3".equals(status)) {//已比对
if (orderIds.size() != 0 && "3".equals(status)) {
// 订单已退保后发送邮件通知运营
List<PoOrder> orders = poOrderDALService.findByIds(orderIds);
this.orderCommissionCheckCancelSendMail(orders);
}
......@@ -196,17 +176,54 @@ public class LifeCommissionServiceImpl implements LifeCommissionService {
// 获取批次号(如2020-11的字符串)
Long checkBatchId = this.getOrderCommissionCheckBatch(checkBatch, loginId);
Set<Long> commissionCancelorderIdSet = new HashSet<>();
// 更新检核状态
for (String commissionNo: commissionNos) {
AgPoOrderCommission orderCommission = new AgPoOrderCommission();
orderCommission.setCommissionNo(commissionNo);
orderCommission.setCommissionCheckId(checkBatchId);
orderCommission.setCommissionStatus(status);
orderCommission.setCommissionTime(checkBatch);
orderCommission.setUpdatedBy(Long.valueOf(loginId));
orderCommission.setUpdatedAt(new Date());
orderCommissionMapper.updateBycommissionNo(orderCommission);
if ("3".equals(status)) {
// 来佣比对进行“已退保”操作时,当前状态为待来佣时才修改
AgPoOrderCommission agPoOrderCommission = orderCommissionMapper.selectByCommissionNo(commissionNo);
if ("1".equals(agPoOrderCommission.getCommissionStatus())) {
AgPoOrderCommission orderCommission = new AgPoOrderCommission();
orderCommission.setCommissionNo(commissionNo);
orderCommission.setCommissionCheckId(checkBatchId);
orderCommission.setCommissionStatus(status);
orderCommission.setCommissionTime(checkBatch);
orderCommission.setUpdatedBy(Long.valueOf(loginId));
orderCommission.setUpdatedAt(new Date());
orderCommissionMapper.updateBycommissionNo(orderCommission);
// 退保的orderId
commissionCancelorderIdSet.add(agPoOrderCommission.getOrderId());
}
} else {
AgPoOrderCommission orderCommission = new AgPoOrderCommission();
orderCommission.setCommissionNo(commissionNo);
orderCommission.setCommissionCheckId(checkBatchId);
orderCommission.setCommissionStatus(status);
orderCommission.setCommissionTime(checkBatch);
orderCommission.setUpdatedBy(Long.valueOf(loginId));
orderCommission.setUpdatedAt(new Date());
orderCommissionMapper.updateBycommissionNo(orderCommission);
}
}
// 如果是已退保,将后续期数的待来佣记录都改为已退保
for (Long orderId : commissionCancelorderIdSet) {
List<AgPoOrderCommission> list = orderCommissionMapper.selectByOrderId(orderId);
for (AgPoOrderCommission item : list) {
if ("1".equals(item.getCommissionStatus())) {
AgPoOrderCommission orderCommission = new AgPoOrderCommission();
orderCommission.setCommissionNo(item.getCommissionNo());
orderCommission.setCommissionCheckId(checkBatchId);
orderCommission.setCommissionStatus("3");
orderCommission.setCommissionTime(checkBatch);
orderCommission.setUpdatedBy(Long.valueOf(loginId));
orderCommission.setUpdatedAt(new Date());
orderCommissionMapper.updateBycommissionNo(orderCommission);
}
}
}
}
......@@ -266,25 +283,51 @@ public class LifeCommissionServiceImpl implements LifeCommissionService {
sendService.sendEmailOrSMS("email", email, "3", messageText.toString(), null, subject, ccAddresses, "来佣比对已退保", 99, null);
}
private void updateOrderAndFortune(List<Long> orderIds, List<AclCustomerFortune> fortuneList, String status, String fortuneCommissionPayoutStatus,
String loginId, String checkBatch) {
private void updateOrderAndFortune(Long orderId, String status, String loginId, String checkBatch) {
// 查询对应订单记录
PoOrder order = poOrderDALService.findByOrderId(orderId);
// 查询保单下的所有寿险经纪人的fortune记录
List<AclCustomerFortune> fortuneList = customerFortuneDalService.queryLifeFortuneListByOrderId(orderId);
// 更新fortune记录是否可发放
String fortuneCommissionPayoutStatus = "2".equals(status) ? "2" : "1";
// 获取批次号(如2020-11的字符串)
Long checkBatchId = this.getOrderCommissionCheckBatch(checkBatch, loginId);
// 设置order记录的CommissionCheckId
this.setOrderCommissionCheckId(orderIds, status, checkBatchId, loginId);
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("checkId", checkBatchId);
paramMap.put("status", status);
paramMap.put("checkAt", new Date());
paramMap.put("checkBy", loginId);
if (fortuneList.size() == 0) {
return;
}
// 批量设置fortune为可发佣
fortuneList.forEach(f -> {
f.setCommissionPayoutStatus(fortuneCommissionPayoutStatus);
f.setCommissionPayoutAt(new Date());
f.setCommissionPayoutBy(Long.valueOf(loginId));
});
if (fortuneList.size() > 0) {
customerFortuneDalService.updateBatch(fortuneList);
/**检核选择退保时先查看原来的来佣状态,若原来的是”已比对“则不改成已退保,若是”待来佣“就改成”已退保“*/
if ("3".equals(status)) {
if ("1".equals(order.getCommissionCheckStatus())) {
lifeCommissionMapper.setOrderCommissionCheckId(Arrays.asList(orderId), paramMap);
if (fortuneList.size() > 0) {
// 批量设置fortune为可发佣
fortuneList.forEach(f -> {
f.setCommissionPayoutStatus(fortuneCommissionPayoutStatus);
f.setCommissionPayoutAt(new Date());
f.setCommissionPayoutBy(Long.valueOf(loginId));
});
customerFortuneDalService.updateBatch(fortuneList);
}
}
} else {
lifeCommissionMapper.setOrderCommissionCheckId(Arrays.asList(orderId), paramMap);
if (fortuneList.size() > 0) {
// 批量设置fortune为可发佣
fortuneList.forEach(f -> {
f.setCommissionPayoutStatus(fortuneCommissionPayoutStatus);
f.setCommissionPayoutAt(new Date());
f.setCommissionPayoutBy(Long.valueOf(loginId));
});
customerFortuneDalService.updateBatch(fortuneList);
}
}
}
private void validateClosed(List<PoOrder> orders, List<AclCustomerFortune> fortuneList, String status) throws Exception {
......@@ -320,16 +363,23 @@ public class LifeCommissionServiceImpl implements LifeCommissionService {
return pageInfo;
}
private void setOrderCommissionCheckId(List<Long> orderIds, String status, Long checkBatchId, String loginId) {
private void setOrderCommissionCheckId(Long orderId, String status, Long checkBatchId, String loginId) {
// 更新参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("checkId", checkBatchId);
paramMap.put("status", status);
// 获取当前时间
Date curDate = new Date();
paramMap.put("checkAt", curDate);
paramMap.put("checkAt", new Date());
paramMap.put("checkBy", loginId);
lifeCommissionMapper.setOrderCommissionCheckId(orderIds, paramMap);
/**检核选择退保时先查看原来的来佣状态,若原来的是”已比对“则不改成已退保,若是”待来佣“就改成”已退保“*/
if ("3".equals(status)) {
PoOrder order = poOrderDALService.findByOrderId(orderId);
if ("1".equals(order.getCommissionCheckStatus())) {
lifeCommissionMapper.setOrderCommissionCheckId(Arrays.asList(orderId), paramMap);
}
} else {
lifeCommissionMapper.setOrderCommissionCheckId(Arrays.asList(orderId), paramMap);
}
}
private Long getOrderCommissionCheckBatch(String OrderCommissionCheckBatch, String loginId) {
......
......@@ -21,4 +21,6 @@ public interface AgPoOrderCommissionMapper {
void updateBycommissionNo(AgPoOrderCommission orderCommission);
AgPoOrderCommission selectByCommissionNo(String commissionNo);
List<AgPoOrderCommission> selectByOrderId(Long orderId);
}
\ No newline at end of file
......@@ -36,4 +36,5 @@ public interface AclCustomerFortuneMapper {
List<AclCustomerFortuneStatistics> findBypractitionerIds(@Param("list")List<Long> practitionerIds, @Param("time")Integer time);
List<AclCustomerFortune> queryLifeFortuneListByOrderId(Long orderId);
}
\ No newline at end of file
......@@ -27,4 +27,6 @@ public interface AclCustomerFortuneDALService {
List<AclCustomerFortune> findByOrderId(Long orderId);
List<AclCustomerFortuneStatistics> findBypractitionerIds(List<Long> practitionerIds, Integer time);
List<AclCustomerFortune> queryLifeFortuneListByOrderId(Long orderId);
}
......@@ -54,4 +54,9 @@ public class AclCustomerFortuneDALServiceImpl implements AclCustomerFortuneDALSe
public List<AclCustomerFortuneStatistics> findBypractitionerIds(List<Long> practitionerIds, Integer time) {
return aclCustomerFortuneMapper.findBypractitionerIds(practitionerIds, time);
}
@Override
public List<AclCustomerFortune> queryLifeFortuneListByOrderId(Long orderId) {
return aclCustomerFortuneMapper.queryLifeFortuneListByOrderId(orderId);
}
}
......@@ -350,4 +350,11 @@
from ag_po_order_commission
where commission_no = #{commissionNo,jdbcType=VARCHAR}
</select>
<select id="selectByOrderId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ag_po_order_commission
where order_id = #{orderId,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
......@@ -938,4 +938,15 @@
GROUP BY f.customer_id
</select>
<select id="queryLifeFortuneListByOrderId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ag_acl_customer_fortune f
left join (select p.customer_id p_customer_id, s.practitioner_type_id from ag_acl_practitioner p left join ag_acl_practitioner_setting s on p.id = s.practitioner_id) p
on f.customer_id = p.p_customer_id
where 1=1
and p.practitioner_type_id = 28
and f.order_id = #{orderId,jdbcType=BIGINT}
</select>
</mapper>
\ No newline at end of file
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