0f753bec by xu

江苏数交所接口开发

1 parent 7fe42753
package com.csbr.qingcloud.portal.controller;
import com.csbr.qingcloud.portal.domain.vo.dataExchange.*;
import com.csbr.qingcloud.portal.service.EnterpriseAttachmentService;
import com.csbr.qingcloud.portal.service.EnterpriseService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @program:
* @description: 数据所交互控制器-控制器
* @author: makejava
* @create: 2025-03-24 17:29
**/
@RestController
@RequestMapping("/data-exchange")
@Tag(name = "数据所交互控制器-控制器")
public class DataExchangeController {
@Resource
private EnterpriseService enterpriseService;
@Resource
private EnterpriseAttachmentService enterpriseAttachmentService;
@PostMapping("/enterprise-data")
@Operation(summary= "开发主体查询")
public JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseData(@RequestBody @Valid JSQueryVO<JSEnterpriseQueryVO> queryVO) {
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> pageVO = enterpriseService.enterpriseData(queryVO);
return pageVO;
}
@PostMapping("/enterprise-attach")
@Operation(summary= "开发主体附件查询")
public JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseAttach(@RequestBody @Valid JSQueryVO<JSAttachQueryVO> queryVO) {
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> pageVO = enterpriseAttachmentService.enterpriseAttach(queryVO);
return pageVO;
}
//endregion
}
......@@ -2,6 +2,7 @@ package com.csbr.qingcloud.portal.domain.vo;
import csbr.cloud.entity.domain.base.dto.BasePageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jdk.jfr.Name;
import lombok.EqualsAndHashCode;
import lombok.Data;
import java.math.BigDecimal;
......@@ -17,5 +18,9 @@ import java.util.Date;
@Data
@Schema(title = "开发主体附件信息查询参数")
public class EnterpriseAttachmentQueryVO extends BasePageDTO {
/**
* 企业认证唯一标识
*/
@Name("企业认证唯一标识")
private String enterpriseGuid;
}
......
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @program:
* @description: 江苏开发主体附件查询参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏开发主体附件查询参数")
public class JSAttachQueryVO extends JSPageQueryVO {
/**
* 如有需要则填写开发主体名称
*/
@Schema(title = "如有需要则填写开发主体名称")
private String entityName;
/**
* 如有需要则填写统一社会信用代码
*/
@Schema(title = "如有需要则填写统一社会信用代码")
private String uscc;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @program:
* @description: 江苏数交所开发主体申请的领域列表参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏数交所开发主体申请的领域列表参数")
public class JSDomainRSVO {
/**
* 领域代码
*/
@Schema(description = "领域代码")
private String domainId;
/**
* 领域名称
*/
@Schema(description = "领域名称")
private String domainName;
/**
* 场景列表,scenarioName,scenarioCode
*/
@Schema(description = "场景列表")
private List<Map<String,String>> scenarioList;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
* @program:
* @description: 江苏开发主体查询参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏开发主体查询参数")
public class JSEnterpriseQueryVO extends JSPageQueryVO {
/**
* 如有需要则填写开发主体名称
*/
@Schema(title = "如有需要则填写开发主体名称")
private String entityName;
/**
* 如有需要则填写统一社会信用代码
*/
@Schema(title = "如有需要则填写统一社会信用代码")
private String uscc;
/**
* 产品更新起始时间
*/
private Date productUpdateStartTime;
/**
* 产品更新截止时间
*/
private Date productUpdateEndTime;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @program:
* @description: 江苏开发主体返回参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏开发主体返回参数")
public class JSEnterpriseRSVO {
/**
* 主体名称
*/
@Schema(title = "主体名称")
private String institutionName;
/**
* 统一社会信用代码
*/
@Schema(title = "统一社会信用代码")
private String institutionCode;
/**
* 组织机构性质
*/
@Schema(title = "组织机构性质")
private String institutionType;
/**
* 国家
*/
@Schema(title = "国家")
private String country;
/**
* 注册地
*/
@Schema(title = "注册地")
private String region;
/**
* 详细地址
*/
@Schema(title = "详细地址")
private String detailedAddress;
/**
* 法人名称
*/
@Schema(title = "法人名称")
private String corpnName;
/**
* 领域列表
*/
@Schema(title = "领域列表")
private List<JSDomainRSVO> domainList;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @program:
* @description: 江苏数交所返回结果
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏数交所返回结果")
public class JSExchageCommonRes<T> implements Serializable {
/**
* 返回码,0为成功,其它为失败
*/
@Schema(description = "返回码,0为成功,其它为失败")
private Integer code;
/**
* 返回描述
*/
@Schema(description = "返回描述")
private String message;
/**
* 数据
*/
@Schema(description = "数据")
private T data;
public JSExchageCommonRes(Integer code,T data){
this.code = code;
this.data = data;
}
public JSExchageCommonRes(Integer code,String message){
this.code = code;
this.message = message;
}
/**
* 返回成功
* @param data
* @param <T>
* @return
*/
public static <T> JSExchageCommonRes<T> success(T data) {
return new JSExchageCommonRes<T>(0,data);
}
/**
* 返回失败
* @param message
* @return
*/
public static JSExchageCommonRes fail(String message) {
return new JSExchageCommonRes(-1,message);
}
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @program:
* @description: 江苏数交所返回分页数据
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏数交所返回分页数据")
public class JSExchagePageListVO<T> implements Serializable {
/**
* 请求流水号
*/
@Schema(description = "请求流水号")
private String respFlowId;
/**
* 返回记录总数
*/
@Schema(description = "返回记录总数")
private Integer total;
/**
* 查询结果列表
*/
@Schema(description = "查询结果列表")
private List<T> data;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @program:
* @description: 江苏数交所分页参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏数交所分页参数")
public class JSPageQueryVO {
/**
* 请替换为实际的请求流水号
*/
@Schema(title = "请替换为实际的请求流水号")
private String reqFlowId;
/**
* 页码
*/
private Integer pageNum =1;
/**
* 每页条数
*/
private Integer pageSize = 20;
}
package com.csbr.qingcloud.portal.domain.vo.dataExchange;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @program:
* @description: 江苏开发主体查询参数
* @author: makejava
* @create: 2025-09-05 10:35
**/
@Data
@Schema(title = "江苏开发主体查询参数")
public class JSQueryVO<T> {
/**
* 请求方法名
*/
@Schema(title = "请求方法名")
private String method;
/**
* 请求参数
*/
@Schema(title = "请求参数")
private T bizParam;
private String appKey;
}
package com.csbr.qingcloud.portal.service;
import com.csbr.qingcloud.portal.domain.vo.dataExchange.*;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseAttachmentQueryVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseAttachmentRQVO;
......@@ -69,4 +70,10 @@ public interface EnterpriseAttachmentService {
*/
void removeHandleByGuids(List<String> guids);
/**
* 数交所附件同步
* @param queryVO
* @return
*/
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseAttach(JSQueryVO<JSAttachQueryVO> queryVO);
}
......
......@@ -2,6 +2,7 @@ package com.csbr.qingcloud.portal.service;
import com.csbr.cloud.workflow.domain.dto.appove.FlowQueryDTO;
import com.csbr.qingcloud.portal.domain.vo.*;
import com.csbr.qingcloud.portal.domain.vo.dataExchange.*;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.cloud.workflow.domain.dto.callback.BizCallbackDTO;
......@@ -105,4 +106,11 @@ public interface EnterpriseService {
* @return
*/
EnterpriseRSVO getEnterpriseDetailByLogonUser(String logonUser);
/**
* 开发主体分页查询
* @param queryVO
* @return
*/
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseData(JSQueryVO<JSEnterpriseQueryVO> queryVO);
}
......
package com.csbr.qingcloud.portal.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.csbr.cloud.common.enums.SystemError;
import com.csbr.cloud.common.exception.CsbrSystemException;
import com.csbr.cloud.common.util.CommonUtil;
import com.csbr.cloud.common.util.CsbrBeanUtil;
import com.csbr.cloud.common.util.MessageSourceUtil;
import com.csbr.qingcloud.portal.domain.vo.dataExchange.*;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterprise;
import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseService;
import csbr.cloud.entity.domain.base.vo.PageListVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseAttachmentQueryVO;
import com.csbr.qingcloud.portal.domain.vo.EnterpriseAttachmentRQVO;
......@@ -13,9 +17,11 @@ import com.csbr.qingcloud.portal.domain.vo.EnterpriseAttachmentRSVO;
import com.csbr.qingcloud.portal.mybatis.entity.MfEnterpriseAttachment;
import com.csbr.qingcloud.portal.mybatis.service.MfEnterpriseAttachmentService;
import com.csbr.qingcloud.portal.service.EnterpriseAttachmentService;
import csbr.cloud.entity.enums.ApprovalStateEnum;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -48,6 +54,9 @@ public class EnterpriseAttachmentServiceImpl implements EnterpriseAttachmentServ
@Resource
private MessageSourceUtil messageSourceUtil;
@Resource
private MfEnterpriseService mfEnterpriseService;
/**
* 开发主体附件信息分页查询
* @author makejava
......@@ -180,6 +189,69 @@ public class EnterpriseAttachmentServiceImpl implements EnterpriseAttachmentServ
}
}
@Override
public JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseAttach(JSQueryVO<JSAttachQueryVO> queryVO) {
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> result = beforeEnterpriseAttach(queryVO);
if(ObjectUtils.isNotEmpty(result)){
return result;
}
//查询开发主体信息
JSAttachQueryVO bizParam = queryVO.getBizParam();
LambdaQueryWrapper<MfEnterprise> queryWrapper = Wrappers.lambdaQuery();
if(ObjectUtils.isNotEmpty(bizParam.getEntityName())){
queryWrapper.eq(MfEnterprise::getTenantName,bizParam.getEntityName());
}
if(ObjectUtils.isNotEmpty(bizParam.getUscc())){
queryWrapper.eq(MfEnterprise::getSocialCreditCode,bizParam.getUscc());
}
queryWrapper.eq(MfEnterprise::getBizApproveState, ApprovalStateEnum.PASSED.getValue())
.select(MfEnterprise::getGuid);
List<MfEnterprise> enterprises = mfEnterpriseService.list(queryWrapper);
if(ObjectUtils.isEmpty(enterprises)){
return JSExchageCommonRes.fail("数据产品信息不存在");
}
EnterpriseAttachmentQueryVO attachmentQueryVO = new EnterpriseAttachmentQueryVO();
attachmentQueryVO.setEnterpriseGuid(enterprises.get(0).getGuid());
attachmentQueryVO.setPageIndex(Long.valueOf(bizParam.getPageNum()));
attachmentQueryVO.setPageSize(Long.valueOf(bizParam.getPageSize()));
PageListVO<EnterpriseAttachmentRSVO> enterpriseAttachmentPageListVO = pageList(attachmentQueryVO);
JSExchagePageListVO<JSEnterpriseRSVO> pageListVO = new JSExchagePageListVO<>();
pageListVO.setRespFlowId(bizParam.getReqFlowId());
afterEnterpriseAttach(pageListVO,enterpriseAttachmentPageListVO);
return JSExchageCommonRes.success(pageListVO);
}
/**
* 查询后转换
* @param pageListVO
* @param enterpriseAttachmentPageListVO
*/
private void afterEnterpriseAttach(JSExchagePageListVO<JSEnterpriseRSVO> pageListVO,
PageListVO<EnterpriseAttachmentRSVO> enterpriseAttachmentPageListVO) {
pageListVO.setTotal(enterpriseAttachmentPageListVO.getTotalRows().intValue());
pageListVO.setData(csbrBeanUtil.convert(enterpriseAttachmentPageListVO.getRecords(),JSEnterpriseRSVO.class));
}
private JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> beforeEnterpriseAttach(JSQueryVO<JSAttachQueryVO> queryVO) {
if(ObjectUtils.isEmpty(queryVO)){
return JSExchageCommonRes.fail("查询参数为空。");
}
if(ObjectUtils.isEmpty(queryVO.getBizParam())){
return JSExchageCommonRes.fail("请求参数为空。");
}
JSAttachQueryVO bizParam = queryVO.getBizParam();
if(bizParam.getPageNum()<1){
return JSExchageCommonRes.fail("页码参数无效,查询页码从1开始");
}
if(bizParam.getPageSize()<1 || bizParam.getPageSize()> 20 ){
return JSExchageCommonRes.fail("每页条数无效,最大20");
}
if(StringUtils.isBlank(bizParam.getEntityName()) && StringUtils.isBlank(bizParam.getUscc())){
return JSExchageCommonRes.fail("entityName和uscc必须至少填一个");
}
return null;
}
/**
* 开发主体附件信息新新增前置处理
* @author makejava
......
......@@ -21,6 +21,7 @@ import com.csbr.cloud.workflow.domain.vo.appove.FlowRQBaseVO;
import com.csbr.cloud.workflow.util.ApprovalFlowUtil;
import com.csbr.cloud.workflow.util.FlowAbstractImpl;
import com.csbr.qingcloud.portal.domain.vo.*;
import com.csbr.qingcloud.portal.domain.vo.dataExchange.*;
import com.csbr.qingcloud.portal.feign.ConfigureFeign;
import com.csbr.qingcloud.portal.feign.PersonelFeign;
import com.csbr.qingcloud.portal.feign.WorkflowFeign;
......@@ -629,6 +630,60 @@ public class EnterpriseServiceImpl extends FlowAbstractImpl implements Enterpris
}
@Override
public JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> enterpriseData(JSQueryVO<JSEnterpriseQueryVO> queryVO) {
JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> vo = beforeEnterpriseData(queryVO);
if(ObjectUtils.isNotEmpty(vo)){
return vo;
}
LambdaQueryWrapper<MfEnterprise> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(MfEnterprise::getBizApproveState,ApprovalStateEnum.PASSED.getValue());
queryWrapper.eq(MfEnterprise::getZqName,queryVO.getAppKey());
queryWrapper.orderByDesc(MfEnterprise::getCreateTime);
JSEnterpriseQueryVO bizParam = queryVO.getBizParam();
EnterpriseQueryVO enterpriseQueryVO = new EnterpriseQueryVO();
enterpriseQueryVO.setPageIndex(Long.valueOf(bizParam.getPageNum()));
enterpriseQueryVO.setPageSize(Long.valueOf(bizParam.getPageSize()));
PageListVO<MfEnterprise> enterprisePageListVO = mfEnterpriseService.csbrPageList(enterpriseQueryVO, queryWrapper);
JSExchagePageListVO<JSEnterpriseRSVO> pageListVO = new JSExchagePageListVO<JSEnterpriseRSVO>();
pageListVO.setRespFlowId(bizParam.getReqFlowId());
afterEnterpriseData(enterprisePageListVO, pageListVO);
return JSExchageCommonRes.success(pageListVO);
}
private void afterEnterpriseData(PageListVO<MfEnterprise> enterprisePageListVO, JSExchagePageListVO<JSEnterpriseRSVO> pageListVO) {
pageListVO.setTotal(enterprisePageListVO.getTotalRows().intValue());
List<MfEnterprise> records = enterprisePageListVO.getRecords();
List<JSEnterpriseRSVO> rsvos = new ArrayList<>();
for (MfEnterprise record : records) {
JSEnterpriseRSVO enterpriseRSVO = new JSEnterpriseRSVO();
enterpriseRSVO.setInstitutionName(record.getTenantName());
enterpriseRSVO.setInstitutionCode(record.getSocialCreditCode());
enterpriseRSVO.setCountry("中国");
enterpriseRSVO.setRegion(record.getDistrict());
enterpriseRSVO.setCorpnName(record.getJuridicalPerson());
rsvos.add(enterpriseRSVO);
}
pageListVO.setData(rsvos);
}
private JSExchageCommonRes<JSExchagePageListVO<JSEnterpriseRSVO>> beforeEnterpriseData(JSQueryVO<JSEnterpriseQueryVO> queryVO) {
if(ObjectUtils.isEmpty(queryVO)){
return JSExchageCommonRes.fail("查询参数为空。");
}
if(ObjectUtils.isEmpty(queryVO.getBizParam())){
return JSExchageCommonRes.fail("请求参数为空。");
}
JSEnterpriseQueryVO bizParam = queryVO.getBizParam();
if(bizParam.getPageNum()<1){
return JSExchageCommonRes.fail("页码参数无效,查询页码从1开始");
}
if(bizParam.getPageSize()<1 || bizParam.getPageSize()> 20 ){
return JSExchageCommonRes.fail("每页条数无效,最大20");
}
return null;
}
@Override
public Boolean check(EnterpriseRQVO vo) {
String tenantName = personelFeign.getAllTenantGuidNameMap().getData().get(vo.getTenantGuid());
TenantRQVO tenant = csbrBeanUtil.convert(vo,TenantRQVO.class);
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!