InsFeeAuditServiceImpl.java 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. package com.ydtech.modules.fnc.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.util.NumberUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
  6. import com.ydtech.modules.admin.model.SysDept;
  7. import com.ydtech.modules.admin.model.SysDeptAccountEntity;
  8. import com.ydtech.modules.admin.model.SysDeptAccountHistory;
  9. import com.ydtech.modules.admin.model.SysUser;
  10. import com.ydtech.modules.admin.model.po.SysUserAccount;
  11. import com.ydtech.modules.admin.service.*;
  12. import com.ydtech.modules.base.controller.BaseController;
  13. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  14. import com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper;
  15. import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper;
  16. import com.ydtech.modules.fnc.entity.InsFeeAudit;
  17. import com.ydtech.modules.fnc.dao.InsFeeAuditMapper;
  18. import com.ydtech.modules.fnc.entity.InsPlyIncome;
  19. import com.ydtech.modules.fnc.service.InsFeeAuditService;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import com.ydtech.modules.ins.model.InsCommission;
  22. import com.ydtech.modules.ins.model.InsCompanyFee;
  23. import com.ydtech.modules.ins.model.InsDeptFee;
  24. import com.ydtech.modules.ins.service.InsCommissionService;
  25. import com.ydtech.modules.ins.service.InsCompanyFeeService;
  26. import com.ydtech.modules.ins.service.InsDeptFeeService;
  27. import com.ydtech.modules.order.dao.InsOrdersMapper;
  28. import com.ydtech.modules.fnc.entity.InsAreaCompany;
  29. import com.ydtech.modules.order.entity.InsFeeOrder;
  30. import com.ydtech.modules.order.entity.InsOrders;
  31. import com.ydtech.modules.order.service.InsFeeOrderService;
  32. import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
  33. import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
  34. import com.ydtech.utils.DateUtil;
  35. import com.ydtech.utils.StringUtils;
  36. import com.ydtech.utils.idgen.IdGenerate;
  37. import org.apache.commons.lang3.ObjectUtils;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.stereotype.Service;
  40. import org.springframework.transaction.annotation.Transactional;
  41. import java.math.BigDecimal;
  42. import java.math.RoundingMode;
  43. import java.time.LocalDateTime;
  44. import java.util.ArrayList;
  45. import java.util.Date;
  46. import java.util.List;
  47. /**
  48. * <p>
  49. * 服务实现类
  50. * </p>
  51. *
  52. * @author gws
  53. * @since 2023-11-22
  54. */
  55. @Service
  56. public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFeeAudit> implements InsFeeAuditService {
  57. private final InsOrdersMapper insOrdersMapper;
  58. private final InsPlyIncomeMapper insPlyIncomeMapper;
  59. private final InsFeeOrderService insFeeOrderService;
  60. private final FncInsAreaCompanyMapper insAreaCompanyMapper;
  61. private final InsDeptFeeService insDeptFeeService;
  62. private final InsCommissionService insCommissionService;
  63. private final InsCompanyFeeService insCompanyFeeService;
  64. private final EsmUserReferrerService esmUserReferrerService;
  65. private final SysUserService sysUserService;
  66. @Autowired
  67. private InsFeeOrderNewService insFeeOrderNewService;
  68. @Autowired
  69. private SysUserAccountService sysUserAccountService;
  70. @Autowired
  71. private SysDeptService sysDeptService;
  72. @Autowired
  73. private SysDeptAccountService sysDeptAccountService;
  74. @Autowired
  75. private SysDeptAccountHistoryService sysDeptAccountHistoryService;
  76. public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper, InsFeeOrderService insFeeOrderService,InsDeptFeeService insDeptFeeService,EsmUserReferrerService esmUserReferrerService,SysUserService sysUserService,InsCommissionService insCommissionService,InsCompanyFeeService insCompanyFeeService,InsPlyIncomeMapper insPlyIncomeMapper) {
  77. this.insAreaCompanyMapper = insAreaCompanyMapper;
  78. this.insOrdersMapper = insOrdersMapper;
  79. this.insFeeOrderService=insFeeOrderService;
  80. this.insDeptFeeService=insDeptFeeService;
  81. this.esmUserReferrerService=esmUserReferrerService;
  82. this.sysUserService=sysUserService;
  83. this.insCommissionService=insCommissionService;
  84. this.insCompanyFeeService=insCompanyFeeService;
  85. this.insPlyIncomeMapper=insPlyIncomeMapper;
  86. }
  87. @Override
  88. @Transactional
  89. public void feeAudit(String orderNo, String insOrderNo) throws Exception{
  90. //保存审核表
  91. InsFeeAudit insFeeAudit=new InsFeeAudit();
  92. insFeeAudit.setOrderno(orderNo);
  93. insFeeAudit.setInsOrderNo(insOrderNo);
  94. insFeeAudit.setAuditstatus("1");
  95. insFeeAudit.setAudittime(LocalDateTime.now());
  96. insFeeAudit.setAudituser(StpUtil.getLoginId().toString());
  97. this.save(insFeeAudit);
  98. InsOrders order=insOrdersMapper.selectById(orderNo);
  99. InsFeeOrderNew insFeeOrder=insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insFeeAudit.getInsOrderNo());
  100. InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
  101. //获取该订单的费用
  102. InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
  103. .eq(InsFeeOrderNew::getInsOrderNo, insFeeAudit.getInsOrderNo()));
  104. //获取操作人员的机构来源
  105. String deptId=order.getDeptid();
  106. List<SysDept> teamList = sysDeptService.findTeamList(deptId);
  107. teamList.forEach(sysDept -> {
  108. if(StringUtils.isNotEmpty(sysDept.getComlevel()) && sysDept.getComlevel().equals("1")){
  109. BigDecimal jqDeptPremiumsLevel1 = insFeeOrderNew.getJqDeptPremiumsLevel1();
  110. }
  111. });
  112. //bigdecimal为null时设置为0
  113. // handleBigdecimal(insFeeOrder);
  114. //生成保司费用(应收费用)
  115. gene_orderIncome( order, insFeeOrderNew,insAreaCompany);
  116. //生成机构费用
  117. gene_deptfee( order, insFeeOrderNew,insAreaCompany);
  118. //生成分销费用
  119. // saveRetail(order,insFeeOrderNew,insAreaCompany);
  120. //个代费用生成
  121. // saveInsCompanyFee(order,insFeeOrderNew,insAreaCompany);
  122. // 生成 用户账户表 数据
  123. if(StringUtils.isNotEmpty(order.getUserid())){
  124. // 用戶賬戶表
  125. SysUserAccount sysUserAccount = new SysUserAccount();
  126. sysUserAccount.setUserId(order.getUserid());
  127. if (ObjectUtils.isNotEmpty(insFeeOrderNew) ) {
  128. // 手续非佣金 = 交强监管费用 + 商业监管费用 + 非车监管费用
  129. // 非跟单费用 = 交强非跟单费用 + 商业非跟单费用 + 非车非跟单费用
  130. //手续费入口费用
  131. // BigDecimal jqPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getJqSuperviseCostsPremiums());//交强监管费
  132. // BigDecimal syPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getSySuperviseCostsPremiums());//商业监管费
  133. // BigDecimal noPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getNoSuperviseCostsPremiums());//非车监管费用
  134. // BigDecimal totalPremiumAmount = jqPremiumAmount.add(syPremiumAmount).add(noPremiumAmount); // 手续非佣金
  135. // //其他费用入口费用
  136. // BigDecimal jqOtherCostsPremiums =this.zeroBigdecimal(insFeeOrderNew.getJqOtherCostsPremiums());//交强其他费用
  137. // BigDecimal syOtherCostsPremiums =this.zeroBigdecimal(insFeeOrderNew.getSyOtherCostsPremiums()); //商业其他费用
  138. // BigDecimal noOtherCostsProportion = this.zeroBigdecimal(insFeeOrderNew.getNoOtherCostsPremiums());//非车其他费用
  139. // BigDecimal totalOtherPremiumAmount = jqOtherCostsPremiums.add(syOtherCostsPremiums).add(noOtherCostsProportion); //非跟单费用
  140. //总机构 交强管理比例
  141. BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
  142. .add(insFeeOrderNew.getJqDeptProportionLevel2())
  143. .add(insFeeOrderNew.getJqDeptProportionLevel3())
  144. .add(insFeeOrderNew.getJqDeptProportionLevel4())
  145. .add(insFeeOrderNew.getJqDeptProportionLevel5());
  146. //总机构 商业管理比例
  147. BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
  148. .add(insFeeOrderNew.getSyDeptProportionLevel2())
  149. .add(insFeeOrderNew.getSyDeptProportionLevel3())
  150. .add(insFeeOrderNew.getSyDeptProportionLevel4())
  151. .add(insFeeOrderNew.getSyDeptProportionLevel5());
  152. //总机构 非车管理比例
  153. BigDecimal sumNoDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
  154. .add(insFeeOrderNew.getNoDeptProportionLevel2())
  155. .add(insFeeOrderNew.getNoDeptProportionLevel3())
  156. .add(insFeeOrderNew.getNoDeptProportionLevel4())
  157. .add(insFeeOrderNew.getNoDeptProportionLevel5());
  158. //总分销比例
  159. BigDecimal sumRetail = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
  160. //交强出口比例
  161. BigDecimal jqExportProceduresProportion = new BigDecimal(0);
  162. if(insFeeOrderNew.getJqCostsProportion().compareTo(sumJqDeptProportion.add(sumRetail))>0){
  163. jqExportProceduresProportion = insFeeOrderNew.getJqCostsProportion().subtract(sumJqDeptProportion).subtract(sumRetail);
  164. }
  165. //商业出口比例
  166. BigDecimal syExportProceduresProportion = new BigDecimal(0);
  167. if(insFeeOrderNew.getSyCostsProportion().compareTo(sumSyDeptProportion.add(sumRetail))>0){
  168. syExportProceduresProportion = insFeeOrderNew.getSyCostsProportion().subtract(sumSyDeptProportion).subtract(sumRetail);
  169. }
  170. //非车出口比例
  171. BigDecimal noExportProceduresProportion = new BigDecimal(0);
  172. if(insFeeOrderNew.getNoCostsProportion().compareTo(sumNoDeptProportion.add(sumRetail))>0){
  173. noExportProceduresProportion = insFeeOrderNew.getNoCostsProportion().subtract(sumNoDeptProportion).subtract(sumRetail);
  174. }
  175. //交强手续费出口比例
  176. BigDecimal jqExportProceduresFee = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  177. //交强跟单出口费用
  178. BigDecimal jqExportOtherFee = insFeeOrderNew.getJqPremium()
  179. .multiply(jqExportProceduresProportion
  180. .subtract(insFeeOrderNew.getJqSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  181. //商业手续费出口比例
  182. BigDecimal syExportProceduresFee = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSySuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  183. //商业跟单出口比例
  184. BigDecimal syExportOtherFee = insFeeOrderNew.getSyPremium()
  185. .multiply(syExportProceduresProportion
  186. .subtract(insFeeOrderNew.getSySuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  187. //非车手续费出口比例
  188. BigDecimal noExportProceduresFee = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  189. //非车跟单出口比例
  190. BigDecimal noExportOtherFee = insFeeOrderNew.getNoPremium()
  191. .multiply(noExportProceduresProportion
  192. .subtract(insFeeOrderNew.getNoSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
  193. //用户出口手续费
  194. BigDecimal totalPremiumAmount = new BigDecimal(0);
  195. totalPremiumAmount = totalPremiumAmount.add(jqExportProceduresFee).add(syExportProceduresFee).add(noExportProceduresFee);
  196. //用户出口跟单费
  197. BigDecimal totalOtherPremiumAmount = new BigDecimal(0);
  198. totalOtherPremiumAmount = totalOtherPremiumAmount.add(jqExportOtherFee).add(syExportOtherFee).add(noExportOtherFee);
  199. // 用戶
  200. sysUserAccount.setHandlingFee(totalPremiumAmount);
  201. sysUserAccount.setDocumentary(totalOtherPremiumAmount);
  202. // 算佣金
  203. this.countUserAmount(insFeeOrderNew,orderNo);
  204. sysUserAccount.setDocumentaryStatus("2"); // 收入
  205. sysUserAccount.setSuborderId(orderNo); // 订单Id
  206. sysUserAccountService.addOrUpdate(sysUserAccount);
  207. String deptid = insFeeOrderNew.getDeptId();
  208. String distributionStatus = insFeeOrderNew.getDistributionStatus();
  209. // 定义一个数组来存储各级机构的管理费
  210. BigDecimal[] jqDeptPremiumsLevels = {insFeeOrderNew.getJqDeptPremiumsLevel1(), insFeeOrderNew.getJqDeptPremiumsLevel2(),
  211. insFeeOrderNew.getJqDeptPremiumsLevel3(), insFeeOrderNew.getJqDeptPremiumsLevel4(),
  212. insFeeOrderNew.getJqDeptPremiumsLevel5()};
  213. BigDecimal[] syDeptPremiumsLevels = {insFeeOrderNew.getSyDeptPremiumsLevel1(), insFeeOrderNew.getSyDeptPremiumsLevel2(),
  214. insFeeOrderNew.getSyDeptPremiumsLevel3(), insFeeOrderNew.getSyDeptPremiumsLevel4(),
  215. insFeeOrderNew.getSyDeptPremiumsLevel5()};
  216. BigDecimal[] noDeptPremiumsLevels = {insFeeOrderNew.getNoDeptPremiumsLevel1(), insFeeOrderNew.getNoDeptPremiumsLevel2(),
  217. insFeeOrderNew.getNoDeptPremiumsLevel3(), insFeeOrderNew.getNoDeptPremiumsLevel4(),
  218. insFeeOrderNew.getNoDeptPremiumsLevel5()};
  219. for (int i = 1; i <= 5; i++) {
  220. // 根据循环次数确定机构ID的长度,第五级为11
  221. String levelDeptId = deptid.substring(0, (i == 5) ? 11 : i * 2);
  222. // 获取对应级别的机构信息
  223. SysDeptAccountEntity levelSysDeptAccount = sysDeptAccountService.getOne(new LambdaQueryWrapper<SysDeptAccountEntity>()
  224. .eq(SysDeptAccountEntity::getDeptId, levelDeptId));
  225. // 初始化管理费总额为0
  226. BigDecimal sumManagementFee = BigDecimal.ZERO;
  227. // 根据分销等级和分销用户情况计算分销费用
  228. BigDecimal distributionFee = BigDecimal.ZERO;
  229. if (i == 5) {
  230. if (InsFeeAuditDistributionStatusEnum.DS_2.getCode().equals(distributionStatus) && insFeeOrderNew.getTwoLevelUserId() == null) {
  231. distributionFee = insFeeOrderNew.getSecondDetailPremiums();
  232. } else if (InsFeeAuditDistributionStatusEnum.DS_3.getCode().equals(distributionStatus) && insFeeOrderNew.getThreeLevelUserId() == null) {
  233. distributionFee = insFeeOrderNew.getThirdDetailPremiums();
  234. }
  235. }
  236. // 根据分销等级计算管理费总额
  237. if (i == 5) {
  238. sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
  239. .add(syDeptPremiumsLevels[i - 1])
  240. .add(noDeptPremiumsLevels[i - 1])
  241. .add(distributionFee);
  242. } else {
  243. sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
  244. .add(syDeptPremiumsLevels[i - 1])
  245. .add(noDeptPremiumsLevels[i - 1]);
  246. }
  247. // 如果机构信息不为空,更新管理费并记录历史
  248. if (levelSysDeptAccount != null) {
  249. levelSysDeptAccount.setManagementFee(levelSysDeptAccount.getManagementFee().add(sumManagementFee));
  250. sysDeptAccountService.updateById(levelSysDeptAccount);
  251. // 记录历史信息
  252. SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
  253. sysDeptAccountHistory.setId(IdGenerate.nextId());
  254. sysDeptAccountHistory.setDeptId(levelDeptId);
  255. sysDeptAccountHistory.setAmount(sumManagementFee);
  256. sysDeptAccountHistory.setSurplusAmount(levelSysDeptAccount.getManagementFee());
  257. sysDeptAccountHistory.setDocumentary("2"); //收入
  258. sysDeptAccountHistory.setSuborder(orderNo);
  259. sysDeptAccountHistory.setFromBankCard(null);
  260. sysDeptAccountHistory.setToBankCard(null);
  261. sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
  262. sysDeptAccountHistory.setCreateTime(new Date());
  263. sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
  264. ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
  265. ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
  266. ",分销费:" + distributionFee);
  267. sysDeptAccountHistoryService.save(sysDeptAccountHistory);
  268. } else {
  269. // 如果机构信息为空,新建机构信息并记录历史
  270. SysDeptAccountEntity sysDeptAccount = new SysDeptAccountEntity();
  271. sysDeptAccount.setDeptId(levelDeptId);
  272. sysDeptAccount.setManagementFee(sumManagementFee);
  273. sysDeptAccount.setCreateTime(new Date());
  274. sysDeptAccountService.save(sysDeptAccount);
  275. // 记录历史信息
  276. SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
  277. sysDeptAccountHistory.setId(IdGenerate.nextId());
  278. sysDeptAccountHistory.setDeptId(levelDeptId);
  279. sysDeptAccountHistory.setAmount(sumManagementFee);
  280. sysDeptAccountHistory.setSurplusAmount(sumManagementFee);
  281. sysDeptAccountHistory.setDocumentary("2"); //收入
  282. sysDeptAccountHistory.setSuborder(orderNo);
  283. sysDeptAccountHistory.setFromBankCard(null);
  284. sysDeptAccountHistory.setToBankCard(null);
  285. sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
  286. sysDeptAccountHistory.setCreateTime(new Date());
  287. sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
  288. ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
  289. ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
  290. ",分销费:" + distributionFee);
  291. sysDeptAccountHistoryService.save(sysDeptAccountHistory);
  292. }
  293. }
  294. }
  295. }
  296. }
  297. private void countUserAmount(InsFeeOrderNew insFeeOrderNew ,String orderNo) {
  298. String distributionStatus = insFeeOrderNew.getDistributionStatus();
  299. if(StringUtils.isNotEmpty(distributionStatus)){
  300. if(InsFeeAuditDistributionStatusEnum.DS_3.getCode().equals(distributionStatus)){
  301. BigDecimal totalDept = BigDecimal.ZERO;
  302. if(StringUtils.isNotEmpty(insFeeOrderNew.getFirstLevelUserId())){
  303. String firstLevelUserId = insFeeOrderNew.getFirstLevelUserId();
  304. BigDecimal firstDetailPremiums = insFeeOrderNew.getFirstDetailPremiums();
  305. this.saveUpdateAccount(firstLevelUserId,firstDetailPremiums,orderNo);
  306. }else {
  307. totalDept = totalDept.add(insFeeOrderNew.getFirstDetailPremiums());
  308. }
  309. if(StringUtils.isNotEmpty(insFeeOrderNew.getTwoLevelUserId())){
  310. String twoLevelUserId = insFeeOrderNew.getTwoLevelUserId();
  311. BigDecimal secondDetailProportion = insFeeOrderNew.getSecondDetailPremiums();
  312. this.saveUpdateAccount(twoLevelUserId,secondDetailProportion,orderNo);
  313. }else {
  314. totalDept =totalDept.add(insFeeOrderNew.getSecondDetailPremiums());
  315. }
  316. if(StringUtils.isNotEmpty(insFeeOrderNew.getThreeLevelUserId())){
  317. String threeLevelUserId = insFeeOrderNew.getThreeLevelUserId();
  318. BigDecimal threeDetailPremiums = insFeeOrderNew.getThirdDetailPremiums();
  319. this.saveUpdateAccount(threeLevelUserId,threeDetailPremiums,orderNo);
  320. }else {
  321. totalDept =totalDept.add(insFeeOrderNew.getThirdDetailPremiums());
  322. }
  323. // 机构管理 费用给五级交钱机构管理费
  324. if(totalDept.compareTo(BigDecimal.ZERO) ==0){
  325. BigDecimal jqDeptPremiumsLevel5 = insFeeOrderNew.getJqDeptPremiumsLevel5();
  326. jqDeptPremiumsLevel5.add(totalDept);
  327. insFeeOrderNewService.updateById(insFeeOrderNew);
  328. }
  329. } else if (InsFeeAuditDistributionStatusEnum.DS_2.getCode().equals(distributionStatus)) {
  330. BigDecimal totalDept = BigDecimal.ZERO;
  331. if(StringUtils.isNotEmpty(insFeeOrderNew.getFirstLevelUserId())){
  332. String firstLevelUserId = insFeeOrderNew.getFirstLevelUserId();
  333. BigDecimal firstDetailPremiums = insFeeOrderNew.getFirstDetailPremiums();
  334. this.saveUpdateAccount(firstLevelUserId,firstDetailPremiums,orderNo);
  335. }else {
  336. totalDept = totalDept.add(insFeeOrderNew.getFirstDetailPremiums());
  337. }
  338. if(StringUtils.isNotEmpty(insFeeOrderNew.getTwoLevelUserId())){
  339. String twoLevelUserId = insFeeOrderNew.getTwoLevelUserId();
  340. BigDecimal secondDetailProportion = insFeeOrderNew.getSecondDetailPremiums();
  341. this.saveUpdateAccount(twoLevelUserId,secondDetailProportion,orderNo);
  342. }else {
  343. totalDept =totalDept.add(insFeeOrderNew.getSecondDetailPremiums());
  344. }
  345. // 机构管理 费用给五级交钱机构管理费
  346. if(totalDept.compareTo(BigDecimal.ZERO) ==0){
  347. BigDecimal jqDeptPremiumsLevel5 = insFeeOrderNew.getJqDeptPremiumsLevel5();
  348. jqDeptPremiumsLevel5.add(totalDept);
  349. insFeeOrderNewService.updateById(insFeeOrderNew);
  350. }
  351. }else {
  352. // 一级分销
  353. if(StringUtils.isNotEmpty(insFeeOrderNew.getFirstLevelUserId())){
  354. String firstLevelUserId = insFeeOrderNew.getFirstLevelUserId();
  355. BigDecimal firstDetailPremiums = insFeeOrderNew.getFirstDetailPremiums();
  356. this.saveUpdateAccount(firstLevelUserId,firstDetailPremiums,orderNo);
  357. }else {
  358. if(insFeeOrderNew.getFirstDetailPremiums().compareTo(BigDecimal.ZERO) ==0){
  359. BigDecimal jqDeptPremiumsLevel5 = insFeeOrderNew.getJqDeptPremiumsLevel5();
  360. jqDeptPremiumsLevel5.add(insFeeOrderNew.getFirstDetailPremiums());
  361. insFeeOrderNewService.updateById(insFeeOrderNew);
  362. }
  363. }
  364. }
  365. }
  366. }
  367. private void saveUpdateAccount(String userId, BigDecimal amount, String orderNo) {
  368. SysUserAccount sysUserAccount = new SysUserAccount();
  369. sysUserAccount.setUserId(userId);
  370. sysUserAccount.setPromotion(amount);
  371. sysUserAccount.setDocumentaryStatus("2"); // 收入
  372. sysUserAccount.setSuborderId(orderNo);
  373. sysUserAccountService.addOrUpdate(sysUserAccount);
  374. }
  375. private BigDecimal zeroBigdecimal(BigDecimal amount) {
  376. if (amount == null) {
  377. return amount = BigDecimal.ZERO;
  378. } else {
  379. return amount;
  380. }
  381. }
  382. /**
  383. * 生成保司费用(应收费用)
  384. * @param order
  385. * @param insFeeOrder
  386. * @throws Exception
  387. */
  388. private void gene_orderIncome( InsOrders order, InsFeeOrderNew insFeeOrder,InsAreaCompany plyDto) throws Exception{
  389. InsPlyIncome insPlyIncome =new InsPlyIncome();
  390. insPlyIncome.setOrderno(order.getOrderno());
  391. insPlyIncome.setDeptId(order.getDeptid());
  392. insPlyIncome.setCompanyId(plyDto.getCompanyId());
  393. insPlyIncome.setAgreementId(String.valueOf(plyDto.getAgreementId()));
  394. insPlyIncome.setLicenseno(order.getLicenseno());
  395. insPlyIncome.setPayDate(StringUtils.isNullOrEmpty(plyDto.getPayDate())?plyDto.getCreatetime():plyDto.getPayDate());
  396. insPlyIncome.setSignDate(StringUtils.isNullOrEmpty(plyDto.getInsidePayTime())?plyDto.getPayDate():plyDto.getInsidePayTime());
  397. insPlyIncome.setCreateTime(LocalDateTime.now() );
  398. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  399. insPlyIncome.setPolicyno(plyDto.getJqpolicyno());
  400. insPlyIncome.setRiskcode("交强");
  401. insPlyIncome.setTaxamount(plyDto.getTaxamount());
  402. if(!ObjectUtils.isEmpty(insFeeOrder)){
  403. insPlyIncome.setNoTaxPremium(insFeeOrder.getJqNoTaxPremium());
  404. insPlyIncome.setCommissionFeerate(insFeeOrder.getJqSuperviseCostsProportion());
  405. insPlyIncome.setOtherFeerate(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion()));
  406. insPlyIncome.setCommissionFeevalue(insFeeOrder.getJqSuperviseCostsPremiums());
  407. insPlyIncome.setOtherFeevalue(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums()));
  408. insPlyIncome.setAllFeeValue(insFeeOrder.getJqCostsPremiums());
  409. }
  410. insPlyIncomeMapper.insert(insPlyIncome);
  411. }
  412. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  413. insPlyIncome.setPolicyno(plyDto.getSypolicyno());
  414. insPlyIncome.setRiskcode("商业");
  415. insPlyIncome.setTaxamount(new BigDecimal(0));
  416. if(!ObjectUtils.isEmpty(insFeeOrder)){
  417. insPlyIncome.setNoTaxPremium(insFeeOrder.getSyNoTaxPremium());
  418. insPlyIncome.setCommissionFeerate(insFeeOrder.getSySuperviseCostsProportion());
  419. insPlyIncome.setOtherFeerate(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion()));
  420. insPlyIncome.setCommissionFeevalue(insFeeOrder.getSySuperviseCostsPremiums());
  421. insPlyIncome.setOtherFeevalue(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums()));
  422. insPlyIncome.setAllFeeValue(insFeeOrder.getSyCostsPremiums());
  423. }
  424. insPlyIncomeMapper.insert(insPlyIncome);
  425. }
  426. }
  427. /**
  428. * 生成机构费用
  429. * @param order
  430. * @param insFeeOrder
  431. * @throws Exception
  432. */
  433. private void gene_deptfee( InsOrders order, InsFeeOrderNew insFeeOrder,InsAreaCompany plyDto) throws Exception{
  434. InsDeptFee deptFee = new InsDeptFee();
  435. deptFee.setOrderno(order.getOrderno());
  436. if(!ObjectUtils.isEmpty(insFeeOrder)){
  437. deptFee.setQuoteno(insFeeOrder.getInsOrderNo());
  438. }
  439. deptFee.setAgreeid(String.valueOf(plyDto.getAgreementId()));
  440. deptFee.setAuditstatus("1");
  441. deptFee.setSettlestatus("0");
  442. if(plyDto.getInsidePayTime()!=null){
  443. deptFee.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  444. }
  445. deptFee.setInscompany(plyDto.getCompanyId());
  446. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  447. deptFee.setPolicyno(plyDto.getJqpolicyno());
  448. deptFee.setRiskcode("交强");
  449. deptFee.setLicenseno(order.getLicenseno());
  450. geneJqInsDeptFee(order, insFeeOrder, deptFee);
  451. }
  452. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  453. deptFee.setPolicyno(plyDto.getSypolicyno());
  454. deptFee.setRiskcode("商业");
  455. deptFee.setLicenseno(order.getLicenseno());
  456. geneSyInsDeptFee(order, insFeeOrder, deptFee);
  457. }
  458. }
  459. private void geneJqInsDeptFee(InsOrders order, InsFeeOrderNew insFeeOrder, InsDeptFee deptFee) {
  460. if(!ObjectUtils.isEmpty(insFeeOrder)){
  461. if (insFeeOrder.getJqDeptPremiumsLevel1().doubleValue() > 0) {
  462. deptFee.setComcode(order.getDeptid().substring(0, 2)); //99140302M01D01
  463. deptFee.setComlevel("一级");
  464. insDeptFeeService.insert(deptFee);
  465. }
  466. if (insFeeOrder.getJqDeptPremiumsLevel2().doubleValue() > 0) {
  467. deptFee.setComcode(order.getDeptid().substring(0, 4)); //99140302M01D01
  468. deptFee.setComlevel("二级");
  469. insDeptFeeService.insert(deptFee);
  470. }
  471. if (insFeeOrder.getJqDeptPremiumsLevel3().doubleValue() > 0) {
  472. deptFee.setComcode(order.getDeptid().substring(0, 6)); //99140302M01D01
  473. deptFee.setComlevel("三级");
  474. insDeptFeeService.insert(deptFee);
  475. }
  476. if (insFeeOrder.getJqDeptPremiumsLevel4().doubleValue() > 0) {
  477. deptFee.setComcode(order.getDeptid().substring(0, 8)); //99140302M01D01
  478. deptFee.setComlevel("四级");
  479. insDeptFeeService.insert(deptFee);
  480. }
  481. if (insFeeOrder.getJqDeptPremiumsLevel5().doubleValue() > 0) {
  482. deptFee.setComcode(order.getDeptid().substring(0, 11)); //99140302M01D01
  483. deptFee.setComlevel("五级");
  484. insDeptFeeService.insert(deptFee);
  485. }
  486. }
  487. }
  488. private void geneSyInsDeptFee(InsOrders order, InsFeeOrderNew insFeeOrder, InsDeptFee deptFee) {
  489. if(!ObjectUtils.isEmpty(insFeeOrder)){
  490. if (insFeeOrder.getSyDeptPremiumsLevel1().doubleValue() > 0) {
  491. deptFee.setComcode(order.getDeptid().substring(0, 2)); //99140302M01D01
  492. deptFee.setComlevel("一级");
  493. insDeptFeeService.insert(deptFee);
  494. }
  495. if (insFeeOrder.getSyDeptPremiumsLevel2().doubleValue() > 0) {
  496. deptFee.setComcode(order.getDeptid().substring(0, 4)); //99140302M01D01
  497. deptFee.setComlevel("二级");
  498. insDeptFeeService.insert(deptFee);
  499. }
  500. if (insFeeOrder.getSyDeptPremiumsLevel3().doubleValue() > 0) {
  501. deptFee.setComcode(order.getDeptid().substring(0, 6)); //99140302M01D01
  502. deptFee.setComlevel("三级");
  503. insDeptFeeService.insert(deptFee);
  504. }
  505. if (insFeeOrder.getSyDeptPremiumsLevel4().doubleValue() > 0) {
  506. deptFee.setComcode(order.getDeptid().substring(0, 8)); //99140302M01D01
  507. deptFee.setComlevel("四级");
  508. insDeptFeeService.insert(deptFee);
  509. }
  510. if (insFeeOrder.getSyDeptPremiumsLevel5().doubleValue() > 0) {
  511. deptFee.setComcode(order.getDeptid().substring(0, 11)); //99140302M01D01
  512. deptFee.setComlevel("五级");
  513. insDeptFeeService.insert(deptFee);
  514. }
  515. }
  516. }
  517. /**
  518. * 三级分销费用保存
  519. *
  520. * @param order
  521. * @return
  522. */
  523. public void saveRetail(InsOrders order,InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception{
  524. List<String> userlist=new ArrayList<>();
  525. esmUserReferrerService.getUpUser(order.getUserid(),userlist);
  526. //userlist:包括本人在内向上所有人
  527. if(userlist.size()-1>0){
  528. if(userlist.size()-1>=1
  529. &&insFeeOrder.getThirdRetailPremiums().doubleValue()>0)
  530. {//三级分销
  531. SysUser user=sysUserService.getById(userlist.get(1));
  532. InsCommission commission = new InsCommission();
  533. commission.setOrderno(order.getOrderno());
  534. commission.setQuoteno(insFeeOrder.getInsOrderNo());
  535. commission.setDeptid(order.getDeptid());
  536. commission.setDeptname(order.getDeptname());
  537. commission.setInscompany(plyDto.getCompanyId());
  538. commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
  539. commission.setRefereescode(user.getId());
  540. commission.setRefereesname(user.getName());
  541. commission.setLevel("3");
  542. commission.setAuditstatus("1"); //0未审核 1已审核
  543. commission.setSettlestatus("0"); //0未结算 1已结算
  544. commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  545. commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  546. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  547. commission.setPolicyno(plyDto.getJqpolicyno());
  548. commission.setRiskcode("交强");
  549. commission.setLicenseno(order.getLicenseno());
  550. commission.setCommissionrate(insFeeOrder.getThirdRetailProportion().doubleValue());
  551. commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getThirdRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  552. insCommissionService.insert(commission);
  553. }
  554. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  555. commission.setPolicyno(plyDto.getSypolicyno());
  556. commission.setRiskcode("商业");
  557. commission.setLicenseno(order.getLicenseno());
  558. commission.setCommissionrate(insFeeOrder.getThirdRetailProportion().doubleValue());
  559. commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getThirdRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  560. insCommissionService.insert(commission);
  561. }
  562. }
  563. if(userlist.size()-1>=2
  564. &&insFeeOrder.getSecondRetailPremiums().doubleValue()>0)
  565. {//二级分销
  566. SysUser user=sysUserService.getById(userlist.get(2));
  567. InsCommission commission = new InsCommission();
  568. commission.setOrderno(order.getOrderno());
  569. commission.setQuoteno(insFeeOrder.getInsOrderNo());
  570. commission.setDeptid(order.getDeptid());
  571. commission.setDeptname(order.getDeptname());
  572. commission.setInscompany(plyDto.getCompanyId());
  573. commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
  574. commission.setRefereescode(user.getId());
  575. commission.setRefereesname(user.getName());
  576. // commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue());
  577. // commission.setCommissionamount(insFeeOrder.getSecondRetailPremiums().doubleValue());
  578. commission.setLevel("2");
  579. commission.setAuditstatus("1"); //0未审核 1已审核
  580. commission.setSettlestatus("0"); //0未结算 1已结算
  581. commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  582. commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  583. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  584. commission.setPolicyno(plyDto.getJqpolicyno());
  585. commission.setRiskcode("交强");
  586. commission.setLicenseno(order.getLicenseno());
  587. commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue());
  588. commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getSecondRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  589. insCommissionService.insert(commission);
  590. }
  591. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  592. commission.setPolicyno(plyDto.getSypolicyno());
  593. commission.setRiskcode("商业");
  594. commission.setLicenseno(order.getLicenseno());
  595. commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue());
  596. commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getSecondRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  597. insCommissionService.insert(commission);
  598. }
  599. }
  600. if(userlist.size()-1>=3
  601. &&insFeeOrder.getFirstRetailPremiums().doubleValue()>0)
  602. {//一级分销
  603. SysUser user=sysUserService.getById(userlist.get(3));
  604. InsCommission commission = new InsCommission();
  605. commission.setOrderno(order.getOrderno());
  606. commission.setQuoteno(insFeeOrder.getInsOrderNo());
  607. commission.setDeptid(order.getDeptid());
  608. commission.setDeptname(order.getDeptname());
  609. commission.setInscompany(plyDto.getCompanyId());
  610. commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
  611. commission.setRefereescode(user.getId());
  612. commission.setRefereesname(user.getName());
  613. // commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue());
  614. // commission.setCommissionamount(insFeeOrder.getFirstRetailPremiums().doubleValue());
  615. commission.setLevel("1");
  616. commission.setAuditstatus("1"); //0未审核 1已审核
  617. commission.setSettlestatus("0"); //0未结算 1已结算
  618. commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  619. commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  620. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  621. commission.setPolicyno(plyDto.getJqpolicyno());
  622. commission.setRiskcode("交强");
  623. commission.setLicenseno(order.getLicenseno());
  624. commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue());
  625. commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getFirstRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  626. insCommissionService.insert(commission);
  627. }
  628. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  629. commission.setPolicyno(plyDto.getSypolicyno());
  630. commission.setRiskcode("商业");
  631. commission.setLicenseno(order.getLicenseno());
  632. commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue());
  633. commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getFirstRetailProportion()).divide(new BigDecimal(100)).doubleValue());
  634. insCommissionService.insert(commission);
  635. }
  636. }
  637. }
  638. }
  639. /**
  640. * 生成个代费用
  641. * @param order
  642. * @param insFeeOrder
  643. * @throws Exception
  644. */
  645. public void saveInsCompanyFee(InsOrders order,InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception {
  646. InsCompanyFee insCompanyFee = new InsCompanyFee();
  647. insCompanyFee.setOrderno(order.getOrderno());
  648. insCompanyFee.setFrameNo(order.getFrameno());
  649. insCompanyFee.setLicenseNo(order.getLicenseno());
  650. insCompanyFee.setInscompany(plyDto.getCompanyId());
  651. insCompanyFee.setAgreeid(String.valueOf(plyDto.getAgreementId()));
  652. insCompanyFee.setUserid(order.getUserid());
  653. insCompanyFee.setUsername(order.getUsername());
  654. insCompanyFee.setDeptid(order.getDeptid());
  655. insCompanyFee.setDeptname(order.getDeptname());
  656. insCompanyFee.setSettletype("B");
  657. insCompanyFee.setSettlestatus("0");
  658. insCompanyFee.setCreatetime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  659. if(plyDto.getInsidePayTime()!=null){
  660. insCompanyFee.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
  661. }
  662. if(ObjectUtils.isNotEmpty(insFeeOrder)){
  663. BigDecimal dept_rate=insFeeOrder.getFirstDeptProportion()
  664. .add(insFeeOrder.getSecondDeptProportion())
  665. .add(insFeeOrder.getThirdDeptProportion())
  666. .add(insFeeOrder.getForthDeptProportion())
  667. .add(insFeeOrder.getFifthDeptProportion());
  668. BigDecimal retail_rate=insFeeOrder.getFirstRetailProportion()
  669. .add(insFeeOrder.getSecondRetailProportion())
  670. .add(insFeeOrder.getThirdRetailProportion());
  671. if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
  672. insCompanyFee.setPolicyno(plyDto.getJqpolicyno());
  673. insCompanyFee.setRiskcode("交强");
  674. //交强费用比例=交强险费用比例-五级机构管理费比例-三级分销比例
  675. insCompanyFee.setFeerate(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
  676. insCompanyFee.setFeeamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
  677. insCompanyFee.setJqpremium(insFeeOrder.getJqNoTaxPremium().doubleValue());
  678. //保存业务员费用
  679. insCompanyFeeService.insert(insCompanyFee);
  680. }
  681. if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
  682. insCompanyFee.setPolicyno(plyDto.getSypolicyno());
  683. insCompanyFee.setRiskcode("商业");
  684. insCompanyFee.setFeerate(0);
  685. insCompanyFee.setFeeamount(0);
  686. insCompanyFee.setJqpremium(0);
  687. //商业费用比例=商业险费用比例-五级机构管理费比例-三级分销比例
  688. insCompanyFee.setDisrate(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
  689. insCompanyFee.setDisamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
  690. insCompanyFee.setSypremium(insFeeOrder.getSyNoTaxPremium().doubleValue());
  691. //保存业务员费用
  692. insCompanyFeeService.insert(insCompanyFee);
  693. }
  694. }
  695. }
  696. }