Bläddra i källkod

feat: qcc update

shc 1 år sedan
förälder
incheckning
e5312c5ecb

+ 35 - 0
doc/db/24wm_pkg_rdp.sql

@@ -0,0 +1,35 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_pkg_rdp
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_pkg_rdp`;
+CREATE TABLE `wm_pkg_rdp`
+(
+    `rdp_id`      BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '主键ID',
+    `pkg_id`      BIGINT UNSIGNED                    NOT NULL COMMENT '包ID',
+    `rdp_res`     JSON                               NULL COMMENT '兑付结果',
+    `act_mark`    INT UNSIGNED                       NOT NULL COMMENT '实际得分',
+    `total_mark`  INT UNSIGNED                       NOT NULL COMMENT '满分',
+    `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `update_by`   VARCHAR(32)                        NOT NULL COMMENT '更新人',
+    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE NOT NULL COMMENT '更新时间',
+    PRIMARY KEY `pk_id` (`rdp_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='执行包兑付凭证';
+
+
+-- ----------------------------
+-- Records of wm_pkg_rdp
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 51 - 0
doc/db/25wm_qcc_info.sql

@@ -0,0 +1,51 @@
+USE `cnbg_20240511_001`;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for wm_qcc_info
+-- ----------------------------
+DROP TABLE IF EXISTS `wm_qcc_info`;
+CREATE TABLE `wm_qcc_info`
+(
+    `info_id`                BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '主键ID',
+    `reg_code`               VARCHAR(32)                        NOT NULL COMMENT '三合一码',
+    `biz_info`               JSON                               NULL COMMENT '工商照面信息',
+    `revoke_info`            JSON                               NULL COMMENT '注销吊销信息',
+    `bank_info`              JSON                               NULL COMMENT '开票信息',
+    `scale`                  VARCHAR(10)                        NULL COMMENT '企业规模',
+    `partner_list`           JSON                               NULL COMMENT '工商登记股东',
+    `employee_list`          JSON                               NULL COMMENT '工商登记主要人员',
+    `change_list`            JSON                               NULL COMMENT '变更信息',
+    `actual_controller_list` JSON                               NULL COMMENT '实际控制人',
+    `admin_license_list`     JSON                               NULL COMMENT '行政许可',
+    `tax_credit_list`        JSON                               NULL COMMENT '纳税等级',
+    `shi_xin`                JSON                               NULL COMMENT '失信人',
+    `zhi_xing`               JSON                               NULL COMMENT '被执行人',
+    `admin_penalty`          JSON                               NULL COMMENT '行政处罚',
+    `exp`                    JSON                               NULL COMMENT '经营异常',
+    `chattel_mortgage`       JSON                               NULL COMMENT '动产抵押',
+    `liquidation`            JSON                               NULL COMMENT '清算信息',
+    `serious_illegal`        JSON                               NULL COMMENT '严重违法',
+    `bankruptcy`             JSON                               NULL COMMENT '破产重组',
+    `sumptuary`              JSON                               NULL COMMENT '限制高消费',
+    `tax_illegal`            JSON                               NULL COMMENT '税收违法',
+    `tax_abnormal`           JSON                               NULL COMMENT '税收非正常户',
+    `create_by`              VARCHAR(32)                        NOT NULL COMMENT '创建人',
+    `create_time`            DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
+    PRIMARY KEY `pk_id` (`info_id`) USING BTREE
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4
+  COLLATE = utf8mb4_general_ci
+  ROW_FORMAT = DYNAMIC COMMENT ='企查查信息';
+
+
+-- ----------------------------
+-- Records of wm_pkg_rdp
+-- ----------------------------
+BEGIN;
+COMMIT;
+
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 22 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmQccInfoDto.java

@@ -0,0 +1,22 @@
+package com.qunzhixinxi.hnqz.admin.api.dto;
+
+import lombok.AccessLevel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author jimmy
+ * @date 10/07/2024 11:15
+ */
+@NoArgsConstructor(access = AccessLevel.NONE)
+public final class WmQccInfoDto {
+
+    @Data
+    public static class OnRefresh{
+
+       @NotBlank(message = "企业信用代码必填")
+        private String regCode;
+    }
+}

+ 112 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmQccInfo.java

@@ -0,0 +1,112 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 企查查信息
+ *
+ * @author jimmy
+ * @date 10/07/2024 10:58
+ */
+@Data
+@TableName(value = "wm_qcc_info", autoResultMap = true)
+public class WmQccInfo implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = -555938390544033591L;
+
+    @TableId(type = IdType.AUTO)
+    private Integer infoId;
+
+    private String regCode;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> bizInfo;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> revokeInfo;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> bankInfo;
+
+
+    private String scale;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<Map<String, Object>> partnerList;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<Map<String, Object>> employeeList;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<Map<String, Object>> changeList;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private  List<Map<String, Object>> actualControllerList;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private  List<Map<String, Object>> adminLicenseList;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private  List<Map<String, Object>> taxCreditList;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> shiXin;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> zhiXing;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<Map<String, Object>> adminPenalty;
+
+
+    @TableField(value = "exp", typeHandler = JacksonTypeHandler.class)
+    private  Map<String, Object> exp;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> chattelMortgage;
+
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> liquidation;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> seriousIllegal;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> bankruptcy;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> sumptuary;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> taxIllegal;
+
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> taxAbnormal;
+
+    private String createBy;
+
+    private LocalDateTime createTime;
+
+
+}

+ 62 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmQccInfoController.java

@@ -0,0 +1,62 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import cn.hutool.core.util.CreditCodeUtil;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmQccInfoDto;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQccInfo;
+import com.qunzhixinxi.hnqz.admin.service.WmQccInfoService;
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 企查查信息
+ *
+ * @author jimmy
+ * @date 10/07/2024 11:10
+ */
+@RestController
+@AllArgsConstructor
+public class WmQccInfoController {
+
+    private final RedisTemplate<String, Object> redisTemplate;
+    private final WmQccInfoService qccInfoService;
+
+    @SysLog(value = "刷新企业信息")
+    @PostMapping(value = "/qcc/info/refresh")
+    public R<Map<String, Object>> refreshQccInfo(@Validated @RequestBody WmQccInfoDto.OnRefresh resource) {
+
+        boolean creditCode = CreditCodeUtil.isCreditCode(resource.getRegCode());
+        if (!creditCode) {
+            throw new BizException("请核实填写【" + resource.getRegCode() + "】的社会用代码是否正确");
+        }
+
+        final String cacheKey = "qcc:info:refresh:" + resource.getRegCode();
+
+
+        if (Boolean.FALSE.equals(redisTemplate.opsForValue().setIfAbsent(cacheKey, resource.getRegCode(), 3, TimeUnit.MINUTES))){
+            throw new BizException("当前企业存在在途刷新动作,请稍后重试");
+        }
+
+
+        return R.ok(qccInfoService.refresh(resource.getRegCode(), SecurityUtils.getUser()));
+
+    }
+
+    @GetMapping(value = "/qcc/info/details/{reg_code}")
+    public R<WmQccInfo> getQccInfo(@PathVariable(value = "reg_code") String regCode) {
+
+        return R.ok(qccInfoService.getQccInfo(regCode));
+    }
+}

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmQccInfoMapper.java

@@ -0,0 +1,15 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQccInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 企查查信息mapper
+ *
+ * @author jimmy
+ * @date 10/07/2024 11:10
+ */
+@Mapper
+public interface WmQccInfoMapper extends BaseMapper<WmQccInfo> {
+}

+ 33 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmQccInfoService.java

@@ -0,0 +1,33 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQccInfo;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+import java.util.Map;
+
+/**
+ * 企查查信息服务
+ *
+ * @author jimmy
+ * @date 10/07/2024 11:12
+ */
+public interface WmQccInfoService extends IService<WmQccInfo> {
+
+    /**
+     * 刷新企查查信息
+     *
+     * @param regCode 信用代码
+     * @param user    操作人
+     * @return 刷新结果
+     */
+    Map<String, Object> refresh(String regCode, HnqzUser user);
+
+    /**
+     * 获取企业企查查信息
+     *
+     * @param regCode 企业信用代码
+     * @return 企查查信息
+     */
+    WmQccInfo getQccInfo(String regCode);
+}

+ 256 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmQccInfoServiceImpl.java

@@ -0,0 +1,256 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONNull;
+import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmQccInfo;
+import com.qunzhixinxi.hnqz.admin.mapper.WmQccInfoMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmQccInfoService;
+import com.qunzhixinxi.hnqz.admin.util.QccUtils;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 企查查信息服务实现
+ *
+ * @author jimmy
+ * @date 10/07/2024 11:12
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class WmQccInfoServiceImpl extends ServiceImpl<WmQccInfoMapper, WmQccInfo> implements WmQccInfoService {
+
+
+    /**
+     * 刷新企查查信息
+     *
+     * @param regCode 信用代码
+     * @param user    操作人
+     * @return 刷新结果
+     */
+    @Override
+    public Map<String, Object> refresh(String regCode, HnqzUser user) {
+
+        Map<String, Object> result = new HashMap<>(3);
+        WmQccInfo qccInfo = new WmQccInfo();
+        qccInfo.setCreateBy(user.getUsername());
+        qccInfo.setCreateTime(LocalDateTime.now());
+        qccInfo.setRegCode(regCode);
+
+
+        // 刷新企业信息
+        JSONObject eciInfo = QccUtils.getECIInfo(regCode);
+        boolean ok = QccUtils.ok(eciInfo);
+        if (ok) {
+            JSONObject resp = QccUtils.getResult(eciInfo);
+            // 照面信息
+            Map<String, Object> bizInfo = new HashMap<>();
+            bizInfo.put("KeyNo", resp.getStr("KeyNo"));
+            bizInfo.put("Name", resp.getStr("Name"));
+            bizInfo.put("CreditCode", resp.getStr("CreditCode"));
+            bizInfo.put("BelongOrg", resp.getStr("BelongOrg"));
+            bizInfo.put("OperId", resp.getStr("OperId"));
+            bizInfo.put("OperName", resp.getStr("OperName"));
+            bizInfo.put("StartDate", resp.getStr("StartDate"));
+            bizInfo.put("EndDate", resp.getStr("EndDate"));
+            bizInfo.put("Status", resp.getStr("Status"));
+            bizInfo.put("RegistCapi", resp.getStr("RegistCapi"));
+            bizInfo.put("EconKind", resp.getStr("EconKind"));
+            bizInfo.put("Address", resp.getStr("Address"));
+            bizInfo.put("TermStart", resp.getStr("TermStart"));
+            bizInfo.put("TeamEnd", resp.getStr("TeamEnd"));
+            bizInfo.put("CheckDate", resp.getStr("CheckDate"));
+            bizInfo.put("OrgNo", resp.getStr("OrgNo"));
+            bizInfo.put("IsOnStock", resp.getStr("IsOnStock"));
+            bizInfo.put("StockNumber", resp.getStr("StockNumber"));
+            bizInfo.put("StockType", resp.getStr("StockType"));
+            bizInfo.put("RecCap", resp.getStr("RecCap"));
+            bizInfo.put("AreaCode", resp.getStr("AreaCode"));
+            bizInfo.put("ImageUrl", resp.getStr("ImageUrl"));
+            qccInfo.setBizInfo(bizInfo);
+
+            // qccInfo.setRevokeInfo((Map<String, Object>) resp.get("RevokeInfo"));
+
+            JSONArray partners = (JSONArray) resp.get("Partners");
+
+            List<Map<String, Object>> partner1 = partners.stream().map(p -> {
+                JSONObject partner = (JSONObject) p;
+                Map<String, Object> partnerInfo = new HashMap<>(4);
+                partnerInfo.put("StockName", partner.getStr("StockName"));
+                partnerInfo.put("StockPercent", partner.getStr("StockPercent"));
+                partnerInfo.put("FinalBenefitPercent", partner.getStr("FinalBenefitPercent"));
+                partnerInfo.put("StockType", partner.getStr("StockType"));
+                return partnerInfo;
+            }).collect(Collectors.toList());
+            qccInfo.setPartnerList(partner1);
+
+            JSONArray employees = (JSONArray) resp.get("Employees");
+            List<Map<String, Object>> emps = employees.stream().map(emp -> {
+                JSONObject employee = (JSONObject) emp;
+                Map<String, Object> empInfo = new HashMap<>(3);
+                empInfo.put("Name", employee.getStr("Name"));
+                empInfo.put("KeyNo", employee.getStr("KeyNo"));
+                empInfo.put("Job", employee.getStr("Job"));
+                return empInfo;
+            }).collect(Collectors.toList());
+            qccInfo.setEmployeeList(emps);
+
+            JSONArray changeRecords = (JSONArray) resp.get("ChangeRecords");
+            List<Map<String, Object>> changeRecord1 = changeRecords.stream().map(cr -> {
+                JSONObject changeRecord = (JSONObject) cr;
+                Map<String, Object> changeInfo = new HashMap<>(4);
+                changeInfo.put("ProjectName", changeRecord.getStr("ProjectName"));
+                changeInfo.put("ChangeDate", changeRecord.getStr("ChangeDate"));
+                changeInfo.put("AfterContent", changeRecord.getStr("AfterContent"));
+                changeInfo.put("BeforeContent", changeRecord.getStr("BeforeContent"));
+                return changeInfo;
+            }).collect(Collectors.toList());
+            qccInfo.setChangeList(changeRecord1);
+
+
+            // qccInfo.setBankInfo();
+            // qccInfo.setScale();
+            // qccInfo.setTaxAbnormal();
+
+            // 严重违法查询
+            JSONObject seriousIllegalList = QccUtils.getSeriousIllegalList(regCode);
+            if (QccUtils.ok(seriousIllegalList)) {
+                JSONObject result1 = QccUtils.getResult(seriousIllegalList);
+                Object data = result1.get("Data");
+                qccInfo.setSeriousIllegal(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 失信查询
+            JSONObject shixinList = QccUtils.getShixinList(regCode);
+            if (QccUtils.ok(shixinList)) {
+                JSONObject result1 = QccUtils.getResult(shixinList);
+                Object data = result1.get("Data");
+                qccInfo.setShiXin(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 实际控制人
+            JSONObject actualControlList = QccUtils.getActualControlList(regCode);
+            if (QccUtils.ok(actualControlList)) {
+                JSONArray array = QccUtils.getArray(actualControlList);
+                List<Map<String, Object>> collect = array.stream().map(a -> (Map<String, Object>) a).collect(Collectors.toList());
+                qccInfo.setActualControllerList(collect);
+            }
+
+            // 清算信息
+            JSONObject liquidationDetail = QccUtils.getLiquidationDetail(regCode);
+            if (QccUtils.ok(liquidationDetail)) {
+                JSONObject result1 = QccUtils.getResult(liquidationDetail);
+                Object data = result1.get("Data");
+                qccInfo.setLiquidation(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 税务等级信息
+            JSONObject taxCreditList = QccUtils.getTaxCreditList(regCode);
+            if (QccUtils.ok(taxCreditList)) {
+                JSONArray array = QccUtils.getArray(taxCreditList);
+                List<Map<String, Object>> collect = array.stream().map(a -> (Map<String, Object>) a).collect(Collectors.toList());
+                qccInfo.setTaxCreditList(collect);
+            }
+
+
+            // 经营异常
+            JSONObject exceptionList = QccUtils.getExceptionList(regCode);
+            if (QccUtils.ok(exceptionList)) {
+                JSONObject result1 = QccUtils.getResult(exceptionList);
+                Object data = result1.get("Data");
+                qccInfo.setExp(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 执行人
+            JSONObject zhixingList = QccUtils.getZhixingList(regCode);
+            if (QccUtils.ok(zhixingList)) {
+                JSONObject result1 = QccUtils.getResult(zhixingList);
+                Object data = result1.get("Data");
+                qccInfo.setZhiXing(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 税收违法
+            JSONObject taxIllegalList = QccUtils.getTaxIllegalList(regCode);
+            if (QccUtils.ok(taxIllegalList)) {
+                JSONObject result1 = QccUtils.getResult(taxIllegalList);
+                Object data = result1.get("Data");
+                qccInfo.setTaxIllegal(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 破产重组
+            JSONObject bankruptcyList = QccUtils.getBankruptcyList(regCode);
+            if (QccUtils.ok(bankruptcyList)) {
+                JSONObject result1 = QccUtils.getResult(bankruptcyList);
+                Object data = result1.get("Data");
+                qccInfo.setBankruptcy(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 动产抵押
+            JSONObject chattelMortgageList = QccUtils.getChattelMortgageList(regCode);
+            if (QccUtils.ok(chattelMortgageList)) {
+                JSONObject result1 = QccUtils.getResult(chattelMortgageList);
+                Object data = result1.get("Data");
+                qccInfo.setChattelMortgage(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 行政处罚
+            JSONObject adminPenaltyList = QccUtils.getAdminPenaltyList(regCode);
+            if (QccUtils.ok(adminPenaltyList)) {
+                JSONObject result1 = QccUtils.getResult(adminPenaltyList);
+                Object data = result1.get("Data");
+                qccInfo.setAdminPenalty((List<Map<String, Object>>) data);
+            }
+
+            // 限制高消费
+            JSONObject sumptuaryList = QccUtils.getSumptuaryList(regCode);
+            if (QccUtils.ok(sumptuaryList)) {
+                JSONObject result1 = QccUtils.getResult(sumptuaryList);
+                Object data = result1.get("Data");
+                qccInfo.setSumptuary(data instanceof JSONNull ? Collections.emptyMap() : (Map<String, Object>) result1.get("Data"));
+            }
+
+            // 行政许可
+            JSONObject adminLicenseList = QccUtils.getAdminLicenseList(regCode);
+            if (QccUtils.ok(adminLicenseList)) {
+                JSONObject result1 = QccUtils.getResult(adminLicenseList);
+                Object data = result1.get("Data");
+                qccInfo.setAdminLicenseList((List<Map<String, Object>>) data);
+            }
+
+        }
+
+
+        // 保存
+        this.save(qccInfo);
+
+        result.put("status", ok);
+        result.put("msg", QccUtils.getMessage(eciInfo));
+        result.put("qccInfo", qccInfo);
+        return result;
+    }
+
+    /**
+     * 获取企业企查查信息
+     *
+     * @param regCode 企业信用代码
+     * @return 企查查信息
+     */
+    @Override
+    public WmQccInfo getQccInfo(String regCode) {
+        List<WmQccInfo> list = this.list(Wrappers.<WmQccInfo>lambdaQuery().eq(WmQccInfo::getRegCode, regCode));
+        return CollUtil.isEmpty(list) ? null : list.get(0);
+    }
+}

+ 325 - 8
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/util/QccUtils.java

@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.util;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
@@ -22,6 +23,7 @@ import java.util.Map;
 @UtilityClass
 public class QccUtils {
 
+    private static final String BASE_PATH = "https://pro.qcc.com";
     private static final String API_KEY = "8476fff7305911eea3f10c42a106ce72";
     private static final String SECRET_KEY = "CZMXHE8RQ59LWHFEHVM93HWPKF7GD7PM";
 
@@ -33,13 +35,13 @@ public class QccUtils {
      */
     public static JSONObject getECIInfo(String searchKey) {
 
-        String basePath = "https://pro.qcc.com/api/yj/ECIInfoVerify/GetInfo";
+        final String METHOD_NAME = "/api/yj/ECIInfoVerify/GetInfo";
 
         // 校验参数
         checkSearchKey(searchKey);
 
         // 执行
-        String result = execute(basePath, searchKey);
+        String result = execute(METHOD_NAME, searchKey);
 
         // 解析结果
         return parseResult(result);
@@ -47,13 +49,298 @@ public class QccUtils {
     }
 
     /**
-     * 执行
+     * 严重违法查询
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getSeriousIllegalList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/SeriousIllegalCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 执行人
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getZhixingList(String searchKey) {
+
+        final String METHOD_NAME = "/api/yj/ZhixingCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 失信查询
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getShixinList(String searchKey) {
+
+        final String METHOD_NAME = "/api/yj/ShixinCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 破产重组
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getBankruptcyList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/BankruptcyCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 实际控制人
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getActualControlList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/ActualControl/SuspectedActualControl";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 清算信息
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getLiquidationDetail(String searchKey) {
+
+        final String METHOD_NAME = "/api/yj/LiquidationCheck/GetDetail";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 动产抵押
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getChattelMortgageList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/ChattelMortgageCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 税务等级
      *
-     * @param url       地址
      * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getTaxCreditList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/TaxCredit/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 税收违法
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getTaxIllegalList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/TaxIllegalCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 经营异常
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getExceptionList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/ExceptionCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 行政处罚
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getAdminPenaltyList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/AdminPenaltyCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 限制高消费
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getSumptuaryList(String searchKey) {
+
+        final String METHOD_NAME = "/api/yj/SumptuaryCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 行政许可
+     *
+     * @param searchKey 关键字
+     * @return 信息详情
+     */
+    public static JSONObject getAdminLicenseList(String searchKey) {
+
+
+        final String METHOD_NAME = "/api/yj/AdminLicenseCheck/GetList";
+
+        // 校验参数
+        checkSearchKey(searchKey);
+
+        // 执行
+        String result = execute(METHOD_NAME, searchKey);
+
+        // 解析结果
+        return parseResult(result);
+
+    }
+
+    /**
+     * 执行
+     *
+     * @param mehtodName 执行方法
+     * @param searchKey  关键字
      * @return 执行结果
      */
-    private static String execute(String url, String searchKey) {
+    private static String execute(String mehtodName, String searchKey) {
+
+        String url = buildUrl(mehtodName);
+
         // 封装头
         Map<String, String> headers = buildHeader();
 
@@ -64,6 +351,11 @@ public class QccUtils {
         return exec(url, headers, params);
     }
 
+
+    private static String buildUrl(String methodName) {
+        return BASE_PATH + methodName;
+    }
+
     /**
      * 构建头信息
      *
@@ -147,7 +439,7 @@ public class QccUtils {
 
     }
 
-    private static boolean ok(JSONObject parsed) {
+    public static boolean ok(JSONObject parsed) {
         return "200".equals(getCode(parsed));
     }
 
@@ -155,14 +447,39 @@ public class QccUtils {
         return parsed.getStr("Status");
     }
 
-    private static JSONObject getResult(JSONObject parsed) {
+    public static JSONObject getResult(JSONObject parsed) {
         return parsed.getJSONObject("Result");
     }
 
-    private static String getMessage(JSONObject parsed) {
+    public static JSONArray getArray(JSONObject parsed) {
+        return parsed.getJSONArray("Result");
+    }
+
+    public static String getMessage(JSONObject parsed) {
         return String.format("%s,【Status】:%s", getCode(parsed), parsed.getStr("Message"));
 
     }
 
 
+    public static void main(String[] args) {
+        // JSONObject jsonObject = getECIInfo("91110000100010062X");
+        // JSONObject jsonObject = getSeriousIllegalList("91110000100010062X");
+        // JSONObject jsonObject = getShixinList("91110000100010062X");
+        // JSONObject jsonObject = getActualControlList("91110000100010062X");
+        // JSONObject jsonObject = getLiquidationDetail("91110000100010062X");
+        // JSONObject jsonObject = getTaxCreditList("91110000100010062X");
+        // JSONObject jsonObject = getExceptionList("91110000100010062X");
+        // JSONObject jsonObject = getBankruptcyList("91110000100010062X");
+        // JSONObject jsonObject = getTaxIllegalList("91110000100010062X");
+        // JSONObject jsonObject = getZhixingList("91110000100010062X");
+        // JSONObject jsonObject = getChattelMortgageList("91110000100010062X");
+        // JSONObject jsonObject = getAdminPenaltyList("91110000100010062X");
+        // JSONObject jsonObject = getSumptuaryList("91110000100010062X");
+        JSONObject jsonObject = getAdminLicenseList("91110000100010062X");
+
+        System.out.println(jsonObject);
+
+    }
+
+
 }