From 6a021cafb079bc8550e754b0fe461939cfd21bf7 Mon Sep 17 00:00:00 2001 From: du <1725534722@qq.com> Date: Fri, 30 May 2025 09:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E5=BA=A6=E4=BF=A1=E6=81=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=92=8C=E4=BC=81=E4=B8=9A=E5=85=A5=E9=A9=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docking/controller/ProjectController.java | 61 ++++ .../entity/request/EditProjectRequest.java | 30 ++ .../ruoyi/docking/mapper/ProjectMapper.java | 35 +++ .../docking/mapper/ProjectProgressMapper.java | 4 +- .../ruoyi/docking/service/ProjectService.java | 30 ++ .../impl/ProjectProgressServiceImpl.java | 8 +- .../service/impl/ProjectServiceImpl.java | 48 +++ .../BasicInformationController.java | 64 +--- .../gysl/controller/EnterpriseController.java | 20 +- .../ruoyi/gysl/entity/BasicInformation.java | 4 + .../com/ruoyi/gysl/entity/Enterprise.java | 286 ++++++++++++++---- .../controller/SingleLoginController.java | 2 +- .../gysl/login/util/HttpGetDataUtil.java | 134 ++++++++ .../com/ruoyi/gysl/login/util/StringUtil.java | 34 ++- .../service/impl/EnterpriseServiceImpl.java | 2 +- .../src/main/resources/application.yml | 7 +- .../main/resources/mapper/ProjectMapper.xml | 15 + .../mapper/ProjectProgressMapper.xml | 2 +- .../framework/config/SecurityConfig.java | 3 +- 19 files changed, 637 insertions(+), 152 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/docking/controller/ProjectController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/docking/entity/request/EditProjectRequest.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/docking/service/ProjectService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectServiceImpl.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/HttpGetDataUtil.java create mode 100644 ruoyi-admin/src/main/resources/mapper/ProjectMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/controller/ProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/controller/ProjectController.java new file mode 100644 index 0000000..41ffdc6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/controller/ProjectController.java @@ -0,0 +1,61 @@ +package com.ruoyi.docking.controller; + + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.docking.entity.Project; +import com.ruoyi.docking.entity.ProjectProgress; +import com.ruoyi.docking.entity.request.EditProjectRequest; +import com.ruoyi.docking.entity.request.YdxxtjRequest; +import com.ruoyi.docking.service.ProjectProgressService; +import com.ruoyi.docking.service.ProjectService; +import com.ruoyi.gysl.entity.request.ZwIdPageReq; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.List; + +/** + * 项目(对接数据)(Project)表控制层 + * + * @author makejava + * @since 2025-03-25 14:49:04 + */ +@Api(tags = "项目(对接数据)") +@RestController +@RequestMapping("/gysl/project") +public class ProjectController extends BaseController { + /** + * 服务对象 + */ + @Resource + private ProjectService projectService; + + /** + * 查询所有项目数据 + * + * @param projectName 查询实体 + * @return 所有数据 + */ + @ApiOperation(value = "查询所有项目数据", response = Project.class) + @GetMapping("/page") + public AjaxResult selectAll(String projectName) { + return success(projectService.page(projectName)); + } + + /** + * 绑定项目 + */ + @ApiOperation(value = "绑定项目") + @PostMapping("/editProject") + public AjaxResult editProject(@RequestBody @Valid EditProjectRequest editProjectRequest) { + return success(projectService.editProject(editProjectRequest)); + } + +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/request/EditProjectRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/request/EditProjectRequest.java new file mode 100644 index 0000000..b9d3f3b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/entity/request/EditProjectRequest.java @@ -0,0 +1,30 @@ +package com.ruoyi.docking.entity.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 绑定项目 + * + * @author du + * @since 2024/7/18 17:14 + */ +@Data +public class EditProjectRequest { + + /** + * 本系统项目id + */ + @ApiModelProperty("本系统项目id") + @NotNull(message = "本系统项目id不能为空!") + private Long id; + + /** + * 项目id + */ + @ApiModelProperty("项目id") + @NotNull(message = "项目id不能为空!") + private Integer projectId; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectMapper.java new file mode 100644 index 0000000..e8d4c09 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectMapper.java @@ -0,0 +1,35 @@ +package com.ruoyi.docking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.annotation.DataSource; +import com.ruoyi.common.enums.DataSourceType; +import com.ruoyi.docking.entity.Project; +import com.ruoyi.docking.entity.request.EditProjectRequest; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目(对接数据)(ProjectProgress)表数据库访问层 + * + * @author makejava + * @since 2025-03-25 14:49:04 + */ +public interface ProjectMapper extends BaseMapper { + + + /** + * 分页查询所有数据 + * + * @param name 查询 + * @return 所有数据 + */ + @DataSource(value = DataSourceType.SLAVE) + List page(@Param("name") String name); + + /** + * 绑定项目 + */ + int editProject(@Param("req") EditProjectRequest editProjectRequest); +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectProgressMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectProgressMapper.java index 85c6be5..6a1f778 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectProgressMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/mapper/ProjectProgressMapper.java @@ -23,11 +23,11 @@ public interface ProjectProgressMapper extends BaseMapper { /** * 分页查询所有数据 * - * @param name 查询 + * @param projectId 查询 * @return 所有数据 */ @DataSource(value = DataSourceType.SLAVE) - List page( @Param("name") String name); + List page(@Param("projectId") Long projectId); /** * 根据项目id查询对应的新增数据 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/service/ProjectService.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/ProjectService.java new file mode 100644 index 0000000..714049a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/ProjectService.java @@ -0,0 +1,30 @@ +package com.ruoyi.docking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.docking.entity.Project; +import com.ruoyi.docking.entity.request.EditProjectRequest; + +import java.util.List; + +/** + * 项目(对接数据)(ProjectProgress)表服务接口 + * + * @author makejava + * @since 2025-03-25 14:49:04 + */ +public interface ProjectService extends IService { + + /** + * 查询所有数据 + * + * @param projectName 查询实体 + * @return 所有数据 + */ + List page( String projectName); + + /** + * 绑定项目 + */ + int editProject(EditProjectRequest editProjectRequest); +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectProgressServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectProgressServiceImpl.java index 47842f8..29374f0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectProgressServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectProgressServiceImpl.java @@ -51,8 +51,8 @@ public class ProjectProgressServiceImpl extends ServiceImpl page = new ArrayList<>(); - if (isZs) { - page = projectProgressMapper.page(byId.getName()); + if (isZs&&byId.getProjectId()!=null) { + page = projectProgressMapper.page(byId.getProjectId()); } List list = projectProgressMapper.getXmId(byId.getId()); return new ArrayList<>(Stream.concat(list.stream(), page.stream()) @@ -73,8 +73,8 @@ public class ProjectProgressServiceImpl extends ServiceImpl page = new ArrayList<>(); - if (isZs) { - page = projectProgressMapper.page(byId.getName()); + if (isZs&&byId.getProjectId()!=null) { + page = projectProgressMapper.page(byId.getProjectId()); } List list = projectProgressMapper.getXmId(byId.getId()); List projectProgresses = new ArrayList<>(Stream.concat(list.stream(), page.stream()) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectServiceImpl.java new file mode 100644 index 0000000..4f59472 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/docking/service/impl/ProjectServiceImpl.java @@ -0,0 +1,48 @@ +package com.ruoyi.docking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.docking.entity.Project; +import com.ruoyi.docking.entity.request.EditProjectRequest; +import com.ruoyi.docking.mapper.ProjectMapper; +import com.ruoyi.docking.service.ProjectService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 项目(对接数据)(ProjectProgress)表服务实现类 + * + * @author makejava + * @since 2025-03-25 14:49:04 + */ +@Service("projectService") +public class ProjectServiceImpl extends ServiceImpl implements ProjectService { + + + @Resource + private ProjectMapper projectMapper; + + @Value("${isZs}") + private Boolean isZs; + + /** + * 查询所有数据 + * + * @param projectName 查询实体 + * @return 所有数据 + */ + @Override + public List page(String projectName) { + return projectMapper.page(projectName); + } + /** + * 绑定项目 + */ + @Override + public int editProject(EditProjectRequest editProjectRequest) { + return projectMapper.editProject(editProjectRequest); + } +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/BasicInformationController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/BasicInformationController.java index 9615071..de6e01e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/BasicInformationController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/BasicInformationController.java @@ -19,6 +19,7 @@ import com.ruoyi.gysl.entity.request.AuditRequest; import com.ruoyi.gysl.entity.request.BasicInformationPageReq; import com.ruoyi.gysl.entity.response.BasicInformationResponse; import com.ruoyi.gysl.entity.response.ProjectExcelInfo; +import com.ruoyi.gysl.login.util.HttpGetDataUtil; import com.ruoyi.gysl.login.util.SM2Demo; import com.ruoyi.gysl.login.util.SM4Demo; import com.ruoyi.gysl.login.util.StringUtil; @@ -120,6 +121,8 @@ public class BasicInformationController extends BaseController { @Value("${sceneId}") private String sceneId; + @Resource + private HttpGetDataUtil httpGetDataUtil; /** * 建筑工程施工许可 */ @@ -189,67 +192,6 @@ public class BasicInformationController extends BaseController { @ApiOperation("建筑工程竣工验收备案表") @GetMapping("/getJgysbab") public AjaxResult getJgysbab() throws Exception { - if (isZs) { - String czztdm = "9132059456176406XP"; - String czztmc = "苏州纳米科技发展有限公司"; - System.out.println(czztdm); - System.out.println(czztmc); - String contacts = "http://172.21.10.46/api/invoke/323018/jzgcjgysbab"; - String a1 = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec(accessId.getBytes(), - "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); - String a2 = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec(czztdm.getBytes(), - "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); - String a3 = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec(czztmc.getBytes(), - "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); - String a4 = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec(sceneId.getBytes(), - "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); - //生成sm3签名 - String input = "accessId=" + accessId + "&czztdm=" + czztdm + "&czztmc=" + czztmc + "&sceneId=" + sceneId; - try { - // 1. 构建 URL(含签名参数,处理特殊符号) - String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8") - .replace("+", "%20"); // 确保 + 不被编码为空格 - String fullUrl = contacts + "?signature=" + encodedSignature; - // 2. 创建连接 - URL url = new URL(fullUrl); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setDoOutput(true); - conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); - - // 3. 构建请求体(严格对齐 curl -F 格式) - try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) { - writeFormField(out, "accessId", a1); - writeFormField(out, "czztdm", a2); - writeFormField(out, "czztmc", a3); - writeFormField(out, "sceneId", a4); - // 结束标记 - out.writeBytes("--" + BOUNDARY + "--\r\n"); - } - // 4. 处理响应 - int statusCode = conn.getResponseCode(); - StringBuilder response = getResponse(statusCode, conn); - if (statusCode == 200) { - JSONObject jsonObj = JSONObject.parseObject(String.valueOf(response)); -// if ("200".equals(jsonObj.getString("code"))) { // 使用 getString 避免类型问题 - // 直接获取 data 字段为 JSONObject(无需转换 String) - JSONObject reqData = jsonObj.getJSONObject("data"); - String responseParams = reqData.getString("responseParams"); - String s = new String((byte[]) SM2Demo.dexec( - Base64.getDecoder().decode(responseParams), "C1C2C3", - Base64.getDecoder().decode(sm2)), - StandardCharsets.UTF_8); - System.out.println(s); - return AjaxResult.success(StringUtil.getFinalData(s)); - } - } catch (Exception y) { - y.printStackTrace(); - } - } return success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/EnterpriseController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/EnterpriseController.java index 1f7cd2f..e4ca703 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/EnterpriseController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/EnterpriseController.java @@ -8,6 +8,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.gysl.entity.Enterprise; import com.ruoyi.gysl.entity.request.ZwIdPageReq; +import com.ruoyi.gysl.login.util.HttpGetDataUtil; import com.ruoyi.gysl.service.EnterpriseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -38,6 +39,9 @@ public class EnterpriseController extends BaseController { @Resource private EnterpriseService enterpriseService; + @Resource + private HttpGetDataUtil httpGetDataUtil; + /** * 根据项目id分页查询入驻企业 * @@ -102,15 +106,23 @@ public class EnterpriseController extends BaseController { } else { List pl = new ArrayList<>(proList.stream() .collect(Collectors.toMap( - Enterprise::getCode, // 以 email 作为键 + Enterprise::getTyshxydm, // 以 email 作为键 p -> p, // 值保留对象本身 (existing, replacement) -> existing // 保留第一个出现的元素 )) .values()); - pl.forEach(x->{ - x.setXmId(xmId); + //=============为将要导入的企业补充信息 + pl.forEach(x -> { + try { + Enterprise enterpriseData = httpGetDataUtil.getEnterpriseData(x.getTyshxydm()); + if (enterpriseData != null) { + enterpriseData.setXmId(xmId); + enterpriseService.save(enterpriseData); + } + } catch (Exception e) { + throw new RuntimeException(e); + } }); - enterpriseService.saveBatch(proList); successMsg.append("导入成功"); } return AjaxResult.success(successMsg); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java index c3ee14a..26ca809 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/BasicInformation.java @@ -169,5 +169,9 @@ public class BasicInformation extends BaseModel { @Excel(name = "计划投资额", type = Excel.Type.EXPORT) private BigDecimal jhtze; + + @ApiModelProperty("项目id(对接数据)") + private Long projectId; + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Enterprise.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Enterprise.java index 80d14db..f9ffb43 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Enterprise.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Enterprise.java @@ -1,135 +1,299 @@ package com.ruoyi.gysl.entity; -import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.annotation.Excel; import com.ruoyi.gysl.entity.baseModel.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; -import java.time.LocalDateTime; /** - * 入驻企业基本信息(Enterprise)实体类 + * 入驻企业基本信息 bms_enterprise_basic_info * - * @author makejava - * @since 2025-02-24 11:26:49 + * @author farben + * @date 2023-08-25 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("gysl_enterprise") @ApiModel(value = "Enterprise", description = "入驻企业基本信息") public class Enterprise extends BaseModel implements Serializable { - + private static final long serialVersionUID = 1L; /** * 主键id */ - @ApiModelProperty(value = "主键id") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 项目id */ - @ApiModelProperty(value = "项目id") - @TableField("xm_id") + @ApiModelProperty("项目id") private Long xmId; + /** + * 源主键 + */ + @ApiModelProperty("源主键") + private String ywid; + + /** + * 源表org + */ + @ApiModelProperty("源表org") + private String org; + /** * 企业名称 */ - @ApiModelProperty(value = "企业名称") - @TableField("name") - @Excel(name = "企业名称") - private String name; + @ApiModelProperty("企业名称") + @Excel(name = "企业名称*",required = true) + private String qymc; + + /** + * 标识证号 + */ + @ApiModelProperty("标识证号") + private String bszh; /** * 统一社会信用代码 */ - @ApiModelProperty(value = "统一社会信用代码") - @TableField("code") - @Excel(name = "统一社会信用代码") - private String code; + @ApiModelProperty("统一社会信用代码") + @Excel(name = "统一社会信用代码*",required = true) + private String tyshxydm; /** - * 所属行业 + * 企业注册号 */ - @ApiModelProperty(value = "所属行业 ") - @TableField("sshy") - @Excel(name = "所属行业") - private String sshy; + @ApiModelProperty("企业注册号") + private String qyzch; /** - * 租金价格 + * 组织机构代码 */ - @ApiModelProperty(value = "租金价格") - @TableField("zjjg") - @Excel(name = "租金价格") - private Integer zjjg; + @ApiModelProperty("组织机构代码") + private String zzjgdm; /** - * 注册地址 + * 经济类型代码 */ - @ApiModelProperty(value = "注册地址") - @Excel(name = "注册地址") - private String zcdz; + @ApiModelProperty("经济类型代码") + private String jjlxdm; /** - * 成立日期 + * 经济类型名称 */ - @ApiModelProperty(value = "成立日期 yyyy-MM-dd HH:mm:ss") - @Excel(name = "成立日期",dateFormat = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime clrq; + @ApiModelProperty("经济类型名称") + private String jjlxmc; /** - * 注册资本 + * 企业类型代码 */ - @ApiModelProperty(value = "注册资本") - @Excel(name = "注册资本") - private String zczb; + @ApiModelProperty("企业类型代码") + private String qylxdm; /** - * 法定代表人 + * 企业类型名称 */ - @ApiModelProperty(value = "法定代表人") - @Excel(name = "注册地址") - private String fddbr; + @ApiModelProperty("企业类型名称") + private String qylxmc; /** - * 企业类型 + * 注册资金 */ - @ApiModelProperty(value = "企业类型") - @Excel(name = "企业类型") - private String qylx; + @ApiModelProperty("注册资金") + private String zczj; + /** + * 注册资本币种 + */ + @ApiModelProperty("注册资本币种") + private String zczbbz; + + /** + * 注册类型 + */ + @ApiModelProperty("注册类型") + private String zclx; /** * 经营范围 */ - @ApiModelProperty(value = "经营范围") - @Excel(name = "经营范围") + @ApiModelProperty("经营范围") private String jyfw; + /** + * 经营或营业起始日期 + */ + @ApiModelProperty("经营或营业起始日期") + private String jyhyyqsrq; + + /** + * 经营或营业截止日期 + */ + @ApiModelProperty("经营或营业截止日期") + private String jyhyyjzrq; /** - * 组织机构代码 + * 行业代码 */ - @ApiModelProperty(value = "组织机构代码") - @Excel(name = "组织机构代码") - private String zzjgdm; + @ApiModelProperty("行业代码") + private String hydm; /** - * 税务登记号码 + * 行业名称 */ - @ApiModelProperty(value = "税务登记号码") - @Excel(name = "税务登记号码") - private String swdjhm; + @ApiModelProperty("行业名称") + private String hymc; + /** + * 行业门类 + */ + @ApiModelProperty("行业门类") + private String hyml; + + /** + * 产业类型 + */ + @ApiModelProperty("产业类型") + private String cylx; + + /** + * 企业住所 + */ + @ApiModelProperty("企业住所") + private String qyzs; + + /** + * 经营场所 + */ + @ApiModelProperty("经营场所") + private String jycs; + + /** + * 经营场所行政区划 + */ + @ApiModelProperty("经营场所行政区划") + private String jycsxzqh; + + /** + * 邮政编码 + */ + @ApiModelProperty("邮政编码") + private String yzbm; + + /** + * 成立日期 + */ + @ApiModelProperty("成立日期") + private String clrq; + + /** + * 信用等级 + */ + @ApiModelProperty("信用等级") + private String xydj; + + /** + * 企业规模 + */ + @ApiModelProperty("企业规模") + private String qygm; + + /** + * 法定代表人姓名 + */ + @ApiModelProperty("法定代表人姓名") + private String fddbrxm; + + /** + * 法定代表人证件号码 + */ + @ApiModelProperty("法定代表人证件号码") + private String fddbrzjhm; + + /** + * 登记机关 + */ + @ApiModelProperty("登记机关") + private String djjg; + + /** + * 核准日期 + */ + @ApiModelProperty("核准日期") + private String hzrq; + + /** + * 经营状态 + */ + @ApiModelProperty("经营状态") + private String jyzt; + + /** + * 状态日期 + */ + @ApiModelProperty("状态日期") + private String ztrq; + + /** + * 注销日期 + */ + @ApiModelProperty("注销日期") + private String zxrq; + + /** + * 吊销日期 + */ + @ApiModelProperty("吊销日期") + private String dxrq; + + /** + * 联系电话 + */ + @ApiModelProperty("联系电话") + private String lxdh; + + /** + * 是否园区内 + */ + @ApiModelProperty("是否园区内") + private String sfyqn; + + /** + * 操作标识 + */ + @ApiModelProperty("操作标识") + private String dwOperation; + + /** + * 入库时间 + */ + @ApiModelProperty("入库时间") + private String dwTimestamp; + + /** + * 代理键 + */ + @ApiModelProperty("代理键") + private String dwAgencykey; + + /** + * 来源机构 + */ + @ApiModelProperty("来源机构") + private String dwLyjg; + + /** + * 来源表名 + */ + @ApiModelProperty("来源表名") + private String dwLyb; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java index c50ee84..6b1e153 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java @@ -125,7 +125,7 @@ public class SingleLoginController { res.setMain(req); return AjaxResult.success(res); }else { - throw new ServiceException("贵公司无需参与苏州工业园区工业上楼相关填报工作。系统将即刻为您返回企业服务综合平台界面,以便您处理其他业务事宜!"); + throw new ServiceException("贵公司无需参与苏州工业园区工业上楼相关填报工作。系统将即刻为您返回企业服务一张网界面,以便您处理其他业务事宜!"); } } else { throw new ServiceException("该用户不是企业法人"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/HttpGetDataUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/HttpGetDataUtil.java new file mode 100644 index 0000000..b58430f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/HttpGetDataUtil.java @@ -0,0 +1,134 @@ +package com.ruoyi.gysl.login.util; + +import cn.hutool.crypto.SmUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.ruoyi.gysl.entity.Enterprise; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +/** + * 获取对接数据接口信息工具类 + * + * @author du + * @since 2025/5/29 下午1:49 + */ +@Service +public class HttpGetDataUtil { + + private static final String BOUNDARY = "----WebKitFormBoundary7MA4YWxkTrZu0gW"; // 边界字符串(需唯一) + + @Value("${sm2}") + private String sm2; + + @Value("${isZs}") + private Boolean isZs; + + @Value("${sm4}") + private String sm4; + + @Value("${dataUrl}") + private String dataUrl; + + @Value("${accessId}") + private String accessId; + + @Value("${sceneId}") + private String sceneId; + + public Enterprise getEnterpriseData(String tyshxydm) throws Exception { + if (isZs) { + String contacts = dataUrl + "frjbxxtyshxydm"; + String a1 = Base64.getEncoder().encodeToString((byte[]) + SM4Demo.exec(tyshxydm.getBytes(), + "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); + String a2 = Base64.getEncoder().encodeToString((byte[]) + SM4Demo.exec("0".getBytes(), + "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); +// String a3 = Base64.getEncoder().encodeToString((byte[]) +// SM4Demo.exec("10".getBytes(), +// "ECB", "PKCS5Padding", "random", sm4.getBytes(), null)); + //生成sm3签名 + String input = "pageIndex=0" + "&tyshxydm=" + tyshxydm; + try { + // 1. 构建 URL(含签名参数,处理特殊符号) + String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8") + .replace("+", "%20"); // 确保 + 不被编码为空格 + String fullUrl = contacts + "?signature=" + encodedSignature; + // 2. 创建连接 + URL url = new URL(fullUrl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); + + // 3. 构建请求体(严格对齐 curl -F 格式) + try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) { + writeFormField(out, "pageIndex", a2); + writeFormField(out, "tyshxydm", a1); + // 结束标记 + out.writeBytes("--" + BOUNDARY + "--\r\n"); + } + // 4. 处理响应 + int statusCode = conn.getResponseCode(); + StringBuilder response = getResponse(statusCode, conn); + if (statusCode == 200) { + JSONObject jsonObj = JSONUtil.parseObj(String.valueOf(response)); + if ("200".equals(jsonObj.get("code"))) { // 使用 getString 避免类型问题 + // 直接获取 data 字段为 JSONObject(无需转换 String) + JSONObject reqData = jsonObj.getJSONObject("data"); + String responseParams = reqData.getStr("responseParams"); + String s = new String((byte[]) SM2Demo.dexec( + Base64.getDecoder().decode(responseParams), "C1C2C3", + Base64.getDecoder().decode(sm2)), + StandardCharsets.UTF_8); + System.out.println(s); + JSONObject finalData = JSONUtil.parseObj(s); + JSONArray arr = finalData.getJSONArray("data"); + if (finalData.getInt("total") > 0) { + return JSONUtil.toBean(arr.getJSONObject(0).toString(), Enterprise.class); + } else { + return null; + } + } + } + } catch (Exception y) { + y.printStackTrace(); + } + } + return null; + } + + + private StringBuilder getResponse(int statusCode, HttpURLConnection conn) throws IOException { + StringBuilder response = new StringBuilder(); + try (BufferedReader in = new BufferedReader(new InputStreamReader( + (statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(), + StandardCharsets.UTF_8))) { + String line; + while ((line = in.readLine()) != null) { + response.append(line); + } + } + return response; + } + + private void writeFormField(DataOutputStream out, String name, String value) throws Exception { + out.writeBytes("--" + BOUNDARY + "\r\n"); + out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n"); + out.writeBytes("Content-Type: text/plain; charset=UTF-8\r\n\r\n"); + out.writeBytes(value + "\r\n"); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/StringUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/StringUtil.java index 4d49ea3..5854312 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/StringUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/StringUtil.java @@ -16,10 +16,6 @@ import java.util.regex.Pattern; * @since 2024/6/20 10:15 */ public class StringUtil { - public static void main(String[] args) { - - } - public static List getFinalData(String content) throws Exception { String result = content.replaceAll(", pdfBase64=[^,}]*", ""); //pdfbase64保存的集合 @@ -62,7 +58,9 @@ public class StringUtil { for (int i = start; i < input.length(); i++) { char c = input.charAt(i); - if (c == '{') depth++; + if (c == '{') { + depth++; + } if (c == '}') { if (depth == 0) { objects.add(currentObj.toString()); @@ -72,7 +70,9 @@ public class StringUtil { depth--; } } - if (depth >= 0) currentObj.append(c); + if (depth >= 0) { + currentObj.append(c); + } } return objects; } @@ -91,8 +91,11 @@ public class StringUtil { // 处理转义字符 if (c == '\\' && i < objStr.length() - 1) { char next = objStr.charAt(++i); - if (isKey) key.append(next); - else value.append(next); + if (isKey) { + key.append(next); + } else { + value.append(next); + } continue; } // 处理引号 @@ -114,8 +117,11 @@ public class StringUtil { continue; } // 积累字符 - if (isKey) key.append(c); - else value.append(c); + if (isKey) { + key.append(c); + } else { + value.append(c); + } } // 添加最后一个键值对 @@ -138,7 +144,9 @@ public class StringUtil { .append("\":\"") .append(pair[1].replace("\"", "\\\"")) // 处理值中的双引号 .append('"'); - if (i < pairs.size() - 1) json.append(","); + if (i < pairs.size() - 1) { + json.append(","); + } } return json.append("}").toString(); } @@ -150,7 +158,9 @@ public class StringUtil { StringBuilder json = new StringBuilder("["); for (int i = 0; i < objects.size(); i++) { json.append(objects.get(i)); - if (i < objects.size() - 1) json.append(","); + if (i < objects.size() - 1) { + json.append(","); + } } return json.append("]").toString(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/EnterpriseServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/EnterpriseServiceImpl.java index 5778a26..ef389dc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/EnterpriseServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/EnterpriseServiceImpl.java @@ -2,9 +2,9 @@ package com.ruoyi.gysl.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.gysl.entity.Enterprise; import com.ruoyi.gysl.entity.request.ZwIdPageReq; import com.ruoyi.gysl.mapper.EnterpriseMapper; -import com.ruoyi.gysl.entity.Enterprise; import com.ruoyi.gysl.service.EnterpriseService; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index e3ecfc8..7f4b3fc 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -43,7 +43,7 @@ user: # 密码最大错误次数 maxRetryCount: 6 # 密码锁定时间(默认10分钟) - lockTime: 10 + lockTime: 30 # Spring配置 spring: @@ -52,7 +52,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: internet + active: druid # 文件上传 servlet: multipart: @@ -144,4 +144,5 @@ getAllInfo: http://172.21.10.14/open/api/identity/data/FindUserById sm4: ef5323158e0d43e69442718cd4932116 sm2: MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgefIcY79Be48T8ryF9tMOKDFZ4XmeB9JzBSmEZHGmvhKhRANCAAQmjPisOvJfv2r7mpj06FszOkAlJiyVL6OoefMmXmqSANNqyT8ZxnFpnToYgtqjQqX44IG8fXk49eLjKXQSfJ2J accessId: d8bc5ba2-7114-46aa-b4e0-141804e4df1c -sceneId: 202505210001 \ No newline at end of file +sceneId: 202505210001 +dataUrl: http://172.21.10.46/api/invoke/323018/ \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/ProjectMapper.xml b/ruoyi-admin/src/main/resources/mapper/ProjectMapper.xml new file mode 100644 index 0000000..cd5e18d --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/ProjectMapper.xml @@ -0,0 +1,15 @@ + + + + + update gysl_basic_information set project_id = #{req.projectId} + where id = #{req.id} + + + + diff --git a/ruoyi-admin/src/main/resources/mapper/ProjectProgressMapper.xml b/ruoyi-admin/src/main/resources/mapper/ProjectProgressMapper.xml index c2dbafe..4f0a941 100644 --- a/ruoyi-admin/src/main/resources/mapper/ProjectProgressMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/ProjectProgressMapper.xml @@ -7,7 +7,7 @@ FROM project_progress a LEFT JOIN project b ON a.project_id = b.project_id - where b.project_name = #{name} + where b.project_id = #{projectId} order by a.month asc