From 3a8e659198271f4515c44516d02f4a5fa657c74b Mon Sep 17 00:00:00 2001 From: du <1725534722@qq.com> Date: Wed, 2 Apr 2025 15:01:30 +0800 Subject: [PATCH] bugfix --- .../BasicInformationController.java | 5 +- .../ruoyi/gysl/controller/CybqController.java | 96 +++++++++++++++ .../ruoyi/gysl/controller/MxController.java | 22 ++-- .../gysl/controller/XmpjqdController.java | 1 - .../gysl/controller/XmzskController.java | 2 +- .../gysl/controller/ZwStatsController.java | 28 +++++ .../main/java/com/ruoyi/gysl/entity/Cybq.java | 112 ++++++++++++++++++ .../main/java/com/ruoyi/gysl/entity/Mx.java | 8 +- .../java/com/ruoyi/gysl/entity/Xmzsk.java | 2 +- .../gysl/entity/request/CybqRequest.java | 23 ++++ .../ruoyi/gysl/entity/request/MxRequest.java | 25 ++++ .../gysl/entity/request/XmpjqdPageReq.java | 12 +- .../gysl/entity/stats/RibbonResponse.java | 4 +- .../com/ruoyi/gysl/mapper/CybqMapper.java | 29 +++++ .../java/com/ruoyi/gysl/mapper/MxMapper.java | 8 ++ .../com/ruoyi/gysl/mapper/XmpjqdMapper.java | 3 +- .../com/ruoyi/gysl/mapper/ZwStatsMapper.java | 10 ++ .../com/ruoyi/gysl/regular/NoticeTiming.java | 2 +- .../com/ruoyi/gysl/service/CybqService.java | 26 ++++ .../com/ruoyi/gysl/service/MxService.java | 11 +- .../ruoyi/gysl/service/ZwStatsService.java | 15 +++ .../gysl/service/impl/CybqServiceImpl.java | 33 ++++++ .../gysl/service/impl/MxServiceImpl.java | 79 ++++++++---- .../gysl/service/impl/XmpjqdServiceImpl.java | 53 ++++++++- .../gysl/service/impl/ZwStatsServiceImpl.java | 83 +++++++++++++ .../mapper/BasicInformationMapper.xml | 2 +- .../src/main/resources/mapper/CybqMapper.xml | 20 ++++ .../main/resources/mapper/DpclglMapper.xml | 2 +- .../src/main/resources/mapper/MxMapper.xml | 11 ++ .../main/resources/mapper/XmpjqdMapper.xml | 51 +++++--- .../main/resources/mapper/ZwStatsMapper.xml | 56 +++++++-- .../com/ruoyi/common/utils/poi/ExcelUtil.java | 23 ++++ 32 files changed, 771 insertions(+), 86 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/MxRequest.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/CybqMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/service/CybqService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/CybqServiceImpl.java create mode 100644 ruoyi-admin/src/main/resources/mapper/CybqMapper.xml 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 d9a89b3..42f07e5 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 @@ -168,7 +168,7 @@ public class BasicInformationController extends BaseController { * 项目基本信息批量导入 */ @ApiOperation(value = "项目基本信息批量导入") - @PreAuthorize("@ss.hasAnyRoles('admin,common')") +// @PreAuthorize("@ss.hasAnyRoles('admin,common')") @PostMapping(value = "/import", consumes = "multipart/form-data") @Transactional(rollbackFor = Exception.class) public AjaxResult importTemplateProject(@RequestPart("file") MultipartFile file) throws Exception { @@ -179,9 +179,8 @@ public class BasicInformationController extends BaseController { throw new ServiceException("项目导入数据不能为空"); } else { List list = mxService.list(); + basicInformationService.saveBatch(proList); proList.forEach(x -> { - x.setStatus(1); - basicInformationService.save(x); //添加项目规划信息 PlanInformation planInformation = new PlanInformation(); planInformation.setXmId(x.getId()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java new file mode 100644 index 0000000..37dfcd1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java @@ -0,0 +1,96 @@ +package com.ruoyi.gysl.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.gysl.entity.Cybq; +import com.ruoyi.gysl.entity.request.CybqRequest; +import com.ruoyi.gysl.service.CybqService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.List; + +/** + * 产业标签(GyslCybq)表控制层 + * + * @author makejava + * @since 2025-04-02 11:02:34 + */ +@Api(tags = "产业标签") +@RestController +@RequestMapping("/gysl/Cybq") +public class CybqController extends BaseController { + /** + * 服务对象 + */ + @Resource + private CybqService cybqService; + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param gyslCybq 查询实体 + * @return 所有数据 + */ + @ApiOperation("分页查询所有数据") + @GetMapping("/page") + public AjaxResult selectAll(Page page, CybqRequest gyslCybq) { + return success(cybqService.page(page, gyslCybq)); + } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("/{id}") + @ApiOperation(value = "通过主键查询单条数据",response = Cybq.class) + public AjaxResult selectOne(@PathVariable Serializable id) { + return success(cybqService.getById(id)); + } + + /** + * 新增数据 + * + * @param gyslCybq 实体对象 + * @return 新增结果 + */ + @PostMapping("/add") + @ApiOperation("新增数据") + public AjaxResult insert(@RequestBody Cybq gyslCybq) { + return success(cybqService.save(gyslCybq)); + } + + /** + * 修改数据 + * + * @param gyslCybq 实体对象 + * @return 修改结果 + */ + @PostMapping("/edit") + @ApiOperation("修改数据") + public AjaxResult update(@RequestBody Cybq gyslCybq) { + return success(cybqService.updateById(gyslCybq)); + } + + /** + * 删除数据 + * + * @param idList 主键结合 + * @return 删除结果 + */ + @ApiOperation("删除数据") + @DeleteMapping("/delete") + public AjaxResult delete(@RequestParam("idList") List idList) { + return success(cybqService.removeByIds(idList)); + } +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/MxController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/MxController.java index 6dcdf56..7a94566 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/MxController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/MxController.java @@ -4,10 +4,10 @@ package com.ruoyi.gysl.controller; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.gysl.entity.Mx; +import com.ruoyi.gysl.entity.request.MxRequest; import com.ruoyi.gysl.service.MxService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -39,32 +39,32 @@ public class MxController extends BaseController { */ @GetMapping("/page") @ApiOperation("查询所有模型数据") - public AjaxResult selectAll() { - return success(mxService.selectAll()); + public AjaxResult selectAll(MxRequest mxRequest) { + return success(mxService.selectAll(mxRequest)); } - /** * 通过主键查询单条数据 * * @param id 主键 * @return 单条数据 */ - @GetMapping("{id}") - @ApiOperation("通过主键查询单条数据") + @GetMapping("/{id}") + @ApiOperation(value = "通过主键查询单条数据",response = Mx.class) public AjaxResult selectOne(@PathVariable Serializable id) { return success(mxService.getById(id)); } + /** - * 新增数据 + * 新增指标数据 * * @param mx 实体对象 * @return 新增结果 */ - @PostMapping("/add") - @ApiOperation("新增数据") - public AjaxResult insert(@RequestBody Mx mx) { - return success(mxService.save(mx)); + @PostMapping("/addZb") + @ApiOperation("新增指标数据") + public AjaxResult insertZb(@RequestBody Mx mx) { + return success(mxService.add(mx)); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java index bbdf9ca..8d92a44 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmpjqdController.java @@ -27,7 +27,6 @@ import java.util.List; @Api(tags ="项目评价清单(包括详情页)" ) @RestController @RequestMapping("/gysl/xmpjqd") -@PreAuthorize("@ss.hasAnyRoles('admin,common')") public class XmpjqdController extends BaseController { /** * 服务对象 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmzskController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmzskController.java index da799ad..92776ea 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmzskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/XmzskController.java @@ -25,7 +25,7 @@ import java.util.List; @Api(tags = "项目知识库") @RestController @RequestMapping("/gysl/xmzsk") -//@PreAuthorize("@ss.hasAnyRoles('admin,common')") +@PreAuthorize("@ss.hasAnyRoles('admin,common')") public class XmzskController extends BaseController { /** * 服务对象 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java index 77a8a86..5483701 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/ZwStatsController.java @@ -89,5 +89,33 @@ public class ZwStatsController extends BaseController { public AjaxResult zwNoticeCount() { return success(zwStatsService.zwNoticeCount(SecurityUtils.getUserId())); } + + /** + * 产业导向细分产业分析 + */ + @ApiOperation("产业导向细分产业分析") + @GetMapping("/xfcyfx") + public AjaxResult xfcyfx() { + return success(zwStatsService.xfcyfx()); + } + + /** + * 产业导向目录分析 + */ + @ApiOperation("产业导向目录分析") + @GetMapping("/mlfx") + public AjaxResult mlfx() { + return success(zwStatsService.mlfx()); + } + + + /** + * 产业数据分析 + */ + @ApiOperation("产业数据分析") + @GetMapping("/slfx") + public AjaxResult slfx() { + return success(zwStatsService.slfx()); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java new file mode 100644 index 0000000..400c143 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java @@ -0,0 +1,112 @@ +package com.ruoyi.gysl.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * 产业标签(GyslCybq)表实体类 + * + * @author makejava + * @since 2025-04-02 11:02:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("gysl_cybq") +@ApiModel(value="产业标签",description = "产业标签") +public class Cybq { + + @ApiModelProperty("主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + + @ApiModelProperty(value ="单位编码" ) + private String dwbm; + + + @ApiModelProperty(value ="标签标记场景代码" ) + private String cjdm; + + + @ApiModelProperty(value ="标签代码" ) + private String bqdm; + + + @ApiModelProperty(value ="标签值编码" ) + private String bqzbm; + + + @ApiModelProperty(value ="引用代码集编码" ) + private String yydmjbm; + + + @ApiModelProperty(value ="引用代码集版本" ) + private String yydmjbb; + + + @ApiModelProperty(value ="有效状态" ) + private String state; + + + @ApiModelProperty(value ="标签注释" ) + private String bqzs; + + + @ApiModelProperty(value ="用户类型" ) + private String yhlx; + + + @ApiModelProperty(value ="标签标记用户" ) + private String bqbjyh; + + + @ApiModelProperty(value ="标签标记单位" ) + private String bqbjdw; + + + @ApiModelProperty(value ="标签状态" ) + private String bqzt; + + + @ApiModelProperty(value ="数据来源编码" ) + private String sjlybm; + + + @ApiModelProperty(value ="数据来源名称" ) + private String sjlymc; + + + @ApiModelProperty(value ="数据溯源码" ) + private String sjsym; + + + @ApiModelProperty(value ="记录状态" ) + private String jlzt; + + + @ApiModelProperty(value ="数据记录备注" ) + private String sjjzbz; + + + @ApiModelProperty(value ="数据创建用户" ) + private String sjcjyh; + + + @ApiModelProperty(value ="数据创建时间" ) + private String sjcjsj; + + + @ApiModelProperty(value ="数据修改用户" ) + private String sjxgyh; + + + @ApiModelProperty(value ="数据修改时间" ) + private String sjxgsj; +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Mx.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Mx.java index 78762f6..c6bd463 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Mx.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Mx.java @@ -1,9 +1,6 @@ package com.ruoyi.gysl.entity; -import java.io.Serializable; - 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.ruoyi.gysl.entity.baseModel.BaseModel; @@ -12,6 +9,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + /** * 模型管理(Mx)实体类 * @@ -36,12 +36,14 @@ public class Mx extends BaseModel implements Serializable { * 1:关键要素;2:重要要素 */ @ApiModelProperty(value = "1:关键要素;2:重要要素") + @NotBlank private String type; /** * 要素名称 */ @ApiModelProperty(value = "要素名称") + @NotBlank private String name; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Xmzsk.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Xmzsk.java index 9d7eb87..d6f23eb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Xmzsk.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Xmzsk.java @@ -50,7 +50,7 @@ public class Xmzsk extends BaseModel implements Serializable { /** * 网址 */ - @ApiModelProperty(value = "类型") + @ApiModelProperty(value = "网址") @TableField("wz") private String wz; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java new file mode 100644 index 0000000..438b042 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java @@ -0,0 +1,23 @@ +package com.ruoyi.gysl.entity.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 产业标签分页请求类 + * @author du + * @since 2025/4/2 11:07 + */ +@Data +public class CybqRequest { + + @ApiModelProperty(value ="标签代码" ) + private String bqdm; + + @ApiModelProperty(value ="标签状态" ) + private String bqzt; + + @ApiModelProperty(value ="用户类型" ) + private String yhlx; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/MxRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/MxRequest.java new file mode 100644 index 0000000..a343325 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/MxRequest.java @@ -0,0 +1,25 @@ +package com.ruoyi.gysl.entity.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 模型请求参数 + * @author du + * @since 2025/4/1 18:27 + */ +@Data +public class MxRequest { + + /** + * 要素名称 + */ + @ApiModelProperty(value = "要素名称") + private String name; + + /** + * 具体指标 + */ + @ApiModelProperty(value = "具体指标") + private String jtzb; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/XmpjqdPageReq.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/XmpjqdPageReq.java index 9b2a183..7c8d759 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/XmpjqdPageReq.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/XmpjqdPageReq.java @@ -24,14 +24,14 @@ public class XmpjqdPageReq { @ApiModelProperty(value = "项目名称") private String name; - @ApiModelProperty(value = "项目建设开始时间 yyyy-MM") - @DateTimeFormat(pattern = "yyyy-MM") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") + @ApiModelProperty(value = "项目建设开始时间 yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate begainTime; - @ApiModelProperty(value = "项目建设结束时间 yyyy-MM") - @DateTimeFormat(pattern = "yyyy-MM") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM", timezone = "GMT+8") + @ApiModelProperty(value = "项目建设结束时间 yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate endTime; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/RibbonResponse.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/RibbonResponse.java index e093d8a..0d55209 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/RibbonResponse.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/stats/RibbonResponse.java @@ -12,8 +12,8 @@ import lombok.Data; @Data public class RibbonResponse { - @ApiModelProperty("所属功能区 / 单位性质") - private Integer ssgnq; + @ApiModelProperty("所属功能区 / 单位性质 / 细分产业") + private String ssgnq; @ApiModelProperty("数量") private Integer count; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/CybqMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/CybqMapper.java new file mode 100644 index 0000000..90a153b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/CybqMapper.java @@ -0,0 +1,29 @@ +package com.ruoyi.gysl.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.gysl.entity.request.CybqRequest; +import org.apache.ibatis.annotations.Param; +import com.ruoyi.gysl.entity.Cybq; + +/** + * 产业标签(GyslCybq)表数据库访问层 + * + * @author makejava + * @since 2025-04-02 11:02:34 + */ +public interface CybqMapper extends BaseMapper { + + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param gyslCybq 查询实体 + * @return 所有数据 + */ + Page page(Page page, @Param("req") CybqRequest gyslCybq); +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/MxMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/MxMapper.java index 8c87866..3b99aaa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/MxMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/MxMapper.java @@ -2,7 +2,9 @@ package com.ruoyi.gysl.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.gysl.entity.Mx; +import com.ruoyi.gysl.entity.request.MxRequest; import com.ruoyi.gysl.entity.response.MxPageResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,5 +18,11 @@ import java.util.List; public interface MxMapper extends BaseMapper { + /** + * 查询所有模型数据 + * + * @return 所有数据 + */ + List selectAll(@Param("req") MxRequest mxRequest); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java index 4b10a74..409725b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/XmpjqdMapper.java @@ -9,6 +9,7 @@ import com.ruoyi.gysl.entity.response.XmpjqdOneResponse; import org.apache.ibatis.annotations.Param; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; /** @@ -46,7 +47,7 @@ public interface XmpjqdMapper extends BaseMapper { /** * 中位数 */ - List zwsXmhx(); + List zwsXmhx(); /** * 最大值 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java index 9eb00c8..7f47d05 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/mapper/ZwStatsMapper.java @@ -38,5 +38,15 @@ public interface ZwStatsMapper { * 政务消息通知数量 */ int zwNoticeCount(@Param("userId") Long userId); + + /** + * 产业导向细分产业分析 + */ + List xfcyfx(); + + /** + * 产业导向目录分析 + */ + List mlfx(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java index 7852766..53184db 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java @@ -47,7 +47,7 @@ public class NoticeTiming { /** * 每个月固定发一次政务通知 */ - @Scheduled(cron = "0 0 0 1 * ?") +// @Scheduled(cron = "0 0 0 1 * ?") private void configureTasks() { userService.getAllZwUser(LocalDate.now().getYear() + "年" + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/CybqService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/CybqService.java new file mode 100644 index 0000000..91237f1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/CybqService.java @@ -0,0 +1,26 @@ +package com.ruoyi.gysl.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.gysl.entity.Cybq; +import com.ruoyi.gysl.entity.request.CybqRequest; + +/** + * 产业标签(GyslCybq)表服务接口 + * + * @author makejava + * @since 2025-04-02 11:02:35 + */ +public interface CybqService extends IService { + + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param gyslCybq 查询实体 + * @return 所有数据 + */ + Page page(Page page, CybqRequest gyslCybq); +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/MxService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/MxService.java index c21e171..8167d27 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/MxService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/MxService.java @@ -2,6 +2,7 @@ package com.ruoyi.gysl.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.gysl.entity.Mx; +import com.ruoyi.gysl.entity.request.MxRequest; import com.ruoyi.gysl.entity.response.MxPageResponse; import java.util.List; @@ -20,6 +21,14 @@ public interface MxService extends IService { * * @return 所有数据 */ - List selectAll(); + List selectAll(MxRequest mxRequest); + + /** + * 新增指标数据 + * + * @param mx 实体对象 + * @return 新增结果 + */ + int add(Mx mx); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java index c8a07e9..9bad654 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/ZwStatsService.java @@ -39,5 +39,20 @@ public interface ZwStatsService { * 政务消息通知数量 */ int zwNoticeCount(Long userId); + + /** + * 产业导向细分产业分析 + */ + List xfcyfx(); + + /** + * 产业导向目录分析 + */ + List mlfx(); + + /** + * 产业数据分析 + */ + List slfx(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/CybqServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/CybqServiceImpl.java new file mode 100644 index 0000000..43f8430 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/CybqServiceImpl.java @@ -0,0 +1,33 @@ +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.request.CybqRequest; +import com.ruoyi.gysl.mapper.CybqMapper; +import com.ruoyi.gysl.entity.Cybq; +import com.ruoyi.gysl.service.CybqService; +import org.springframework.stereotype.Service; + +/** + * 产业标签(GyslCybq)表服务实现类 + * + * @author makejava + * @since 2025-04-02 11:02:35 + */ +@Service("gyslCybqService") +public class CybqServiceImpl extends ServiceImpl implements CybqService { + + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param gyslCybq 查询实体 + * @return 所有数据 + */ + @Override + public Page page(Page page, CybqRequest gyslCybq) { + return baseMapper.page(page,gyslCybq); + } +} + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/MxServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/MxServiceImpl.java index 6ec015a..ce17c6e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/MxServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/MxServiceImpl.java @@ -2,13 +2,13 @@ package com.ruoyi.gysl.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.gysl.entity.Mx; +import com.ruoyi.gysl.entity.request.MxRequest; import com.ruoyi.gysl.entity.response.MxPageDetailedInfo.MxPageDetailedInfo; import com.ruoyi.gysl.entity.response.MxPageResponse; import com.ruoyi.gysl.mapper.MxMapper; import com.ruoyi.gysl.service.MxService; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -29,28 +29,61 @@ public class MxServiceImpl extends ServiceImpl implements MxServic * @return 所有数据 */ @Override - public List selectAll() { - List allList = list(); - // 按 name 分组,并转换为 GroupedData - Map groupedMap = - allList.stream().collect(Collectors.groupingBy(Mx::getName, - Collectors.collectingAndThen(Collectors.toList(), list -> { - MxPageResponse data = new MxPageResponse(); - data.setName(list.get(0).getName()); - data.setType(list.get(0).getType());// 分组 name - // 提取 a1 和 a2 到 AItem 列表 - List itemList = list.stream().map(e -> { - MxPageDetailedInfo item = new MxPageDetailedInfo(); - item.setJtzb(e.getJtzb()); - item.setXxyq(e.getXxyq()); - return item; - }).collect(Collectors.toList()); - data.setList(itemList); - return data; - }))); - return groupedMap.values().stream() - .filter(Objects::nonNull) - .collect(Collectors.toList()); + public List selectAll(MxRequest mxRequest) { + List allList = baseMapper.selectAll(mxRequest); +// // 按 name 分组,并转换为 GroupedData + Map groupedMap = allList.stream().collect(Collectors.groupingBy(Mx::getName, Collectors.collectingAndThen(Collectors.toList(), list -> { + if (list.isEmpty()) return null; + + Mx firstItem = list.get(0); + String name = firstItem.getName(); + String type = firstItem.getType(); + + if (name == null && type == null) return null; + + MxPageResponse data = new MxPageResponse(); + data.setName(name); + data.setType(type); + + // 关键修改:过滤 null 和无效的 MxPageDetailedInfo + List itemList = list.stream().map(e -> { + // 如果 jtzb 和 xxyq 均为 null,则返回 null + if (e.getJtzb() == null && e.getXxyq() == null) { + return null; + } + MxPageDetailedInfo item = new MxPageDetailedInfo(); + item.setJtzb(e.getJtzb()); + item.setXxyq(e.getXxyq()); + return item; + }).filter(Objects::nonNull) // 过滤掉 null + .collect(Collectors.toList()); + + data.setList(itemList); + return data; + }))).entrySet().stream().filter(entry -> entry.getValue() != null).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + return groupedMap.values().stream().filter(Objects::nonNull).collect(Collectors.toList()); + } + + /** + * 新增指标数据 + * + * @param mx 实体对象 + * @return 新增结果 + */ + @Override + public int add(Mx mx) { + //查找有没有type和name有的,指标和要求为空的 + Mx one = lambdaQuery().eq(Mx::getType, mx.getType()) + .eq(Mx::getName, mx.getName()) + .isNull(Mx::getJtzb) + .isNull(Mx::getXxyq).one(); + if(one!=null){ + mx.setId(one.getId()); + updateById(mx); + }else { + save(mx); + } + return 0; } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java index d15317f..e0c3f33 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/XmpjqdServiceImpl.java @@ -2,16 +2,21 @@ 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.Pjpz; +import com.ruoyi.gysl.entity.Xmpjqd; import com.ruoyi.gysl.entity.request.XmpjqdPageReq; +import com.ruoyi.gysl.entity.response.XmhxDetail.XmhxDetail; import com.ruoyi.gysl.entity.response.XmhxResponse; import com.ruoyi.gysl.entity.response.XmpjqdOneResponse; import com.ruoyi.gysl.mapper.XmpjqdMapper; -import com.ruoyi.gysl.entity.Xmpjqd; +import com.ruoyi.gysl.service.PjpzService; import com.ruoyi.gysl.service.XmpjqdService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.Serializable; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; @@ -27,6 +32,9 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme @Resource private XmpjqdMapper xmpjqdMapper; + @Resource + private PjpzService pjpzService; + /** * 分页查询所有目录 * @@ -35,7 +43,7 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme */ @Override public Page page(Page page, XmpjqdPageReq req) { - return xmpjqdMapper.page(page,req); + return xmpjqdMapper.page(page, req); } /** @@ -46,7 +54,16 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme */ @Override public List selectOnePj(Serializable id) { - return xmpjqdMapper.selectOnePj(id); + List xmpjqdOneResponses = xmpjqdMapper.selectOnePj(id); + List list = pjpzService.list(); + list.forEach(x -> { + if (!"总投资额".equals(x.getPjys())) { + XmpjqdOneResponse xmpjqdOneResponse = new XmpjqdOneResponse(); + xmpjqdOneResponse.setYsmc(x.getPjys()); + xmpjqdOneResponses.add(xmpjqdOneResponse); + } + }); + return xmpjqdOneResponses; } /** @@ -61,16 +78,44 @@ public class XmpjqdServiceImpl extends ServiceImpl impleme XmhxResponse xr = new XmhxResponse(); xr.setType(1); xr.setList(xmpjqdMapper.maxXmhx()); + XmhxResponse xr1 = new XmhxResponse(); xr1.setType(2); xr1.setList(xmpjqdMapper.oneXmhx(id)); + + XmhxResponse xr2 = new XmhxResponse(); xr2.setType(3); - xr2.setList(xmpjqdMapper.zwsXmhx()); + List bigDecimals = xmpjqdMapper.zwsXmhx(); + List a1 = getXmhxDetails(bigDecimals,"总投资额"); + xr2.setList(a1); obj.add(xr); obj.add(xr1); obj.add(xr2); return obj; } + + private static List getXmhxDetails(List bigDecimals,String content) { + List a1 = new ArrayList<>(); + XmhxDetail xmhxDetail = new XmhxDetail(); + xmhxDetail.setYsmc(content); + int length = bigDecimals.size(); + int middleIndex = length / 2; + // 根据奇偶性计算中位数 + if (length % 2 == 1) { + xmhxDetail.setPjpm(String.valueOf(bigDecimals.get(middleIndex))); + } else { + BigDecimal lower = bigDecimals.get(middleIndex - 1); + BigDecimal upper = bigDecimals.get(middleIndex); + xmhxDetail.setPjpm( + String.valueOf( + lower.add(upper) + .divide(BigDecimal.valueOf(2), 2, RoundingMode.HALF_UP) // 2 表示保留两位小数 + ) + ); + } + a1.add(xmhxDetail); + return a1; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java index 53db98b..2e61e83 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/service/impl/ZwStatsServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.gysl.service.impl; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.docking.entity.SmartDeclaration; import com.ruoyi.gysl.entity.stats.AllProjectResponse; import com.ruoyi.gysl.entity.stats.RibbonResponse; @@ -8,7 +9,9 @@ import com.ruoyi.gysl.service.ZwStatsService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 政务统计服务实现类 @@ -22,6 +25,10 @@ public class ZwStatsServiceImpl implements ZwStatsService { @Resource private ZwStatsMapper zwStatsMapper; + + @Resource + private RedisCache redisCache; + /** * 项目情况 */ @@ -37,6 +44,7 @@ public class ZwStatsServiceImpl implements ZwStatsService { public List ribbon() { return zwStatsMapper.ribbon(); } + /** * 投资主体 */ @@ -60,4 +68,79 @@ public class ZwStatsServiceImpl implements ZwStatsService { public int zwNoticeCount(Long userId) { return zwStatsMapper.zwNoticeCount(userId); } + + /** + * 产业导向细分产业分析 + */ + @Override + public List xfcyfx() { + if (!redisCache.hasKey("xfcyfx")) { + List mlfx = zwStatsMapper.xfcyfx(); + redisCache.setCacheList("xfcyfx", mlfx); + return mlfx; + } else { + List mlfx = redisCache.getCacheList("xfcyfx"); + return mlfx.stream() + .map(obj -> (RibbonResponse) obj) + .collect(Collectors.toList()); + } + } + + /** + * 产业导向目录分析 + */ + @Override + public List mlfx() { + if (!redisCache.hasKey("ml")) { + List mlfx = zwStatsMapper.mlfx(); + redisCache.setCacheList("ml", mlfx); + return mlfx; + } else { + List mlfx = redisCache.getCacheList("ml"); + return mlfx.stream() + .map(obj -> (RibbonResponse) obj) + .collect(Collectors.toList()); + } + } + + /** + * 产业数据分析 + */ + @Override + public List slfx() { + List a1 = new ArrayList<>(); + List mlfx1; + if (redisCache.hasKey("xfcyfx")) { + mlfx1 = redisCache.getCacheList("xfcyfx").stream() + .map(obj -> (RibbonResponse) obj) + .collect(Collectors.toList()); + } else { + mlfx1 = zwStatsMapper.xfcyfx(); + } + int count1 = 0; + for (RibbonResponse x : mlfx1) { + count1 += x.getCount(); + } + RibbonResponse r1 = new RibbonResponse(); + r1.setCount(count1); + r1.setSsgnq("细分产业分析"); + a1.add(r1); + List mlfx2; + if (redisCache.hasKey("ml")) { + mlfx2 = redisCache.getCacheList("ml").stream() + .map(obj -> (RibbonResponse) obj) + .collect(Collectors.toList()); + } else { + mlfx2 = zwStatsMapper.xfcyfx(); + } + int count2 = 0; + for (RibbonResponse x : mlfx2) { + count2 += x.getCount(); + } + RibbonResponse r2 = new RibbonResponse(); + r2.setCount(count2); + r2.setSsgnq("目录分析"); + a1.add(r2); + return a1; + } } diff --git a/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml b/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml index 61302b1..e49d60b 100644 --- a/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/BasicInformationMapper.xml @@ -66,7 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND a.xmfrdwxz like concat('%',#{req.xmfrdwxz},'%') - + AND a.xzfl = #{req.xzfl} diff --git a/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml b/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml new file mode 100644 index 0000000..1f957af --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/ruoyi-admin/src/main/resources/mapper/DpclglMapper.xml b/ruoyi-admin/src/main/resources/mapper/DpclglMapper.xml index 69d9f44..43a6766 100644 --- a/ruoyi-admin/src/main/resources/mapper/DpclglMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/DpclglMapper.xml @@ -7,7 +7,7 @@ AND fileTitle like concat('%',#{req.fileTitle},'%') - + and DATE_FORMAT(update_time, '%Y-%m-%d') = #{req.startTime} diff --git a/ruoyi-admin/src/main/resources/mapper/MxMapper.xml b/ruoyi-admin/src/main/resources/mapper/MxMapper.xml index dd4b129..1e17ecb 100644 --- a/ruoyi-admin/src/main/resources/mapper/MxMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/MxMapper.xml @@ -3,5 +3,16 @@ + diff --git a/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml b/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml index 02cbbf2..eb6cc63 100644 --- a/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/XmpjqdMapper.xml @@ -58,30 +58,43 @@ c.id = #{id} - + + diff --git a/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml b/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml index 0661766..8a09cc1 100644 --- a/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/ZwStatsMapper.xml @@ -26,19 +26,31 @@ LEFT JOIN gysl_plan_information b ON a.id = b.xm_id + + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index ea2ea60..e755171 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -10,8 +10,11 @@ import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.math.BigDecimal; import java.text.DecimalFormat; +import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -471,6 +474,26 @@ public class ExcelUtil { val = Convert.toBigDecimal(val); } + // 新增 LocalDate 类型处理 + else if (fieldType == LocalDate.class) + { + if (val instanceof String) + { + val = LocalDate.parse((String) val, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } + else if (val instanceof Long) + { + val = Instant.ofEpochMilli((Long) val) + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + } + else if (val instanceof Date) + { + val = ((Date) val).toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + } + } else if (Date.class == fieldType) { if (val instanceof String)