Преглед изворни кода

Merge remote-tracking branch 'origin/master'

dongxin пре 1 година
родитељ
комит
ff1398a141
39 измењених фајлова са 524 додато и 83 уклоњено
  1. 2 2
      commons/src/main/java/com/jzg/commons/core/base/BaseModel.java
  2. 4 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoDto.java
  3. 3 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java
  4. 4 0
      commons/src/main/java/com/jzg/commons/entity/po/SysDept.java
  5. 35 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  6. 11 2
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  7. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserSelectVo.java
  8. 0 6
      gateway/src/main/java/com/jzg/GateWayApplication.java
  9. 0 12
      gateway/src/main/java/com/jzg/filter/DecryptFilter.java
  10. 16 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  11. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  12. 9 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java
  13. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarUserInfoService.java
  14. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCostsService.java
  15. 7 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersKindService.java
  16. 8 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersRiskService.java
  17. 10 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  18. 7 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersTaxService.java
  19. 43 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java
  20. 34 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java
  21. 11 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCostsServiceImpl.java
  22. 29 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java
  23. 27 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java
  24. 115 9
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  25. 7 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersTaxServiceImpl.java
  26. 2 0
      tenant/insurance/quotation-summary/src/main/resources/application.yaml
  27. 10 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  28. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java
  29. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java
  30. 1 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java
  31. 4 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  32. 16 14
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java
  33. 8 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  34. 5 3
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  35. 1 0
      tenant/organization/src/main/resources/application.yml
  36. 3 1
      tenant/organization/src/main/resources/mapper/SysActivityMapper.xml
  37. 54 19
      tenant/organization/src/main/resources/mapper/SysDeptMapper.xml
  38. 6 2
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml
  39. 2 1
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 2 - 2
commons/src/main/java/com/jzg/commons/core/base/BaseModel.java

@@ -23,7 +23,7 @@ public class BaseModel implements Serializable {
 
     @Schema(description = "创建时间")
     @TableField(fill = FieldFill.INSERT)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "修改人")
@@ -31,7 +31,7 @@ public class BaseModel implements Serializable {
     private String updateBy;
 
     @Schema(description = "修改时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updateTime;
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoDto.java

@@ -34,6 +34,10 @@ public class SysUserJzgInfoDto {
     public String leaderName;
     public String referrerId;
     public String referrerName;
+
+    @Schema(description = "工号")
+    private String workNumber;
+
     @Schema(description = "角色名称")
     public String roleName;
 

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java

@@ -20,6 +20,9 @@ public class InsOrders extends BaseModel {
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;
 
+    @Schema(description = "parentId")
+    private String parentId;
+
     @Schema(description = "报价订单号")
     private String quoteNo;
 

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysDept.java

@@ -75,6 +75,10 @@ public class SysDept extends BaseModel implements Serializable{
     @Schema(description = "子机构")
     private List<SysDept> children;
 
+    @Schema(description = "用户数量")
+    @TableField(exist = false)
+    private String userCount;
+
 
     public void setExScope(SysDeptVo sysDeptVo) {
         String exhibitionScope = "";

+ 35 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -41,6 +41,12 @@ public class QuoteEchoVo extends QuoteVo {
         private String orderStatus;
         private String companyName;
         private String productsName;
+        private String agreementName;
+        private String createBy;
+        private String createTime;
+        private String quoteTime;
+        private String signingTime;
+        private String payTime;
     }
 
     private OrderBaseVo order;
@@ -50,6 +56,29 @@ public class QuoteEchoVo extends QuoteVo {
      */
     private String ordersNo;
 
+    private Salesman salesmanInfo;
+
+    /**
+     * 业务员信息
+     */
+    @Data
+    private static class Salesman{
+        @Schema(description = "业务员姓名")
+        private String name;
+
+        @Schema(description = "业务员手机号")
+        private String mobile;
+
+        @Schema(description = "业务员类型")
+        private String typeAttr;
+
+        @Schema(description = "业务员归属ID")
+        private String deptId;
+
+        @Schema(description = "业务员归属")
+        private String deptName;
+    }
+
     /**
      * 费用信息
      */
@@ -126,6 +155,8 @@ public class QuoteEchoVo extends QuoteVo {
             this.setOrder(new OrderBaseVo());
         }
         this.setOrdersNo(insOrdersVo.getId());
+        this.getOrder().setAgreementId(insOrdersVo.getInsOrders().getAgreementId());
+        this.getOrder().setAgreementName(insOrdersVo.getAgreementName());
         this.getOrder().setOrdersNo(insOrdersVo.getId());
         this.getOrder().setQuoteNo(insOrdersVo.getQuoteNo());
         this.getOrder().setInsuranceCompanyCode(insOrdersVo.getCompanyId());
@@ -133,6 +164,10 @@ public class QuoteEchoVo extends QuoteVo {
         this.getOrder().setProductId(insOrdersVo.getProductId());
         this.getOrder().setProductsName(insOrdersVo.getProductName());
         this.getOrder().setOrderStatus(insOrdersVo.getInsOrders().getOrderStatus());
+        this.getOrder().setCreateBy(insOrdersVo.getCreateBy());
+        this.getOrder().setCreateTime(insOrdersVo.getCreateTime().toString());
+        this.getOrder().setQuoteTime(insOrdersVo.getCreateTime().toString());
+        this.getOrder().setSigningTime(insOrdersVo.getPayTime());
         this.setErrorMessage(insOrdersVo.getErrorMessage());
 
         //车辆信息处理

+ 11 - 2
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java

@@ -34,6 +34,12 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "保险公司名称")
     private String companyName;
 
+    @Schema(description = "协议名称")
+    private String agreementName;
+
+    @Schema(description = "协议类型")
+    private String agreementType;
+
     @Schema(description = "审核状态")
     private byte auditStatus;
 
@@ -43,12 +49,15 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "录单人")
     private String createBy;
 
-    @Schema(description = "录单人")
+    @Schema(description = "审核人")
     private String auditId;
 
-    @Schema(description = "录单人")
+    @Schema(description = "审核人姓名人")
     private String auditName;
 
+    @Schema(description = "支付时间")
+    private String payTime;
+
     @Schema(description = "错误信息")
     private String errorMessage;
 

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserSelectVo.java

@@ -20,4 +20,7 @@ public class SysUserSelectVo {
 
     @Schema(description = "用户id")
     private String userId;
+
+    @Schema(description = "用户工号")
+    private String workNumber;
 }

+ 0 - 6
gateway/src/main/java/com/jzg/GateWayApplication.java

@@ -1,15 +1,9 @@
 package com.jzg;
 
-import com.jzg.commons.mapper.OperatorTrajectoryMapper;
-import com.jzg.commons.service.OperatorTrajectoryService;
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.FilterType;
 
 @EnableDiscoveryClient
 @SpringBootApplication(exclude ={DataSourceAutoConfiguration.class},scanBasePackages = "com.jzg")

+ 0 - 12
gateway/src/main/java/com/jzg/filter/DecryptFilter.java

@@ -1,31 +1,20 @@
 package com.jzg.filter;
 
 import cn.hutool.core.util.HexUtil;
-import cn.hutool.crypto.ECKeyUtil;
 import cn.hutool.crypto.SmUtil;
-import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.SM2;
 import com.alibaba.fastjson.JSONObject;
 import com.jzg.commons.constants.EncryptionConstants;
 import com.jzg.commons.core.base.BaseController;
-import com.jzg.commons.util.sm.Sm2Util;
 import com.jzg.commons.util.sm.Sm4Util;
-import org.bouncycastle.crypto.engines.SM2Engine;
-import org.bouncycastle.crypto.signers.PlainDSAEncoding;
-import org.bouncycastle.jcajce.provider.symmetric.SM4;
-import org.redisson.Redisson;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutputMessage;
-import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
 import org.springframework.core.io.buffer.DataBuffer;
 import org.springframework.core.io.buffer.DataBufferFactory;
 import org.springframework.core.io.buffer.DataBufferUtils;
-import org.springframework.core.io.buffer.DefaultDataBufferFactory;
-import org.springframework.http.HttpHeaders;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
 import org.springframework.stereotype.Component;
@@ -36,7 +25,6 @@ import reactor.core.publisher.Mono;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 import java.security.PrivateKey;
-import java.util.concurrent.atomic.AtomicReference;
 
 
 @Component

+ 16 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -203,7 +203,8 @@ public class UnifyOrderManager {
 
         // 添加车辆没有的参数: 车辆明细、
         QuoteInfoParameterFilling.setParameterSettings(quoteVo, esmInsCompanyHttpResult.getData().getCompanyCode());
-        // 生成订单
+
+        // 生成主订单及子订单  返回子订单id
         String ordersNo = insOrdersService.generateOrders(quoteVo, companyName);
         quoteVo.getOrder().setOrdersNo(ordersNo);
         // 先生成订单 在进行保司相关代码转换 解决入库时存储的是保司所需的数据
@@ -226,15 +227,26 @@ public class UnifyOrderManager {
 
         // 报价轨迹
         String optContent = baseController.getUserName() + "提交了报价";
+        // 获取报价结果
+        String result = "";
+        if (quoteResultsVo.getQuoteStatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
+            // 报价成功订单轨迹返回结果
+            result = "总保费:" + quoteResultsVo.getCosts().getSumPremium() + ",交强险:" + quoteResultsVo.getCosts().getCiPremium()
+                    + ",商业险:" + quoteResultsVo.getCosts().getBiPremium() +",驾意险:"+ quoteResultsVo.getCosts().getNiPremium()
+                    + ",车船税:" + quoteResultsVo.getCosts().getVvTax();
+        } else {
+            // 报价失败订单轨迹返回结果
+            result = quoteResultsVo.getErrorMessage();
+        }
         InsOrdersTrack track = new InsOrdersTrack(ordersNo,
-                esmInsCompanyHttpResult.getData().getCompanyCode(),
+                quoteVo.getOrder().getInsuranceCompanyCode(),
                 quoteVo.getCarInfoVo().getLicenseNo(),
                 quoteResultsVo.getQuoteStatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())
                         ? QuoteNumberConstant.QuoteResult.SUCCESS.getCode()
                         : QuoteNumberConstant.QuoteResult.FAIL.getCode(),
                 QuoteNumberConstant.QuoteOptType.OPT_TYPE_1.getCode(),
                 optContent,
-                quoteResultsVo.getErrorMessage()
+                result
         );
         insOrdersTrackService.save(track);
         // 报价后更新订单
@@ -290,7 +302,7 @@ public class UnifyOrderManager {
                     insOrdersCarInfo.getLicenseNo(),
                     QuoteNumberConstant.QuoteResult.SUCCESS.getCode(),
                     QuoteNumberConstant.QuoteOptType.OPT_TYPE_5.getCode(),
-                    optContent,null
+                    optContent,"核保成功"
             );
             insOrdersTrackService.save(track);
             // 发送订单状态变更消息

+ 9 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -29,4 +29,13 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
     Page<OrderListVo> queryOrderList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
 
     List<HistoryQuoteResultVo> getHistoryQuote(@Param("userName") String userName);
+
+    /**
+     * 获取主订单
+     * @param companyId
+     * @param licenseNo
+     * @param vinNo
+     * @return
+     */
+    InsOrders getBaseOrders(String companyId,String licenseNo, String vinNo);
 }

+ 9 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java

@@ -9,10 +9,18 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import java.time.format.DateTimeFormatter;
 
 public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
-    InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter);
+    InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo);
 
     InsOrdersCarInfo getByOrderId(String orderId);
 
+    /**
+     * 更新主订单车辆信息
+     * @param carInfoVo
+     * @param insOrdersCarInfo
+     * @return
+     */
+    InsOrdersCarInfo updateMainOrderCarInfo(CarInfoVo carInfoVo, InsOrdersCarInfo insOrdersCarInfo);
+
     /**
      * 获取车辆档案信息
      * @param licenseNo

+ 9 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarUserInfoService.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 
 import java.util.List;
@@ -12,4 +13,12 @@ public interface InsOrdersCarUserInfoService extends IService<InsOrdersCarUserIn
     List<InsOrdersCarUserInfo> getByOrderId(String orderId);
 
     void deleteOrderNo(Long orderNo);
+
+    /**
+     * 更新主订单人员信息
+     * @param insOrdersCarUserInfoList 主订单人员信息
+     * @param subOrdersCarUserInfoList 子订单人员信息
+     * @return
+     */
+    List<InsOrdersCarUserInfo> updateMainOrderCarUserInfo(List<InsOrdersCarUserInfo> insOrdersCarUserInfoList, List<InsOrdersCarUserInfo> subOrdersCarUserInfoList);
 }

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCostsService.java

@@ -6,4 +6,10 @@ import com.jzg.commons.entity.orders.po.InsOrdersCosts;
 
 public interface InsOrdersCostsService extends IService<InsOrdersCosts> {
     void createCosts(InsOrders insOrders);
+
+    /**
+     * 更新主订单费用信息
+     * @param insOrders
+     */
+    void updateMainCosts(InsOrders insOrders);
 }

+ 7 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersKindService.java

@@ -12,4 +12,11 @@ public interface InsOrdersKindService extends IService<InsOrdersKind> {
 
     void deleteOrderNo(Long orderNo);
 
+    /**
+     * 更新主订单险种信息
+     * @param subKindInfoVo
+     * @param mainOrderNo
+     */
+    void updateMainKind(List<KindInfoVo> subKindInfoVo,String mainOrderNo);
+
 }

+ 8 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersRiskService.java

@@ -14,5 +14,13 @@ public interface InsOrdersRiskService extends IService<InsOrdersRisk> {
 
     void createRisk(InsOrders insOrders, RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo);
 
+    /**
+     * 更新主订单的险种信息
+     * @param ciRiskInfoVo
+     * @param biRiskInfoVo
+     * @param mainOrderNo
+     */
+    void updateMainRisk(RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo,String mainOrderNo);
+
     List<InsOrdersRisk> getById(String orderNo);
 }

+ 10 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -45,6 +45,16 @@ public interface InsOrdersService extends IService<InsOrders> {
 
     String generateOrders(QuoteVo quoteVo, String companyName);
 
+
+    /**
+     * 获取主订单信息 用于判断是否存在主订单
+     * @param companyId
+     * @param licenseNo
+     * @param vinNo
+     * @return
+     */
+    InsOrders getMainOrders(String companyId,String licenseNo, String vinNo);
+
     /**
      * 设置人员地址
      *

+ 7 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersTaxService.java

@@ -9,4 +9,11 @@ public interface InsOrdersTaxService extends IService<InsOrdersTax> {
 
     void createTax(InsOrders insOrders, QuoteVo quoteVo);
 
+    /**
+     * 更新主订单的税费信息
+     * @param insOrders
+     * @param quoteVo
+     */
+    void updateMainTax(QuoteVo quoteVo, String mainOrderNo);
+
 }

+ 43 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java

@@ -28,7 +28,8 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
     InsOrdersCarUserInfoService insOrdersCarUserInfoService;
 
     @Override
-    public InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter) {
+    public InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         InsOrdersCarInfo info = new InsOrdersCarInfo();
         info.setOrderNo(insOrders.getId());
         info.setBrandName(carInfoVo.getBrandName());
@@ -73,6 +74,47 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
                 .eq(InsOrdersCarInfo::getOrderNo, orderId));
     }
 
+    @Override
+    public InsOrdersCarInfo updateMainOrderCarInfo(CarInfoVo carInfoVo, InsOrdersCarInfo insOrdersCarInfo) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+        insOrdersCarInfo.setOrderNo(insOrdersCarInfo.getOrderNo());
+        insOrdersCarInfo.setBrandName(carInfoVo.getBrandName());
+        insOrdersCarInfo.setLicenseNo(carInfoVo.getLicenseNo());
+        insOrdersCarInfo.setRegistered(carInfoVo.getLicenseNo() == null || carInfoVo.getLicenseNo().isEmpty());
+        insOrdersCarInfo.setVinNo(carInfoVo.getVinNo());
+        insOrdersCarInfo.setEngineNo(carInfoVo.getEngineNo());
+        insOrdersCarInfo.setCarYear(carInfoVo.getCarYear());
+        insOrdersCarInfo.setDisplacement(carInfoVo.getDisplacement());
+        insOrdersCarInfo.setSeatCount(Integer.parseInt(carInfoVo.getSeatCount()));
+        insOrdersCarInfo.setCompleteKerbMass(new BigDecimal(carInfoVo.getCompleteKerbMass()));
+        if(Objects.nonNull(carInfoVo.getLimitLoad())) {
+            insOrdersCarInfo.setLimitLoad(new BigDecimal(carInfoVo.getLimitLoad()));
+        }
+        insOrdersCarInfo.setPowerScale(new BigDecimal(carInfoVo.getPowerScale()));
+        insOrdersCarInfo.setPurchasePrice(new BigDecimal(carInfoVo.getPurchasePrice()));
+        insOrdersCarInfo.setCarNatureCode(carInfoVo.getCarNatureCode());
+        insOrdersCarInfo.setVehicleUseCode(carInfoVo.getVehicleUseCode());
+        insOrdersCarInfo.setCarTypeCode(carInfoVo.getCarTypeCode());
+        insOrdersCarInfo.setCarKindCode(carInfoVo.getCarKindCode());
+        insOrdersCarInfo.setEnergyTypeCode(carInfoVo.getEnergyTypeCode());
+        insOrdersCarInfo.setPropertyCode(carInfoVo.getPropertyCode());
+        insOrdersCarInfo.setLicenseColorCode(carInfoVo.getLicenseColorCode());
+        insOrdersCarInfo.setCarKindDetailIdCode(carInfoVo.getCarKindDetailIdCode());
+        insOrdersCarInfo.setLicenseKindCode(carInfoVo.getLicenseKindCode());
+        insOrdersCarInfo.setRegisterDate(LocalDate.parse(carInfoVo.getRegisterDate(),formatter).atStartOfDay());
+        insOrdersCarInfo.setIssueDate(LocalDate.parse(carInfoVo.getIssueDate(),formatter).atStartOfDay());
+        insOrdersCarInfo.setTransfer(Integer.parseInt(carInfoVo.isTransfer() ? "1" : "0"));
+        if (insOrdersCarInfo.getTransfer() == 1) {
+            insOrdersCarInfo.setTransferDate(LocalDate.parse(carInfoVo.getTransferDate(),formatter).atStartOfDay());
+        } else {
+            insOrdersCarInfo.setTransferDate(null);
+        }
+        insOrdersCarInfo.setTransferBi(Integer.parseInt(carInfoVo.isBiTransfer() ? "1" : "0"));
+        this.save(insOrdersCarInfo);
+        return insOrdersCarInfo;
+    }
+
     @Override
     public QuoteVo getCarRecord(String licenseNo, String carKindCode) {
         QuoteVo quoteVo = new QuoteVo();

+ 34 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java

@@ -2,11 +2,14 @@ package com.jzg.quotation.summary.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.quotation.summary.mapper.InsOrdersCarUserInfoMapper;
 import com.jzg.quotation.summary.service.InsOrdersCarUserInfoService;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 @Service
@@ -16,6 +19,37 @@ public class InsOrdersCarUserInfoServiceImpl extends ServiceImpl<InsOrdersCarUse
         baseMapper.deleteOrderNo(orderNo);
     }
 
+    @Override
+    public List<InsOrdersCarUserInfo> updateMainOrderCarUserInfo(List<InsOrdersCarUserInfo> insOrdersCarUserInfoList, List<InsOrdersCarUserInfo> subOrdersCarUserInfoList) {
+        for (InsOrdersCarUserInfo carUserInfo: insOrdersCarUserInfoList) {
+            InsOrdersCarUserInfo insOrdersCarUserInfo = subOrdersCarUserInfoList.stream().filter(x -> x.getPolicyPersonType().equals(carUserInfo.getPolicyPersonType())).findFirst().get();
+            carUserInfo.setPersonType(insOrdersCarUserInfo.getPersonType());
+            carUserInfo.setName(insOrdersCarUserInfo.getName());
+            carUserInfo.setIdentifyNumber(insOrdersCarUserInfo.getIdentifyNumber());
+            carUserInfo.setAge(insOrdersCarUserInfo.getAge());
+            carUserInfo.setGender(insOrdersCarUserInfo.getGender());
+            carUserInfo.setAddr(insOrdersCarUserInfo.getAddr());
+            carUserInfo.setIdentifyValidDate(insOrdersCarUserInfo.getIdentifyValidDate());
+            carUserInfo.setIdentifyValidEndDate(insOrdersCarUserInfo.getIdentifyValidEndDate());
+            carUserInfo.setMobile(insOrdersCarUserInfo.getMobile());
+            carUserInfo.setEmail(insOrdersCarUserInfo.getEmail());
+            carUserInfo.setProvinceCode(insOrdersCarUserInfo.getProvinceCode());
+            carUserInfo.setCityCode(insOrdersCarUserInfo.getCityCode());
+            carUserInfo.setCountyCode(insOrdersCarUserInfo.getCountyCode());
+
+            if (insOrdersCarUserInfo.getPersonType().equals("1")) {
+                carUserInfo.setCerType(1); // 个人
+            } else {
+                carUserInfo.setCerType(2); // 法人
+                carUserInfo.setProvinceCode(insOrdersCarUserInfo.getProvinceCode());
+                carUserInfo.setCityCode(insOrdersCarUserInfo.getCityCode());
+                carUserInfo.setCountyCode(insOrdersCarUserInfo.getCountyCode());
+            }
+        }
+        this.updateBatchById(insOrdersCarUserInfoList);
+        return insOrdersCarUserInfoList;
+    }
+
 //    @Override
 //    public InsOrdersCarUserInfo createUserInfo(String orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter,Integer policyPersonType) {
 //        InsOrdersCarUserInfo info = new InsOrdersCarUserInfo();

+ 11 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCostsServiceImpl.java

@@ -15,4 +15,15 @@ public class InsOrdersCostsServiceImpl extends ServiceImpl<InsOrdersCostsMapper,
         insOrdersCosts.setOrderNo(insOrders.getId());
         this.save(insOrdersCosts);
     }
+
+    @Override
+    public void updateMainCosts(InsOrders insOrders) {
+
+        InsOrdersCosts insOrdersCosts = new InsOrdersCosts();
+        insOrdersCosts.setOrderNo(insOrders.getId());
+        this.updateById(insOrdersCosts);
+
+    }
+
+
 }

+ 29 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java

@@ -48,4 +48,33 @@ public class InsOrdersKindServiceImpl extends ServiceImpl<InsOrdersKindMapper, I
     public void deleteOrderNo(Long orderNo) {
         baseMapper.deleteOrderNo(orderNo);
     }
+
+    @Override
+    public void updateMainKind(List<KindInfoVo> subKindInfoVo,String mainOrderNo) {
+        // 先删除主订单险种信息
+        this.deleteOrderNo(Long.parseLong(mainOrderNo));
+        List<InsOrdersKind> insOrdersKinds = new ArrayList<>();
+        if (CollUtil.isNotEmpty(subKindInfoVo)) {
+            for (KindInfoVo kindInfoVo1 : subKindInfoVo) {
+                InsOrdersKind insOrdersKind = new InsOrdersKind();
+                insOrdersKind.setOrderNo(mainOrderNo);
+                insOrdersKind.setKindCode(kindInfoVo1.getKindCode());
+                insOrdersKind.setKindName(kindInfoVo1.getKindName());
+                if(StringUtils.isNotEmpty(kindInfoVo1.getAmount())){
+                    insOrdersKind.setAmount(new BigDecimal(kindInfoVo1.getAmount()));
+                }
+                if(Objects.nonNull(kindInfoVo1.getServiceTimes())) {
+                    insOrdersKind.setServiceTimes(Integer.parseInt(kindInfoVo1.getServiceTimes()));
+                }
+                if(Objects.nonNull(kindInfoVo1.getUnitAmount())) {
+                    insOrdersKind.setUnitAmount(new BigDecimal(kindInfoVo1.getUnitAmount()));
+                }
+                if(Objects.nonNull(kindInfoVo1.getDeductibleRate())) {
+                    insOrdersKind.setDeductibleRate(new BigDecimal(kindInfoVo1.getDeductibleRate()));
+                }
+                insOrdersKinds.add(insOrdersKind);
+            }
+            this.saveBatch(insOrdersKinds);
+        }
+    }
 }

+ 27 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java

@@ -47,6 +47,33 @@ public class InsOrdersRiskServiceImpl extends ServiceImpl<InsOrdersRiskMapper, I
         this.saveBatch(insOrdersRiskList);
     }
 
+    @Override
+    public void updateMainRisk(RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo,String mainOrderNo) {
+        // 先删除 再新增
+        this.deleteOrderNo(Long.parseLong(mainOrderNo));
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        List<InsOrdersRisk> insOrdersRiskList = new ArrayList<>();
+        if (Objects.nonNull(ciRiskInfoVo)) {
+            InsOrdersRisk ciInsOrdersRisk = new InsOrdersRisk();
+            ciInsOrdersRisk.setOrderNo(mainOrderNo);
+            ciInsOrdersRisk.setRiskName("交强险");
+            ciInsOrdersRisk.setRiskCode(ciRiskInfoVo.getRiskCode());
+            ciInsOrdersRisk.setStartDate(LocalDateTime.parse(ciRiskInfoVo.getStartDate(), formatter));
+            ciInsOrdersRisk.setEndDate(LocalDateTime.parse(ciRiskInfoVo.getEndDate(), formatter));
+            insOrdersRiskList.add(ciInsOrdersRisk);
+        }
+        if (Objects.nonNull(biRiskInfoVo)) {
+            InsOrdersRisk biInsOrdersRisk = new InsOrdersRisk();
+            biInsOrdersRisk.setOrderNo(mainOrderNo);
+            biInsOrdersRisk.setRiskName("商业险");
+            biInsOrdersRisk.setRiskCode(biRiskInfoVo.getRiskCode());
+            biInsOrdersRisk.setStartDate(LocalDateTime.parse(biRiskInfoVo.getStartDate(), formatter));
+            biInsOrdersRisk.setEndDate(LocalDateTime.parse(biRiskInfoVo.getEndDate(), formatter));
+            insOrdersRiskList.add(biInsOrdersRisk);
+        }
+        this.saveBatch(insOrdersRiskList);
+    }
+
     @Override
     public List<InsOrdersRisk> getById(String orderNo) {
         return baseMapper.selectList(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, orderNo));

+ 115 - 9
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -29,10 +29,7 @@ import com.jzg.commons.entity.quote.vo.aggregated.OrderStatusResultVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.aggregated.UnderwritingResultsVo;
-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.entity.vo.PersonAreaVo;
+import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
@@ -335,6 +332,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         if (insOrdersVo == null) {
             throw new IllegalArgumentException("查询结果为空,无法处理订单信息");
         }
+        // 协议名称、协议类型
+        HttpResult<AgreementInfoVo> ptlAgreement =orgClient.queryAgreementById(insOrdersVo.getOrder().getAgreementId(),baseController.getToken());
+        insOrdersVo.setAgreementType(ptlAgreement.getData().getAgreement().getAgreementType());
+        insOrdersVo.setAgreementName(ptlAgreement.getData().getAgreement().getAgreementName());
         // 2. 处理车辆用户信息列表
         if (CollectionUtil.isNotEmpty(insOrdersVo.getCarUserInfoList())) {
             for (InsOrdersCarUserInfo carUserInfo : insOrdersVo.getCarUserInfoList()) {
@@ -679,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()); // 订单状态 报价中
@@ -702,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<>();
@@ -744,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

+ 7 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersTaxServiceImpl.java

@@ -19,4 +19,11 @@ public class InsOrdersTaxServiceImpl extends ServiceImpl<InsOrdersTaxMapper, Ins
         this.save(insOrdersTax);
     }
 
+    @Override
+    public void updateMainTax(QuoteVo quoteVo, String mainOrderNo) {
+        InsOrdersTax mainOrderTax = this.getById(mainOrderNo);
+        mainOrderTax.setTaxRelifFlag(Integer.parseInt(quoteVo.getVehicleAndVesselTaxVo().getTaxRelifFlag()));
+        this.updateById(mainOrderTax);
+    }
+
 }

+ 2 - 0
tenant/insurance/quotation-summary/src/main/resources/application.yaml

@@ -4,6 +4,8 @@ server:
 spring:
   application:
     name: quotation-summary
+  profiles:
+    active: dev
   servlet:
     multipart:
       max-file-size: 10MB

+ 10 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -538,4 +538,14 @@
         LIMIT 10
     </select>
 
+    <select id="getBaseOrders" resultType="com.jzg.commons.entity.orders.po.InsOrders">
+        SELECT o.*
+        FROM ins_orders o
+                 LEFT JOIN ins_orders_car_info c ON o.id = c.order_no
+        WHERE o.parent_id = 0
+          AND o.company_id = #{companyId}
+          AND c.license_no = #{licenseNo}
+            AND c.vin_no = #{vinNo}
+    </select>
+
 </mapper>

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/controller/SchemeController.java

@@ -36,8 +36,8 @@ public class SchemeController {
 
     @Operation(summary = "根据保司、险种、方案类型获取方案")
     @GetMapping("/getSchemeByCompany")
-    public HttpResult getSchemeAll(String companyId,String productId,String schemeType){
-        PtlSchemeQueryVo schemeList = ptlSchemeService.getSchemeAll(companyId,productId,schemeType);
+    public HttpResult getSchemeAll(String companyId,String productId,String schemeType,String energyType,String vehicleType, String carnature){
+        PtlSchemeQueryVo schemeList = ptlSchemeService.getSchemeAll(companyId,productId,schemeType,energyType,vehicleType,carnature);
         return HttpResult.ok(schemeList);
     }
 

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlSchemeService.java

@@ -34,7 +34,7 @@ public interface PtlSchemeService extends IService<PtlScheme> {
      */
     public PtlSchemeQueryVo getScheme(String id);
 
-    public PtlSchemeQueryVo getSchemeAll(String companyId,String productId,String schemeType);
+    public PtlSchemeQueryVo getSchemeAll(String companyId,String productId,String schemeType,String energyType,String vehicleType,String carnature);
 
     /**
      * 获取方案列表

+ 1 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java

@@ -290,6 +290,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         newAgreement.setId(null);
         newAgreement.setAgreementCode(sysCode + companyCode + +System.currentTimeMillis());
         newAgreement.setAuditStatus(0);
+        newAgreement.setIsEnable(0);
         save(newAgreement);
 
         List<String> costIds = param.getCostIds();

+ 4 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -194,10 +194,13 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
     }
 
     @Override
-    public PtlSchemeQueryVo getSchemeAll(String companyId,String productId,String schemeType) {
+    public PtlSchemeQueryVo getSchemeAll(String companyId,String productId,String schemeType,String energyType,String vehicleType,String carnature) {
         //获取方案信息
         PtlScheme ptlScheme = ptlSchemeMapper.selectOne(new LambdaQueryWrapper<PtlScheme>()
                 .eq(PtlScheme::getCompanyId, companyId)
+                .eq(PtlScheme::getVehicleType, vehicleType)
+                .eq(PtlScheme::getCarnature, carnature)
+                .eq(PtlScheme::getEnergyType, energyType)
                 .eq(PtlScheme::getProductId, productId));
 
         if(Objects.isNull(ptlScheme)){

+ 16 - 14
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java

@@ -12,10 +12,7 @@ import com.jzg.commons.entity.vo.SysActivityRecordVo;
 import com.jzg.commons.entity.vo.SysActivityVo;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
-import com.jzg.organization.mapper.SysActivityAwardMapper;
-import com.jzg.organization.mapper.SysActivityMapper;
-import com.jzg.organization.mapper.SysActivityRecordMapper;
-import com.jzg.organization.mapper.SysUploadFilesMapper;
+import com.jzg.organization.mapper.*;
 import com.jzg.organization.service.*;
 import io.minio.MinioClient;
 import io.minio.PutObjectArgs;
@@ -75,6 +72,9 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
     @Resource
     private SysActivityRecordMapper sysActivityRecordMapper;
 
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
+
     @Resource
     private MinioClient minioClient;
 
@@ -193,16 +193,18 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         LocalDate startTime = LocalDate.parse(actStartTime, formatter);
         LocalDate endTime = LocalDate.parse(actEndTime, formatter);
-        // 检查当前时间是否早于生效日期
-        if (now.isBefore(startTime)) {
-            // 活动尚未开始
-            sysActivity.setActStatus("1");
-        } else if (!now.isAfter(endTime)) {
-            // 活动正在进行中
-            sysActivity.setActStatus("2");
-        } else {
-            // 活动已结束
-            sysActivity.setActStatus("3");
+        if (sysActivity.getIsEnd().equals("0")) {
+            // 检查当前时间是否早于生效日期
+            if (now.isBefore(startTime)) {
+                // 活动尚未开始
+                sysActivity.setActStatus("1");
+            } else if (!now.isAfter(endTime)) {
+                // 活动正在进行中
+                sysActivity.setActStatus("2");
+            } else {
+                // 活动已结束
+                sysActivity.setActStatus("3");
+            }
         }
     }
 

+ 8 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -158,6 +158,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
                 .filter(StringUtils::isNotEmpty)
                 .orElseGet(baseController::getUserSystemCode);
 
+
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysDept sysDept = getById(deptId);
 
@@ -178,7 +179,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
                     // 设置负责人信息
                     Optional.ofNullable(item.getLeaderId())
-                            .map(sysUserJzgInfoService::getUserById)
+                            .map(sysUserJzgInfoService::getUserByUserId)
                             .map(SysUserJzgInfo::getName)
                             .ifPresent(sysDeptVo::setLeaderName);
 
@@ -192,9 +193,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
         // 设置子部门
         voDept.forEach(dept -> dept.setChildren(deptMap.getOrDefault(dept.getId(), new ArrayList<>())));
+        List<SysDeptVo> defaultList = deptMap.values().stream()
+                .flatMap(List::stream)
+                .collect(Collectors.toList()); // 所有部门合并成一个列表
+
         List<SysDeptVo> sysDeptVos = Optional.ofNullable(sysDept)
                 .map(d -> deptMap.get(d.getParentId()))
-                .orElseGet(() -> deptMap.getOrDefault("0", new ArrayList<>()));
+                .orElseGet(() -> deptMap.getOrDefault("0", defaultList));
+
         return sysDeptVos;
     }
 

+ 5 - 3
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -543,7 +543,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         //修改团队信息
         if(sysUserVo.getOrganizationId() != null && !sysUserVo.getOrganizationId().isEmpty()) {
             sysOrganizationUserLinkService.remove(new LambdaQueryWrapper<SysOrganizationUserLink>()
-                    .eq(SysOrganizationUserLink::getUserId, sysUserVo.getId())
+                    .eq(SysOrganizationUserLink::getUserId, sysUserVo.getUserId())
                     .eq(SysOrganizationUserLink::getOrganizationId, sysUserVo.getOrganizationId()));
             SysOrganizationUserLink sysOrganizationUserLink = new SysOrganizationUserLink();
             sysOrganizationUserLink.setId(IdGenerate.nextId());
@@ -589,8 +589,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             sysUserJzgInfo.setRegion(region.substring(0, region.length() - 1));
         }
         if (!Objects.isNull(sysUserJzgInfo.getLeaderId()) && !sysUserJzgInfo.getLeaderId().equals("")) {
-            String leaderName = sysUserJzgInfoService.getById(sysUserJzgInfo.getLeaderId()).getName();
-            sysUserJzgInfo.setLeaderName(leaderName);
+            SysUserJzgInfo userJzgInfo = sysUserJzgInfoService.getById(sysUserJzgInfo.getLeaderId());
+            if(Objects.nonNull(userJzgInfo)){
+                sysUserJzgInfo.setLeaderName(userJzgInfo.getName());
+            }
         }
         if (!Objects.isNull(sysUserJzgInfo.getReferrerId()) && !sysUserJzgInfo.getReferrerId().equals("")) {
             String referrerName = sysUserJzgInfoService.getById(sysUserJzgInfo.getReferrerId()).getName();

+ 1 - 0
tenant/organization/src/main/resources/application.yml

@@ -59,6 +59,7 @@ tenant:
     - esm_ins_company
     - qr_barcode_config
     - jyx_config
+    - dept_tree
 
   ignoreLoginNames:
 

+ 3 - 1
tenant/organization/src/main/resources/mapper/SysActivityMapper.xml

@@ -23,13 +23,15 @@
         where
             1=1
           and sa.is_delete = '0'
-          and sa.is_end = '0'
           and sd.system_code = #{sysActivityVo.systemCode}
         <if test="sysActivityVo.actName != null and sysActivityVo.actName != ''">
             and sa.act_name like concat('%',#{sysActivityVo.actName},'%')
         </if>
         <if test="sysActivityVo.actStatus != null and sysActivityVo.actStatus != ''">
             and sa.act_status = #{sysActivityVo.actStatus}
+            <if test="sysActivityVo.actStatus == '3'">
+                and sa.is_end = 1
+            </if>
         </if>
     </select>
 </mapper>

+ 54 - 19
tenant/organization/src/main/resources/mapper/SysDeptMapper.xml

@@ -21,29 +21,64 @@
         from sys_dept ${ew.getCustomSqlSegment}
     </select>
 
+<!--    <select id="selectDeptVoList" resultType="com.jzg.commons.entity.po.SysDept">-->
+<!--        SELECT-->
+<!--        sd.*,-->
+<!--        COALESCE(COUNT(suji.user_id), 0) AS user_count-->
+<!--        FROM-->
+<!--        sys_dept sd-->
+<!--        LEFT JOIN-->
+<!--        sys_user_jzg_info suji ON suji.dept_id = sd.id-->
+<!--        where-->
+<!--        1=1-->
+<!--        AND-->
+<!--        sd.is_delete = 0-->
+<!--        <if test="deptId!=null and deptId!=''">-->
+
+<!--            and route like CONCAT('%',#{deptId}, '%')-->
+<!--        </if>-->
+<!--        <if test="name!=null and name!=''">-->
+<!--            and sd.name like CONCAT('%',#{name}, '%')-->
+<!--        </if>-->
+
+<!--        GROUP BY-->
+<!--        sd.id-->
+<!--        ORDER BY-->
+<!--        user_count DESC;-->
+<!--    </select>-->
+
     <select id="selectDeptVoList" resultType="com.jzg.commons.entity.po.SysDept">
-        SELECT
-            sd.*,
-            COALESCE(COUNT(suji.user_id), 0) AS user_count
-        FROM
-            sys_dept sd
-                LEFT JOIN
-            sys_user_jzg_info suji ON suji.dept_id = sd.id
-        where
-            1=1
-        AND
-            sd.is_delete = 0
-            <if test="deptId!=null and deptId!=''">
+        WITH RECURSIVE dept_tree AS (
+        -- 起点:系统代码为 KU123 的所有部门
+        SELECT id, parent_id, id AS root_id
+        FROM sys_dept
+        where 1=1
+        <if test="deptId!=null and deptId!=''">
+            and id = #{deptId}
+        </if>
+        <if test="name!=null and name!=''">
+            and name like CONCAT('%',#{name}, '%')
+        </if>
+
+        UNION ALL
 
-                and route like CONCAT('%',#{deptId}, '%')
-            </if>
-            <if test="name!=null and name!=''">
-                and sd.name like CONCAT('%',#{name}, '%')
-            </if>
+        -- 递归查找子部门
+        SELECT sd.id, sd.parent_id, dt.root_id
+        FROM sys_dept sd
+        JOIN dept_tree dt ON sd.parent_id = dt.id
+        )
 
+        SELECT
+        sd.*,
+        COUNT(suji.user_id) AS user_count
+        FROM dept_tree dt
+        JOIN sys_dept sd ON sd.id = dt.root_id
+        LEFT JOIN sys_user_jzg_info suji ON suji.dept_id = dt.id
+        WHERE
+            sd.is_delete = 0
         GROUP BY
-            sd.id
+        sd.id
         ORDER BY
-            user_count DESC;
+        user_count DESC;
     </select>
 </mapper>

+ 6 - 2
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -8,6 +8,7 @@
         <result column="username" jdbcType="VARCHAR" property="username"/>
         <result column="name" jdbcType="VARCHAR" property="name"/>
         <result column="mobile" jdbcType="VARCHAR" property="mobile"/>
+        <result column="work_number" jdbcType="VARCHAR" property="workNumber"/>
         <result column="dept_id" jdbcType="VARCHAR" property="deptId"/>
         <result column="dept_name" jdbcType="VARCHAR" property="deptName"/>
         <result column="type_attr" jdbcType="VARCHAR" property="typeAttr"/>
@@ -42,6 +43,7 @@
         select
         suji.id,
         suji.user_id,
+        suji.work_number,
         su.username,
         su.mobile,
         suji.name,
@@ -67,11 +69,13 @@
         left join sys_role sr on sr.id = sur.role_id
         left join sys_organization_user_link soul on soul.user_id = suji.user_id
         left join sys_organization so on so.id = soul.organization_id
+        LEFT JOIN sys_dept d ON suji.dept_id = d.id
+
         where
         1=1
         and suji.is_delete = 0
         <if test="sysUserInfoListVo.deptId != null and sysUserInfoListVo.deptId != ''">
-            and suji.dept_id = #{sysUserInfoListVo.deptId}
+            and d.route LIKE CONCAT('%', #{sysUserInfoListVo.deptId}, '%')
         </if>
         <if test="sysUserInfoListVo.deptName != null and sysUserInfoListVo.deptName != ''">
             and so.name like concat('%',#{sysUserInfoListVo.deptName},'%')
@@ -96,7 +100,7 @@
         <if test="sysUserInfoListVo.salesman != null and sysUserInfoListVo.salesman != ''">
             and (suji.name like concat('%',#{sysUserInfoListVo.salesman},'%')
             or  su.mobile = #{sysUserInfoListVo.salesman}
-            or  suji.id = #{sysUserInfoListVo.salesman})
+            or  suji.work_number = #{sysUserInfoListVo.salesman})
             or  su.id = #{sysUserInfoListVo.salesman}
         </if>
         <if test="sysUserInfoListVo.isMember!= null and sysUserInfoListVo.isMember!= ''">

+ 2 - 1
tenant/organization/src/main/resources/mapper/SysUserMapper.xml

@@ -23,7 +23,8 @@
         suji.id,
         su.id as userId,
         suji.name,
-        su.mobile
+        su.mobile,
+        suji.work_number
         FROM
         sys_user_jzg_info suji
         inner join sys_user su on su.id = suji.user_id