|
|
@@ -680,11 +680,51 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public String generateOrders(QuoteVo quoteVo,String companyName) {
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
- String orderNo = IdGenerate.nextId();
|
|
|
+ // 生成订单的条件
|
|
|
+ // 1个保险公司只有一个主订单 不区分险种
|
|
|
+ InsOrders mainOrders = this.getMainOrders(
|
|
|
+ quoteVo.getOrder().getInsuranceCompanyCode(),
|
|
|
+ quoteVo.getCarInfoVo().getLicenseNo(),
|
|
|
+ quoteVo.getCarInfoVo().getVinNo());
|
|
|
+ boolean isExistsMainOrder = false;
|
|
|
+ if (Objects.nonNull(mainOrders))
|
|
|
+ {
|
|
|
+ isExistsMainOrder = true;
|
|
|
+ }
|
|
|
+ String mainOrderNo = "";
|
|
|
+ // 如果订单号为0 则生成主订单
|
|
|
+ if (!isExistsMainOrder) {
|
|
|
+ // 生成主订单
|
|
|
+ mainOrderNo = this.saveBaseOrderorSubOrder(quoteVo,companyName,"0");
|
|
|
+ }else{
|
|
|
+ // 更新主订单
|
|
|
+ mainOrderNo = this.updateMainOrders(quoteVo,mainOrderNo,companyName);
|
|
|
+ }
|
|
|
+ // 生成子订单
|
|
|
+ return this.saveBaseOrderorSubOrder(quoteVo,companyName,this.saveBaseOrderorSubOrder(quoteVo,companyName,mainOrderNo));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存主订单或者子订单
|
|
|
+ * @param quoteVo
|
|
|
+ * @param companyName
|
|
|
+ * @param mainOrderNo 主订单号
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String saveBaseOrderorSubOrder(QuoteVo quoteVo,String companyName,String mainOrderNo){
|
|
|
// 保存主订单信息
|
|
|
InsOrders insOrders = new InsOrders();
|
|
|
- insOrders.setId(orderNo);
|
|
|
+ // 生成主订单编号
|
|
|
+ if ("0".equals(mainOrderNo)){
|
|
|
+ insOrders.setParentId("0");
|
|
|
+ insOrders.setId(IdGenerate.nextId());
|
|
|
+ }else{
|
|
|
+ // 生成子订单编号
|
|
|
+ insOrders.setParentId(mainOrderNo);
|
|
|
+ insOrders.setId(IdGenerate.nextId());
|
|
|
+ }
|
|
|
+
|
|
|
insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
|
|
|
insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
|
|
|
insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
|
|
|
@@ -703,7 +743,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
insOrdersMapper.insert(insOrders);
|
|
|
|
|
|
// 保存订单车辆信息
|
|
|
- InsOrdersCarInfo carInfo = ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo(), formatter);
|
|
|
+ InsOrdersCarInfo carInfo = ordersCarInfoService.createCarInfo(insOrders, quoteVo.getCarInfoVo());
|
|
|
|
|
|
// 保存订单用户信息
|
|
|
List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = new ArrayList<>();
|
|
|
@@ -745,9 +785,74 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
null
|
|
|
);
|
|
|
insOrdersTrackService.save(track);
|
|
|
- return orderNo;
|
|
|
+ return insOrders.getId();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 更新主订单信息
|
|
|
+ * @param quoteVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String updateMainOrders(QuoteVo quoteVo,String mainOrderNo, String companyName){
|
|
|
+ InsOrders insOrders = this.getById(mainOrderNo);
|
|
|
+ insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
|
|
|
+ insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
|
|
|
+ insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
|
|
|
+ insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
|
|
|
+ insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
|
|
|
+ insOrders.setCompanyName(companyName);
|
|
|
+ insOrders.setProductId(quoteVo.getProductId());
|
|
|
+ insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getProductId()));
|
|
|
+ String productName = ProductsType.getProductNameByCode(quoteVo.getProductId());
|
|
|
+ insOrders.setProductName(productName);
|
|
|
+ if(Objects.isNull(insOrders.getRealQuoteUserId())) {
|
|
|
+ insOrders.setRealQuoteUserId(baseController.getUserName());
|
|
|
+ }else{
|
|
|
+ insOrders.setRealQuoteUserId(quoteVo.getOrder().getRealQuoteUserId());
|
|
|
+ }
|
|
|
+ this.updateById(insOrders);
|
|
|
+
|
|
|
+ // 更新主订单车辆信息
|
|
|
+ InsOrdersCarInfo carInfo = ordersCarInfoService.getById(mainOrderNo);
|
|
|
+ ordersCarInfoService.updateMainOrderCarInfo(quoteVo.getCarInfoVo(), carInfo);
|
|
|
+
|
|
|
+ // 更新主订单用户信息
|
|
|
+ List<InsOrdersCarUserInfo> subOrdersCarUserInfoList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = ordersCarUserInfoService.getByOrderId(mainOrderNo);
|
|
|
+ // 添加车主信息
|
|
|
+ subOrdersCarUserInfoList.add(new InsOrdersCarUserInfo(quoteVo.getOwnersInfo(), insOrders.getId(),1));
|
|
|
+ // 添加投保人信息
|
|
|
+ subOrdersCarUserInfoList.add(new InsOrdersCarUserInfo(quoteVo.getPolicyHolderInfo(), insOrders.getId(),2));
|
|
|
+ // 添加被保险人信息
|
|
|
+ subOrdersCarUserInfoList.add(new InsOrdersCarUserInfo(quoteVo.getInsuredPersonInfo(), insOrders.getId(),3));
|
|
|
+ ordersCarUserInfoService.updateMainOrderCarUserInfo(insOrdersCarUserInfoList, subOrdersCarUserInfoList);
|
|
|
+
|
|
|
+ // 更新订单费用信息 ins_orders_costs
|
|
|
+ insOrdersCostsService.updateMainCosts(insOrders);
|
|
|
+
|
|
|
+ // 更新订单险种信息 ins_orders_kind
|
|
|
+ insOrdersKindService.updateMainKind(quoteVo.getKindInfoVo(), mainOrderNo);
|
|
|
+
|
|
|
+ // 在报价的时候更新其他信息
|
|
|
+ // 更新订单其他信息 ins_orders_other
|
|
|
+// insOrdersOtherService.createOther(insOrders);
|
|
|
+
|
|
|
+ // 保存订单投保单号 保单号信息 ins_orders_policy
|
|
|
+// insOrdersPolicyService.createPolicy(insOrders);
|
|
|
+
|
|
|
+ // 保存订单险种信息 ins_orders_risk
|
|
|
+ insOrdersRiskService.updateMainRisk(quoteVo.getCiRiskInfoVo(),quoteVo.getBiRiskInfoVo(), mainOrderNo);
|
|
|
+
|
|
|
+ // 保存订单车船税税信息 ins_orders_tax
|
|
|
+ insOrdersTaxService.updateMainTax(quoteVo, mainOrderNo);
|
|
|
+ return mainOrderNo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public InsOrders getMainOrders(String companyId, String licenseNo, String vinNo) {
|
|
|
+ return baseMapper.getBaseOrders(companyId, licenseNo, vinNo);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@Override
|