Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

shenweidong 1 rok pred
rodič
commit
62af079b2d
21 zmenil súbory, kde vykonal 300 pridanie a 80 odobranie
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysDeptParam.java
  2. 1 2
      commons/src/main/java/com/jzg/commons/entity/vo/SysSystemPermsVo.java
  3. 6 0
      platform/src/main/java/com/jzg/controller/EsmInsCompanyController.java
  4. 2 1
      platform/src/main/java/com/jzg/controller/SysSystemController.java
  5. 1 1
      platform/src/main/java/com/jzg/service/impl/JyxConfigServiceImpl.java
  6. 7 0
      platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  7. 9 2
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  8. 9 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/InsuranceImageVo.java
  9. 45 19
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java
  10. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java
  11. 10 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/po/DaJiaCrawlerOrder.java
  12. 24 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadRequest.java
  13. 24 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadSignsRequest.java
  14. 31 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerQrcodeResponse.java
  15. 1 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerUploadResponse.java
  16. 43 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  17. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java
  18. 36 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/ImagesEncrypt.java
  19. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysDeptMapper.java
  20. 42 47
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  21. 3 0
      tenant/organization/src/main/resources/mapper/SysDeptMapper.xml

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysDeptParam.java

@@ -10,4 +10,7 @@ public class SysDeptParam {
     /** 用户信息搜索值 */
     @Schema(description = "系统code")
     private String sysCode;
+
+    @Schema(description = "搜索名称")
+    private String name;
 }

+ 1 - 2
commons/src/main/java/com/jzg/commons/entity/vo/SysSystemPermsVo.java

@@ -14,11 +14,10 @@ public class SysSystemPermsVo {
     @Schema(description = "系统code")
     private String systemCode;
 
-    @NotBlank(message = "权限列表不能为空")
     @Schema(description = "权限列表")
     private List<PermsVo> perms;
 
-    @NotBlank(message = "权限列表json不能为空")
+    @NotBlank(message = "权限列表不能为空")
     @Schema(description = "权限列表json")
     private String permsStr;
 

+ 6 - 0
platform/src/main/java/com/jzg/controller/EsmInsCompanyController.java

@@ -90,6 +90,12 @@ public class EsmInsCompanyController extends BaseController {
         lqw.eq(EsmInsCompany::getCompanyCode, companyAdd.getCompanyCode());
         AssertionUtils.isFail(esmInsCompanyService.count(lqw) > 0, "供应商编码重复");
         EsmInsCompany esmInsCompany = BeanUtil.copyProperties(companyAdd, EsmInsCompany.class);
+        //如果存在父类型则将type
+        if(!companyAdd.getParentId().equals("0")){
+            EsmInsCompany parent = esmInsCompanyService.getById(companyAdd.getParentId());
+            AssertionUtils.isEmpty(parent,"父级机构不存在");
+            esmInsCompany.setType(parent.getType());
+        }
         return esmInsCompanyService.save(esmInsCompany) ?HttpResult.ok("保存成功") : HttpResult.error("保存失败");
     }
 

+ 2 - 1
platform/src/main/java/com/jzg/controller/SysSystemController.java

@@ -19,6 +19,7 @@ import com.jzg.service.SysSystemService;
 import com.jzg.service.SysUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -74,7 +75,7 @@ public class SysSystemController {
      */
     @PostMapping("/updatePerms")
     @Operation(summary = "修改租户权限")
-    public HttpResult updatePerms(@RequestBody SysSystemPermsVo sysSystemPermsVo){
+    public HttpResult updatePerms(@RequestBody @Valid SysSystemPermsVo sysSystemPermsVo){
         return sysSystemService.updatePerms(sysSystemPermsVo) ?
                 HttpResult.ok("修改租户权限成功") :
                 HttpResult.error("修改租户权限失败");

+ 1 - 1
platform/src/main/java/com/jzg/service/impl/JyxConfigServiceImpl.java

@@ -60,7 +60,7 @@ public class JyxConfigServiceImpl extends ServiceImpl<JyxConfigMapper, JyxConfig
     public HttpResult saveAll(JyxConfigAdd configAdd) {
         try {
             AssertionUtils.isFail(Optional.ofNullable(baseMapper.selectOne(new LambdaQueryWrapper<JyxConfig>().eq(JyxConfig::getProductCode, configAdd.getProductCode())
-                    .eq(JyxConfig::getIsDelete, Constants.NOT_DELETED))).isEmpty(), "产品编码重复");
+                    .eq(JyxConfig::getIsDelete, Constants.NOT_DELETED))).isPresent(), "产品编码重复");
             if (StringUtils.isEmpty(configAdd.getParentId())){
                 configAdd.setParentId(Constants.DEFAULT_PARENT_ID);
             }else {

+ 7 - 0
platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -412,6 +412,13 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
             sysUser = userList.get(0);
             sysUser.setUsername(param.getUserName());
             sysUserMapper.updateById(sysUser);
+            //修改顶级机构
+            SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                    .eq(SysDept::getSystemCode, sysSystem.getSysCode())
+                    .eq(SysDept::getParentId, "0"));
+            sysDept.setName(param.getSysName());
+            sysDeptMapper.updateById(sysDept);
+
         }else{
             // 新增管理员用户
             sysUser = new SysUser(param);

+ 9 - 2
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.commons.component;
 
 import com.alibaba.fastjson2.JSON;
 import com.jzg.commons.exception.SystemException;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.ParameterizedTypeReference;
@@ -22,11 +23,18 @@ import java.util.function.Consumer;
  * @author: wenks
  * @date: 2025/2/15 11:59
  **/
+@Getter
 @Slf4j
 @Component
 @RequiredArgsConstructor
 public class RequestComponent {
 
+    /**
+     * -- GETTER --
+     *  获取webClient
+     *
+     * @return webClient
+     */
     private final WebClient webClient;
 
     /**
@@ -35,7 +43,7 @@ public class RequestComponent {
      * @param headers 请求头
      * @return Consumer<HttpHeaders>
      */
-    private Consumer<HttpHeaders> setHeaders(HttpHeaders headers) {
+    public Consumer<HttpHeaders> setHeaders(HttpHeaders headers) {
         Consumer<HttpHeaders> consumer = httpHeaders -> {
             httpHeaders.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36");
         };
@@ -92,7 +100,6 @@ public class RequestComponent {
         return bodyIsEmpty(responseEntity, description);
     }
 
-
     /**
      * @param url           请求地址
      * @param param         拼接的请求参数

+ 9 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/image/InsuranceImageVo.java

@@ -40,6 +40,10 @@ public class InsuranceImageVo {
 
         @Serial
         private static final long serialVersionUID = -8193683303365881496L;
+        /**
+         * 影像唯一id
+         */
+        private String imageId;
         /**
          * 影像名称
          */
@@ -48,6 +52,11 @@ public class InsuranceImageVo {
          * 影像base64 影像类型
          */
         private String imageBase64Str;
+        /**
+         * 影像大小
+         */
+        private String imageSize;
+
 
     }
 }

+ 45 - 19
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java

@@ -19,9 +19,12 @@ import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
+import org.springframework.web.reactive.function.BodyInserters;
+import reactor.core.publisher.Mono;
 
 import java.lang.reflect.InvocationTargetException;
 import java.time.Duration;
@@ -91,10 +94,7 @@ public class DaJiaCrawlerRequestComponent {
         if (frequency <= 0) {
             throw new SystemException("验证码异常");
         }
-        Map<String, Object> map = Map.of("imgId", UUID
-                .randomUUID()
-                .toString()
-                .replaceAll("-", ""));
+        Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
         // 请求
         DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), map, "", DaJiaCrawlerBaseResponse.class);
         DaJiaCrawlerCaptchaResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(request.getResult(), DaJiaCrawlerCaptchaResponse.class);
@@ -123,8 +123,7 @@ public class DaJiaCrawlerRequestComponent {
         try {
             Map<String, Object> describe = PropertyUtils.describe(request);
             DaJiaCrawlerCompaniesResponse daJiaCrawlerCompaniesResponse = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerCompaniesResponse.class, headers);
-            return daJiaCrawlerCompaniesResponse
-                    .getList()
+            return daJiaCrawlerCompaniesResponse.getList()
                     .stream()
                     .filter(x -> cDptCde.equals(x.getCDptCde()))
                     .findFirst()
@@ -147,8 +146,7 @@ public class DaJiaCrawlerRequestComponent {
             Map<String, Object> describe = PropertyUtils.describe(request);
             List<DaJiaCrawlerChannelPackagesResponse> responses = requestComponent.get(RequestUrl.CAPTCHA.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", new ParameterizedTypeReference<>() {
             }, headers);
-            return responses
-                    .stream()
+            return responses.stream()
                     .filter(x -> packagesName.equals(x.getName()))
                     .findFirst()
                     .orElseThrow(() -> new SystemException(""));
@@ -171,10 +169,7 @@ public class DaJiaCrawlerRequestComponent {
         // 登录存入缓存当中
         DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
         ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(daJiaCrawlerProperties.getVhlUrl()), request, DaJiaCrawlerBaseResponse.class);
-        DaJiaCrawlerBaseResponse response = Optional
-                .of(responseEntity)
-                .map(ResponseEntity::getBody)
-                .orElseThrow();
+        DaJiaCrawlerBaseResponse response = Optional.of(responseEntity).map(ResponseEntity::getBody).orElseThrow();
 
         if ("200".equals(response.getCode())) {
             DaJiaCrawlerAuthenticateResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(response.getResult(), DaJiaCrawlerAuthenticateResponse.class);
@@ -186,8 +181,7 @@ public class DaJiaCrawlerRequestComponent {
         }
         loginsNumber = loginsNumber - 1;
         if (loginsNumber <= 0) {
-            String message = Optional
-                    .ofNullable(responseEntity.getBody())
+            String message = Optional.ofNullable(responseEntity.getBody())
                     .map(DaJiaCrawlerBaseResponse::getMessage)
                     .orElseThrow(() -> new SystemException("登录失败"));
             throw new SystemException(message);
@@ -208,8 +202,7 @@ public class DaJiaCrawlerRequestComponent {
      * @return
      */
     public HttpHeaders getHeaders(String username, String password) {
-        String authorization = (String) redissonClient
-                .getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
+        String authorization = (String) redissonClient.getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
                 .get(AUTHORIZATION);
         if (!StringUtils.hasLength(authorization)) {
             authorization = authenticate(username, password, LOGINS_NUMBER);
@@ -226,9 +219,7 @@ public class DaJiaCrawlerRequestComponent {
      * @return userCode
      */
     public String getUserCode(String username) {
-        return (String) redissonClient
-                .getMap(CacheConstant.DAJIA_AUTHORIZATION + username)
-                .get(USER_CODE);
+        return (String) redissonClient.getMap(CacheConstant.DAJIA_AUTHORIZATION + username).get(USER_CODE);
     }
 
     public <DaJiaResponse> DaJiaResponse requestUnencrypted(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
@@ -299,10 +290,45 @@ public class DaJiaCrawlerRequestComponent {
         return requestUnencrypted(RequestUrl.UPLOAD_SIGNS, request, DaJiaCrawlerUploadSignsResponse.class, headers);
     }
 
+    public DaJiaCrawlerUploadRequest.FileListDTO uploadFile(String url, String base64Str) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+        byte[] fileData = Base64.getDecoder().decode(base64Str);
+        return requestComponent.getWebClient()
+                .put()
+                .uri(url)
+                .headers(requestComponent.setHeaders(headers))
+                .body(BodyInserters.fromValue(fileData))
+                .exchangeToMono(response -> {
+                    String obsRequestId = response.headers().header("x-obs-request-id").stream().findFirst().orElse("");
+                    DaJiaCrawlerUploadRequest.FileListDTO fileListDTO = new DaJiaCrawlerUploadRequest.FileListDTO();
+                    fileListDTO.setObsRequestId(obsRequestId);
+                    fileListDTO.setOperateResult(1);
+                    return Mono.just(fileListDTO);
+                })
+                .block();
+    }
+
     public DaJiaCrawlerUploadResponse upload(DaJiaCrawlerUploadRequest request, HttpHeaders headers) {
         return requestUnencrypted(RequestUrl.UPLOAD, request, DaJiaCrawlerUploadResponse.class, headers);
     }
 
+    /**
+     * 支付
+     *
+     * @param orderNo
+     * @param operatorCode
+     * @param headers
+     * @return
+     */
+    public String qrcode(String orderNo, String operatorCode, HttpHeaders headers) {
+        String url = RequestUrl.QRCODE.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()) + "/" + orderNo + "/1";
+        Map<String, Object> map = Map.of("operatorCode", operatorCode);
+        DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = requestComponent.get(url, map, "", DaJiaCrawlerBaseResponse.class, headers);
+        DaJiaCrawlerQrcodeResponse daJiaCrawlerCaptchaResponse = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult(), DaJiaCrawlerQrcodeResponse.class);
+        return daJiaCrawlerCaptchaResponse.getUrl();
+    }
+
     /**
      * 提交核保
      *

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java

@@ -29,7 +29,7 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     // 提交核保
     GENERATE("generate", "生成订单(核保)"),
     // 支付二维码
-    NEXT_STEP("next_step", "支付二维码"),
+    QRCODE("qrcode", "支付二维码"),
     // 下载保单
     ELECTRON_POLICY_IO_DOWNLOAD("electronPolicyIODownload", "下载保单"),
     // 状态查询

+ 10 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/po/DaJiaCrawlerOrder.java

@@ -33,12 +33,20 @@ public class DaJiaCrawlerOrder {
      */
     private String appName;
     /**
-     * 交强险保单号
+     * 交强投保单号
      */
     private String ciPolicyNumber;
     /**
-     * 商业险保单号
+     * 商业投保单号
      */
     private String biPolicyNumber;
+    /**
+     * 交强险保单号
+     */
+    private String ciPolicyNo;
+    /**
+     * 商业险保单号
+     */
+    private String biPolicyNo;
 
 }

+ 24 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadRequest.java

@@ -1,9 +1,12 @@
 package com.jzg.quotation.dajia.crawler.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @NoArgsConstructor
@@ -28,6 +31,16 @@ public class DaJiaCrawlerUploadRequest {
     @JsonProperty("fileList")
     private List<FileListDTO> fileList;
 
+    public DaJiaCrawlerUploadRequest(String businessNo, String imageCode, String createBy, String ciBussNo, String biBussNo) {
+        this.category = imageCode;
+        this.createBy = createBy;
+        this.businessNo = businessNo;
+        this.businessType = "XKCXT";
+        this.busiInfoList = BusiInfoListDTO.setBusiInfoListDTO(ciBussNo, biBussNo);
+        this.fileList = new ArrayList<>();
+    }
+
+    @AllArgsConstructor
     @NoArgsConstructor
     @Data
     public static class BusiInfoListDTO {
@@ -40,6 +53,17 @@ public class DaJiaCrawlerUploadRequest {
 
         @JsonProperty("bussName")
         private String bussName;
+
+        public static List<BusiInfoListDTO> setBusiInfoListDTO(String ciBussNo, String biBussNo) {
+            ArrayList<BusiInfoListDTO> busiInfoListDTOS = new ArrayList<>();
+            if (StringUtils.hasLength(ciBussNo)) {
+                busiInfoListDTOS.add(new BusiInfoListDTO(ciBussNo, "交强险投保单号", "proNoE"));
+            }
+            if (StringUtils.hasLength(biBussNo)) {
+                busiInfoListDTOS.add(new BusiInfoListDTO(ciBussNo, "商业险投保单号", "proNoB"));
+            }
+            return busiInfoListDTOS;
+        }
     }
 
     @NoArgsConstructor

+ 24 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerUploadSignsRequest.java

@@ -1,11 +1,15 @@
 package com.jzg.quotation.dajia.crawler.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
+import com.jzg.quotation.dajia.crawler.utils.ImagesEncrypt;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.http.MediaType;
 
+import java.util.ArrayList;
 import java.util.List;
-
+import java.util.stream.Collectors;
 
 
 @NoArgsConstructor
@@ -24,6 +28,18 @@ public class DaJiaCrawlerUploadSignsRequest {
     @JsonProperty("uploadFileList")
     private List<UploadFileListDTO> uploadFileList;
 
+
+    public DaJiaCrawlerUploadSignsRequest(String businessNo, String imageCode, List<InsuranceImageVo.ImageDTO> imageBase64List) {
+        this.businessNo = businessNo;
+        this.businessType = "XKCXT";
+        this.category = imageCode;
+        this.uploadFileList = imageBase64List.stream()
+                .collect(Collectors.collectingAndThen(Collectors.toMap(InsuranceImageVo.ImageDTO::getImageId, o -> o, (k1, k2) -> k2), x -> new ArrayList<>(x.values())))
+                .stream()
+                .map(UploadFileListDTO::new)
+                .collect(Collectors.toList());
+    }
+
     @NoArgsConstructor
     @Data
     public static class UploadFileListDTO {
@@ -40,5 +56,12 @@ public class DaJiaCrawlerUploadSignsRequest {
         @JsonProperty("method")
         private String method;
 
+        public UploadFileListDTO(InsuranceImageVo.ImageDTO imageDTO) {
+            this.fileName = imageDTO.getImageName();
+            this.contentType = MediaType.APPLICATION_OCTET_STREAM_VALUE;
+            this.contentMD5 = ImagesEncrypt.encrypt(imageDTO.getImageBase64Str());
+            this.method = "PUT";
+        }
     }
+
 }

+ 31 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerQrcodeResponse.java

@@ -0,0 +1,31 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerQrcodeResponse {
+
+    @JsonProperty("imageContent")
+    private String imageContent;
+
+    @JsonProperty("url")
+    private String url;
+
+    @JsonProperty("message")
+    private String message;
+
+    @JsonProperty("expireTime")
+    private String expireTime;
+
+    @JsonProperty("startTime")
+    private String startTime;
+
+    @JsonProperty("showMessage")
+    private String showMessage;
+
+    @JsonProperty("showFlag")
+    private String showFlag;
+}

+ 1 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerUploadResponse.java

@@ -22,6 +22,7 @@ public class DaJiaCrawlerUploadResponse {
     @NoArgsConstructor
     @Data
     public static class DataDTO {
+
         @JsonProperty("indexName")
         private String indexName;
 

+ 43 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -8,6 +8,7 @@ import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.base.LoginBase;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
 import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
@@ -16,6 +17,7 @@ import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCacheComponent;
 import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerRequestComponent;
 import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
+import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
 import com.jzg.quotation.dajia.crawler.entity.request.*;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.ProposalInfoDTO;
 import com.jzg.quotation.dajia.crawler.entity.response.*;
@@ -24,8 +26,11 @@ import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerRequest;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service(value = InsuranceCode.INSURANCE_DJPC)
 @RequiredArgsConstructor
@@ -94,13 +99,47 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
 
     @Override
     public String getPaymentLink(OrderBase orderBase) {
-
-
+        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+        DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+        HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+        daJiaCrawlerRequestComponent.qrcode(daJiaCrawlerOrder.getOrdersNo(),userCode, headers);
         return "";
     }
 
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
+        AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder()
+                .getAttributionInformationVo();
+        HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+        DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(insuranceUploadImageVo.getOrder()
+                .getOrdersNo());
+        String policyNumber = StringUtils.hasLength(daJiaCrawlerOrder.getCiPolicyNumber()) ? daJiaCrawlerOrder.getCiPolicyNumber() : daJiaCrawlerOrder.getBiPolicyNo();
+        String businessNo = "8" + policyNumber.substring(6, 9) + policyNumber.substring(0, 5) + policyNumber.substring(9);
+
+        List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
+        imageVoList.forEach(imageVo -> {
+            // 上传文件标志
+            DaJiaCrawlerUploadSignsRequest daJiaCrawlerUploadSignsRequest = new DaJiaCrawlerUploadSignsRequest(businessNo, imageVo.getImageCode(), imageVo.getImageBase64List());
+            DaJiaCrawlerUploadSignsResponse daJiaCrawlerUploadSignsResponse = daJiaCrawlerRequestComponent.uploadSigns(daJiaCrawlerUploadSignsRequest, headers);
+            Map<String, DaJiaCrawlerUploadSignsResponse.DataDTO> dataDTOMap = daJiaCrawlerUploadSignsResponse.getData()
+                    .stream()
+                    .collect(Collectors.toMap(DaJiaCrawlerUploadSignsResponse.DataDTO::getFileName, x -> x));
+
+            DaJiaCrawlerUploadRequest daJiaCrawlerUploadRequest = new DaJiaCrawlerUploadRequest(businessNo, imageVo.getImageCode(), userCode, daJiaCrawlerOrder.getCiPolicyNumber(), daJiaCrawlerOrder.getBiPolicyNumber());
+            // 上传文件
+            imageVo.getImageBase64List().forEach(imageBase64 -> {
+                DaJiaCrawlerUploadSignsResponse.DataDTO dataDTO = dataDTOMap.get(imageBase64.getImageName());
+                DaJiaCrawlerUploadRequest.FileListDTO fileListDTO = daJiaCrawlerRequestComponent.uploadFile(dataDTO.getFileURL(), imageBase64.getImageBase64Str());
+                fileListDTO.setName(dataDTO.getFileName());
+                fileListDTO.setPath(dataDTO.getFilePath());
+                fileListDTO.setSize(Integer.valueOf(imageBase64.getImageSize()));
+                daJiaCrawlerUploadRequest.getFileList().add(fileListDTO);
+            });
+            // 统一上传文件信息
+            daJiaCrawlerRequestComponent.upload(daJiaCrawlerUploadRequest, headers);
+        });
 
     }
 
@@ -108,6 +147,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
     public void downloadPolicy(OrderBase orderBase) {
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+
         DaJiaCrawlerDownloadRequest daJiaCrawlerDownloadRequest = new DaJiaCrawlerDownloadRequest();
         DaJiaCrawlerDownloadResponse response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
     }
@@ -117,6 +157,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         String userCode = daJiaCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+
         DaJiaCrawlerOrderListRevisedRequest daJiaCrawlerOrderListRevisedRequest = new DaJiaCrawlerOrderListRevisedRequest();
         DaJiaCrawlerOrderListRevisedResponse.ListDTO listDTO = daJiaCrawlerRequestComponent.orderListRevised(daJiaCrawlerOrderListRevisedRequest, headers);
     }

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java

@@ -19,7 +19,7 @@ import java.time.format.DateTimeFormatter;
 public final class DESEncryption {
 
     private DESEncryption() {
-        throw new AssertionError();
+        throw new IllegalStateException("Utility class");
     }
 
     private static final String SIGN = "DJCX";

+ 36 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/ImagesEncrypt.java

@@ -0,0 +1,36 @@
+package com.jzg.quotation.dajia.crawler.utils;
+
+import cn.hutool.crypto.digest.MD5;
+
+import java.util.Base64;
+
+/**
+ * @description: 大家财险上传影像
+ * @author: wenks
+ * @date: 2025/3/6 11:54
+ **/
+public final class ImagesEncrypt {
+
+    private ImagesEncrypt() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static final MD5 MD5;
+
+    static {
+        MD5 = new MD5();
+    }
+
+    /**
+     * 加密
+     *
+     * @param base64String 影像的base64
+     * @return
+     */
+    public static String encrypt(String base64String) {
+        byte[] decodedBytes = Base64.getDecoder().decode(base64String);
+        byte[] md5Bytes = MD5.digest(decodedBytes);
+        return Base64.getEncoder().encodeToString(md5Bytes);
+    }
+
+}

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/SysDeptMapper.java

@@ -22,5 +22,5 @@ public interface SysDeptMapper extends BaseMapper<SysDept> {
      */
     List<SysDept> selectDeptList(@Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper);
 
-    List<SysDept> selectDeptVoList(@Param("deptId")String deptId,@Param("sysCode")String sysCode);
+    List<SysDept> selectDeptVoList(@Param("deptId")String deptId,@Param("sysCode")String sysCode,@Param("name")String name);
 }

+ 42 - 47
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -152,59 +152,54 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
-        if(Objects.isNull(deptId)){
-            deptId = "";
-        }
-        String sysCode = param.getSysCode();
-        String userSystemCode = null;
-        if (StringUtils.isEmpty(sysCode)){
-            userSystemCode = baseController.getUserSystemCode();
-        }else{
-            userSystemCode = sysCode;
-        }
+        deptId = Objects.toString(deptId, "");
+
+        String userSystemCode = Optional.ofNullable(param.getSysCode())
+                .filter(StringUtils::isNotEmpty)
+                .orElseGet(baseController::getUserSystemCode);
+
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
-        List<SysDeptVo> sysDepts = new ArrayList<>();
         SysDept sysDept = getById(deptId);
-        SysDeptVo sysDeptVo = new SysDeptVo(sysDept);
 
-        List<SysDept> depts = baseMapper.selectDeptVoList(deptId, userSystemCode);
-        List<SysDeptVo> voDept = new ArrayList<>();
-        depts.forEach(item->{
-            SysDeptVo sysDeptv = new SysDeptVo(item);
-            List<String> areas = new ArrayList<>();
-            areas.add(item.getProvince());
-            areas.add(item.getCity());
-            areas.add(item.getArea());
-            List<SysArea> sysAreaVos = sysAreaService.queryAllByAreaCode(areas);
-            String areaString = "";
-            for(int i=0;i<sysAreaVos.size();i++){
-                areaString = areaString + sysAreaVos.get(i).getAreaCname() + "-";
-            }
-            if(!areaString.isEmpty()) {
-                sysDeptv.setDivision(areaString.substring(0, areaString.length() - 1));
-            }
-            if(!Objects.isNull(item.getLeaderId())){
-                SysUserJzgInfo userByUserId = sysUserJzgInfoService.getUserByUserId(item.getLeaderId());
-                if(!Objects.isNull(userByUserId)){
-                    sysDeptv.setLeaderName(userByUserId.getName());
-                }
-            }
-            voDept.add(sysDeptv);
-        });
-
-        Map<String, List<SysDeptVo>> map = voDept.stream().collect(Collectors.groupingBy(SysDeptVo::getParentId));
-        voDept.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
-        if(!Objects.isNull(sysDept)) {
-            sysDepts = map.get(sysDeptVo.getParentId());
-        }else{
-            sysDepts = map.get("0");
-        }
-        List<SysDeptVo> newResultDept = new ArrayList<>();
-        newResultDept.addAll(sysDepts);
-        return newResultDept;
+        List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
+                .stream()
+                .map(item -> {
+                    SysDeptVo sysDeptVo = new SysDeptVo(item);
+
+                    // 获取区域信息
+                    List<String> areas = Arrays.asList(item.getProvince(), item.getCity(), item.getArea());
+                    String areaString = sysAreaService.queryAllByAreaCode(areas).stream()
+                            .map(SysArea::getAreaCname)
+                            .collect(Collectors.joining("-"));
+
+                    if (StringUtils.isNotEmpty(areaString)) {
+                        sysDeptVo.setDivision(areaString);
+                    }
+
+                    // 设置负责人信息
+                    Optional.ofNullable(item.getLeaderId())
+                            .map(sysUserJzgInfoService::getUserByUserId)
+                            .map(SysUserJzgInfo::getName)
+                            .ifPresent(sysDeptVo::setLeaderName);
+
+                    return sysDeptVo;
+                })
+                .collect(Collectors.toList());
+
+        // 按父ID分组
+        Map<String, List<SysDeptVo>> deptMap = voDept.stream()
+                .collect(Collectors.groupingBy(SysDeptVo::getParentId));
+
+        // 设置子部门
+        voDept.forEach(dept -> dept.setChildren(deptMap.getOrDefault(dept.getId(), new ArrayList<>())));
+
+        return Optional.ofNullable(sysDept)
+                .map(d -> deptMap.get(d.getParentId()))
+                .orElseGet(() -> deptMap.getOrDefault("0", new ArrayList<>()));
     }
 
 
+
     @Override
     public boolean setDeptLeader(DeptLeaderVo deptLeaderVo) {
         List<SysDept> depts = this.list(new LambdaQueryWrapper<SysDept>()

+ 3 - 0
tenant/organization/src/main/resources/mapper/SysDeptMapper.xml

@@ -37,6 +37,9 @@
 
                 and route like CONCAT('%',#{deptId}, '%')
             </if>
+            <if test="name!=null and name!=''">
+                and sd.name like CONCAT('%',#{name}, '%')
+            </if>
 
         GROUP BY
             sd.id