|
|
@@ -29,6 +29,7 @@ import com.jzg.commons.entity.po.InsFeeOrders;
|
|
|
import com.jzg.commons.entity.po.PtlAgreement;
|
|
|
import com.jzg.commons.entity.po.SysUploadFiles;
|
|
|
import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
|
|
|
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
|
|
|
import com.jzg.commons.exception.ServiceException;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.*;
|
|
|
@@ -2298,6 +2299,138 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
throw new ServiceException(result.getMsg());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据不同场景计算入口比例,手续费比例和跟单费比例
|
|
|
+ *
|
|
|
+ * 手续费 (只变手续费) 入口-手续费 = 跟单
|
|
|
+ * 跟单变 (只变跟单费) 手续费+跟单 = 入口
|
|
|
+ * 手续费+ 跟单费(手续费和跟单费都变) 手续费+跟单 = 入口
|
|
|
+ *
|
|
|
+ * @author lipf
|
|
|
+ * @date 2026/6/24 15:53
|
|
|
+ */
|
|
|
+ private void calCommissionAndFollowAndInlet(PtlAgreementCostRatioVo vo, BatchModifyVo batchModifyVo, InsPlyIncome insPlyIncome) {
|
|
|
+ InsFeeOrders insFeeOrders = insPlyIncome.getInsFeeOrders();
|
|
|
+ // 设置交强险
|
|
|
+ BigDecimal jqInletRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal jqCommissionRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal jqFollowRatio = BigDecimal.ZERO;
|
|
|
+ if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() == null){
|
|
|
+ jqInletRatio = insFeeOrders .getJqInletRatio();
|
|
|
+ jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
|
|
|
+ jqFollowRatio = BigDecimalUtil.subtract(jqInletRatio,jqCommissionRatio);
|
|
|
+ }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() != null){
|
|
|
+ jqCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJqSuperviseCostsProportion());
|
|
|
+ jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
|
|
|
+ jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
|
|
|
+ }else if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() != null){
|
|
|
+ jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
|
|
|
+ jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
|
|
|
+ jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
|
|
|
+ }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() == null){
|
|
|
+ jqInletRatio = insFeeOrders.getJqInletRatio();
|
|
|
+ jqCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJqSuperviseCostsProportion());
|
|
|
+ jqFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getJqOtherCostsProportion());
|
|
|
+ }
|
|
|
+ vo.setJqInletRatio(jqInletRatio);
|
|
|
+ vo.setJqCommissionRatio(jqCommissionRatio);
|
|
|
+ vo.setJqFollowRatio(jqFollowRatio);
|
|
|
+
|
|
|
+ // 设置商业险的比例
|
|
|
+ BigDecimal syInletRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal syCommissionRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal syFollowRatio = BigDecimal.ZERO;
|
|
|
+ if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() == null){
|
|
|
+ syInletRatio = insFeeOrders.getSyInletRatio();
|
|
|
+ syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
|
|
|
+ syFollowRatio = BigDecimalUtil.subtract(syInletRatio,syCommissionRatio);
|
|
|
+ }else if(batchModifyVo.getSySuperviseCostsProportion() == null && null != batchModifyVo.getSyOtherCostsProportion()){
|
|
|
+ syCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getSySuperviseCostsProportion());
|
|
|
+ syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
|
|
|
+ syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
|
|
|
+ }else if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() != null){
|
|
|
+ syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
|
|
|
+ syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
|
|
|
+ syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
|
|
|
+ }else if(batchModifyVo.getSySuperviseCostsProportion() == null && batchModifyVo.getSyOtherCostsProportion() == null){
|
|
|
+ syInletRatio = insFeeOrders.getSyInletRatio();
|
|
|
+ syCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getSySuperviseCostsProportion());
|
|
|
+ syFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getSyOtherCostsProportion());
|
|
|
+ }
|
|
|
+ vo.setSyInletRatio(syInletRatio);
|
|
|
+ vo.setSyCommissionRatio(syCommissionRatio);
|
|
|
+ vo.setSyFollowRatio(syFollowRatio);
|
|
|
+
|
|
|
+ // 设置驾意险
|
|
|
+ BigDecimal jyInletRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal jyCommissionRatio = BigDecimal.ZERO;
|
|
|
+ BigDecimal jyFollowRatio = BigDecimal.ZERO;
|
|
|
+ if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() == null){
|
|
|
+ jyInletRatio = insFeeOrders.getJyInletRatio();
|
|
|
+ jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
|
|
|
+ jyFollowRatio = BigDecimalUtil.subtract(jyInletRatio,jyCommissionRatio);
|
|
|
+ }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() != null){
|
|
|
+ jyCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJySuperviseCostsProportion());
|
|
|
+ jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
|
|
|
+ jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
|
|
|
+ }else if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() != null){
|
|
|
+ jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
|
|
|
+ jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
|
|
|
+ jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
|
|
|
+ }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() == null){
|
|
|
+ jyInletRatio = insFeeOrders.getJyInletRatio();
|
|
|
+ jyCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJySuperviseCostsProportion());
|
|
|
+ jyFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getJyOtherCostsProportion());
|
|
|
+ }
|
|
|
+ vo.setJyInletRatio(jyInletRatio);
|
|
|
+ vo.setJyCommissionRatio(jyCommissionRatio);
|
|
|
+ vo.setJyFollowRatio(jyFollowRatio);
|
|
|
+
|
|
|
+ log.info("入口比例,手续费比例,跟单比例处理后的结果是:vo=[{}]", JSONUtil.toJsonStr(vo));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结合原有的费用比例,计算更新后的费用比例
|
|
|
+ *
|
|
|
+ * @param insPlyIncome 订单的费用信息
|
|
|
+ * @param batchModifyVo 批量修改的费用比例
|
|
|
+ * @author lipf
|
|
|
+ * @date 2026/6/23 16:35
|
|
|
+ */
|
|
|
+ private PtlAgreementCostRatioVo calRatio(InsPlyIncome insPlyIncome, BatchModifyVo batchModifyVo) {
|
|
|
+ log.info("batchModifyVo.转换百分比之前的数据=【{}】", JSONUtil.toJsonStr(batchModifyVo));
|
|
|
+ batchModifyVo.divide100();
|
|
|
+ PtlAgreementCostRatioVo vo = new PtlAgreementCostRatioVo();
|
|
|
+ vo.setOrderNo(insPlyIncome.getOrderNo());
|
|
|
+
|
|
|
+ // 加投费比例
|
|
|
+// vo.setJqAdditionalRatio(insPlyIncome.getJqAdditionalRatio());
|
|
|
+// vo.setSyAdditionalRatio(insPlyIncome.getSyAdditionalRatio());
|
|
|
+// vo.setJyAdditionalRatio(insPlyIncome.getJyAdditionalRatio());
|
|
|
+
|
|
|
+ this.calCommissionAndFollowAndInlet(vo, batchModifyVo, insPlyIncome);
|
|
|
+
|
|
|
+ // 出口比例
|
|
|
+// vo.setJqExportRatio(insPlyIncome.getJqExportRatio());
|
|
|
+// vo.setSyExportRatio(insPlyIncome.getSyExportRatio());
|
|
|
+// vo.setJyExportRatio(insPlyIncome.getJyExportRatio());
|
|
|
+
|
|
|
+ // 留点比例
|
|
|
+// vo.setJqKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJqInletRatio(),taxFactor) , vo.getJqAdditionalRatio()),vo.getJqExportRatio()));
|
|
|
+// vo.setSyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getSyInletRatio(),taxFactor), vo.getSyAdditionalRatio()),vo.getSyExportRatio()));
|
|
|
+// vo.setJyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJyInletRatio(),taxFactor), vo.getJyAdditionalRatio()),vo.getJyExportRatio()));
|
|
|
+
|
|
|
+ // 出口留点比例
|
|
|
+// vo.setJqExportKeepPointRatio(insPlyIncome.getJqExportKeepPointRatio());
|
|
|
+// vo.setSyExportKeepPointRatio(insPlyIncome.getSyExportKeepPointRatio());
|
|
|
+// vo.setJyExportKeepPointRatio(insPlyIncome.getJyExportKeepPointRatio());
|
|
|
+ log.info("insPlyIncome调整前的比例:fee=[{}]", JSONUtil.toJsonStr(insPlyIncome));
|
|
|
+ log.info("insPlyIncome调整后的比例信息:vo=[{}]", JSONUtil.toJsonStr(vo));
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 私有协议批量修改
|
|
|
* 修改手续费比例(商业险手续费比例, 交强险手续费比例)
|
|
|
@@ -2358,22 +2491,28 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
String updateFlag = batchModifyVo.getUpdateFlag();
|
|
|
|
|
|
// 根据 updateFlag 处理不同的更新逻辑
|
|
|
- if ("1".equals(updateFlag)) {
|
|
|
- // 修改手续费
|
|
|
- hasUpdate = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- } else if ("2".equals(updateFlag)) {
|
|
|
- // 修改跟单费
|
|
|
- hasUpdate = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- } else if ("3".equals(updateFlag)) {
|
|
|
- // 修改驾意险费用
|
|
|
- hasUpdate = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- } else if ("4".equals(updateFlag)) {
|
|
|
- // 修改所有
|
|
|
- boolean superviseUpdated = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- boolean otherUpdated = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- boolean jyUpdated = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
- hasUpdate = superviseUpdated || otherUpdated || jyUpdated;
|
|
|
- }
|
|
|
+// if ("1".equals(updateFlag)) {
|
|
|
+// // 修改手续费
|
|
|
+// hasUpdate = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// } else if ("2".equals(updateFlag)) {
|
|
|
+// // 修改跟单费
|
|
|
+// hasUpdate = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// } else if ("3".equals(updateFlag)) {
|
|
|
+// // 修改驾意险费用
|
|
|
+// hasUpdate = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// } else if ("4".equals(updateFlag)) {
|
|
|
+// // 修改所有
|
|
|
+// boolean superviseUpdated = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// boolean otherUpdated = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// boolean jyUpdated = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
|
|
|
+// hasUpdate = superviseUpdated || otherUpdated || jyUpdated;
|
|
|
+// }
|
|
|
+
|
|
|
+ // 计算比例
|
|
|
+ PtlAgreementCostRatioVo ptlAgreementCostRatioVo = this.calRatio(income, batchModifyVo);
|
|
|
+ // 根据比例计算金额
|
|
|
+ this.calPremium(updateIncome,ptlAgreementCostRatioVo);
|
|
|
+ hasUpdate = true;
|
|
|
|
|
|
// 处理公共字段更新
|
|
|
if (batchModifyVo.getSigningTime() != null) {
|
|
|
@@ -2407,6 +2546,59 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据比例计算入口费用,入口手续费,入口跟单费
|
|
|
+ *
|
|
|
+ * @author lipf
|
|
|
+ * @date 2026/6/24 16:36
|
|
|
+ */
|
|
|
+ private void calPremium(InsPlyIncome updateIncome, PtlAgreementCostRatioVo ratioVo) {
|
|
|
+ log.info("根据入口比例等比例值计算对应的金额。 ptlAgreementCostRatioVo=[{}], updateIncome=[{}]", JSONUtil.toJsonStr(ratioVo), JSONUtil.toJsonStr(updateIncome));
|
|
|
+
|
|
|
+ BigDecimal jqPremium = BigDecimalUtil.toZero(updateIncome.getJqPremium());
|
|
|
+ BigDecimal syPremium = BigDecimalUtil.toZero(updateIncome.getSyPremium()) ;
|
|
|
+ BigDecimal jyPremium = BigDecimalUtil.toZero(updateIncome.getJyPremium());
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal jqInletPremium = BigDecimalUtil.multiply(jqPremium,ratioVo.getJqInletRatio());
|
|
|
+ BigDecimal syInletPremium = BigDecimalUtil.multiply(syPremium,ratioVo.getSyInletRatio());
|
|
|
+ BigDecimal jyInletPremium = BigDecimalUtil.multiply(jyPremium,ratioVo.getJyInletRatio());
|
|
|
+
|
|
|
+ BigDecimal jqCommissionPremium = BigDecimalUtil.multiply(jqPremium,ratioVo.getJqCommissionRatio());
|
|
|
+ BigDecimal syCommissionPremium = BigDecimalUtil.multiply(syPremium,ratioVo.getSyCommissionRatio());
|
|
|
+ BigDecimal jyCommissionPremium = BigDecimalUtil.multiply(jyPremium,ratioVo.getJyCommissionRatio());
|
|
|
+
|
|
|
+ BigDecimal jqOtherPremium = BigDecimalUtil.subtract(jqInletPremium,jqCommissionPremium);
|
|
|
+ BigDecimal syOtherPremium = BigDecimalUtil.subtract(syInletPremium,syCommissionPremium);
|
|
|
+ BigDecimal jyOtherPremium = BigDecimalUtil.subtract(jyInletPremium,jyCommissionPremium);
|
|
|
+
|
|
|
+ // 设置应收
|
|
|
+ updateIncome.setJqReceivablePremium(jqInletPremium.toString());
|
|
|
+ updateIncome.setSyReceivablePremium(syInletPremium.toString());
|
|
|
+ updateIncome.setJyReceivablePremium(jyPremium.toString());
|
|
|
+
|
|
|
+ // 设置手续费比例
|
|
|
+ updateIncome.setJqSuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getJqCommissionRatio()));
|
|
|
+ updateIncome.setSySuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getSyCommissionRatio()));
|
|
|
+ updateIncome.setJySuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getJyCommissionRatio()));
|
|
|
+
|
|
|
+ // 设置手续费
|
|
|
+ updateIncome.setJqSuperviseCostsPremiums(BigDecimalUtil.toString(jqCommissionPremium));
|
|
|
+ updateIncome.setSySuperviseCostsPremiums(BigDecimalUtil.toString(syCommissionPremium));
|
|
|
+ updateIncome.setJySuperviseCostsPremiums(BigDecimalUtil.toString(jyCommissionPremium));
|
|
|
+
|
|
|
+ // 设置跟单费比例
|
|
|
+ updateIncome.setJqOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getJqFollowRatio()));
|
|
|
+ updateIncome.setSyOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getSyFollowRatio()));
|
|
|
+ updateIncome.setJyOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getJyFollowRatio()));
|
|
|
+
|
|
|
+ // 设置跟单费
|
|
|
+ updateIncome.setJqOtherCostsPremiums(BigDecimalUtil.toString(jqOtherPremium));
|
|
|
+ updateIncome.setSyOtherCostsPremiums(BigDecimalUtil.toString(syOtherPremium));
|
|
|
+ updateIncome.setJyOtherCostsPremiums(BigDecimalUtil.toString(jyOtherPremium));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 处理手续费更新
|
|
|
*/
|