Răsfoiți Sursa

公告新增,公告查询列表

skyline 1 an în urmă
părinte
comite
36185ef844

+ 34 - 3
admin/src/main/java/com/kym/admin/controller/SystemNoticeController.java

@@ -1,7 +1,10 @@
 package com.kym.admin.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.kym.common.R;
+import com.kym.entity.admin.queryParams.NoticeQueryParams;
+import com.kym.entity.admin.vo.NoticeStationVo;
+import com.kym.service.admin.SystemNoticeService;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -12,7 +15,35 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2024-08-20
  */
 @RestController
-@RequestMapping("/system-notice")
+@RequestMapping("/notice")
 public class SystemNoticeController {
 
+    private final SystemNoticeService systemNoticeService;
+
+    public SystemNoticeController(SystemNoticeService systemNoticeService) {
+        this.systemNoticeService = systemNoticeService;
+    }
+
+    /**
+     * 新增系统公告
+     *
+     * @param vo
+     * @return
+     */
+    @PostMapping("/create")
+    public R<?> createSystemNotice(@RequestBody NoticeStationVo vo) {
+        systemNoticeService.createNotice(vo);
+        return R.success();
+    }
+
+    /**
+     * 系统公告列表
+     *
+     * @param params
+     * @return
+     */
+    @GetMapping("/list")
+    public R<?> listSystemNotice(@ModelAttribute NoticeQueryParams params) {
+        return R.success(systemNoticeService.listSystemNotice(params));
+    }
 }

+ 2 - 45
entity/pom.xml

@@ -33,7 +33,7 @@
         <dependency>
             <groupId>com.github.yulichang</groupId>
             <artifactId>mybatis-plus-join-boot-starter</artifactId>
-            <version>1.4.8.1</version>
+            <version>1.4.13</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -53,23 +53,6 @@
             <version>2.0.35</version>
         </dependency>
 
-        <!-- 处理空间数据 -->
-        <dependency>
-            <groupId>org.locationtech.jts</groupId>
-            <artifactId>jts-core</artifactId>
-            <version>1.19.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.geotools</groupId>
-            <artifactId>gt-epsg-hsql</artifactId>
-            <version>29.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.geotools</groupId>
-            <artifactId>gt-main</artifactId>
-            <version>29.2</version>
-        </dependency>
-
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
@@ -87,31 +70,5 @@
         </dependency>
 
     </dependencies>
-    <!-- 空间处理这几个依赖单独仓库下载 -->
-    <repositories>
-        <repository>
-            <id>osgeo</id>
-            <name>OSGeo Release Repository</name>
-            <url>https://repo.osgeo.org/repository/release/</url>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-        <repository>
-            <id>osgeo-snapshot</id>
-            <name>OSGeo Snapshot Repository</name>
-            <url>https://repo.osgeo.org/repository/snapshot/</url>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-        </repository>
-    </repositories>
-
 
-</project>
+</project>

+ 3 - 3
entity/src/main/java/com/kym/entity/admin/SystemNotice.java

@@ -2,12 +2,12 @@ package com.kym.entity.admin;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.kym.entity.BaseEntity;
-import java.io.Serializable;
-import java.time.LocalDateTime;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 系统公告通知表
@@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
 @Setter
 @TableName("t_system_notice")
 @Accessors(chain = true)
-public class SystemNotice extends BaseEntity {
+public class SystemNotice  extends BaseEntity<SystemNotice>{
 
     private static final long serialVersionUID = 1L;
 

+ 30 - 0
entity/src/main/java/com/kym/entity/admin/queryParams/NoticeQueryParams.java

@@ -0,0 +1,30 @@
+package com.kym.entity.admin.queryParams;
+
+import com.kym.entity.common.PageParams;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 公告查询参数
+ *
+ * @author skyline
+ */
+@Data
+@Accessors(chain = true)
+public class NoticeQueryParams extends PageParams {
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 状态:0-未开始,1-生效中,2-已结束,3-已取消
+     */
+    private Integer status;
+}

+ 59 - 0
entity/src/main/java/com/kym/entity/admin/vo/NoticeStationVo.java

@@ -0,0 +1,59 @@
+package com.kym.entity.admin.vo;
+
+import com.kym.entity.BaseEntity;
+import com.kym.entity.admin.SystemNotice;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 系统公告
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-08-20
+ */
+@Data
+@Accessors(chain = true)
+public class NoticeStationVo extends BaseEntity {
+
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建者名称
+     */
+    private String adminUserName;
+
+    /**
+     * 创建者用户id
+     */
+    private Long adminUserId;
+
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+
+    /**
+     * 站点id
+     */
+    private List<String> stationIdList;
+
+}

+ 31 - 0
entity/src/main/java/com/kym/entity/admin/vo/StationNoticeVo.java

@@ -0,0 +1,31 @@
+package com.kym.entity.admin.vo;
+
+import com.kym.entity.BaseEntity;
+import com.kym.entity.admin.SystemNotice;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统公告
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-08-20
+ */
+@Data
+@Accessors(chain = true)
+public class StationNoticeVo {
+
+    /**
+     * 站点id
+     */
+    private String stationId;
+
+    /**
+     * 系统公告
+     */
+    private List<SystemNotice> systemNoticeList;
+}

+ 18 - 0
miniapp/src/main/java/com/kym/miniapp/controller/UserStationController.java

@@ -0,0 +1,18 @@
+package com.kym.miniapp.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 用户所属站点表 前端控制器
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-08-19
+ */
+@RestController
+@RequestMapping("/user-station")
+public class UserStationController {
+
+}

+ 5 - 0
service/src/main/java/com/kym/service/admin/SystemNoticeService.java

@@ -1,6 +1,9 @@
 package com.kym.service.admin;
 
 import com.kym.entity.admin.SystemNotice;
+import com.kym.entity.admin.queryParams.NoticeQueryParams;
+import com.kym.entity.admin.vo.NoticeStationVo;
+import com.kym.entity.common.PageBean;
 import com.kym.service.mybatisplus.MyBaseService;
 
 /**
@@ -12,5 +15,7 @@ import com.kym.service.mybatisplus.MyBaseService;
  * @since 2024-08-20
  */
 public interface SystemNoticeService extends MyBaseService<SystemNotice> {
+    void createNotice(NoticeStationVo vo);
 
+    PageBean<NoticeStationVo> listSystemNotice(NoticeQueryParams params);
 }

+ 56 - 0
service/src/main/java/com/kym/service/admin/impl/SystemNoticeServiceImpl.java

@@ -1,10 +1,25 @@
 package com.kym.service.admin.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
+import com.github.pagehelper.PageHelper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.kym.common.utils.CommUtil;
+import com.kym.common.utils.IDGenerator;
+import com.kym.entity.admin.StationNotice;
 import com.kym.entity.admin.SystemNotice;
+import com.kym.entity.admin.queryParams.NoticeQueryParams;
+import com.kym.entity.admin.vo.NoticeStationVo;
+import com.kym.entity.common.PageBean;
 import com.kym.mapper.admin.SystemNoticeMapper;
+import com.kym.service.admin.StationNoticeService;
 import com.kym.service.admin.SystemNoticeService;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +32,45 @@ import org.springframework.stereotype.Service;
 @Service
 public class SystemNoticeServiceImpl extends MyBaseServiceImpl<SystemNoticeMapper, SystemNotice> implements SystemNoticeService {
 
+    private final StationNoticeService stationNoticeService;
+
+    public SystemNoticeServiceImpl(StationNoticeService stationNoticeService) {
+        this.stationNoticeService = stationNoticeService;
+    }
+
+    /**
+     * 新增公告
+     *
+     * @param vo
+     */
+    @Override
+    @Transactional
+    public void createNotice(NoticeStationVo vo) {
+        var systemNotice = new SystemNotice();
+        BeanUtils.copyProperties(vo, systemNotice);
+        save(systemNotice.setAdminUserId(StpUtil.getLoginIdAsLong()).setAdminUserName(StpUtil.getSession().getString("username")).setBaseId(IDGenerator.INS().nextId()));
+        stationNoticeService.saveBatch(vo.getStationIdList().stream().map(stationId -> new StationNotice().setNoticeId(systemNotice.getId()).setStationId(stationId)).toList());
+    }
+
+    /**
+     * 分页查询公告列表
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public PageBean<NoticeStationVo> listSystemNotice(NoticeQueryParams params) {
+        PageHelper.startPage(params.getPageNum(), params.getPageSize());
+        MPJLambdaWrapper<SystemNotice> wrapper = JoinWrappers.lambda(SystemNotice.class)
+                .selectAsClass(SystemNotice.class, NoticeStationVo.class)
+                .selectCollection(StationNotice.class, NoticeStationVo::getStationIdList, map ->map.result(StationNotice::getStationId))
+                .leftJoin(StationNotice.class, StationNotice::getNoticeId, StationNotice::getId)
+                .eq(CommUtil.isNotEmptyAndNull(params.getStatus()), SystemNotice::getStatus, params.getStatus())
+                .like(CommUtil.isNotEmptyAndNull(params.getTitle()), SystemNotice::getTitle, params.getTitle())
+                .like(CommUtil.isNotEmptyAndNull(params.getContent()), SystemNotice::getContent, params.getContent())
+                .orderByDesc(SystemNotice::getUpdateTime);
+        List<NoticeStationVo> res = this.selectJoinList(NoticeStationVo.class, wrapper);
+        return new PageBean<>(res);
+    }
+
 }