Explorar el Código

自动审核调整修改

785834757 hace 2 años
padre
commit
ce6ef43a86

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -21,6 +21,6 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
       * @param insOrderNo
       * @return
       */
-     boolean autoFeeAudit(String orderNo,String insOrderNo);
+     boolean autoFeeAudit(String orderNo,String insOrderNo) throws Exception;
 
 }

+ 238 - 8
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -339,14 +339,244 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     }
 
     @Override
-    public boolean autoFeeAudit(String orderNo, String insOrderNo) {
-        InsFeeAudit feeAudit = new InsFeeAudit();
-        feeAudit.setOrderno(orderNo);
-        feeAudit.setInsOrderNo(insOrderNo);
-        feeAudit.setAuditstatus("1");
-        feeAudit.setAudittime(LocalDateTime.now());
-        feeAudit.setAudituser("自动审核");
-        baseMapper.insert(feeAudit);
+    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) ) {
+//                手续非佣金  =  交强监管费用 + 商业监管费用 + 非车监管费用
+//                非跟单费用  = 交强非跟单费用 + 商业非跟单费用 + 非车非跟单费用
+                //手续费入口费用
+//                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);
+                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());
+                        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());
+                        sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
+                                ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
+                                ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
+                                ",分销费:" + distributionFee);
+                        sysDeptAccountHistoryService.save(sysDeptAccountHistory);
+                    }
+                }
+            }
+        }
         return true;
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -808,7 +808,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                     if(ptlAgreement.getAuditType() == 2)
                     {
                         //如果为自动审核 则自动进行审核
-                        insFeeAuditService.autoFeeAudit(insAreaCompany.getOrderno(),insAreaCompany.getId());
+                        insFeeAuditService.autoFeeAudit( insAreaCompany.getOrderno(),insAreaCompany.getId());
                     }
                     insPlyIncomeService.saveBalance(companyId,insAreaCompany.getOrderno());
                 }