|
|
@@ -107,54 +107,37 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
}
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void feeAudit(String orderNo, String insOrderNo) throws Exception{
|
|
|
- //保存审核表
|
|
|
+ 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());
|
|
|
- insFeeAudit.setAudituser(StpUtil.getLoginId().toString());
|
|
|
this.save(insFeeAudit);
|
|
|
|
|
|
|
|
|
InsOrders order=insOrdersMapper.selectById(orderNo);
|
|
|
- InsFeeOrderNew insFeeOrder=insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insFeeAudit.getInsOrderNo());
|
|
|
InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
|
|
|
|
|
|
//获取该订单的费用
|
|
|
InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
|
|
|
.eq(InsFeeOrderNew::getInsOrderNo, insFeeAudit.getInsOrderNo()));
|
|
|
|
|
|
-
|
|
|
- //获取操作人员的机构来源
|
|
|
- String deptId=order.getDeptid();
|
|
|
-
|
|
|
- List<SysDept> teamList = sysDeptService.findTeamList(deptId);
|
|
|
- teamList.forEach(sysDept -> {
|
|
|
-
|
|
|
- if(StringUtils.isNotEmpty(sysDept.getComlevel()) && sysDept.getComlevel().equals("1")){
|
|
|
- BigDecimal jqDeptPremiumsLevel1 = insFeeOrderNew.getJqDeptPremiumsLevel1();
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- //bigdecimal为null时设置为0
|
|
|
-// handleBigdecimal(insFeeOrder);
|
|
|
- //生成保司费用(应收费用)
|
|
|
-// gene_orderIncome( order, insFeeOrderNew,insAreaCompany);
|
|
|
//生成机构费用
|
|
|
gene_deptfee( order, insFeeOrderNew,insAreaCompany);
|
|
|
- //生成分销费用
|
|
|
-// saveRetail(order,insFeeOrderNew,insAreaCompany);
|
|
|
- //个代费用生成
|
|
|
-// saveInsCompanyFee(order,insFeeOrderNew,insAreaCompany);
|
|
|
-// 结算费用生成
|
|
|
+ //结算费用生成
|
|
|
insPlyIncomeService.saveBalanceNew(order,insFeeOrderNew,insAreaCompany);
|
|
|
|
|
|
-// 生成 用户账户表 数据
|
|
|
+ //生成 用户账户表 数据
|
|
|
if(StringUtils.isNotEmpty(order.getUserid())){
|
|
|
-// 用戶賬戶表
|
|
|
+ //用戶賬戶表
|
|
|
SysUserAccount sysUserAccount = new SysUserAccount();
|
|
|
//add by hxl 2024-05-07 begin ==========
|
|
|
//判断当前用户是否是出单员,如果是直接给团队长结算 角色id为19为出单员
|
|
|
@@ -173,79 +156,6 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
sysUserAccount.setUserId(userId);
|
|
|
// add by hxl 2024-05-07 end ==================
|
|
|
if (ObjectUtils.isNotEmpty(insFeeOrderNew) ) {
|
|
|
-// 手续非佣金 = 交强监管费用 + 商业监管费用 + 非车监管费用
|
|
|
-// 非跟单费用 = 交强非跟单费用 + 商业非跟单费用 + 非车非跟单费用
|
|
|
- //手续费入口费用
|
|
|
-// BigDecimal jqPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getJqSuperviseCostsPremiums());//交强监管费
|
|
|
-// BigDecimal syPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getSySuperviseCostsPremiums());//商业监管费
|
|
|
-// BigDecimal noPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getNoSuperviseCostsPremiums());//非车监管费用
|
|
|
-// BigDecimal totalPremiumAmount = jqPremiumAmount.add(syPremiumAmount).add(noPremiumAmount); // 手续非佣金
|
|
|
-// //其他费用入口费用
|
|
|
-// BigDecimal jqOtherCostsPremiums =this.zeroBigdecimal(insFeeOrderNew.getJqOtherCostsPremiums());//交强其他费用
|
|
|
-// BigDecimal syOtherCostsPremiums =this.zeroBigdecimal(insFeeOrderNew.getSyOtherCostsPremiums()); //商业其他费用
|
|
|
-// BigDecimal noOtherCostsProportion = this.zeroBigdecimal(insFeeOrderNew.getNoOtherCostsPremiums());//非车其他费用
|
|
|
-// BigDecimal totalOtherPremiumAmount = jqOtherCostsPremiums.add(syOtherCostsPremiums).add(noOtherCostsProportion); //非跟单费用
|
|
|
-
|
|
|
- //总机构 交强管理比例
|
|
|
- BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel5());
|
|
|
-
|
|
|
- //总机构 商业管理比例
|
|
|
- BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel5());
|
|
|
-
|
|
|
- //总机构 非车管理比例
|
|
|
- BigDecimal sumNoDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel5());
|
|
|
-
|
|
|
- //总分销比例
|
|
|
- BigDecimal sumRetail = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
|
|
|
-
|
|
|
- //交强出口比例
|
|
|
- BigDecimal jqExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getJqCostsProportion().compareTo(sumJqDeptProportion.add(sumRetail))>0){
|
|
|
- jqExportProceduresProportion = insFeeOrderNew.getJqCostsProportion().subtract(sumJqDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
- //商业出口比例
|
|
|
- BigDecimal syExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getSyCostsProportion().compareTo(sumSyDeptProportion.add(sumRetail))>0){
|
|
|
- syExportProceduresProportion = insFeeOrderNew.getSyCostsProportion().subtract(sumSyDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
- //非车出口比例
|
|
|
- BigDecimal noExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getNoCostsProportion().compareTo(sumNoDeptProportion.add(sumRetail))>0){
|
|
|
- noExportProceduresProportion = insFeeOrderNew.getNoCostsProportion().subtract(sumNoDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
-
|
|
|
- //交强手续费出口比例
|
|
|
- BigDecimal jqExportProceduresFee = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //交强跟单出口费用
|
|
|
- BigDecimal jqExportOtherFee = insFeeOrderNew.getJqPremium()
|
|
|
- .multiply(jqExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getJqSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
-
|
|
|
- //商业手续费出口比例
|
|
|
- BigDecimal syExportProceduresFee = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSySuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //商业跟单出口比例
|
|
|
- BigDecimal syExportOtherFee = insFeeOrderNew.getSyPremium()
|
|
|
- .multiply(syExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getSySuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
-
|
|
|
- //非车手续费出口比例
|
|
|
- BigDecimal noExportProceduresFee = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //非车跟单出口比例
|
|
|
- BigDecimal noExportOtherFee = insFeeOrderNew.getNoPremium()
|
|
|
- .multiply(noExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getNoSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
|
//用户出口手续费
|
|
|
BigDecimal totalPremiumAmount = new BigDecimal(0);
|
|
|
@@ -268,7 +178,6 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
|
|
|
|
|
|
String deptid = insFeeOrderNew.getDeptId();
|
|
|
- String distributionStatus = insFeeOrderNew.getDistributionStatus();
|
|
|
// 定义一个数组来存储各级机构的管理费
|
|
|
BigDecimal[] jqDeptPremiumsLevels = {insFeeOrderNew.getJqDeptPremiumsLevel1(), insFeeOrderNew.getJqDeptPremiumsLevel2(),
|
|
|
insFeeOrderNew.getJqDeptPremiumsLevel3(), insFeeOrderNew.getJqDeptPremiumsLevel4(),
|
|
|
@@ -293,68 +202,26 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
// 根据分销等级和分销用户情况计算分销费用
|
|
|
BigDecimal distributionFee = BigDecimal.ZERO;
|
|
|
if (i == 5) {
|
|
|
- if (InsFeeAuditDistributionStatusEnum.DS_2.getCode().equals(distributionStatus) && insFeeOrderNew.getTwoLevelUserId() == null) {
|
|
|
+ if (insFeeOrderNew.getTwoLevelUserId() == null) {
|
|
|
distributionFee = insFeeOrderNew.getSecondDetailPremiums();
|
|
|
- } else if (InsFeeAuditDistributionStatusEnum.DS_3.getCode().equals(distributionStatus) && insFeeOrderNew.getThreeLevelUserId() == null) {
|
|
|
+ }
|
|
|
+ if (insFeeOrderNew.getThreeLevelUserId() == null) {
|
|
|
distributionFee = insFeeOrderNew.getThirdDetailPremiums();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 根据分销等级计算管理费总额
|
|
|
+ sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
|
|
|
+ .add(syDeptPremiumsLevels[i - 1])
|
|
|
+ .add(noDeptPremiumsLevels[i - 1]);
|
|
|
if (i == 5) {
|
|
|
- sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
|
|
|
- .add(syDeptPremiumsLevels[i - 1])
|
|
|
- .add(noDeptPremiumsLevels[i - 1])
|
|
|
- .add(distributionFee);
|
|
|
- } else {
|
|
|
- sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
|
|
|
- .add(syDeptPremiumsLevels[i - 1])
|
|
|
- .add(noDeptPremiumsLevels[i - 1]);
|
|
|
+ sumManagementFee = sumManagementFee.add(distributionFee);
|
|
|
}
|
|
|
|
|
|
// 如果机构信息不为空,更新管理费并记录历史
|
|
|
if (levelSysDeptAccount != null) {
|
|
|
levelSysDeptAccount.setManagementFee(levelSysDeptAccount.getManagementFee().add(sumManagementFee));
|
|
|
sysDeptAccountService.updateById(levelSysDeptAccount);
|
|
|
- // 记录历史信息
|
|
|
- SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
|
|
|
- sysDeptAccountHistory.setId(IdGenerate.nextId());
|
|
|
- sysDeptAccountHistory.setDeptId(levelDeptId);
|
|
|
- sysDeptAccountHistory.setAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setSurplusAmount(levelSysDeptAccount.getManagementFee());
|
|
|
- sysDeptAccountHistory.setDocumentary("2"); //收入
|
|
|
- sysDeptAccountHistory.setSuborder(orderNo);
|
|
|
- sysDeptAccountHistory.setFromBankCard(null);
|
|
|
- sysDeptAccountHistory.setToBankCard(null);
|
|
|
- sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
|
|
|
- sysDeptAccountHistory.setCreateTime(new Date());
|
|
|
- // 拼接备注
|
|
|
- StringBuilder remarkBuilder = new StringBuilder();
|
|
|
- if (jqDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("交强").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(jqDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (syDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("商业").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(syDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (noDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("非车").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(noDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (distributionFee.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("分销费:").append(distributionFee).append(",");
|
|
|
- }
|
|
|
- String remark = remarkBuilder.toString();
|
|
|
- if (remark.endsWith(",")) {
|
|
|
- remark = remark.substring(0, remark.length() - 1);
|
|
|
- }
|
|
|
- sysDeptAccountHistory.setRemark(remark);
|
|
|
-// sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
|
|
|
-// ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
|
|
|
-// ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
|
|
|
-// ",分销费:" + distributionFee);
|
|
|
- sysDeptAccountHistoryService.save(sysDeptAccountHistory);
|
|
|
} else {
|
|
|
// 如果机构信息为空,新建机构信息并记录历史
|
|
|
SysDeptAccount sysDeptAccount = new SysDeptAccount();
|
|
|
@@ -362,331 +229,42 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
sysDeptAccount.setManagementFee(sumManagementFee);
|
|
|
sysDeptAccount.setCreateTime(new Date());
|
|
|
sysDeptAccountService.save(sysDeptAccount);
|
|
|
- // 记录历史信息
|
|
|
- SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
|
|
|
- sysDeptAccountHistory.setId(IdGenerate.nextId());
|
|
|
- sysDeptAccountHistory.setDeptId(levelDeptId);
|
|
|
- sysDeptAccountHistory.setAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setSurplusAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setDocumentary("2"); //收入
|
|
|
- sysDeptAccountHistory.setSuborder(orderNo);
|
|
|
- sysDeptAccountHistory.setFromBankCard(null);
|
|
|
- sysDeptAccountHistory.setToBankCard(null);
|
|
|
- sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
|
|
|
- sysDeptAccountHistory.setCreateTime(new Date());
|
|
|
- // 拼接备注信息
|
|
|
- StringBuilder remarkBuilder = new StringBuilder();
|
|
|
- if (jqDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("交强").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(jqDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (syDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("商业").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(syDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (noDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("非车").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(noDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (distributionFee.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("分销费:").append(distributionFee).append(",");
|
|
|
- }
|
|
|
- String remark = remarkBuilder.toString();
|
|
|
- if (remark.endsWith(",")) {
|
|
|
- remark = remark.substring(0, remark.length() - 1);
|
|
|
- }
|
|
|
- sysDeptAccountHistory.setRemark(remark);
|
|
|
-// sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
|
|
|
-// ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
|
|
|
-// ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
|
|
|
-// ",分销费:" + distributionFee);
|
|
|
- sysDeptAccountHistoryService.save(sysDeptAccountHistory);
|
|
|
}
|
|
|
+ // 记录历史信息
|
|
|
+ // 拼接备注
|
|
|
+ String remark = this.getDeptFeeHistoryLog(i,jqDeptPremiumsLevels,syDeptPremiumsLevels,noDeptPremiumsLevels,distributionFee);
|
|
|
+ if (remark.endsWith(",")) {
|
|
|
+ remark = remark.substring(0, remark.length() - 1);
|
|
|
+ }
|
|
|
+ sysDeptAccountHistoryService.addHistory(levelDeptId, sumManagementFee, levelSysDeptAccount.getManagementFee(), "2", orderNo, BaseController.getUser().getId(), remark);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public boolean autoFeeAudit(String orderNo, String insOrderNo) throws Exception {
|
|
|
- //保存审核表
|
|
|
- InsFeeAudit insFeeAudit=new InsFeeAudit();
|
|
|
- insFeeAudit.setOrderno(orderNo);
|
|
|
- insFeeAudit.setInsOrderNo(insOrderNo);
|
|
|
- insFeeAudit.setAuditstatus("1");
|
|
|
- insFeeAudit.setAudittime(LocalDateTime.now());
|
|
|
- insFeeAudit.setAudituser("自动审核");
|
|
|
- this.save(insFeeAudit);
|
|
|
-
|
|
|
-
|
|
|
- InsOrders order=insOrdersMapper.selectById(orderNo);
|
|
|
- InsFeeOrderNew insFeeOrder=insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insFeeAudit.getInsOrderNo());
|
|
|
- InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
|
|
|
-
|
|
|
- //获取该订单的费用
|
|
|
- InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
|
|
|
- .eq(InsFeeOrderNew::getInsOrderNo, insFeeAudit.getInsOrderNo()));
|
|
|
-
|
|
|
-
|
|
|
- //获取操作人员的机构来源
|
|
|
- String deptId=order.getDeptid();
|
|
|
-
|
|
|
- List<SysDept> teamList = sysDeptService.findTeamList(deptId);
|
|
|
- teamList.forEach(sysDept -> {
|
|
|
-
|
|
|
- if(StringUtils.isNotEmpty(sysDept.getComlevel()) && sysDept.getComlevel().equals("1")){
|
|
|
- BigDecimal jqDeptPremiumsLevel1 = insFeeOrderNew.getJqDeptPremiumsLevel1();
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- //bigdecimal为null时设置为0
|
|
|
-// handleBigdecimal(insFeeOrder);
|
|
|
- //生成保司费用(应收费用)
|
|
|
- gene_orderIncome( order, insFeeOrderNew,insAreaCompany);
|
|
|
- //生成机构费用
|
|
|
- gene_deptfee( order, insFeeOrderNew,insAreaCompany);
|
|
|
- //生成分销费用
|
|
|
-// saveRetail(order,insFeeOrderNew,insAreaCompany);
|
|
|
- //个代费用生成
|
|
|
-// saveInsCompanyFee(order,insFeeOrderNew,insAreaCompany);
|
|
|
-
|
|
|
-
|
|
|
-// 生成 用户账户表 数据
|
|
|
- if(StringUtils.isNotEmpty(order.getUserid())){
|
|
|
-// 用戶賬戶表
|
|
|
- SysUserAccount sysUserAccount = new SysUserAccount();
|
|
|
-
|
|
|
- sysUserAccount.setUserId(order.getUserid());
|
|
|
- if (ObjectUtils.isNotEmpty(insFeeOrderNew) ) {
|
|
|
-// 手续非佣金 = 交强监管费用 + 商业监管费用 + 非车监管费用
|
|
|
-// 非跟单费用 = 交强非跟单费用 + 商业非跟单费用 + 非车非跟单费用
|
|
|
- PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
|
|
|
- BigDecimal taxRadio = new BigDecimal("1.00");
|
|
|
- if (ptlAgreement.getWithTax().equals("否")) {
|
|
|
- taxRadio = new BigDecimal("1.06");
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //总机构 交强管理比例
|
|
|
- BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getJqDeptProportionLevel5());
|
|
|
-
|
|
|
- //总机构 商业管理比例
|
|
|
- BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getSyDeptProportionLevel5());
|
|
|
-
|
|
|
- //总机构 非车管理比例
|
|
|
- BigDecimal sumNoDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel2())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel3())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel4())
|
|
|
- .add(insFeeOrderNew.getNoDeptProportionLevel5());
|
|
|
-
|
|
|
- //总分销比例
|
|
|
- BigDecimal sumRetail = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
|
|
|
-
|
|
|
- //交强出口比例
|
|
|
- BigDecimal jqExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getJqCostsProportion().compareTo(sumJqDeptProportion.add(sumRetail))>0){
|
|
|
- jqExportProceduresProportion = insFeeOrderNew.getJqCostsProportion().subtract(sumJqDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
- //商业出口比例
|
|
|
- BigDecimal syExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getSyCostsProportion().compareTo(sumSyDeptProportion.add(sumRetail))>0){
|
|
|
- syExportProceduresProportion = insFeeOrderNew.getSyCostsProportion().subtract(sumSyDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
- //非车出口比例
|
|
|
- BigDecimal noExportProceduresProportion = new BigDecimal(0);
|
|
|
- if(insFeeOrderNew.getNoCostsProportion().compareTo(sumNoDeptProportion.add(sumRetail))>0){
|
|
|
- noExportProceduresProportion = insFeeOrderNew.getNoCostsProportion().subtract(sumNoDeptProportion).subtract(sumRetail);
|
|
|
- }
|
|
|
-
|
|
|
- //交强手续费出口比例
|
|
|
- BigDecimal jqExportProceduresFee = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //交强跟单出口费用
|
|
|
- BigDecimal jqExportOtherFee = insFeeOrderNew.getJqPremium()
|
|
|
- .multiply(jqExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getJqSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
-
|
|
|
- //商业手续费出口比例
|
|
|
- BigDecimal syExportProceduresFee = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSySuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //商业跟单出口比例
|
|
|
- BigDecimal syExportOtherFee = insFeeOrderNew.getSyPremium()
|
|
|
- .multiply(syExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getSySuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
-
|
|
|
- //非车手续费出口比例
|
|
|
- BigDecimal noExportProceduresFee = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
- //非车跟单出口比例
|
|
|
- BigDecimal noExportOtherFee = insFeeOrderNew.getNoPremium()
|
|
|
- .multiply(noExportProceduresProportion
|
|
|
- .subtract(insFeeOrderNew.getNoSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
-
|
|
|
- //用户出口手续费
|
|
|
- BigDecimal totalPremiumAmount = new BigDecimal(0);
|
|
|
- totalPremiumAmount = totalPremiumAmount.add(jqExportProceduresFee).add(syExportProceduresFee).add(noExportProceduresFee);
|
|
|
-
|
|
|
- //用户出口跟单费
|
|
|
- BigDecimal totalOtherPremiumAmount = new BigDecimal(0);
|
|
|
- totalOtherPremiumAmount = totalOtherPremiumAmount.add(jqExportOtherFee).add(syExportOtherFee).add(noExportOtherFee);
|
|
|
-
|
|
|
-
|
|
|
-// 用戶
|
|
|
- sysUserAccount.setHandlingFee(totalPremiumAmount);
|
|
|
- sysUserAccount.setDocumentary(totalOtherPremiumAmount);
|
|
|
-// 算佣金
|
|
|
- this.countUserAmount(insFeeOrderNew,orderNo);
|
|
|
- sysUserAccount.setDocumentaryStatus("2"); // 收入
|
|
|
- sysUserAccount.setSuborderId(orderNo); // 订单Id
|
|
|
- sysUserAccountService.addOrUpdate(sysUserAccount);
|
|
|
-
|
|
|
-
|
|
|
- String deptid = insFeeOrderNew.getDeptId();
|
|
|
- String distributionStatus = insFeeOrderNew.getDistributionStatus();
|
|
|
- // 定义一个数组来存储各级机构的管理费
|
|
|
- BigDecimal[] jqDeptPremiumsLevels = {insFeeOrderNew.getJqDeptPremiumsLevel1(), insFeeOrderNew.getJqDeptPremiumsLevel2(),
|
|
|
- insFeeOrderNew.getJqDeptPremiumsLevel3(), insFeeOrderNew.getJqDeptPremiumsLevel4(),
|
|
|
- insFeeOrderNew.getJqDeptPremiumsLevel5()};
|
|
|
- BigDecimal[] syDeptPremiumsLevels = {insFeeOrderNew.getSyDeptPremiumsLevel1(), insFeeOrderNew.getSyDeptPremiumsLevel2(),
|
|
|
- insFeeOrderNew.getSyDeptPremiumsLevel3(), insFeeOrderNew.getSyDeptPremiumsLevel4(),
|
|
|
- insFeeOrderNew.getSyDeptPremiumsLevel5()};
|
|
|
- BigDecimal[] noDeptPremiumsLevels = {insFeeOrderNew.getNoDeptPremiumsLevel1(), insFeeOrderNew.getNoDeptPremiumsLevel2(),
|
|
|
- insFeeOrderNew.getNoDeptPremiumsLevel3(), insFeeOrderNew.getNoDeptPremiumsLevel4(),
|
|
|
- insFeeOrderNew.getNoDeptPremiumsLevel5()};
|
|
|
-
|
|
|
- for (int i = 1; i <= 5; i++) {
|
|
|
- // 根据循环次数确定机构ID的长度,第五级为11
|
|
|
- String levelDeptId = deptid.substring(0, (i == 5) ? 11 : i * 2);
|
|
|
- // 获取对应级别的机构信息
|
|
|
- SysDeptAccount levelSysDeptAccount = sysDeptAccountService.getOne(new LambdaQueryWrapper<SysDeptAccount>()
|
|
|
- .eq(SysDeptAccount::getDeptId, levelDeptId));
|
|
|
-
|
|
|
- // 初始化管理费总额为0
|
|
|
- BigDecimal sumManagementFee = BigDecimal.ZERO;
|
|
|
-
|
|
|
- // 根据分销等级和分销用户情况计算分销费用
|
|
|
- BigDecimal distributionFee = BigDecimal.ZERO;
|
|
|
- if (i == 5) {
|
|
|
- if (InsFeeAuditDistributionStatusEnum.DS_2.getCode().equals(distributionStatus) && insFeeOrderNew.getTwoLevelUserId() == null) {
|
|
|
- distributionFee = insFeeOrderNew.getSecondDetailPremiums();
|
|
|
- } else if (InsFeeAuditDistributionStatusEnum.DS_3.getCode().equals(distributionStatus) && insFeeOrderNew.getThreeLevelUserId() == null) {
|
|
|
- distributionFee = insFeeOrderNew.getThirdDetailPremiums();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 根据分销等级计算管理费总额
|
|
|
- if (i == 5) {
|
|
|
- sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
|
|
|
- .add(syDeptPremiumsLevels[i - 1])
|
|
|
- .add(noDeptPremiumsLevels[i - 1])
|
|
|
- .add(distributionFee);
|
|
|
- } else {
|
|
|
- sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
|
|
|
- .add(syDeptPremiumsLevels[i - 1])
|
|
|
- .add(noDeptPremiumsLevels[i - 1]);
|
|
|
- }
|
|
|
-
|
|
|
- // 如果机构信息不为空,更新管理费并记录历史
|
|
|
- if (levelSysDeptAccount != null) {
|
|
|
- levelSysDeptAccount.setManagementFee(levelSysDeptAccount.getManagementFee().add(sumManagementFee));
|
|
|
- sysDeptAccountService.updateById(levelSysDeptAccount);
|
|
|
- // 记录历史信息
|
|
|
- SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
|
|
|
- sysDeptAccountHistory.setId(IdGenerate.nextId());
|
|
|
- sysDeptAccountHistory.setDeptId(levelDeptId);
|
|
|
- sysDeptAccountHistory.setAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setSurplusAmount(levelSysDeptAccount.getManagementFee());
|
|
|
- sysDeptAccountHistory.setDocumentary("2"); //收入
|
|
|
- sysDeptAccountHistory.setSuborder(orderNo);
|
|
|
- sysDeptAccountHistory.setFromBankCard(null);
|
|
|
- sysDeptAccountHistory.setToBankCard(null);
|
|
|
- sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
|
|
|
- sysDeptAccountHistory.setCreateTime(new Date());
|
|
|
- // 拼接备注信息
|
|
|
- StringBuilder remarkBuilder = new StringBuilder();
|
|
|
- if (jqDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("交强").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(jqDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (syDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("商业").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(syDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (noDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("非车").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(noDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (distributionFee.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("分销费:").append(distributionFee).append(",");
|
|
|
- }
|
|
|
- String remark = remarkBuilder.toString();
|
|
|
- if (remark.endsWith(",")) {
|
|
|
- remark = remark.substring(0, remark.length() - 1);
|
|
|
- }
|
|
|
- sysDeptAccountHistory.setRemark(remark);
|
|
|
-// sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
|
|
|
-// ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
|
|
|
-// ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
|
|
|
-// ",分销费:" + distributionFee);
|
|
|
- sysDeptAccountHistoryService.save(sysDeptAccountHistory);
|
|
|
- } else {
|
|
|
- // 如果机构信息为空,新建机构信息并记录历史
|
|
|
- SysDeptAccount sysDeptAccount = new SysDeptAccount();
|
|
|
- sysDeptAccount.setDeptId(levelDeptId);
|
|
|
- sysDeptAccount.setManagementFee(sumManagementFee);
|
|
|
- sysDeptAccount.setCreateTime(new Date());
|
|
|
- sysDeptAccountService.save(sysDeptAccount);
|
|
|
- // 记录历史信息
|
|
|
- SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
|
|
|
- sysDeptAccountHistory.setId(IdGenerate.nextId());
|
|
|
- sysDeptAccountHistory.setDeptId(levelDeptId);
|
|
|
- sysDeptAccountHistory.setAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setSurplusAmount(sumManagementFee);
|
|
|
- sysDeptAccountHistory.setDocumentary("2"); //收入
|
|
|
- sysDeptAccountHistory.setSuborder(orderNo);
|
|
|
- sysDeptAccountHistory.setFromBankCard(null);
|
|
|
- sysDeptAccountHistory.setToBankCard(null);
|
|
|
- sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
|
|
|
- sysDeptAccountHistory.setCreateTime(new Date());
|
|
|
- // 拼接备注信息
|
|
|
- StringBuilder remarkBuilder = new StringBuilder();
|
|
|
- if (jqDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("交强").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(jqDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (syDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("商业").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(syDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (noDeptPremiumsLevels[i - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("非车").append(i).append("级机构管理费:");
|
|
|
- remarkBuilder.append(noDeptPremiumsLevels[i - 1]).append(",");
|
|
|
- }
|
|
|
- if (distributionFee.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- remarkBuilder.append("分销费:").append(distributionFee).append(",");
|
|
|
- }
|
|
|
- String remark = remarkBuilder.toString();
|
|
|
- if (remark.endsWith(",")) {
|
|
|
- remark = remark.substring(0, remark.length() - 1);
|
|
|
- }
|
|
|
- sysDeptAccountHistory.setRemark(remark);
|
|
|
-// sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
|
|
|
-// ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
|
|
|
-// ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
|
|
|
-// ",分销费:" + distributionFee);
|
|
|
- sysDeptAccountHistoryService.save(sysDeptAccountHistory);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ private String getDeptFeeHistoryLog(Integer index,BigDecimal[] jqDeptPremiumsLevels,BigDecimal[] syDeptPremiumsLevels,
|
|
|
+ BigDecimal[] noDeptPremiumsLevels,BigDecimal distributionFee){
|
|
|
+ StringBuilder remarkBuilder = new StringBuilder();
|
|
|
+ if (jqDeptPremiumsLevels[index - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ remarkBuilder.append("交强").append(index).append("级机构管理费:");
|
|
|
+ remarkBuilder.append(jqDeptPremiumsLevels[index - 1]).append(",");
|
|
|
+ }
|
|
|
+ if (syDeptPremiumsLevels[index - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ remarkBuilder.append("商业").append(index).append("级机构管理费:");
|
|
|
+ remarkBuilder.append(syDeptPremiumsLevels[index - 1]).append(",");
|
|
|
+ }
|
|
|
+ if (noDeptPremiumsLevels[index - 1].compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ remarkBuilder.append("非车").append(index).append("级机构管理费:");
|
|
|
+ remarkBuilder.append(noDeptPremiumsLevels[index - 1]).append(",");
|
|
|
+ }
|
|
|
+ if (distributionFee.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ remarkBuilder.append("分销费:").append(distributionFee).append(",");
|
|
|
+ }
|
|
|
+ String remark = remarkBuilder.toString();
|
|
|
+ if (remark.endsWith(",")) {
|
|
|
+ remark = remark.substring(0, remark.length() - 1);
|
|
|
}
|
|
|
- return true;
|
|
|
+ return remark;
|
|
|
}
|
|
|
|
|
|
private void countUserAmount(InsFeeOrderNew insFeeOrderNew, String orderNo) {
|
|
|
@@ -833,7 +411,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
|
|
|
* @param insFeeOrder
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- private void gene_deptfee( InsOrders order, InsFeeOrderNew insFeeOrder,InsAreaCompany plyDto) throws Exception{
|
|
|
+ private void gene_deptfee( InsOrders order, InsFeeOrderNew insFeeOrder,InsAreaCompany plyDto){
|
|
|
InsDeptFee deptFee = new InsDeptFee();
|
|
|
deptFee.setOrderno(order.getOrderno());
|
|
|
if(!ObjectUtils.isEmpty(insFeeOrder)){
|