|
|
@@ -1,68 +1,57 @@
|
|
|
package com.jzg.quotation.summary.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.jzg.commons.constants.CompanyConstants;
|
|
|
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
|
|
|
import com.jzg.commons.core.page.HttpResult;
|
|
|
-import com.jzg.commons.entity.dto.InsOrdersAdd;
|
|
|
import com.jzg.commons.entity.dto.InsOrdersParam;
|
|
|
-import com.jzg.commons.entity.dto.InsuranceInfo;
|
|
|
+import com.jzg.commons.entity.dto.InsTaskImagesAdd;
|
|
|
import com.jzg.commons.entity.orders.po.*;
|
|
|
-import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
|
|
|
+import com.jzg.commons.entity.po.InsTaskImages;
|
|
|
+import com.jzg.commons.entity.quote.vo.*;
|
|
|
import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
|
|
|
-import com.jzg.commons.entity.vo.InsOrdersVo;
|
|
|
+import com.jzg.commons.entity.vo.InsTaskImagesVo;
|
|
|
import com.jzg.commons.entity.vo.OrdersListVo;
|
|
|
-import com.jzg.commons.util.StringUtils;
|
|
|
-import com.jzg.commons.util.idgen.IdGenerate;
|
|
|
-import com.jzg.quotation.commons.constant.enums.base.ProductsType;
|
|
|
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
|
|
|
-import com.jzg.commons.util.idgen.IdGenerate;
|
|
|
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
|
|
|
+import com.jzg.commons.util.MinioUtils;
|
|
|
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
|
|
|
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
|
|
|
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
|
|
|
import com.jzg.quotation.commons.utils.SnowFlakeUtil;
|
|
|
import com.jzg.quotation.summary.mapper.InsOrdersMapper;
|
|
|
import com.jzg.quotation.summary.service.*;
|
|
|
-import org.apache.commons.beanutils.BeanUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.lang.reflect.InvocationTargetException;
|
|
|
import java.util.List;
|
|
|
|
|
|
+@RequiredArgsConstructor
|
|
|
@Service
|
|
|
public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders> implements InsOrdersService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersMapper insOrdersMapper;
|
|
|
+ private final InsOrdersMapper insOrdersMapper;
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersCarInfoService ordersCarInfoService;
|
|
|
+ private final InsOrdersCarInfoService ordersCarInfoService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersCarUserInfoService ordersCarUserInfoService;
|
|
|
+ private final InsOrdersCarUserInfoService ordersCarUserInfoService;
|
|
|
+
|
|
|
+ private final InsOrdersOtherService insOrdersOtherService;
|
|
|
+
|
|
|
+ private final InsOrdersKindService insOrdersKindService;
|
|
|
+
|
|
|
+ private final InsOrdersRiskService insOrdersRiskService;
|
|
|
+
|
|
|
+ private final InsOrdersTaxService insOrdersTaxService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersOtherService insOrdersOtherService;
|
|
|
+ private final InsTaskImagesService insTaskImagesService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersKindService insOrdersKindService;
|
|
|
+ private final InsOrdersExternalPolicyService policyService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private InsOrdersRiskService insOrdersRiskService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private InsOrdersTaxService insOrdersTaxService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private InsOrdersCostsService insOrdersCostsService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private InsOrdersPolicyService insOrdersPolicyService;
|
|
|
+ private final InsOrdersCostsService ordersCostsService;
|
|
|
|
|
|
/**
|
|
|
* 保存订单信息
|
|
|
@@ -74,22 +63,21 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
|
|
|
// 检查输入参数是否为空,如果为空则返回错误信息
|
|
|
- if (ordersAdd == null || ordersAdd.getInsOrders() == null || ordersAdd.getCarInfoVo() == null
|
|
|
- || ordersAdd.getCarUserInfoList() == null || ordersAdd.getInsOrdersOtherInfo() == null
|
|
|
- || ordersAdd.getInsuranceInfo() == null) {
|
|
|
- return HttpResult.error("参数不能为空");
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
try {
|
|
|
// 获取订单对象并设置引用编号
|
|
|
InsOrders insOrders = ordersAdd.getInsOrders();
|
|
|
- String quoteNo = String.valueOf(SnowFlakeUtil.getSnowFlakeId());
|
|
|
+ Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
|
|
|
// 如果生成的引用编号为空,则返回错误信息
|
|
|
if (quoteNo == null) {
|
|
|
return HttpResult.error("生成引用编号失败");
|
|
|
}
|
|
|
- insOrders.setQuoteNo(String.valueOf(quoteNo));
|
|
|
-
|
|
|
+ insOrders.setQuoteNo(quoteNo);
|
|
|
+ insOrders.setCompanyId(ordersAdd.getInsOrdersOtherInfo().getCompanyId());
|
|
|
+ insOrders.setCompanyName(ordersAdd.getInsOrdersOtherInfo().getCompanyName());
|
|
|
+ insOrders.setSigningTime(ordersAdd.getInsOrdersOtherInfo().getSigningTime());
|
|
|
+ insOrders.setIsTemporarily(ordersAdd.getIsTemporarily());
|
|
|
// 插入订单信息,如果插入失败,则返回错误信息
|
|
|
int insertResult = insOrdersMapper.insert(insOrders);
|
|
|
if (insertResult <= 0) {
|
|
|
@@ -98,42 +86,76 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
}
|
|
|
|
|
|
// 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
- InsOrdersCarInfo carInfoVo = ordersAdd.getCarInfoVo();
|
|
|
- carInfoVo.setOrderNo(String.valueOf(quoteNo));
|
|
|
- ordersCarInfoService.save(carInfoVo);
|
|
|
+ CarInfoVo carInfoVo = ordersAdd.getCarInfoVo();
|
|
|
+ InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(carInfoVo, InsOrdersCarInfo.class);
|
|
|
+ insOrdersCarInfo.setOrderNo(quoteNo);
|
|
|
+ ordersCarInfoService.save(insOrdersCarInfo);
|
|
|
|
|
|
// 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
- List<InsOrdersCarUserInfo> carUserInfoList = ordersAdd.getCarUserInfoList();
|
|
|
- for (InsOrdersCarUserInfo carUserInfo : carUserInfoList) {
|
|
|
- carUserInfo.setOrderNo(String.valueOf(quoteNo));
|
|
|
- }
|
|
|
- ordersCarUserInfoService.saveBatch(carUserInfoList);
|
|
|
+ List<InsOrdersCarUserInfo> userInfos = new ArrayList<>();
|
|
|
+ InsOrdersCarUserInfo ownersInfo = BeanUtil.copyProperties(ordersAdd.getOwnersInfo(), InsOrdersCarUserInfo.class);
|
|
|
+ ownersInfo.setPolicyPersonType(1);
|
|
|
+ ownersInfo.setOrderNo(quoteNo);
|
|
|
+ userInfos.add(ownersInfo);
|
|
|
+ InsOrdersCarUserInfo policyHolderInfo = BeanUtil.copyProperties(ordersAdd.getPolicyHolderInfo(), InsOrdersCarUserInfo.class);
|
|
|
+ policyHolderInfo.setOrderNo(quoteNo);
|
|
|
+ policyHolderInfo.setPolicyPersonType(2);
|
|
|
+ userInfos.add(policyHolderInfo);
|
|
|
+ InsOrdersCarUserInfo insuredPersonInfo = BeanUtil.copyProperties(ordersAdd.getInsuredPersonInfo(), InsOrdersCarUserInfo.class);
|
|
|
+ insuredPersonInfo.setOrderNo(quoteNo);
|
|
|
+ insuredPersonInfo.setPolicyPersonType(3);
|
|
|
+ userInfos.add(insuredPersonInfo);
|
|
|
+ ordersCarUserInfoService.saveBatch(userInfos);
|
|
|
|
|
|
// 保险订单其他信息
|
|
|
InsOrdersOtherInfoVo insOrdersOtherInfo = ordersAdd.getInsOrdersOtherInfo();
|
|
|
-// insOrdersOther.setOrderNo(quoteNo);
|
|
|
-// insOrdersOtherService.save(insOrdersOther);
|
|
|
|
|
|
- // 保险信息
|
|
|
- InsuranceInfo insuranceInfo = ordersAdd.getInsuranceInfo();
|
|
|
+ InsOrdersOther insOrdersOther = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersOther.class);
|
|
|
+
|
|
|
+ insOrdersOther.setOrderNo(quoteNo);
|
|
|
+ insOrdersOtherService.save(insOrdersOther);
|
|
|
+
|
|
|
+ InsOrdersCosts insOrdersCosts = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersCosts.class);
|
|
|
+ insOrdersCosts.setOrderNo(quoteNo);
|
|
|
+ ordersCostsService.save(insOrdersCosts);
|
|
|
+
|
|
|
// 保险种类信息
|
|
|
- List<InsOrdersKind> insOrdersKindList = insuranceInfo.getInsOrdersKindList();
|
|
|
- for (InsOrdersKind insOrdersKind : insOrdersKindList) {
|
|
|
+ List<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
|
|
|
+ List<InsOrdersKind> insOrdersKinds = BeanUtil.copyToList(kindInfoVo, InsOrdersKind.class);
|
|
|
+ for (InsOrdersKind insOrdersKind : insOrdersKinds) {
|
|
|
insOrdersKind.setOrderNo(quoteNo);
|
|
|
}
|
|
|
- insOrdersKindService.saveBatch(insOrdersKindList);
|
|
|
+ insOrdersKindService.saveBatch(insOrdersKinds);
|
|
|
|
|
|
// 税费信息
|
|
|
- InsOrdersTax insOrdersTax = insuranceInfo.getInsOrdersTax();
|
|
|
+ VehicleAndVesselTaxVo vehicleAndVesselTax = ordersAdd.getVehicleAndVesselTax();
|
|
|
+ InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
|
|
|
insOrdersTax.setOrderNo(quoteNo);
|
|
|
insOrdersTaxService.save(insOrdersTax);
|
|
|
|
|
|
- // 风险信息
|
|
|
- List<InsOrdersRisk> insOrdersRiskList = insuranceInfo.getInsOrdersRiskList();
|
|
|
- for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
|
|
|
- insOrdersRisk.setOrderNo(quoteNo);
|
|
|
+ // 交强险 险种信息
|
|
|
+ RiskInfoVo ciRiskInfoVo = ordersAdd.getCiRiskInfoVo();
|
|
|
+ InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
|
|
|
+ insuranceInfo.setOrderNo(quoteNo);
|
|
|
+ insOrdersRiskService.save(insuranceInfo);
|
|
|
+ // 商业险 险种信息
|
|
|
+ InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersAdd.getBiRiskInfoVo(), InsOrdersRisk.class);
|
|
|
+ biRiskInfoVo.setOrderNo(quoteNo);
|
|
|
+ insOrdersRiskService.save(biRiskInfoVo);
|
|
|
+
|
|
|
+ InsTaskImagesAdd imagesAdds = ordersAdd.getImagesAdds();
|
|
|
+ if (ObjectUtil.isNotEmpty(imagesAdds)){
|
|
|
+ List<InsTaskImages> insTaskImages = BeanUtil.copyToList(imagesAdds.getImages(), InsTaskImages.class);
|
|
|
+ insTaskImages.forEach(image->{
|
|
|
+ image.setQuoteNo(imagesAdds.getQuoteNo());
|
|
|
+ insTaskImagesService.save(image);
|
|
|
+ });
|
|
|
}
|
|
|
- insOrdersRiskService.saveBatch(insOrdersRiskList);
|
|
|
+
|
|
|
+ InsOrdersExternalPolicy ordersExternalPolicy = ordersAdd.getInsOrdersExternalPolicy();
|
|
|
+ ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
|
|
|
+ policyService.save(ordersExternalPolicy);
|
|
|
+
|
|
|
|
|
|
// 返回成功信息,表示订单、车辆和用户信息保存成功
|
|
|
return HttpResult.ok("保存成功");
|
|
|
@@ -147,36 +169,91 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public HttpResult updateOrders(InsOrdersAdd ordersAdd) {
|
|
|
+ public HttpResult updateOrders(InsOrdersEnd ordersEnd) {
|
|
|
+ try {
|
|
|
+ // 获取订单对象并设置引用编号
|
|
|
+ InsOrders insOrders = ordersEnd.getInsOrders();
|
|
|
+ InsOrdersOtherInfoVo ordersOtherInfo = ordersEnd.getInsOrdersOtherInfo();
|
|
|
+ if (ObjectUtil.isNotEmpty(ordersOtherInfo)){
|
|
|
+ insOrders.setCompanyId(ordersOtherInfo.getCompanyId());
|
|
|
+ insOrders.setCompanyName(ordersOtherInfo.getCompanyName());
|
|
|
+ insOrders.setSigningTime(ordersOtherInfo.getSigningTime());
|
|
|
+ }
|
|
|
+ // 插入订单信息,如果插入失败,则返回错误信息
|
|
|
+ int insertResult = insOrdersMapper.updateById(insOrders);
|
|
|
+ if (insertResult <= 0) {
|
|
|
+ log.error("订单插入失败,订单信息: {}");
|
|
|
+ return HttpResult.error("修改订单失败");
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
- }
|
|
|
+ // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
+ InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(ordersEnd.getCarInfoVo(), InsOrdersCarInfo.class);
|
|
|
+ ordersCarInfoService.update(insOrdersCarInfo,new LambdaUpdateWrapper<>(InsOrdersCarInfo.class).eq(InsOrdersCarInfo::getOrderNo,insOrders.getQuoteNo()));
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean saveQuoteOrders(QuoteVo quoteVo) throws InvocationTargetException, IllegalAccessException {
|
|
|
- InsOrders insOrders = new InsOrders();
|
|
|
- insOrders.setId(IdGenerate.nextId());
|
|
|
- insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
|
|
|
- insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode());
|
|
|
- insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
|
|
|
- insOrders.setProductId(quoteVo.getOrder().getProductsCode());
|
|
|
-// insOrdersMapper.insert(insOrders);
|
|
|
+ // 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
+ List<InsOrdersCarUserInfo> userInfos = new ArrayList<>();
|
|
|
+ InsOrdersCarUserInfo ownersInfo = BeanUtil.copyProperties(ordersEnd.getOwnersInfo(), InsOrdersCarUserInfo.class);
|
|
|
|
|
|
- InsOrdersCarInfo carInfo = new InsOrdersCarInfo();
|
|
|
- BeanUtils.copyProperties(carInfo,quoteVo.getCarInfoVo());
|
|
|
- carInfo.setOrderNo(insOrders.getId());
|
|
|
+ userInfos.add(ownersInfo);
|
|
|
+ InsOrdersCarUserInfo policyHolderInfo = BeanUtil.copyProperties(ordersEnd.getPolicyHolderInfo(), InsOrdersCarUserInfo.class);
|
|
|
|
|
|
- InsOrdersCarUserInfo ownersInfo = new InsOrdersCarUserInfo();
|
|
|
- BeanUtils.copyProperties(ownersInfo,quoteVo.getOwnersInfo());
|
|
|
+ userInfos.add(policyHolderInfo);
|
|
|
+ InsOrdersCarUserInfo insuredPersonInfo = BeanUtil.copyProperties(ordersEnd.getInsuredPersonInfo(), InsOrdersCarUserInfo.class);
|
|
|
+
|
|
|
+ userInfos.add(insuredPersonInfo);
|
|
|
+ //
|
|
|
+ ordersCarUserInfoService.updateBatchById(userInfos);
|
|
|
+
|
|
|
+ // 保险订单其他信息
|
|
|
+ InsOrdersOtherInfoVo insOrdersOtherInfo = ordersEnd.getInsOrdersOtherInfo();
|
|
|
|
|
|
- InsOrdersCarUserInfo insuredPersonInfo = new InsOrdersCarUserInfo();
|
|
|
- BeanUtils.copyProperties(insuredPersonInfo,quoteVo.getInsuredPersonInfo());
|
|
|
+ InsOrdersOther insOrdersOther = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersOther.class);
|
|
|
|
|
|
- InsOrdersCarUserInfo policyHolderInfo = new InsOrdersCarUserInfo();
|
|
|
- BeanUtils.copyProperties(policyHolderInfo,quoteVo.getPolicyHolderInfo());
|
|
|
+ insOrdersOtherService.update(insOrdersOther,new LambdaUpdateWrapper<>(InsOrdersOther.class).eq(InsOrdersOther::getOrderNo,insOrders.getQuoteNo()));
|
|
|
+ // 保存其他信息
|
|
|
+ InsOrdersCosts insOrdersCosts = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersCosts.class);
|
|
|
+ insOrdersCosts.setOrderNo(insOrders.getQuoteNo());
|
|
|
+ ordersCostsService.update(insOrdersCosts,new LambdaUpdateWrapper<>(InsOrdersCosts.class).eq(InsOrdersCosts::getOrderNo,insOrders.getQuoteNo()));
|
|
|
|
|
|
- return true;
|
|
|
+ // 保险种类信息
|
|
|
+ List<KindInfoVo> kindInfoVo = ordersEnd.getKindInfoVo();
|
|
|
+ List<InsOrdersKind> insOrdersKinds = BeanUtil.copyToList(kindInfoVo, InsOrdersKind.class);
|
|
|
+ insOrdersKindService.updateBatchById(insOrdersKinds);
|
|
|
+
|
|
|
+ // 税费信息
|
|
|
+ VehicleAndVesselTaxVo vehicleAndVesselTax = ordersEnd.getVehicleAndVesselTax();
|
|
|
+ InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
|
|
|
+ insOrdersTaxService.update(insOrdersTax,new LambdaUpdateWrapper<>(InsOrdersTax.class).eq(InsOrdersTax::getOrderNo,insOrders.getQuoteNo()));
|
|
|
+
|
|
|
+ // 交强险 险种信息
|
|
|
+ RiskInfoVo ciRiskInfoVo = ordersEnd.getCiRiskInfoVo();
|
|
|
+ InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
|
|
|
+ insOrdersRiskService.update(insuranceInfo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,insOrders.getQuoteNo()));
|
|
|
+ // 商业险 险种信息
|
|
|
+ InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersEnd.getBiRiskInfoVo(), InsOrdersRisk.class);
|
|
|
+ insOrdersRiskService.update(biRiskInfoVo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,insOrders.getQuoteNo()));
|
|
|
+
|
|
|
+ InsTaskImagesAdd imagesAdds = ordersEnd.getImagesAdds();
|
|
|
+ if (ObjectUtil.isNotEmpty(imagesAdds)){
|
|
|
+ List<InsTaskImages> insTaskImages = BeanUtil.copyToList(imagesAdds.getImages(), InsTaskImages.class);
|
|
|
+ insTaskImages.forEach(image->{
|
|
|
+ image.setQuoteNo(imagesAdds.getQuoteNo());
|
|
|
+ insTaskImagesService.save(image);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ InsOrdersExternalPolicy ordersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
|
|
|
+ policyService.update(ordersExternalPolicy,new LambdaUpdateWrapper<>(InsOrdersExternalPolicy.class).eq(InsOrdersExternalPolicy::getOrderNo,ordersExternalPolicy.getOrderNo()));
|
|
|
+
|
|
|
+
|
|
|
+ // 返回成功信息,表示订单、车辆和用户信息修改成功
|
|
|
+ return HttpResult.ok("修改成功");
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
|
|
|
+ log.error("修改订单时发生异常", e);
|
|
|
+ throw new RuntimeException("修改订单失败,请检查输入数据", e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -188,58 +265,68 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
|
|
|
@Override
|
|
|
public InsOrdersVo selectById(Long id) {
|
|
|
- return insOrdersMapper.selectById(id);
|
|
|
+ // 1. 查询订单信息
|
|
|
+ InsOrdersVo insOrdersVo = insOrdersMapper.selectById(id);
|
|
|
+ if (insOrdersVo == null) {
|
|
|
+ throw new IllegalArgumentException("查询结果为空,无法处理订单信息");
|
|
|
+ }
|
|
|
+ // 2. 处理车辆用户信息列表
|
|
|
+ if (CollectionUtil.isNotEmpty(insOrdersVo.getCarUserInfoList())) {
|
|
|
+ for (InsOrdersCarUserInfo carUserInfo : insOrdersVo.getCarUserInfoList()) {
|
|
|
+ // 使用映射逻辑处理用户信息
|
|
|
+ CustomerInfoVo customerInfoVo = mapCarUserInfoToCustomerInfo(carUserInfo);
|
|
|
+ setPolicyPersonInfo(insOrdersVo, carUserInfo.getPolicyPersonType(), customerInfoVo);
|
|
|
+ }
|
|
|
+ insOrdersVo.setCarUserInfoList(null);
|
|
|
+ }
|
|
|
+ InsTaskImagesVo imagesAdds = insOrdersVo.getImagesAdds();
|
|
|
+ if (ObjectUtil.isNotEmpty(imagesAdds)){
|
|
|
+ imagesAdds.getImages().forEach(image -> {
|
|
|
+ image.setPreviewUrl(MinioUtils.getPresignedObjectUrl(image.getBucketName(), image.getFileName()));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ setInsOrdersExternalPolicy(insOrdersVo.getInsOrdersExternalPolicy());
|
|
|
+ return insOrdersVo;
|
|
|
}
|
|
|
|
|
|
|
|
|
- @Override
|
|
|
- public void generateOrders(QuoteVo quoteVo) {
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
- // 保存主订单信息
|
|
|
- InsOrders insOrders = new InsOrders();
|
|
|
- insOrders.setQuoteNo(String.valueOf(SnowFlakeUtil.getSnowFlakeId()));
|
|
|
- insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
|
|
|
- insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
|
|
|
- insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
|
|
|
- insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
|
|
|
- String companyName = CompanyConstants.getCompanyNameByCode(quoteVo.getOrder().getInsuranceCompanyCode());
|
|
|
- insOrders.setCompanyName(companyName);
|
|
|
- insOrders.setProductId(quoteVo.getOrder().getProductsCode());
|
|
|
- String productName = ProductsType.getProductNameByCode(quoteVo.getOrder().getProductsCode());
|
|
|
- insOrders.setProductName(productName);
|
|
|
- insOrdersMapper.insert(insOrders);
|
|
|
-
|
|
|
- // 保存订单车辆信息
|
|
|
- ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo(), formatter);
|
|
|
-
|
|
|
- // 保存订单用户信息
|
|
|
- List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = new ArrayList<>();
|
|
|
- // 添加车主信息
|
|
|
- insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getOwnersInfo(), formatter,1));
|
|
|
- // 添加投保人信息
|
|
|
- insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getPolicyHolderInfo(), formatter,2));
|
|
|
- // 添加被保险人信息
|
|
|
- insOrdersCarUserInfoList.add(ordersCarUserInfoService.createUserInfo(insOrders.getId(), quoteVo.getInsuredPersonInfo(), formatter,3));
|
|
|
- ordersCarUserInfoService.saveBatch(insOrdersCarUserInfoList);
|
|
|
-
|
|
|
- // 保存订单费用信息 ins_orders_costs
|
|
|
- insOrdersCostsService.createCosts(insOrders);
|
|
|
-
|
|
|
- // 保存订单其他信息 ins_orders_other
|
|
|
- insOrdersOtherService.createOther(insOrders);
|
|
|
-
|
|
|
- // 保存订单投保单号 保单号信息 ins_orders_policy
|
|
|
- insOrdersPolicyService.createPolicy(insOrders);
|
|
|
-
|
|
|
- // 保存订单险种信息 ins_orders_risk
|
|
|
- insOrdersRiskService.createRisk(insOrders, quoteVo.getCiRiskInfoVo(),quoteVo.getBiRiskInfoVo());
|
|
|
-
|
|
|
- // 保存订单险种信息 ins_orders_kind
|
|
|
- insOrdersKindService.createKind(insOrders, quoteVo.getKindInfoVo(),quoteVo.getOrder().getInsuranceCompanyCode());
|
|
|
-
|
|
|
- // 保存订单车船税税信息 ins_orders_tax
|
|
|
- insOrdersTaxService.createTax(insOrders);
|
|
|
+ public void setInsOrdersExternalPolicy(InsOrdersExternalPolicy ordersExternalPolicy) {
|
|
|
+ if (ObjectUtil.isNotEmpty(ordersExternalPolicy) && CollectionUtil.isNotEmpty(ordersExternalPolicy.getUploadFiles())){
|
|
|
+ ordersExternalPolicy.getUploadFiles().stream().forEach(sysUploadFiles -> {
|
|
|
+ sysUploadFiles.setDownloadUrl(MinioUtils.getPresignedObjectUrl(sysUploadFiles.getBucketName(), sysUploadFiles.getFileName()));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 将 InsOrdersCarUserInfo 转换为 CustomerInfoVo
|
|
|
+ */
|
|
|
+ private CustomerInfoVo mapCarUserInfoToCustomerInfo(InsOrdersCarUserInfo carUserInfo) {
|
|
|
+ return BeanUtil.copyProperties(carUserInfo, CustomerInfoVo.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据 policyPersonType 设置对应的用户信息
|
|
|
+ */
|
|
|
+ private void setPolicyPersonInfo(InsOrdersVo insOrdersVo, Integer policyPersonType, CustomerInfoVo customerInfoVo) {
|
|
|
+ if (ObjectUtil.isEmpty(policyPersonType)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ switch (policyPersonType) {
|
|
|
+ case 1:
|
|
|
+ insOrdersVo.setOwnersInfo(customerInfoVo);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ insOrdersVo.setPolicyHolderInfo(customerInfoVo);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ insOrdersVo.setInsuredPersonInfo(customerInfoVo);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // 记录未知类型,避免逻辑遗漏
|
|
|
+ log.warn("未知的 policyPersonType: {}");
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|