InsFeeAuditServiceImpl.java 44 KB

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