Переглянути джерело

天气预警,与公告通知功能

ouyang 2 роки тому
батько
коміт
d1ed22b3f2

+ 43 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/message/dto/CoreAnnouncementNotificationAppPageDto.java

@@ -0,0 +1,43 @@
+package com.xunmei.common.core.domain.message.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 公告通知对象 core_announcement_notification
+ *
+ * @author xunmei
+ * @date 2023-09-13
+ */
+@Data
+@ApiModel(value = "CoreAnnouncementNotification对象" , description = "公告通知")
+public class CoreAnnouncementNotificationAppPageDto
+        {
+            @JsonSerialize(using = ToStringSerializer.class)
+            private Long announcementNotificationId;
+            /**
+             * 页面
+             */
+            private Long pageNum;
+            /**
+             * 每页大小
+             */
+            private Long pageSize;
+            /**
+             * 是否下穿
+             */
+            @JsonSerialize(using = ToStringSerializer.class)
+            private Long orgId;
+
+            /** 调阅机构 */
+            @JsonSerialize(using = ToStringSerializer.class)
+            private Long userId;
+
+            @JsonSerialize(using = ToStringSerializer.class)
+            private List<Long> tagRoleIds;
+        }

+ 78 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/message/vo/CoreAnnouncementNotificationAppPageVo.java

@@ -0,0 +1,78 @@
+package com.xunmei.common.core.domain.message.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 公告通知对象 core_announcement_notification
+ *
+ * @author xunmei
+ * @date 2023-09-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+
+@ApiModel(value = "CoreAnnouncementNotification对象" , description = "公告通知")
+public class CoreAnnouncementNotificationAppPageVo extends BaseEntity
+        {
+private static final long serialVersionUID=1L;
+
+    /**  */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /** 机构 */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    /** 创建机构 */
+            @ApiModelProperty(value = "创建机构")
+    private String orgName;
+
+    /** 机构 */
+    private String orgPath;
+
+    /** 标题 */
+    private String title;
+
+    /** 内容 */
+            @ApiModelProperty(value = "内容")
+    private String content;
+
+    /** 消息类型 */
+            @ApiModelProperty(value = "消息类型")
+    private String messagType;
+            /**
+             * 机构类型
+             */
+      private String  tagOrgType;
+    /** 目标机构 */
+    private List<Long> tagOrgIds;
+
+    /** 目标角色 */
+    private List<Long> tagRoleIds;
+
+    /** 发布时间 */
+            @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+            @ApiModelProperty(value = "发布时间")
+    private Date publishTime;
+
+    /** 状态 */
+            @ApiModelProperty(value = "状态")
+    private String messagStatus;
+
+            @ApiModelProperty(value = "附件")
+            private List<String> fileList;
+   private Integer isRead;
+        }

+ 15 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/message/controller/CoreAnnouncementNotificationController.java

@@ -1,8 +1,10 @@
 package com.xunmei.core.message.controller;
 
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification;
+import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationAppPageDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationPageDto;
+import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationAppPageVo;
 import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationPageVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -100,4 +102,17 @@ public class CoreAnnouncementNotificationController extends BaseController {
         coreAnnouncementNotificationService.publish(id);
         return success();
     }
+
+    @ApiOperation(value = "App查询消息列表")
+    @GetMapping("/appList")
+    public TableDataInfo<CoreAnnouncementNotificationAppPageVo> appList(CoreAnnouncementNotificationAppPageDto request) {
+        return coreAnnouncementNotificationService.selectAppPage(request);
+    }
+
+    @ApiOperation(value = "App标记消息是否已读")
+    @GetMapping("/markIsRead")
+    public AjaxResult markIsRead(CoreAnnouncementNotificationAppPageDto request) {
+        coreAnnouncementNotificationService.markIsRead(request);
+        return success();
+    }
 }

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/message/mapper/CoreAnnouncementNotificationMapper.java

@@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToOrg;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
+import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToUser;
+import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationAppPageDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationPageDto;
+import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationAppPageVo;
 import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationPageVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -79,4 +82,12 @@ public interface CoreAnnouncementNotificationMapper extends BaseMapper<CoreAnnou
     void deleteRoleAndOrg(@Param("notificationId") Long notificationId);
 
     void deleteNotificationToUsers(@Param("notificationId")  Long notificationId);
+
+    Page<CoreAnnouncementNotificationAppPageVo> selectAppPage(@Param("page")Page<CoreAnnouncementNotificationAppPageVo> page, @Param("request")CoreAnnouncementNotificationAppPageDto request);
+
+    List<CoreAnnouncementNotificationToUser> selectNotificationToUsers(@Param("request")CoreAnnouncementNotificationAppPageDto request, @Param("records")List<CoreAnnouncementNotificationAppPageVo> records);
+
+    CoreAnnouncementNotificationToUser checkIsRead(@Param("request") CoreAnnouncementNotificationAppPageDto request);
+
+    void insertNotificationUser(@Param("notificationUser") CoreAnnouncementNotificationToUser notificationUser);
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/message/service/ICoreAnnouncementNotificationService.java

@@ -2,8 +2,10 @@ package com.xunmei.core.message.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification;
+import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationAppPageDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationPageDto;
+import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationAppPageVo;
 import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationPageVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -73,4 +75,8 @@ public interface ICoreAnnouncementNotificationService extends IService<CoreAnnou
     TableDataInfo<CoreAnnouncementNotificationPageVo> selectPage(CoreAnnouncementNotificationPageDto request);
 
     void publish(Long id);
+
+    TableDataInfo<CoreAnnouncementNotificationAppPageVo> selectAppPage(CoreAnnouncementNotificationAppPageDto request);
+
+    void markIsRead(CoreAnnouncementNotificationAppPageDto request);
 }

+ 46 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/message/service/impl/CoreAnnouncementNotificationServiceImpl.java

@@ -13,8 +13,10 @@ import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToOrg;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToUser;
+import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationAppPageDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationDto;
 import com.xunmei.common.core.domain.message.dto.CoreAnnouncementNotificationPageDto;
+import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationAppPageVo;
 import com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationPageVo;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
@@ -28,6 +30,7 @@ import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -99,6 +102,49 @@ public class CoreAnnouncementNotificationServiceImpl extends ServiceImpl<CoreAnn
         coreAnnouncementNotificationMapper.updateById(coreAnnouncementNotification);
     }
 
+    @Override
+    public TableDataInfo<CoreAnnouncementNotificationAppPageVo> selectAppPage(CoreAnnouncementNotificationAppPageDto request) {
+        Page<CoreAnnouncementNotificationAppPageVo> page;
+        //分页
+        if (request.getPageNum()!=null&&request.getPageSize()!=null)
+        {
+            page = new Page<>(request.getPageNum(), request.getPageSize());
+        }else{
+            page = new Page<>();
+        }
+        page = coreAnnouncementNotificationMapper.selectAppPage(page, request);
+        if(page!=null&&CollectionUtil.isNotEmpty(page.getRecords())){
+            page = this.buildNewNotificationAppPageVo(page,request);
+        }
+
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(page);
+    }
+
+    @Async
+    @Override
+    public void markIsRead(CoreAnnouncementNotificationAppPageDto request) {
+        CoreAnnouncementNotificationToUser notificationUser = coreAnnouncementNotificationMapper.checkIsRead(request);
+        if(ObjectUtil.isEmpty(notificationUser)){
+            notificationUser = new CoreAnnouncementNotificationToUser();
+            notificationUser.setId(IdWorker.getId());
+            notificationUser.setUserId(request.getUserId());
+            notificationUser.setOrgId(request.getOrgId());
+            notificationUser.setAnnouncementNotificationId(request.getAnnouncementNotificationId());
+        }
+        coreAnnouncementNotificationMapper.insertNotificationUser(notificationUser);
+    }
+
+    private Page<CoreAnnouncementNotificationAppPageVo> buildNewNotificationAppPageVo(Page<CoreAnnouncementNotificationAppPageVo> page, CoreAnnouncementNotificationAppPageDto request) {
+        List<CoreAnnouncementNotificationAppPageVo> records = page.getRecords();
+        List<CoreAnnouncementNotificationToUser> list = coreAnnouncementNotificationMapper.selectNotificationToUsers(request,records);
+            records.forEach(r->{
+                int num = (int) list.stream().filter(a->a.getUserId().equals(request.getUserId())&&a.getAnnouncementNotificationId().equals(r.getId())).count();
+                r.setIsRead(num);
+            });
+        return page;
+    }
+
     private Page<CoreAnnouncementNotificationPageVo> getOrgAndRoleListMap(Page<CoreAnnouncementNotificationPageVo> page) {
         List<CoreAnnouncementNotificationPageVo> records = page.getRecords();
         List<CoreAnnouncementNotificationToOrg> notificationToOrgs = coreAnnouncementNotificationMapper.selectOrgIds(records);

+ 4 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/weather/service/impl/WeatherWarningServiceImpl.java

@@ -79,8 +79,8 @@ public class WeatherWarningServiceImpl extends ServiceImpl<WeatherWarningMapper,
         }
         //获取区域id
     List<String> areaIds =baseMapper.findAreaList();
-      /*  List<String> areaIds = new ArrayList<>();
-        areaIds.add("101110207");*/
+        /*List<String> areaIds = new ArrayList<>();
+        areaIds.add("101200101");*/
     if(CollectionUtils.isNotEmpty(areaIds)){
         int num=0;
         //获取今日的所有数据
@@ -118,6 +118,7 @@ public class WeatherWarningServiceImpl extends ServiceImpl<WeatherWarningMapper,
     public List<WeatherWarning> getTheAreaWeather(Long orgId) {
         SysOrgExtend orgExtend = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgExtendById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         String key = "wearth_areaid_"+orgExtend.getWeatherAreaCode();
+        //String key = "wearth_areaid_101200101";
         Object obj = this.redisTemplate.opsForValue().get(key);
         List<WeatherWarning> list =  JSON.parseArray((String) obj, WeatherWarning.class);
 
@@ -183,6 +184,7 @@ public class WeatherWarningServiceImpl extends ServiceImpl<WeatherWarningMapper,
         //福建农信返回的数据外面多了一层(Data层为农信添加的,需要多取一层)
         JSONObject objectNX = obj.getJSONObject("Data");
         JSONObject resBody =objectNX.getJSONObject("showapi_res_body");
+        //JSONObject resBody =obj.getJSONObject("showapi_res_body");
         List<WeatherWarning> list = new ArrayList<>();
         if(resBody!=null){
             JSONObject objCity =resBody.getJSONObject("cityInfo");

+ 26 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/message/CoreAnnouncementNotificationMapper.xml

@@ -80,6 +80,29 @@
             #{item.id}
         </foreach>
     </select>
+    <select id="selectAppPage"
+            resultType="com.xunmei.common.core.domain.message.vo.CoreAnnouncementNotificationAppPageVo">
+        select T.* from (select a.* from core_announcement_notification a
+                         left join core_announcement_notification_to_role b on a.id = b.announcement_notification_id
+                         left join core_announcement_notification_to_org c on a.id = c.announcement_notification_id
+                         where  c.org_id = #{request.orgId} and b.role_id in
+                            <foreach collection="request.tagRoleIds" item="item" open="(" close=")" separator=",">
+                                #{item}
+                            </foreach>
+                         GROUP BY a.id) T
+    </select>
+    <select id="selectNotificationToUsers"
+            resultType="com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToUser">
+        select * from core_announcement_notification_to_user where org_id=#{request.orgId} and announcement_notification_id in
+        <foreach collection="records" item="item" open="(" close=")" separator=",">
+            #{item.id}
+        </foreach>
+    </select>
+    <select id="checkIsRead"
+            resultType="com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToUser">
+      select * from  core_announcement_notification_to_user a where a.announcement_notification_id=#{request.announcementNotificationId} and a.user_id=#{request.userId}
+
+    </select>
 
     <insert id="insertCoreAnnouncementNotification" parameterType="com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification">
         insert into core_announcement_notification
@@ -152,6 +175,9 @@
             (#{item.announcementNotificationId},#{item.roleId})
         </foreach>
     </insert>
+    <insert id="insertNotificationUser">
+        insert into core_announcement_notification_to_user(id,announcement_notification_id,org_id,user_id)values(#{id},#{announcementNotificationId},#{orgId},#{userId})
+    </insert>
 
     <update id="updateCoreAnnouncementNotification" parameterType="com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotification">
         update core_announcement_notification

+ 3 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysOrgExtendController.java

@@ -102,8 +102,8 @@ public class SysOrgExtendController extends BaseController {
         return toAjax(sysOrgExtendService.deleteSysOrgExtendByIds(ids));
     }
 
-    @GetMapping(value = "/selectSysOrgExtendById/{orgId}")
-    public AjaxResult selectSysOrgExtendById(@PathVariable("orgId") Long orgId) {
-        return success(sysOrgExtendService.selectSysOrgExtendByOrgId(orgId));
+    @GetMapping(value = "/selectSysOrgExtendById")
+    public SysOrgExtend selectSysOrgExtendById(Long orgId) {
+        return sysOrgExtendService.selectSysOrgExtendByOrgId(orgId);
     }
 }