|
|
@@ -2,6 +2,8 @@ package com.ydtech.modules.fnc.service.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
|
|
|
import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
@@ -18,7 +20,9 @@ import com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper;
|
|
|
import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper;
|
|
|
import com.ydtech.modules.fnc.entity.InsFeeAudit;
|
|
|
import com.ydtech.modules.fnc.dao.InsFeeAuditMapper;
|
|
|
+import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
|
|
|
import com.ydtech.modules.fnc.entity.InsPlyIncome;
|
|
|
+import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
|
|
|
import com.ydtech.modules.fnc.service.InsFeeAuditService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.modules.fnc.service.InsPlyIncomeService;
|
|
|
@@ -36,15 +40,19 @@ import com.ydtech.modules.order.service.InsFeeOrderService;
|
|
|
import com.ydtech.modules.protocol.entity.po.PtlAgreement;
|
|
|
import com.ydtech.modules.protocol.service.PtlAgreementService;
|
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
|
|
|
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
|
|
|
+import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
|
|
|
import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
|
|
|
import com.ydtech.utils.DateUtil;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -91,11 +99,17 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
@Autowired
|
|
|
private InsPlyIncomeService insPlyIncomeService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private InsFeeAuditHistoryService insFeeAuditHistoryService;
|
|
|
@Autowired
|
|
|
private PtlAgreementService ptlAgreementService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
|
|
|
+
|
|
|
|
|
|
- public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper, InsDeptFeeService insDeptFeeService,EsmUserReferrerService esmUserReferrerService,SysUserService sysUserService,InsCommissionService insCommissionService,InsCompanyFeeService insCompanyFeeService,InsPlyIncomeMapper insPlyIncomeMapper) {
|
|
|
+
|
|
|
+ public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper, InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService, SysUserService sysUserService, InsCommissionService insCommissionService, InsCompanyFeeService insCompanyFeeService, InsPlyIncomeMapper insPlyIncomeMapper) {
|
|
|
this.insAreaCompanyMapper = insAreaCompanyMapper;
|
|
|
this.insOrdersMapper = insOrdersMapper;
|
|
|
this.insDeptFeeService=insDeptFeeService;
|
|
|
@@ -107,21 +121,9 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
}
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void feeAudit(String orderNo, String insOrderNo,boolean isAutoAudit){
|
|
|
- //添加审核表
|
|
|
- InsFeeAudit insFeeAudit=new InsFeeAudit();
|
|
|
- if(isAutoAudit){
|
|
|
- insFeeAudit.setAudituser("自动审核");
|
|
|
- }else{
|
|
|
- insFeeAudit.setAudituser(StpUtil.getLoginId().toString());
|
|
|
- }
|
|
|
- //保存审核表
|
|
|
- insFeeAudit.setOrderno(orderNo);
|
|
|
- insFeeAudit.setInsOrderNo(insOrderNo);
|
|
|
- insFeeAudit.setAuditstatus("1");
|
|
|
- insFeeAudit.setAudittime(LocalDateTime.now());
|
|
|
- this.save(insFeeAudit);
|
|
|
-
|
|
|
+ public void feeAudit(String orderNo, String insOrderNo, boolean isAutoAudit) {
|
|
|
+ //添加费用审核表及轨迹信息
|
|
|
+ InsFeeAudit insFeeAudit = saveInsFeeAuditAndHistory(orderNo, insOrderNo,isAutoAudit, FeeAuditAuditstatus.PASSED.getCode());
|
|
|
|
|
|
InsOrders order=insOrdersMapper.selectById(orderNo);
|
|
|
InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
|
|
|
@@ -176,6 +178,22 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
sysUserAccount.setSuborderId(orderNo); // 订单Id
|
|
|
sysUserAccountService.addOrUpdate(sysUserAccount);
|
|
|
|
|
|
+ if (insFeeOrderNew.getFirstLevelUserId() != null) {
|
|
|
+ createInsFeeOrderNewDistribution(insFeeOrderNew, insAreaCompany, order,
|
|
|
+ insFeeOrderNew.getFirstLevelUserId(), insFeeOrderNew.getFirstDetailProportion(),
|
|
|
+ insFeeOrderNew.getFirstDetailPremiums(), insFeeOrderNew.getDistributionStatus());
|
|
|
+ }
|
|
|
+ if (insFeeOrderNew.getTwoLevelUserId() != null) {
|
|
|
+ createInsFeeOrderNewDistribution(insFeeOrderNew, insAreaCompany, order,
|
|
|
+ insFeeOrderNew.getTwoLevelUserId(), insFeeOrderNew.getSecondDetailProportion(),
|
|
|
+ insFeeOrderNew.getSecondDetailPremiums(), insFeeOrderNew.getDistributionStatus());
|
|
|
+ }
|
|
|
+ if (insFeeOrderNew.getThreeLevelUserId() != null) {
|
|
|
+ createInsFeeOrderNewDistribution(insFeeOrderNew, insAreaCompany, order,
|
|
|
+ insFeeOrderNew.getThreeLevelUserId(), insFeeOrderNew.getThirdDetailProportion(),
|
|
|
+ insFeeOrderNew.getThirdDetailPremiums(), insFeeOrderNew.getDistributionStatus());
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
String deptid = insFeeOrderNew.getDeptId();
|
|
|
// 定义一个数组来存储各级机构的管理费
|
|
|
@@ -239,6 +257,25 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void createInsFeeOrderNewDistribution(InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany, InsOrders insOrders, String userId, BigDecimal commissionRate, BigDecimal commissionAmount, String commissionLevel) {
|
|
|
+ InsFeeOrderNewDistribution insFeeOrderNewDistribution = new InsFeeOrderNewDistribution();
|
|
|
+ insFeeOrderNewDistribution.setId(IdGenerate.nextId());
|
|
|
+ insFeeOrderNewDistribution.setOrderNo(insFeeOrderNew.getInsOrderNo());
|
|
|
+ insFeeOrderNewDistribution.setJqPolicyNo(insAreaCompany.getJqpolicyno());
|
|
|
+ insFeeOrderNewDistribution.setSyPolicyNo(insAreaCompany.getSypolicyno());
|
|
|
+ insFeeOrderNewDistribution.setLicenseNo(insOrders.getLicenseno());
|
|
|
+ insFeeOrderNewDistribution.setProductId(insAreaCompany.getProductid());
|
|
|
+ insFeeOrderNewDistribution.setProduct(insAreaCompany.getProduct());
|
|
|
+ insFeeOrderNewDistribution.setSignTime(insAreaCompany.getSigningTime());
|
|
|
+ insFeeOrderNewDistribution.setInsCompany(insAreaCompany.getInscompany());
|
|
|
+ insFeeOrderNewDistribution.setUserId(userId);
|
|
|
+ insFeeOrderNewDistribution.setCommissionRate(commissionRate);
|
|
|
+ insFeeOrderNewDistribution.setCommissionAmount(commissionAmount);
|
|
|
+ insFeeOrderNewDistribution.setCommissionLevel(commissionLevel);
|
|
|
+ // 保存insFeeOrderNewDistribution
|
|
|
+ insFeeOrderNewDistributionService.save(insFeeOrderNewDistribution);
|
|
|
+ }
|
|
|
+
|
|
|
private String getDeptFeeHistoryLog(Integer index,BigDecimal[] jqDeptPremiumsLevels,BigDecimal[] syDeptPremiumsLevels,
|
|
|
BigDecimal[] noDeptPremiumsLevels,BigDecimal distributionFee){
|
|
|
StringBuilder remarkBuilder = new StringBuilder();
|
|
|
@@ -682,4 +719,56 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存保险费用审核信息及审核历史。
|
|
|
+ *
|
|
|
+ * @param orderNo 订单号
|
|
|
+ * @param insOrderNo 保险订单号
|
|
|
+ * @param isAutoAudit 是否自动审核,true表示自动审核,false表示人工审核
|
|
|
+ * @param auditstatus 审核状态码
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public InsFeeAudit saveInsFeeAuditAndHistory(String orderNo, String insOrderNo, boolean isAutoAudit, String auditstatus) {
|
|
|
+ //查询费用审核表
|
|
|
+ InsFeeAudit insFeeAudit = getOne(new LambdaQueryWrapper<InsFeeAudit>().eq(InsFeeAudit::getOrderno, orderNo));
|
|
|
+
|
|
|
+ //添加审核轨迹表
|
|
|
+ InsFeeAuditHistory insFeeAuditHistory = new InsFeeAuditHistory();
|
|
|
+ if (insFeeAudit == null) {
|
|
|
+ insFeeAudit = new InsFeeAudit();
|
|
|
+ // 填充审核人
|
|
|
+ if (isAutoAudit) {
|
|
|
+ insFeeAudit.setAudituser("自动审核");
|
|
|
+ } else {
|
|
|
+ insFeeAudit.setAudituser(StpUtil.getLoginId().toString());
|
|
|
+ }
|
|
|
+ // 设置订单号和保险订单号
|
|
|
+ insFeeAudit.setOrderno(orderNo);
|
|
|
+ insFeeAudit.setInsOrderNo(insOrderNo);
|
|
|
+ insFeeAudit.setAudittime(LocalDateTime.now());
|
|
|
+ insFeeAudit.setAuditstatus(auditstatus);
|
|
|
+ this.save(insFeeAudit);
|
|
|
+ } else {
|
|
|
+ //状态码为已审核且数据不为空,则更新审核状态
|
|
|
+ insFeeAudit.setAuditstatus(auditstatus);
|
|
|
+ this.update(insFeeAudit, new LambdaUpdateWrapper<InsFeeAudit>().eq(InsFeeAudit::getOrderno, orderNo));
|
|
|
+ }
|
|
|
+ //复制审核对象的属性
|
|
|
+ BeanUtils.copyProperties(insFeeAudit, insFeeAuditHistory);
|
|
|
+
|
|
|
+ InsAreaCompany insAreaCompany = insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
|
|
|
+
|
|
|
+ // 设置操作时间和操作人及保险公司名称
|
|
|
+ insFeeAuditHistory.setInsCompany(insAreaCompany.getInscompany());
|
|
|
+ insFeeAuditHistory.setOperatorTime(LocalDateTime.now());
|
|
|
+ insFeeAuditHistory.setOperator(BaseController.getUser().getName());
|
|
|
+
|
|
|
+ // 保存审核轨迹
|
|
|
+ insFeeAuditHistoryService.save(insFeeAuditHistory);
|
|
|
+
|
|
|
+ return insFeeAudit;
|
|
|
+ }
|
|
|
}
|