|
@@ -11,6 +11,7 @@ import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
import com.ydtech.modules.admin.model.SysDeptAccount;
|
|
import com.ydtech.modules.admin.model.SysDeptAccount;
|
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
|
|
|
+import com.ydtech.modules.admin.model.SysUserRole;
|
|
|
import com.ydtech.modules.admin.model.po.SysChannelCost;
|
|
import com.ydtech.modules.admin.model.po.SysChannelCost;
|
|
|
import com.ydtech.modules.admin.model.po.SysUserAccount;
|
|
import com.ydtech.modules.admin.model.po.SysUserAccount;
|
|
|
import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
|
|
import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
|
|
@@ -33,18 +34,25 @@ import com.ydtech.modules.ins.model.InsDeptFee;
|
|
|
import com.ydtech.modules.ins.service.InsCommissionService;
|
|
import com.ydtech.modules.ins.service.InsCommissionService;
|
|
|
import com.ydtech.modules.ins.service.InsCompanyFeeService;
|
|
import com.ydtech.modules.ins.service.InsCompanyFeeService;
|
|
|
import com.ydtech.modules.ins.service.InsDeptFeeService;
|
|
import com.ydtech.modules.ins.service.InsDeptFeeService;
|
|
|
|
|
+import com.ydtech.modules.order.constants.BusinessConstant;
|
|
|
import com.ydtech.modules.order.dao.InsOrdersMapper;
|
|
import com.ydtech.modules.order.dao.InsOrdersMapper;
|
|
|
import com.ydtech.modules.order.entity.InsFeeOrder;
|
|
import com.ydtech.modules.order.entity.InsFeeOrder;
|
|
|
import com.ydtech.modules.order.entity.InsOrders;
|
|
import com.ydtech.modules.order.entity.InsOrders;
|
|
|
|
|
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
|
|
|
|
|
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
|
|
|
import com.ydtech.modules.protocol.service.PtlAgreementService;
|
|
import com.ydtech.modules.protocol.service.PtlAgreementService;
|
|
|
import com.ydtech.modules.protocol.utils.AssertionUtils;
|
|
import com.ydtech.modules.protocol.utils.AssertionUtils;
|
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
|
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
|
|
|
import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
|
|
import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
|
|
|
import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
|
|
import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
|
|
|
|
|
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
|
|
|
|
|
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
|
|
|
import com.ydtech.utils.DateUtil;
|
|
import com.ydtech.utils.DateUtil;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
import com.ydtech.utils.idgen.IdGenerate;
|
|
|
|
|
+import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.redisson.Redisson;
|
|
import org.redisson.Redisson;
|
|
|
import org.redisson.api.RLock;
|
|
import org.redisson.api.RLock;
|
|
@@ -55,10 +63,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
|
|
+import java.util.concurrent.Executors;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -70,6 +79,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
* @since 2023-11-22
|
|
* @since 2023-11-22
|
|
|
*/
|
|
*/
|
|
|
@Service
|
|
@Service
|
|
|
|
|
+@Slf4j
|
|
|
public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFeeAudit> implements InsFeeAuditService {
|
|
public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFeeAudit> implements InsFeeAuditService {
|
|
|
|
|
|
|
|
private final InsOrdersMapper insOrdersMapper;
|
|
private final InsOrdersMapper insOrdersMapper;
|
|
@@ -121,6 +131,22 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
@Resource
|
|
@Resource
|
|
|
private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
|
|
private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SendProjrctUtils sendProjrctUtils;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysUserRoleService sysUserRoleService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SendProjectMapper sendProjectMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private ExecutorService executorService= Executors.newCachedThreadPool();
|
|
|
|
|
+
|
|
|
|
|
+ private static final String STRING_0 = "0";
|
|
|
|
|
+ private static final String STRING_1 = "1";
|
|
|
|
|
+ private static final String STRING_2 = "2";
|
|
|
|
|
+ private static final Integer INTEGER_0 = 0;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper,
|
|
public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper,
|
|
|
InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService,
|
|
InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService,
|
|
@@ -917,5 +943,155 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
return this.getOne(queryWrapper);
|
|
return this.getOne(queryWrapper);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void sendProject(String insOrderNo) {
|
|
|
|
|
+ log.info("订单:{},审核通过后首次推送服务", insOrderNo);
|
|
|
|
|
+ executorService.submit(new Runnable() {
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void run() {
|
|
|
|
|
+ log.info("异步线程开始!程序启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
+ //查询费用信息
|
|
|
|
|
+ log.info("查询ins_fee_order_new数据库");
|
|
|
|
|
+ InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
|
|
|
|
|
+ .eq(InsFeeOrderNew::getInsOrderNo, insOrderNo));
|
|
|
|
|
+ FeeOrderNewVo.ExportFee exportFee = exportFee(insFeeOrderNew);
|
|
|
|
|
+ BigDecimal totalAmount = exportFee.getTotalAmount();
|
|
|
|
|
+
|
|
|
|
|
+ StringBuffer uuid = new StringBuffer();
|
|
|
|
|
+ uuid.append(new SimpleDateFormat("yyyyMMddHHmmss"))
|
|
|
|
|
+ .append(UUID.randomUUID());
|
|
|
|
|
+
|
|
|
|
|
+ SendProjectInfo userInfo = new SendProjectInfo();
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("查询数据库保险订单表入参:{}", insOrderNo);
|
|
|
|
|
+ userInfo = insOrdersMapper.getOrderByCompanyId(insOrderNo);
|
|
|
|
|
+ log.info("查询数据库保险订单表出参:{}", userInfo);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("查询数据库保险订单表报错:{}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (userInfo == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ SendProjectInfo sendProjectInfo = new SendProjectInfo();
|
|
|
|
|
+ sendProjectInfo.setGiveBudget(totalAmount);
|
|
|
|
|
+ sendProjectInfo.setUuid(uuid.toString());
|
|
|
|
|
+ sendProjectInfo.setUserName(userInfo.getUserName());
|
|
|
|
|
+ sendProjectInfo.setUserPhone(userInfo.getUserPhone());
|
|
|
|
|
+ sendProjectInfo.setUserCarNum(userInfo.getUserCarNum());
|
|
|
|
|
+
|
|
|
|
|
+ SendProjectEntity addSendProject = new SendProjectEntity();
|
|
|
|
|
+ addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
|
|
|
|
|
+ addSendProject.setUserName(sendProjectInfo.getUserName());
|
|
|
|
|
+ addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
|
|
|
|
|
+ addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
|
|
|
|
|
+ addSendProject.setSendState(STRING_2);
|
|
|
|
|
+ addSendProject.setSendUuid(sendProjectInfo.getSendUuid());
|
|
|
|
|
+ addSendProject.setFailNum(INTEGER_0);
|
|
|
|
|
+ addSendProject.setState(STRING_1);
|
|
|
|
|
+ addSendProject.setIsDelete(STRING_0);
|
|
|
|
|
+ addSendProject.setCreateTime(new Date());
|
|
|
|
|
+ addSendProject.setUpdateTime(new Date());
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("新增推送服务数据库入参:{}", addSendProject);
|
|
|
|
|
+ sendProjectMapper.addSendProjectInfo(addSendProject);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("新增推送服务数据库报错:{}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ sendProjrctUtils.firstSendProject(sendProjectInfo);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private FeeOrderNewVo.ExportFee exportFee(InsFeeOrderNew insFeeOrderNew) {
|
|
|
|
|
+ List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
|
|
|
|
|
+ //region 出口费用
|
|
|
|
|
+ //交强
|
|
|
|
|
+ FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_1,
|
|
|
|
|
+ insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
|
|
|
|
|
+ insFeeOrderNew.getJqExportOtherCostsProportion(),
|
|
|
|
|
+ insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums()
|
|
|
|
|
+ );
|
|
|
|
|
+ //exportFeeList.add(jqExportFee);
|
|
|
|
|
+
|
|
|
|
|
+ //交强
|
|
|
|
|
+ FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_2,
|
|
|
|
|
+ insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
|
|
|
|
|
+ insFeeOrderNew.getSyExportOtherCostsProportion(),
|
|
|
|
|
+ insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums()
|
|
|
|
|
+ );
|
|
|
|
|
+ //exportFeeList.add(syExportFee);
|
|
|
|
|
+
|
|
|
|
|
+ //交强
|
|
|
|
|
+ FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_3,
|
|
|
|
|
+ insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
|
|
|
|
|
+ insFeeOrderNew.getNoExportOtherCostsProportion(),
|
|
|
|
|
+ insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums());
|
|
|
|
|
+
|
|
|
|
|
+ // exportFeeList.add(noExportFee);
|
|
|
|
|
+ //add by hxl 添加出单员不能查看优惠的限制 2024-07-11
|
|
|
|
|
+ String userId = BaseController.getUserId();
|
|
|
|
|
+ SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
|
|
|
|
|
+ if (sysUserRole != null && sysUserRole.getRoleId() == 19) {
|
|
|
|
|
+ jqExportFee.setTotalAmount(BigDecimal.ZERO);
|
|
|
|
|
+ jqExportFee.setTotalProportion(BigDecimal.ZERO);
|
|
|
|
|
+ syExportFee.setTotalAmount(BigDecimal.ZERO);
|
|
|
|
|
+ syExportFee.setTotalProportion(BigDecimal.ZERO);
|
|
|
|
|
+ noExportFee.setTotalAmount(BigDecimal.ZERO);
|
|
|
|
|
+ noExportFee.setTotalProportion(BigDecimal.ZERO);
|
|
|
|
|
+ }
|
|
|
|
|
+ exportFeeList.add(jqExportFee);
|
|
|
|
|
+ exportFeeList.add(syExportFee);
|
|
|
|
|
+ exportFeeList.add(noExportFee);
|
|
|
|
|
+ //出口费用合计
|
|
|
|
|
+ FeeOrderNewVo.ExportFee exportFeeTotal = assignExportFeeTotal(exportFeeList);
|
|
|
|
|
+ return exportFeeTotal;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private FeeOrderNewVo.ExportFee assignExportFeeTotal(List<FeeOrderNewVo.ExportFee> exportFeeList) {
|
|
|
|
|
+ FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
|
|
|
|
|
+ exportFee.setInsuranceType(BusinessConstant.FEE_INSURANCE_TYPE_4);
|
|
|
|
|
+ //总费用合计
|
|
|
|
|
+ BigDecimal totalAmount = exportFeeList.stream().map(FeeOrderNewVo.ExportFee::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ exportFee.setTotalAmount(Optional.of(totalAmount).orElse(BigDecimal.ZERO));
|
|
|
|
|
+ return exportFee;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 出口费用赋值
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param title
|
|
|
|
|
+ * @param premium
|
|
|
|
|
+ * @param superviseCostsProportion
|
|
|
|
|
+ * @param otherCostsProportion
|
|
|
|
|
+ * @param superviseCostsPremiums
|
|
|
|
|
+ * @param otherCostsPremiums
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public FeeOrderNewVo.ExportFee assignExportFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
|
|
|
|
|
+ BigDecimal otherCostsProportion,
|
|
|
|
|
+ BigDecimal superviseCostsPremiums, BigDecimal otherCostsPremiums
|
|
|
|
|
+ ) {
|
|
|
|
|
+ FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
|
|
|
|
|
+ exportFee.setInsuranceType(title);
|
|
|
|
|
+ //保费
|
|
|
|
|
+ exportFee.setPremium(premium);
|
|
|
|
|
+ //手续费比例
|
|
|
|
|
+ exportFee.setSuperviseCosts(superviseCostsProportion);
|
|
|
|
|
+ //跟单比例
|
|
|
|
|
+ exportFee.setOtherCostsProportion(otherCostsProportion);
|
|
|
|
|
+ //总比例
|
|
|
|
|
+ exportFee.setTotalProportion(superviseCostsProportion.add(otherCostsProportion));
|
|
|
|
|
+ //手续费
|
|
|
|
|
+ exportFee.setSuperviseCostsPremiums(superviseCostsPremiums);
|
|
|
|
|
+ //跟单费
|
|
|
|
|
+ exportFee.setOtherCostsPremiums(otherCostsPremiums);
|
|
|
|
|
+ //总费用
|
|
|
|
|
+ exportFee.setTotalAmount(superviseCostsPremiums.add(otherCostsPremiums));
|
|
|
|
|
+
|
|
|
|
|
+ return exportFee;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
}
|