|
|
@@ -0,0 +1,561 @@
|
|
|
+package com.jzg.quotation.summary.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jzg.commons.entity.dto.VerifyAdjustParam;
|
|
|
+import com.jzg.commons.entity.orders.po.*;
|
|
|
+import com.jzg.commons.entity.vo.AdjustAllRefundInfoVo;
|
|
|
+import com.jzg.commons.entity.vo.AdjustAllRefundVo;
|
|
|
+import com.jzg.commons.entity.vo.OrderAdjustInfoVo;
|
|
|
+import com.jzg.commons.entity.vo.OrderAdjustVo;
|
|
|
+import com.jzg.commons.util.AssertionUtils;
|
|
|
+import com.jzg.quotation.summary.mapper.InsOrderAdjustInfoMapper;
|
|
|
+import com.jzg.quotation.summary.service.*;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @author dongxin
|
|
|
+* @description 针对表【ins_order_adjust_info(订单批改明细表)】的数据库操作Service实现
|
|
|
+* @createDate 2025-09-16 10:48:13
|
|
|
+*/
|
|
|
+@Service
|
|
|
+public class InsOrderAdjustInfoServiceImpl extends ServiceImpl<InsOrderAdjustInfoMapper, InsOrderAdjustInfo>
|
|
|
+ implements InsOrderAdjustInfoService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrderAdjustService orderAdjustService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersRiskService ordersRiskService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersPolicyService ordersPolicyService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersCostsService ordersCostsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersKindService ordersKindService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersAccidentalDrivingService ordersAccidentalDrivingService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AdjustAllRefundVo adjustAllRefundGet(String id, String orderNo) {
|
|
|
+
|
|
|
+ AdjustAllRefundVo adjustAllRefundVo = new AdjustAllRefundVo();
|
|
|
+ adjustAllRefundVo.setId(id);
|
|
|
+ List<AdjustAllRefundInfoVo> refundVos = new ArrayList<>();
|
|
|
+ // 获取最新的批改记录
|
|
|
+ LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.ne(InsOrderAdjust::getId, id);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getStatus, 2);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
|
|
|
+ queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
|
|
|
+ InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
|
|
|
+
|
|
|
+ // 查询原订单信息
|
|
|
+ List<InsOrdersRisk> risks = ordersRiskService.getById(orderNo);
|
|
|
+ InsOrdersPolicy policie = ordersPolicyService.getById(orderNo);
|
|
|
+ InsOrdersCosts costs = ordersCostsService.getById(orderNo);
|
|
|
+
|
|
|
+ // 有批改
|
|
|
+ if(Objects.nonNull(adjust)){
|
|
|
+ OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
|
|
|
+ List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
|
|
|
+ if(CollUtil.isNotEmpty(adjustInfos)){
|
|
|
+ Set<Integer> types = adjustInfos.stream()
|
|
|
+ .filter(info -> !info.getIsHide().equals(1))
|
|
|
+ .filter(info -> !info.getType().equals(2))
|
|
|
+ .map(InsOrderAdjustInfo::getKindType).collect(Collectors.toSet());
|
|
|
+ for (Integer type : types) {
|
|
|
+ refundVos.add(new AdjustAllRefundInfoVo(type,risks,policie,orderAdjustInfoVo.getOrderAdjustVo(),id));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 无批改
|
|
|
+ }else{
|
|
|
+ for (InsOrdersRisk risk : risks) {
|
|
|
+ AdjustAllRefundInfoVo refundVo = new AdjustAllRefundInfoVo();
|
|
|
+ refundVo.setAdjustId(id);
|
|
|
+ refundVo.setKindName(risk.getRiskName());
|
|
|
+ refundVo.setExpiryDate(risk.getEndDate());
|
|
|
+ if(risk.getRiskCode().equals("0507")){
|
|
|
+ refundVo.setKindType(0);
|
|
|
+ refundVo.setPolicyNumber(policie.getJqPolicyNo());
|
|
|
+ refundVo.setPremium(costs.getJqPremium());
|
|
|
+ refundVos.add(refundVo);
|
|
|
+ }else{
|
|
|
+ refundVo.setKindType(1);
|
|
|
+ refundVo.setPolicyNumber(policie.getSyPolicyNo());
|
|
|
+ refundVo.setPremium(costs.getSyPremium());
|
|
|
+ refundVos.add(refundVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<InsOrdersAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(InsOrdersAccidentalDriving::getOrderNo, orderNo);
|
|
|
+ List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(wrapper);
|
|
|
+ if (CollUtil.isNotEmpty(drivings)) {
|
|
|
+ AdjustAllRefundInfoVo refundVo = new AdjustAllRefundInfoVo();
|
|
|
+ refundVo.setAdjustId(id);
|
|
|
+ refundVo.setKindType(2);
|
|
|
+ refundVo.setKindName("驾意险");
|
|
|
+ refundVo.setPolicyNumber(policie.getJyPolicyNo());
|
|
|
+ refundVo.setPremium(costs.getJyPremium());
|
|
|
+ refundVos.add(refundVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ adjustAllRefundVo.setInfoVosList(refundVos);
|
|
|
+ return adjustAllRefundVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AdjustAllRefundVo adjustChangeGet(String id, String orderNo) {
|
|
|
+ AdjustAllRefundVo adjustAllRefundVo = new AdjustAllRefundVo();
|
|
|
+ adjustAllRefundVo.setId(id);
|
|
|
+ // 获取最新的批改记录
|
|
|
+ LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.ne(InsOrderAdjust::getId, id);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getOrderNo, orderNo);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getStatus, 2);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
|
|
|
+ queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
|
|
|
+ InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
|
|
|
+
|
|
|
+ // 查询原订单信息
|
|
|
+ List<InsOrdersRisk> risks = ordersRiskService.getById(orderNo);
|
|
|
+ InsOrdersCosts costs = ordersCostsService.getById(orderNo);
|
|
|
+
|
|
|
+ // 有批改
|
|
|
+ if(Objects.nonNull(adjust)){
|
|
|
+ OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
|
|
|
+ List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
|
|
|
+ List<InsOrderAdjustInfo> newAdjustInfos = new ArrayList<>();
|
|
|
+ if (CollUtil.isNotEmpty(adjustInfos)) {
|
|
|
+ newAdjustInfos = adjustInfos.stream()
|
|
|
+ .filter(info -> !info.getIsHide().equals(1))
|
|
|
+ .filter(info -> !info.getType().equals(2))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ for (InsOrderAdjustInfo newAdjustInfo : newAdjustInfos) {
|
|
|
+ newAdjustInfo.setId(null);
|
|
|
+ newAdjustInfo.setAdjustId(id);
|
|
|
+ newAdjustInfo.setPremium(newAdjustInfo.getAfterPremium());
|
|
|
+ newAdjustInfo.setAmount(newAdjustInfo.getAfterAmount());
|
|
|
+ }
|
|
|
+ adjustAllRefundVo.setChangeInfoVosList(newAdjustInfos);
|
|
|
+
|
|
|
+ }else{
|
|
|
+ // 无批改
|
|
|
+ List<InsOrderAdjustInfo> adjustInfos = new ArrayList<>();
|
|
|
+ for (InsOrdersRisk risk : risks) {
|
|
|
+ if(risk.getRiskCode().equals("0507")){
|
|
|
+ InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
|
|
|
+ orderAdjustInfo.setAdjustId(id);
|
|
|
+ orderAdjustInfo.setKindType(0);
|
|
|
+ orderAdjustInfo.setKindCode("J1");
|
|
|
+ orderAdjustInfo.setKindName("交强险");
|
|
|
+ orderAdjustInfo.setPremium(costs.getJqPremium());
|
|
|
+ orderAdjustInfo.setType(0);
|
|
|
+ orderAdjustInfo.setIsHide(0);
|
|
|
+ adjustInfos.add(orderAdjustInfo);
|
|
|
+ }else{
|
|
|
+ LambdaQueryWrapper<InsOrdersKind> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(InsOrdersKind::getOrderNo, orderNo);
|
|
|
+ wrapper.eq(InsOrdersKind::getIsDelete, 0);
|
|
|
+ List<InsOrdersKind> kindList = ordersKindService.list(wrapper);
|
|
|
+ if(CollUtil.isNotEmpty(kindList)){
|
|
|
+ for (InsOrdersKind insOrdersKind : kindList) {
|
|
|
+ InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
|
|
|
+ orderAdjustInfo.setAdjustId(id);
|
|
|
+ orderAdjustInfo.setKindType(1);
|
|
|
+ orderAdjustInfo.setKindCode(insOrdersKind.getKindCode());
|
|
|
+ orderAdjustInfo.setKindName(insOrdersKind.getKindName());
|
|
|
+ orderAdjustInfo.setAmount(insOrdersKind.getAmount());
|
|
|
+ orderAdjustInfo.setPremium(insOrdersKind.getPremium());
|
|
|
+ orderAdjustInfo.setType(0);
|
|
|
+ orderAdjustInfo.setIsHide(0);
|
|
|
+ adjustInfos.add(orderAdjustInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<InsOrdersAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(InsOrdersAccidentalDriving::getOrderNo, orderNo);
|
|
|
+ List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(wrapper);
|
|
|
+ if (CollUtil.isNotEmpty(drivings)) {
|
|
|
+ InsOrderAdjustInfo orderAdjustInfo = new InsOrderAdjustInfo();
|
|
|
+ orderAdjustInfo.setAdjustId(id);
|
|
|
+ orderAdjustInfo.setKindType(2);
|
|
|
+ orderAdjustInfo.setKindCode(drivings.get(0).getRiskCode());
|
|
|
+ orderAdjustInfo.setKindName(drivings.get(0).getRiskName());
|
|
|
+ orderAdjustInfo.setAmount(new BigDecimal(drivings.get(0).getQuantity()));
|
|
|
+ orderAdjustInfo.setPremium(costs.getJyPremium());
|
|
|
+ orderAdjustInfo.setType(0);
|
|
|
+ orderAdjustInfo.setIsHide(0);
|
|
|
+ adjustInfos.add(orderAdjustInfo);
|
|
|
+ }
|
|
|
+ adjustAllRefundVo.setChangeInfoVosList(adjustInfos);
|
|
|
+ }
|
|
|
+ return adjustAllRefundVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void refundSubmit(AdjustAllRefundVo refundVos) {
|
|
|
+ // 获取最新的批改记录
|
|
|
+ LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.ne(InsOrderAdjust::getId, refundVos.getId());
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getOrderNo, refundVos.getOrderNo());
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getStatus, 2);
|
|
|
+ queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");;
|
|
|
+ InsOrderAdjust adjust = orderAdjustService.getOne(queryWrapper);
|
|
|
+
|
|
|
+ List<InsOrderAdjustInfo> orderAdjustInfos = new ArrayList<>();
|
|
|
+ List<AdjustAllRefundInfoVo> infoVosList = refundVos.getInfoVosList();
|
|
|
+
|
|
|
+ List<AdjustAllRefundInfoVo> jqRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(0)).collect(Collectors.toList()); // 交强信息
|
|
|
+ List<AdjustAllRefundInfoVo> syRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(1)).collect(Collectors.toList()); // 商业信息
|
|
|
+ List<AdjustAllRefundInfoVo> jyRefundVo = infoVosList.stream().filter(info-> info.getKindType().equals(2)).collect(Collectors.toList()); // 驾意信息
|
|
|
+
|
|
|
+
|
|
|
+ // 当前单据(提前保存了)
|
|
|
+ InsOrderAdjust insOrderAdjust = orderAdjustService.getById(refundVos.getId());
|
|
|
+
|
|
|
+ BigDecimal jqPremium = new BigDecimal(0);
|
|
|
+ BigDecimal syPremium = new BigDecimal(0);
|
|
|
+ BigDecimal jyPremium = new BigDecimal(0);
|
|
|
+ if (Objects.nonNull(adjust)) {
|
|
|
+ OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
|
|
|
+ List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
|
|
|
+ OrderAdjustVo orderAdjustVo = orderAdjustInfoVo.getOrderAdjustVo();
|
|
|
+ jqPremium = orderAdjustVo.getAfterJqPremium();
|
|
|
+ syPremium = orderAdjustVo.getAfterSyPremium();
|
|
|
+ jyPremium = orderAdjustVo.getAfterJyPremium();
|
|
|
+
|
|
|
+ List<InsOrderAdjustInfo> jqInfos = adjustInfos.stream()
|
|
|
+ .filter(info -> info.getKindType().equals(0))
|
|
|
+ .filter(info -> !info.getType().equals(2))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<InsOrderAdjustInfo> syInfos = adjustInfos.stream()
|
|
|
+ .filter(info -> info.getKindType().equals(1))
|
|
|
+ .filter(info -> !info.getType().equals(2))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<InsOrderAdjustInfo> jyInfos = adjustInfos.stream()
|
|
|
+ .filter(info -> info.getKindType().equals(2))
|
|
|
+ .filter(info -> !info.getType().equals(2))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (InsOrderAdjustInfo adjustInfo : adjustInfos) {
|
|
|
+ adjustInfo.setAdjustId(insOrderAdjust.getId());
|
|
|
+ adjustInfo.setPremium(adjustInfo.getAfterPremium());
|
|
|
+ if(adjustInfo.getType().equals(0)){
|
|
|
+ adjustInfo.setAfterAmount(adjustInfo.getAmount());
|
|
|
+ }else{
|
|
|
+ adjustInfo.setAfterAmount(null);
|
|
|
+ }
|
|
|
+ adjustInfo.setAdjustType(null);
|
|
|
+ adjustInfo.setAdjustAmount(null);
|
|
|
+ if(adjustInfo.getIsHide().equals(0)){
|
|
|
+ if((CollUtil.isNotEmpty(jqRefundVo) && adjustInfo.getKindType().equals(0))
|
|
|
+ || (CollUtil.isNotEmpty(syRefundVo) && adjustInfo.getKindType().equals(1))
|
|
|
+ || (CollUtil.isNotEmpty(jyRefundVo) && adjustInfo.getKindType().equals(2))
|
|
|
+ ){
|
|
|
+ adjustInfo.setType(2);
|
|
|
+ adjustInfo.setPremium(null);
|
|
|
+ adjustInfo.setAfterPremium(null);
|
|
|
+ adjustInfo.setAdjustType(null);
|
|
|
+ adjustInfo.setAdjustAmount(null);
|
|
|
+ adjustInfo.setIsHide(0);
|
|
|
+ if (CollUtil.isNotEmpty(jqInfos)) {
|
|
|
+ if(Objects.nonNull(jqInfos.get(0).getId())){
|
|
|
+ if (jqInfos.get(0).getId().equals(adjustInfo.getId())) {
|
|
|
+ adjustInfo.setPremium(jqRefundVo.get(0).getPremium());
|
|
|
+ adjustInfo.setAfterPremium(jqRefundVo.get(0).getPremium().subtract(jqRefundVo.get(0).getRefundAmount()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(syInfos)) {
|
|
|
+ if(Objects.nonNull(syInfos.get(0).getId())){
|
|
|
+ if (syInfos.get(0).getId().equals(adjustInfo.getId())) {
|
|
|
+ adjustInfo.setPremium(syRefundVo.get(0).getPremium());
|
|
|
+ adjustInfo.setAfterPremium(syRefundVo.get(0).getPremium().subtract(syRefundVo.get(0).getRefundAmount()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(jyInfos)) {
|
|
|
+ if(Objects.nonNull(jyInfos.get(0).getId())){
|
|
|
+ if (jyInfos.get(0).getId().equals(adjustInfo.getId())) {
|
|
|
+ adjustInfo.setPremium(jyRefundVo.get(0).getPremium());
|
|
|
+ adjustInfo.setAfterPremium(jyRefundVo.get(0).getPremium().subtract(jyRefundVo.get(0).getRefundAmount()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ adjustInfo.setIsHide(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ adjustInfo.setId(null);
|
|
|
+ orderAdjustInfos.add(adjustInfo);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 查询原订单信息
|
|
|
+ List<InsOrdersRisk> risks = ordersRiskService.getById(refundVos.getOrderNo());
|
|
|
+ InsOrdersCosts costs = ordersCostsService.getById(refundVos.getOrderNo());
|
|
|
+ LambdaQueryWrapper<InsOrdersKind> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(InsOrdersKind::getOrderNo, refundVos.getOrderNo());
|
|
|
+ wrapper.eq(InsOrdersKind::getIsDelete, 0);
|
|
|
+ List<InsOrdersKind> kindList = ordersKindService.list(wrapper);
|
|
|
+
|
|
|
+ jqPremium = costs.getJqPremium();
|
|
|
+ syPremium = costs.getSyPremium();
|
|
|
+ jyPremium = costs.getJyPremium();
|
|
|
+
|
|
|
+ for (InsOrdersRisk risk : risks) {
|
|
|
+ if(risk.getRiskCode().equals("0507")){
|
|
|
+ InsOrderAdjustInfo info = new InsOrderAdjustInfo();
|
|
|
+ info.setAdjustId(insOrderAdjust.getId());
|
|
|
+ info.setKindType(0);
|
|
|
+ info.setKindCode("J1");
|
|
|
+ info.setKindName("交强险");
|
|
|
+ info.setIsHide(0);
|
|
|
+ if(CollUtil.isNotEmpty(jqRefundVo)){
|
|
|
+ info.setType(2);
|
|
|
+ info.setPremium(null);
|
|
|
+ info.setAfterPremium(null);
|
|
|
+ info.setAfterAmount(null);
|
|
|
+ info.setAdjustType(null);
|
|
|
+ }else{
|
|
|
+ info.setType(0);
|
|
|
+ info.setPremium(costs.getJqPremium());
|
|
|
+ info.setAfterPremium(costs.getJqPremium());
|
|
|
+ }
|
|
|
+ orderAdjustInfos.add(info);
|
|
|
+ }else{
|
|
|
+ for (InsOrdersKind insOrdersKind : kindList) {
|
|
|
+ InsOrderAdjustInfo info = new InsOrderAdjustInfo();
|
|
|
+ info.setAdjustId(insOrderAdjust.getId());
|
|
|
+ info.setKindType(1);
|
|
|
+ info.setKindCode(insOrdersKind.getKindCode());
|
|
|
+ info.setKindName(insOrdersKind.getKindName());
|
|
|
+ info.setAmount(insOrdersKind.getAmount());
|
|
|
+ info.setType(2);
|
|
|
+ info.setIsHide(0);
|
|
|
+ if(CollUtil.isNotEmpty(syRefundVo)){
|
|
|
+ info.setPremium(null);
|
|
|
+ info.setAfterPremium(null);
|
|
|
+ info.setAfterAmount(null);
|
|
|
+ info.setAdjustType(null);
|
|
|
+ }else{
|
|
|
+ info.setType(0);
|
|
|
+ info.setPremium(insOrdersKind.getPremium());
|
|
|
+ info.setAfterPremium(insOrdersKind.getPremium());
|
|
|
+ }
|
|
|
+ orderAdjustInfos.add(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<InsOrdersAccidentalDriving> drivingLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ drivingLambdaQueryWrapper.eq(InsOrdersAccidentalDriving::getOrderNo, refundVos.getOrderNo());
|
|
|
+ List<InsOrdersAccidentalDriving> drivings = ordersAccidentalDrivingService.list(drivingLambdaQueryWrapper);
|
|
|
+ if (CollUtil.isNotEmpty(drivings)) {
|
|
|
+ InsOrderAdjustInfo info = new InsOrderAdjustInfo();
|
|
|
+ info.setAdjustId(insOrderAdjust.getId());
|
|
|
+ info.setKindType(2);
|
|
|
+ info.setKindCode(drivings.get(0).getRiskCode());
|
|
|
+ info.setKindName(drivings.get(0).getRiskName());
|
|
|
+ info.setAmount(new BigDecimal(drivings.get(0).getQuantity()));
|
|
|
+ info.setType(2);
|
|
|
+ info.setIsHide(0);
|
|
|
+ if(CollUtil.isNotEmpty(jyRefundVo)){
|
|
|
+ info.setPremium(null);
|
|
|
+ info.setAfterPremium(null);
|
|
|
+ info.setAfterAmount(null);
|
|
|
+ info.setAdjustType(null);
|
|
|
+ info.setIsHide(1);
|
|
|
+ }else{
|
|
|
+ info.setType(0);
|
|
|
+ info.setPremium(costs.getJyPremium());
|
|
|
+ info.setAfterPremium(costs.getJyPremium());
|
|
|
+ }
|
|
|
+ orderAdjustInfos.add(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.checkProduct(orderAdjustInfos,insOrderAdjust);
|
|
|
+
|
|
|
+
|
|
|
+ if(CollUtil.isNotEmpty(jqRefundVo)){
|
|
|
+ jqPremium = jqPremium.subtract(jqRefundVo.get(0).getRefundAmount());
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(syRefundVo)){
|
|
|
+ syPremium = syPremium.subtract(syRefundVo.get(0).getRefundAmount());
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(jyRefundVo)){
|
|
|
+ jyPremium = jyPremium.subtract(jyRefundVo.get(0).getRefundAmount());
|
|
|
+ }
|
|
|
+
|
|
|
+ insOrderAdjust.setAfterJqPremium(jqPremium);
|
|
|
+ insOrderAdjust.setAfterSyPremium(syPremium);
|
|
|
+ insOrderAdjust.setAfterJyPremium(jyPremium);
|
|
|
+ insOrderAdjust.setAfterPremium(jqPremium.add(syPremium).add(jyPremium));
|
|
|
+ insOrderAdjust.setStatus(1);
|
|
|
+ orderAdjustService.updateById(insOrderAdjust);
|
|
|
+ this.saveBatch(orderAdjustInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void changeSubmit(AdjustAllRefundVo refundVo) {
|
|
|
+ List<InsOrderAdjustInfo> orderAdjustInfos = new ArrayList<>();
|
|
|
+ List<InsOrderAdjustInfo> changeInfoVosList = refundVo.getChangeInfoVosList();
|
|
|
+
|
|
|
+ // 获取之前的批改单 加入退保剩余金额
|
|
|
+ // 获取最新的批改记录
|
|
|
+ LambdaQueryWrapper<InsOrderAdjust> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.ne(InsOrderAdjust::getId, refundVo.getId());
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getOrderNo, refundVo.getOrderNo());
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getIsDelete, 0);
|
|
|
+ queryWrapper.eq(InsOrderAdjust::getStatus, 2);
|
|
|
+ queryWrapper.orderByDesc(InsOrderAdjust::getCreateTime).last("limit 1");
|
|
|
+ List<InsOrderAdjust> adjusts = orderAdjustService.list(queryWrapper);
|
|
|
+
|
|
|
+ // 当前单据(提前保存了)
|
|
|
+ InsOrderAdjust insOrderAdjust = orderAdjustService.getById(refundVo.getId());
|
|
|
+ if(CollUtil.isNotEmpty(changeInfoVosList)){
|
|
|
+ for (InsOrderAdjustInfo info : changeInfoVosList) {
|
|
|
+ info.setId(null);
|
|
|
+ info.setAdjustId(insOrderAdjust.getId());
|
|
|
+ if(Objects.nonNull(info.getAdjustType())){
|
|
|
+ if (info.getAdjustType().equals(0)){
|
|
|
+ info.setAfterPremium(info.getPremium().add(info.getAdjustAmount()));
|
|
|
+ }else{
|
|
|
+ info.setAfterPremium(info.getPremium().subtract(info.getAdjustAmount()));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ info.setAfterPremium(info.getPremium());
|
|
|
+ info.setAfterAmount(info.getAmount());
|
|
|
+ }
|
|
|
+ info.setIsHide(0);
|
|
|
+ }
|
|
|
+ orderAdjustInfos = changeInfoVosList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将上一单的退单追加进去
|
|
|
+ if(CollUtil.isNotEmpty(adjusts)){
|
|
|
+ InsOrderAdjust adjust = adjusts.get(0);
|
|
|
+ OrderAdjustInfoVo orderAdjustInfoVo = orderAdjustService.queryById(adjust.getId());
|
|
|
+ List<InsOrderAdjustInfo> adjustInfos = orderAdjustInfoVo.getAdjustInfos();
|
|
|
+ if(CollUtil.isNotEmpty(adjustInfos)){
|
|
|
+ for (InsOrderAdjustInfo adjustInfo : adjustInfos) {
|
|
|
+ if(adjustInfo.getType().equals(2)){
|
|
|
+ adjustInfo.setId(null);
|
|
|
+ adjustInfo.setAdjustId(insOrderAdjust.getId());
|
|
|
+ adjustInfo.setIsHide(1);
|
|
|
+ orderAdjustInfos.add(adjustInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.checkProduct(orderAdjustInfos,insOrderAdjust);
|
|
|
+
|
|
|
+ BigDecimal jqPrenium = new BigDecimal(0); // 交强保费
|
|
|
+ BigDecimal syPrenium = new BigDecimal(0); // 商业保费
|
|
|
+ BigDecimal jyPrenium = new BigDecimal(0); // 驾意保费
|
|
|
+
|
|
|
+
|
|
|
+ for (InsOrderAdjustInfo orderAdjustInfo : orderAdjustInfos) {
|
|
|
+ if(orderAdjustInfo.getKindType().equals(0)){
|
|
|
+ jqPrenium = jqPrenium.add(orderAdjustInfo.getAfterPremium());
|
|
|
+ }
|
|
|
+ if(orderAdjustInfo.getKindType().equals(1)){
|
|
|
+ syPrenium = syPrenium.add(orderAdjustInfo.getAfterPremium());
|
|
|
+ }
|
|
|
+ if(orderAdjustInfo.getKindType().equals(2)){
|
|
|
+ jyPrenium = jyPrenium.add(orderAdjustInfo.getAfterPremium());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ insOrderAdjust.setAfterJqPremium(jqPrenium);
|
|
|
+ insOrderAdjust.setAfterSyPremium(syPrenium);
|
|
|
+ insOrderAdjust.setAfterJyPremium(jyPrenium);
|
|
|
+ BigDecimal totalPremium = jqPrenium.add(syPrenium).add(jyPrenium);
|
|
|
+ insOrderAdjust.setAfterPremium(totalPremium);
|
|
|
+ insOrderAdjust.setStatus(1);
|
|
|
+ orderAdjustService.updateById(insOrderAdjust);
|
|
|
+ this.saveBatch(changeInfoVosList);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void verifyOrder(VerifyAdjustParam param) {
|
|
|
+ InsOrderAdjust insOrderAdjust = orderAdjustService.getById(param.getId());
|
|
|
+ AssertionUtils.isFail(insOrderAdjust.getStatus() > 1, "订单已审核,请刷新页面");
|
|
|
+ insOrderAdjust.setStatus(param.getStatus());
|
|
|
+ insOrderAdjust.setRefuse(param.getRefuse());
|
|
|
+ orderAdjustService.updateById(insOrderAdjust);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保险产品重新核算
|
|
|
+ *
|
|
|
+ * @param orderAdjustInfos
|
|
|
+ * @param insOrderAdjust
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private void checkProduct(List<InsOrderAdjustInfo> orderAdjustInfos, InsOrderAdjust insOrderAdjust) {
|
|
|
+ Boolean jq = false;
|
|
|
+ Boolean sz = false;
|
|
|
+ Boolean sy = false;
|
|
|
+
|
|
|
+ List<InsOrderAdjustInfo> jqInfos = orderAdjustInfos.stream().filter(info -> info.getKindType().equals(0) && !info.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ if(CollUtil.isNotEmpty(jqInfos)){
|
|
|
+ if (!jqInfos.get(0).getType().equals(2)){
|
|
|
+ jq = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<InsOrderAdjustInfo> syInfos = orderAdjustInfos.stream().filter(info -> info.getKindType().equals(1) && !info.getType().equals(2)).collect(Collectors.toList());
|
|
|
+ if(CollUtil.isNotEmpty(syInfos)){
|
|
|
+ if(syInfos.size() > 1){
|
|
|
+ sy = true;
|
|
|
+ }else{
|
|
|
+ InsOrderAdjustInfo syInfo = syInfos.get(0);
|
|
|
+ if (syInfo.getKindName().equals("第三者责任险")){
|
|
|
+ sz = true;
|
|
|
+ }else{
|
|
|
+ sy = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (jq && sy){ // 交商
|
|
|
+ insOrderAdjust.setProductId("0330034001");
|
|
|
+ insOrderAdjust.setProductName("交商");
|
|
|
+ } else if (jq && sz){ // 交三
|
|
|
+ insOrderAdjust.setProductId("0330034002");
|
|
|
+ insOrderAdjust.setProductName("交三");
|
|
|
+ } else if (jq){ // 单交
|
|
|
+ insOrderAdjust.setProductId("0330");
|
|
|
+ insOrderAdjust.setProductName("单交");
|
|
|
+ } else if (sy){ // 单商
|
|
|
+ insOrderAdjust.setProductId("034001");
|
|
|
+ insOrderAdjust.setProductName("单商");
|
|
|
+ } else if (sz){ // 单三
|
|
|
+ insOrderAdjust.setProductId("034002");
|
|
|
+ insOrderAdjust.setProductName("单三");
|
|
|
+ }else{
|
|
|
+ insOrderAdjust.setProductId(null);
|
|
|
+ insOrderAdjust.setProductName(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|