|
|
@@ -2,21 +2,36 @@ package com.jzg.quotation.summary.service.impl;
|
|
|
|
|
|
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.orders.po.*;
|
|
|
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
|
|
|
import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
|
|
|
import com.jzg.commons.entity.vo.InsOrdersVo;
|
|
|
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.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 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;
|
|
|
|
|
|
@Service
|
|
|
@@ -43,6 +58,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
@Autowired
|
|
|
private InsOrdersTaxService insOrdersTaxService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersCostsService insOrdersCostsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InsOrdersPolicyService insOrdersPolicyService;
|
|
|
+
|
|
|
/**
|
|
|
* 保存订单信息
|
|
|
*
|
|
|
@@ -62,12 +83,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
try {
|
|
|
// 获取订单对象并设置引用编号
|
|
|
InsOrders insOrders = ordersAdd.getInsOrders();
|
|
|
- Long quoteNo = SnowFlakeUtil.getSnowFlakeId();
|
|
|
+ String quoteNo = String.valueOf(SnowFlakeUtil.getSnowFlakeId());
|
|
|
// 如果生成的引用编号为空,则返回错误信息
|
|
|
if (quoteNo == null) {
|
|
|
return HttpResult.error("生成引用编号失败");
|
|
|
}
|
|
|
- insOrders.setQuoteNo(quoteNo);
|
|
|
+ insOrders.setQuoteNo(String.valueOf(quoteNo));
|
|
|
|
|
|
// 插入订单信息,如果插入失败,则返回错误信息
|
|
|
int insertResult = insOrdersMapper.insert(insOrders);
|
|
|
@@ -78,13 +99,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
|
|
|
// 获取车辆信息对象,并设置订单编号,然后保存车辆信息
|
|
|
InsOrdersCarInfo carInfoVo = ordersAdd.getCarInfoVo();
|
|
|
- carInfoVo.setOrderNo(quoteNo);
|
|
|
+ carInfoVo.setOrderNo(String.valueOf(quoteNo));
|
|
|
ordersCarInfoService.save(carInfoVo);
|
|
|
|
|
|
// 获取用户信息对象,并设置订单编号,然后保存用户信息
|
|
|
List<InsOrdersCarUserInfo> carUserInfoList = ordersAdd.getCarUserInfoList();
|
|
|
for (InsOrdersCarUserInfo carUserInfo : carUserInfoList) {
|
|
|
- carUserInfo.setOrderNo(quoteNo);
|
|
|
+ carUserInfo.setOrderNo(String.valueOf(quoteNo));
|
|
|
}
|
|
|
ordersCarUserInfoService.saveBatch(carUserInfoList);
|
|
|
|
|
|
@@ -131,6 +152,33 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ @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);
|
|
|
+
|
|
|
+ InsOrdersCarInfo carInfo = new InsOrdersCarInfo();
|
|
|
+ BeanUtils.copyProperties(carInfo,quoteVo.getCarInfoVo());
|
|
|
+ carInfo.setOrderNo(insOrders.getId());
|
|
|
+
|
|
|
+ InsOrdersCarUserInfo ownersInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(ownersInfo,quoteVo.getOwnersInfo());
|
|
|
+
|
|
|
+ InsOrdersCarUserInfo insuredPersonInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(insuredPersonInfo,quoteVo.getInsuredPersonInfo());
|
|
|
+
|
|
|
+ InsOrdersCarUserInfo policyHolderInfo = new InsOrdersCarUserInfo();
|
|
|
+ BeanUtils.copyProperties(policyHolderInfo,quoteVo.getPolicyHolderInfo());
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public IPage<OrdersListVo> pageList(InsOrdersParam insOrdersParam) {
|
|
|
@@ -144,6 +192,55 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @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);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|