|
|
@@ -1,57 +1,65 @@
|
|
|
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.conditions.query.LambdaQueryWrapper;
|
|
|
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.InsuranceRisk;
|
|
|
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
|
|
|
import com.jzg.commons.core.page.HttpResult;
|
|
|
import com.jzg.commons.entity.dto.InsOrdersParam;
|
|
|
-import com.jzg.commons.entity.dto.InsTaskImagesAdd;
|
|
|
import com.jzg.commons.entity.orders.po.*;
|
|
|
-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.InsTaskImagesVo;
|
|
|
import com.jzg.commons.entity.vo.OrdersListVo;
|
|
|
-import com.jzg.commons.util.MinioUtils;
|
|
|
+import com.jzg.commons.util.AssertionUtils;
|
|
|
+import com.jzg.commons.util.idgen.IdGenerate;
|
|
|
+import com.jzg.quotation.commons.constant.enums.base.ProductsType;
|
|
|
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
|
|
|
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
|
|
|
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 lombok.RequiredArgsConstructor;
|
|
|
+import org.apache.commons.beanutils.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
-@RequiredArgsConstructor
|
|
|
@Service
|
|
|
public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders> implements InsOrdersService {
|
|
|
|
|
|
- private final InsOrdersMapper insOrdersMapper;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersMapper insOrdersMapper;
|
|
|
|
|
|
- private final InsOrdersCarInfoService ordersCarInfoService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersCarInfoService ordersCarInfoService;
|
|
|
|
|
|
- private final InsOrdersCarUserInfoService ordersCarUserInfoService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersCarUserInfoService ordersCarUserInfoService;
|
|
|
|
|
|
- private final InsOrdersOtherService insOrdersOtherService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersOtherService insOrdersOtherService;
|
|
|
|
|
|
- private final InsOrdersKindService insOrdersKindService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersKindService insOrdersKindService;
|
|
|
|
|
|
- private final InsOrdersRiskService insOrdersRiskService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersRiskService insOrdersRiskService;
|
|
|
|
|
|
- private final InsOrdersTaxService insOrdersTaxService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersTaxService insOrdersTaxService;
|
|
|
|
|
|
- private final InsTaskImagesService insTaskImagesService;
|
|
|
-
|
|
|
- private final InsOrdersExternalPolicyService policyService;
|
|
|
-
|
|
|
- private final InsOrdersCostsService ordersCostsService;
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersCostsService insOrdersCostsService;
|
|
|
|
|
|
/**
|
|
|
* 保存订单信息
|
|
|
@@ -59,201 +67,169 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
* @param ordersAdd 包含订单信息、车辆信息和用户信息的综合对象
|
|
|
* @return 返回HTTP结果对象,表示保存操作的成功或失败
|
|
|
*/
|
|
|
+// @Override
|
|
|
+// @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();
|
|
|
+// Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
|
|
|
+// // 如果生成的引用编号为空,则返回错误信息
|
|
|
+// if (quoteNo == null) {
|
|
|
+// return HttpResult.error("生成引用编号失败");
|
|
|
+// }
|
|
|
+// insOrders.setQuoteNo(String.valueOf(quoteNo));
|
|
|
+//
|
|
|
+// // 插入订单信息,如果插入失败,则返回错误信息
|
|
|
+// int insertResult = insOrdersMapper.insert(insOrders);
|
|
|
+// if (insertResult <= 0) {
|
|
|
+// log.error("订单插入失败,订单信息: {}");
|
|
|
+// return HttpResult.error("保存订单失败");
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
+// InsOrdersCarInfo carInfoVo = ordersAdd.getCarInfoVo();
|
|
|
+// carInfoVo.setOrderNo(String.valueOf(quoteNo));
|
|
|
+// ordersCarInfoService.save(carInfoVo);
|
|
|
+//
|
|
|
+// // 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
+// List<InsOrdersCarUserInfo> carUserInfoList = ordersAdd.getCarUserInfoList();
|
|
|
+// for (InsOrdersCarUserInfo carUserInfo : carUserInfoList) {
|
|
|
+// carUserInfo.setOrderNo(String.valueOf(quoteNo));
|
|
|
+// }
|
|
|
+// ordersCarUserInfoService.saveBatch(carUserInfoList);
|
|
|
+//
|
|
|
+// // 保险订单其他信息
|
|
|
+// InsOrdersOtherInfoVo insOrdersOtherInfo = ordersAdd.getInsOrdersOtherInfo();
|
|
|
+//// insOrdersOther.setOrderNo(quoteNo);
|
|
|
+//// insOrdersOtherService.save(insOrdersOther);
|
|
|
+//
|
|
|
+// // 保险信息
|
|
|
+// InsuranceInfo insuranceInfo = ordersAdd.getInsuranceInfo();
|
|
|
+// // 保险种类信息
|
|
|
+// List<InsOrdersKind> insOrdersKindList = insuranceInfo.getInsOrdersKindList();
|
|
|
+// for (InsOrdersKind insOrdersKind : insOrdersKindList) {
|
|
|
+// insOrdersKind.setOrderNo(quoteNo);
|
|
|
+// }
|
|
|
+// insOrdersKindService.saveBatch(insOrdersKindList);
|
|
|
+//
|
|
|
+// // 税费信息
|
|
|
+// InsOrdersTax insOrdersTax = insuranceInfo.getInsOrdersTax();
|
|
|
+// insOrdersTax.setOrderNo(quoteNo);
|
|
|
+// insOrdersTaxService.save(insOrdersTax);
|
|
|
+//
|
|
|
+// // 风险信息
|
|
|
+// List<InsOrdersRisk> insOrdersRiskList = insuranceInfo.getInsOrdersRiskList();
|
|
|
+// for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
|
|
|
+// insOrdersRisk.setOrderNo(quoteNo);
|
|
|
+// }
|
|
|
+// insOrdersRiskService.saveBatch(insOrdersRiskList);
|
|
|
+//
|
|
|
+// // 返回成功信息,表示订单、车辆和用户信息保存成功
|
|
|
+// return HttpResult.ok("保存成功");
|
|
|
+//
|
|
|
+// } catch (Exception e) {
|
|
|
+// // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
|
|
|
+// log.error("保存订单时发生异常", e);
|
|
|
+// throw new RuntimeException("保存订单失败,请检查输入数据", e);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+// @Override
|
|
|
+// public HttpResult updateOrders(InsOrdersAdd ordersAdd) {
|
|
|
+//
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
|
|
|
- // 检查输入参数是否为空,如果为空则返回错误信息
|
|
|
-
|
|
|
-
|
|
|
- try {
|
|
|
- // 获取订单对象并设置引用编号
|
|
|
- InsOrders insOrders = ordersAdd.getInsOrders();
|
|
|
- Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
|
|
|
- // 如果生成的引用编号为空,则返回错误信息
|
|
|
- if (quoteNo == null) {
|
|
|
- return HttpResult.error("生成引用编号失败");
|
|
|
- }
|
|
|
- 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) {
|
|
|
- log.error("订单插入失败,订单信息: {}");
|
|
|
- return HttpResult.error("保存订单失败");
|
|
|
- }
|
|
|
+ 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);
|
|
|
|
|
|
- // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
- CarInfoVo carInfoVo = ordersAdd.getCarInfoVo();
|
|
|
- InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(carInfoVo, InsOrdersCarInfo.class);
|
|
|
- insOrdersCarInfo.setOrderNo(quoteNo);
|
|
|
- ordersCarInfoService.save(insOrdersCarInfo);
|
|
|
-
|
|
|
- // 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
- 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 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<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
|
|
|
- List<InsOrdersKind> insOrdersKinds = BeanUtil.copyToList(kindInfoVo, InsOrdersKind.class);
|
|
|
- for (InsOrdersKind insOrdersKind : insOrdersKinds) {
|
|
|
- insOrdersKind.setOrderNo(quoteNo);
|
|
|
- }
|
|
|
- insOrdersKindService.saveBatch(insOrdersKinds);
|
|
|
-
|
|
|
- // 税费信息
|
|
|
- VehicleAndVesselTaxVo vehicleAndVesselTax = ordersAdd.getVehicleAndVesselTax();
|
|
|
- InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
|
|
|
- insOrdersTax.setOrderNo(quoteNo);
|
|
|
- insOrdersTaxService.save(insOrdersTax);
|
|
|
-
|
|
|
- // 交强险 险种信息
|
|
|
- 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);
|
|
|
- });
|
|
|
- }
|
|
|
+ InsOrdersCarInfo carInfo = new InsOrdersCarInfo();
|
|
|
+ BeanUtils.copyProperties(carInfo,quoteVo.getCarInfoVo());
|
|
|
+ carInfo.setOrderNo(insOrders.getId());
|
|
|
|
|
|
- InsOrdersExternalPolicy ordersExternalPolicy = ordersAdd.getInsOrdersExternalPolicy();
|
|
|
- ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
|
|
|
- policyService.save(ordersExternalPolicy);
|
|
|
+ InsOrdersCarUserInfo ownersInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(ownersInfo,quoteVo.getOwnersInfo());
|
|
|
|
|
|
+ InsOrdersCarUserInfo insuredPersonInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(insuredPersonInfo,quoteVo.getInsuredPersonInfo());
|
|
|
|
|
|
- // 返回成功信息,表示订单、车辆和用户信息保存成功
|
|
|
- return HttpResult.ok("保存成功");
|
|
|
+ InsOrdersCarUserInfo policyHolderInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(policyHolderInfo,quoteVo.getPolicyHolderInfo());
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- // 如果在保存过程中发生异常,则记录日志并抛出运行时异常
|
|
|
- log.error("保存订单时发生异常", e);
|
|
|
- throw new RuntimeException("保存订单失败,请检查输入数据", e);
|
|
|
- }
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
- 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());
|
|
|
+ public void orderAfterUpdateQuote(String ordersNo,QuoteResultsVo quoteResponse) {
|
|
|
+
|
|
|
+ // 检测主订单是否存在
|
|
|
+ InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getId,ordersNo));
|
|
|
+ AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
|
|
|
+
|
|
|
+ // 更新起保终保时间
|
|
|
+ List<InsOrdersRisk> insOrdersRiskList = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, ordersNo));
|
|
|
+ if(Objects.nonNull(insOrdersRiskList) && !insOrdersRiskList.isEmpty()){
|
|
|
+ for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
|
|
|
+ if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())){
|
|
|
+ insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getStartDate()));
|
|
|
+ insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getEndDate()));
|
|
|
+ }
|
|
|
+ if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())){
|
|
|
+ insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getStartDate()));
|
|
|
+ insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getEndDate()));
|
|
|
+ }
|
|
|
}
|
|
|
- // 插入订单信息,如果插入失败,则返回错误信息
|
|
|
- int insertResult = insOrdersMapper.updateById(insOrders);
|
|
|
- if (insertResult <= 0) {
|
|
|
- log.error("订单插入失败,订单信息: {}");
|
|
|
- return HttpResult.error("修改订单失败");
|
|
|
- }
|
|
|
-
|
|
|
- // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
- InsOrdersCarInfo insOrdersCarInfo = BeanUtil.copyProperties(ordersEnd.getCarInfoVo(), InsOrdersCarInfo.class);
|
|
|
- ordersCarInfoService.update(insOrdersCarInfo,new LambdaUpdateWrapper<>(InsOrdersCarInfo.class).eq(InsOrdersCarInfo::getOrderNo,insOrders.getQuoteNo()));
|
|
|
-
|
|
|
- // 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
- List<InsOrdersCarUserInfo> userInfos = new ArrayList<>();
|
|
|
- InsOrdersCarUserInfo ownersInfo = BeanUtil.copyProperties(ordersEnd.getOwnersInfo(), InsOrdersCarUserInfo.class);
|
|
|
-
|
|
|
- userInfos.add(ownersInfo);
|
|
|
- InsOrdersCarUserInfo policyHolderInfo = BeanUtil.copyProperties(ordersEnd.getPolicyHolderInfo(), InsOrdersCarUserInfo.class);
|
|
|
-
|
|
|
- userInfos.add(policyHolderInfo);
|
|
|
- InsOrdersCarUserInfo insuredPersonInfo = BeanUtil.copyProperties(ordersEnd.getInsuredPersonInfo(), InsOrdersCarUserInfo.class);
|
|
|
-
|
|
|
- userInfos.add(insuredPersonInfo);
|
|
|
- //
|
|
|
- ordersCarUserInfoService.updateBatchById(userInfos);
|
|
|
-
|
|
|
- // 保险订单其他信息
|
|
|
- InsOrdersOtherInfoVo insOrdersOtherInfo = ordersEnd.getInsOrdersOtherInfo();
|
|
|
-
|
|
|
- InsOrdersOther insOrdersOther = BeanUtil.copyProperties(insOrdersOtherInfo, InsOrdersOther.class);
|
|
|
-
|
|
|
- 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()));
|
|
|
-
|
|
|
- // 保险种类信息
|
|
|
- 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);
|
|
|
}
|
|
|
+ insOrdersRiskService.updateBatchById(insOrdersRiskList);
|
|
|
+
|
|
|
+ //更新费用
|
|
|
+ InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>()
|
|
|
+ .eq(InsOrdersCosts::getOrderNo,ordersNo));
|
|
|
+ if(Objects.isNull(ordersCosts)){
|
|
|
+ ordersCosts = new InsOrdersCosts();
|
|
|
+ ordersCosts.setOrderNo(ordersNo);
|
|
|
+ BigDecimal ciPremium = new BigDecimal(quoteResponse.getCiPremium());
|
|
|
+ BigDecimal biPremium = new BigDecimal(quoteResponse.getBiPremium());
|
|
|
+ BigDecimal niPremium = new BigDecimal(quoteResponse.getNiPremium());
|
|
|
+ BigDecimal vvTax = new BigDecimal(quoteResponse.getVvTax());
|
|
|
+
|
|
|
+ ordersCosts.setJqPremium(ciPremium);
|
|
|
+ ordersCosts.setSyPremium(biPremium);
|
|
|
+ ordersCosts.setJyPremium(niPremium);
|
|
|
+ ordersCosts.setTaxPremium(vvTax);
|
|
|
+ ordersCosts.setSumPremium(ciPremium.add(biPremium).add(niPremium).add(vvTax));
|
|
|
+ }
|
|
|
+ insOrdersCostsService.saveOrUpdate(ordersCosts);
|
|
|
+
|
|
|
+ //更新评分
|
|
|
+ InsOrdersOther ordersOther = insOrdersOtherService.getById(ordersNo);
|
|
|
+ if(Objects.isNull(ordersOther)){
|
|
|
+ ordersOther = new InsOrdersOther();
|
|
|
+ ordersOther.setOrderNo(ordersNo);
|
|
|
+ ordersOther.setScore(quoteResponse.getScoreVo().getScore());
|
|
|
+ ordersOther.setJqScore(quoteResponse.getScoreVo().getJqScore());
|
|
|
+ ordersOther.setSyScore(quoteResponse.getScoreVo().getSyScore());
|
|
|
+ ordersOther.setTpColorScore(quoteResponse.getScoreVo().getTpColorScore());
|
|
|
+ }
|
|
|
+ insOrdersOtherService.saveOrUpdate(ordersOther);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -265,68 +241,64 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
|
|
|
@Override
|
|
|
public InsOrdersVo selectById(Long 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;
|
|
|
+ return insOrdersMapper.selectById(id);
|
|
|
}
|
|
|
|
|
|
|
|
|
- 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()));
|
|
|
- });
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public String generateOrders(QuoteVo quoteVo) {
|
|
|
+ try {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ String ordersNo = IdGenerate.nextId();
|
|
|
+ // 保存主订单信息
|
|
|
+ InsOrders insOrders = new InsOrders();
|
|
|
+ insOrders.setId(ordersNo);
|
|
|
+ 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_kind
|
|
|
+
|
|
|
+ // 保存订单其他信息 ins_orders_other
|
|
|
+
|
|
|
+ // 保存订单投保单号 保单号信息 ins_orders_policy
|
|
|
+
|
|
|
+ // 保存订单险种信息 ins_orders_risk
|
|
|
+
|
|
|
+ // 保存订单车船税税信息 ins_orders_tax
|
|
|
+
|
|
|
+ return ordersNo;
|
|
|
+
|
|
|
+ }catch (Exception e){
|
|
|
+ System.out.printf(e.getMessage());
|
|
|
+ return null;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将 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;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
|