springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/ComActWorkScreenVO.java
@@ -23,13 +23,16 @@ @ApiModelProperty("每天完成") private String everyDayNum; @ApiModelProperty("总完成度") private Integer totalCompletedPoint; @ApiModelProperty("完成总数") private Integer totalCompleted; @ApiModelProperty("未完成总数") private Integer totalNoneCompleted; @ApiModelProperty("已完成") private List<ActWorkCountVO> completetPoint; private List<PieElementVO> completetList; @ApiModelProperty("未完成") private List<ActWorkCountVO> nonePoint; private List<PieElementVO> noneList; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/ComDynamicWorkScreenVO.java
New file @@ -0,0 +1,32 @@ package com.panzhihua.common.model.vos.screen; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; /** * @author lyq * @date 2021/6/16 14:38 */ @ApiModel("大屏-工作-社区动态") @Data public class ComDynamicWorkScreenVO implements Serializable { @ApiModelProperty("全部动态") private Long totalNum; @ApiModelProperty("本月新增") private Long currentNum; @ApiModelProperty("平均每天动态") private Integer currentAvgNum = 0; @ApiModelProperty("最新动态列表") private List<String> dynList; @ApiModelProperty("动态柱状图列表数据") private List<DynamicWorkVO> list; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/DateScreenVO.java
New file @@ -0,0 +1,24 @@ package com.panzhihua.common.model.vos.screen; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import lombok.Data; import java.util.Date; @Data @ApiModel("事件格式化类") public class DateScreenVO { /** * 开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; /** * 结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/DynamicWorkVO.java
New file @@ -0,0 +1,30 @@ package com.panzhihua.common.model.vos.screen; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * @author lyq * @date 2021/6/16 14:45 */ @Data @ApiModel("累计动态、新增动态") public class DynamicWorkVO implements Serializable { @ApiModelProperty("月份") private String month; @ApiModelProperty("累计动态") private Long dynTotal; @ApiModelProperty("新增动态") private Long dynAdd; @ApiModelProperty(hidden = true) private String start; @ApiModelProperty(hidden = true) private String end; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/EventDetailWorkVO.java
New file @@ -0,0 +1,69 @@ package com.panzhihua.common.model.vos.screen; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.panzhihua.common.model.vos.grid.EventResourceVO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.Date; import java.util.List; /** * @author lyq * @date 2021/6/16 14:45 */ @Data @ApiModel("工作-事件管理-事件播报数据") public class EventDetailWorkVO implements Serializable { @ApiModelProperty("事件id") @JsonSerialize(using = ToStringSerializer.class) private Long id; @ApiModelProperty("发布人昵称") private String userName; @ApiModelProperty("发布人头像") private String imageUrl; @ApiModelProperty("事件上报时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @ApiModelProperty("事件描述") private String eventDes; @ApiModelProperty("危险级别:0 (无) 1(特别重大)、2(重大)、3(较大)、4(一般)") private String dangerLevel; @ApiModelProperty("是否紧急") private Boolean urgent; @ApiModelProperty("是否重大") private Boolean major; @ApiModelProperty("事件发生地点") private String happenAddress; @ApiModelProperty("事件发生地点备注") private String happentAddress; @ApiModelProperty("事件发生经纬度(长在前短在后)") private String happentLatLng; @ApiModelProperty("事件分类1治安隐患、2公共服务、3矛盾纠纷、4不稳定因素、5突发事件、6特殊人群信息上报") private Integer eventType; @ApiModelProperty("事件处理状态(1待处理、2待验证、3已上报、4已解决、5草稿箱、6已撤销、7已失效 8 已发布)") private Integer eventDealStatus; @ApiModelProperty(value = "是否红牌") private Boolean redCard; @ApiModelProperty(value = "是否黄牌") private Boolean yellowCard; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/EventWorkScreenVO.java
New file @@ -0,0 +1,38 @@ package com.panzhihua.common.model.vos.screen; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; /** * @author lyq * @date 2021/6/16 14:38 */ @ApiModel("大屏-工作-事件管理") @Data public class EventWorkScreenVO implements Serializable { @ApiModelProperty("已解决事件") private Long resolvedNum = 0L; @ApiModelProperty("待处理事件") private Long pendingNum = 0L; @ApiModelProperty("本月新增") private Long currentNum = 0L; @ApiModelProperty("平均耗时") private Integer avgCost = 0; @ApiModelProperty("宣传教育") private Long propagandaNum = 0L; @ApiModelProperty("事件最新动态列表") private List<EventDetailWorkVO> eventList; @ApiModelProperty("动态柱状图列表数据") private List<EventWorkVO> list; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/screen/EventWorkVO.java
New file @@ -0,0 +1,33 @@ package com.panzhihua.common.model.vos.screen; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * @author lyq * @date 2021/6/16 14:45 */ @Data @ApiModel("解决事件、新增事件、事件数量") public class EventWorkVO implements Serializable { @ApiModelProperty("月份") private String month; @ApiModelProperty("事件数量") private Long eventTotal; @ApiModelProperty("新增事件") private Long eventAdd; @ApiModelProperty("解决事件") private Long eventSolve; @ApiModelProperty(hidden = true) private String start; @ApiModelProperty(hidden = true) private String end; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -3100,4 +3100,12 @@ */ @GetMapping("/population/repair") R getPopulationRepairByApp(); /** * 工作大屏-社区动态模块数据统计 * @param communityId 社区id * @return 社区动态数据统计 */ @GetMapping("/screen/work/dynamic") R dynamicWork(@RequestParam("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/grid/GridService.java
@@ -948,4 +948,12 @@ */ @GetMapping("/event/updateLcUploadFlag") Boolean updateLcUploadFlag(@RequestParam("id")Long id); /** * 工作大屏-事件管理模块数据统计 * @param communityId 社区id * @return 事件管理数据统计 */ @GetMapping("/screen/work/event") R eventWork(@RequestParam("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java
@@ -751,6 +751,48 @@ return date1.before(date2); } /** * date2比date1多的天数 * @param date1 * @param date2 * @return */ public static int differentDays(Date date1,Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1= cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR); int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if(year1 != year2) //同一年 { int timeDistance = 0 ; for(int i = year1 ; i < year2 ; i ++) { if(i%4==0 && i%100!=0 || i%400==0) //闰年 { timeDistance += 366; } else //不是闰年 { timeDistance += 365; } } return timeDistance + (day2-day1) ; } else //不同年 { // System.out.println("判断day2 - day1 : " + (day2-day1)); return day2-day1; } } public static void main(String[]args)throws Exception{ springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/ScreenWorkApi.java
@@ -20,6 +20,7 @@ import com.panzhihua.common.model.vos.neighbor.DetailNeighborCircleAdminVO; import com.panzhihua.common.model.vos.screen.*; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.service.grid.GridService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -40,6 +41,8 @@ @Resource private CommunityService communityService; @Resource private GridService gridService; /** * 邻里圈 @@ -101,6 +104,18 @@ return communityService.pbWork(communityId); } @ApiOperation(value = "社区动态@lyq",response = ComDynamicWorkScreenVO.class) @GetMapping("/dynamicWork") public R dynamicWork(@RequestParam("communityId") Long communityId){ return communityService.dynamicWork(communityId); } @ApiOperation(value = "事件管理@lyq",response = EventWorkScreenVO.class) @GetMapping("/eventWork") public R eventWork(@RequestParam("communityId") Long communityId){ return gridService.eventWork(communityId); } /** * 随手拍 * @param communityId springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ScreenWorkApi.java
@@ -124,4 +124,15 @@ public R getScreenMicroList(@RequestBody ScreenMicroListDTO microListDTO) { return comActMicroWishService.getScreenMicroList(microListDTO); } /** * 工作大屏-社区动态模块数据统计 * @param communityId 社区id * @return 社区动态数据统计 */ @GetMapping("/dynamic") public R dynamic(@RequestParam("communityId")Long communityId){ return screenWorkService.dynamicWork(communityId); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDynDAO.java
@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.vos.community.ComActActivityVO; import com.panzhihua.common.model.vos.community.ComActDynVO; import com.panzhihua.common.model.vos.screen.DateScreenVO; import com.panzhihua.common.model.vos.screen.DynamicWorkVO; import com.panzhihua.service_community.model.dos.ComActDynDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.Map; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -20,38 +24,38 @@ @Mapper public interface ComActDynDAO extends BaseMapper<ComActDynDO> { @Select("<script> " + "SELECT \n" + "d.id,\n" + "d.title,\n" + "COUNT(u.id)readNum,\n" + "d.`status`,\n" + "d.`content`,\n" + "d.`cover`,\n" + "d.`type`,\n" + "d.`cover_mode`,\n" + "d.is_topping,\n" + "d.publish_at,\n" + "d.create_at,\n" + "ca.name as communityName \n" + "FROM\n" + "com_act_dyn d\n" + "LEFT JOIN com_act_dyn_user u ON d.id = u.dyn_id \n" + "LEFT JOIN com_act ca ON d.community_id = ca.community_id \n" + "WHERE 1=1 \n" + "SELECT " + "d.id, " + "d.title, " + "COUNT(u.id)readNum, " + "d.`status`, " + "d.`content`, " + "d.`cover`, " + "d.`type`, " + "d.`cover_mode`, " + "d.is_topping, " + "d.publish_at, " + "d.create_at, " + "ca.name as communityName " + "FROM " + "com_act_dyn d " + "LEFT JOIN com_act_dyn_user u ON d.id = u.dyn_id " + "LEFT JOIN com_act ca ON d.community_id = ca.community_id " + "WHERE 1=1 " + "<if test='comActDynVO.choice == 0 '>" + "and d.community_id=#{comActDynVO.communityId}\n" + "and d.community_id=#{comActDynVO.communityId} " + " </if> " + "<if test='comActDynVO.title != null and comActDynVO.title.trim() != ""'>" + "AND d.title like concat(#{comActDynVO.title},'%') \n" + "AND d.title like concat(#{comActDynVO.title},'%') " + " </if> " + "<if test='comActDynVO.isTopping != null '>" + "AND d.is_topping = #{comActDynVO.isTopping} \n" + "AND d.is_topping = #{comActDynVO.isTopping} " + " </if> " + "<if test='comActDynVO.status != null '>" + "AND d.`status` = #{comActDynVO.status} \n" + "AND d.`status` = #{comActDynVO.status} " + " </if> " + "<if test='comActDynVO.publishAtBegin != null '>" + "AND d.publish_at BETWEEN #{comActDynVO.publishAtBegin} \n" + "AND d.publish_at BETWEEN #{comActDynVO.publishAtBegin} " + "AND #{comActDynVO.publishAtEnd}" + " </if> " + " group by d.id "+ @@ -62,40 +66,58 @@ int timedTaskDynStatus(); @Select("<script> " + "SELECT \n" + "d.id,\n" + "d.title,\n" + "COUNT(u.id)readNum,\n" + "d.`status`,\n" + "d.`content`,\n" + "d.`cover`,\n" + "d.`type`,\n" + "d.`cover_mode`,\n" + "d.is_topping,\n" + "d.publish_at,\n" + "d.create_at,\n" + "ca.name as communityName \n" + "FROM\n" + "com_act_dyn d\n" + "LEFT JOIN com_act_dyn_user u ON d.id = u.dyn_id \n" + "LEFT JOIN com_act ca ON d.community_id = ca.community_id \n" + "WHERE \n" + "d.community_id=#{comActDynVO.communityId}\n" + "SELECT " + "d.id, " + "d.title, " + "COUNT(u.id)readNum, " + "d.`status`, " + "d.`content`, " + "d.`cover`, " + "d.`type`, " + "d.`cover_mode`, " + "d.is_topping, " + "d.publish_at, " + "d.create_at, " + "ca.name as communityName " + "FROM " + "com_act_dyn d " + "LEFT JOIN com_act_dyn_user u ON d.id = u.dyn_id " + "LEFT JOIN com_act ca ON d.community_id = ca.community_id " + "WHERE " + "d.community_id=#{comActDynVO.communityId} " + "<if test='comActDynVO.title != null and comActDynVO.title.trim() != ""'>" + "AND d.title like concat(#{comActDynVO.title},'%') \n" + "AND d.title like concat(#{comActDynVO.title},'%') " + " </if> " + "<if test='comActDynVO.isTopping != null '>" + "AND d.is_topping = #{comActDynVO.isTopping} \n" + "AND d.is_topping = #{comActDynVO.isTopping} " + " </if> " + "<if test='comActDynVO.status != null '>" + "AND d.`status` = #{comActDynVO.status} \n" + "AND d.`status` = #{comActDynVO.status} " + " </if> " + "<if test='comActDynVO.publishAtBegin != null '>" + "AND d.publish_at BETWEEN #{comActDynVO.publishAtBegin} \n" + "AND d.publish_at BETWEEN #{comActDynVO.publishAtBegin} " + "AND #{comActDynVO.publishAtEnd}" + " </if> " + " group by d.id "+ " order by d.is_topping desc, d.create_at desc "+ "</script>") IPage<ComActDynVO> pageDynamicByAdmin(Page page, @Param("comActDynVO") ComActDynVO comActDynVO); @Select("SELECT " + " count( cad.id ) AS dynTotal, " + " (select count(id) from com_act_dyn where community_id = #{communityId} and create_at LIKE CONCAT(#{nowDate},'%')) as currentNum " + "FROM " + " com_act_dyn AS cad " + "WHERE " + " community_id = #{communityId}") Map<String, Long> countByCommunityId(@Param("communityId") Long communityId, @Param("nowDate")String nowDate); @Select("select create_at as startTime,(select create_at from com_act_dyn where community_id = #{communityId} order by create_at desc LIMIT 1 ) as endTime from com_act_dyn where community_id = #{communityId} order by create_at asc LIMIT 1") DateScreenVO countByAvgCommunityId(@Param("communityId") Long communityId); @Select("SELECT " + "(SELECT COUNT(id) FROM com_act_dyn WHERE community_id = #{communityId} AND create_at < #{end}) AS dynTotal, " + "(SELECT COUNT(id) FROM com_act_dyn WHERE community_id = #{communityId} AND #{start} < create_at AND create_at < #{end}) AS dynAdd " + " FROM DUAL") DynamicWorkVO countByTime(@Param("start")String start, @Param("end")String end, @Param("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActNeighborCircleDAO.java
@@ -8,6 +8,7 @@ import com.panzhihua.common.model.vos.neighbor.*; import com.panzhihua.common.model.vos.screen.CarouselInfoVO; import com.panzhihua.common.model.vos.screen.ComActNeighborCircleScreenVO; import com.panzhihua.common.model.vos.screen.PieElementVO; import com.panzhihua.common.model.vos.user.AdministratorsUserVO; import com.panzhihua.service_community.model.dos.ComActNeighborCircleDO; import org.apache.ibatis.annotations.Mapper; @@ -70,7 +71,7 @@ @Select("<script> \n"+ "SELECT\n" + "nc.*,\n" + "u.`nick_name` AS releaseName,u.`type` as userType,u.image_url\n" + "u.`nick_name` AS releaseName,u.`type` as userType\n" + ",u.name as communityName\n" + "FROM\n" + "com_act_neighbor_circle nc\n" + @@ -82,9 +83,6 @@ " </if> " + "<if test='neighborCircleAdminDTO.startAt != null and neighborCircleAdminDTO.endAt !=null '>" + "and nc.create_at between #{neighborCircleAdminDTO.startAt} and #{neighborCircleAdminDTO.endAt} \n" + " </if> " + "<if test='neighborCircleAdminDTO.status != null '>" + "and nc.status = #{neighborCircleAdminDTO.status} " + " </if> " + "</where>"+ "order by " + @@ -113,18 +111,49 @@ " where reply.comment_id = #{commentId} and reply.status = 1") IPage<ComActNeighborCommentReplyAppVO> neighborCommentReplyByApp(Page page, @Param("commentId") Long commentId); @Select("SELECT id,release_content as content FROM com_act_neighbor_circle WHERE community_id =#{communityId} and(status = 2 or status = 3) ORDER BY create_at DESC limit #{pageSize}") @Select("SELECT id,release_content as content FROM com_act_neighbor_circle WHERE community_id =#{communityId} and status = 2 ORDER BY create_at DESC limit #{pageSize}") List<CarouselInfoVO> screenNeighborCircle(@Param("communityId") Long communityId, @Param("pageSize") Integer pageSize); @Select(" SELECT COUNT(id) AS totalNum," + " (SELECT COUNT(id) FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND (status = 2 OR status = 3) AND create_at LIKE CONCAT(#{nowDate},'%')) AS currentNum " + " FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND(status = 2 OR status =3)") " (SELECT COUNT(id) FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND status = 2 AND create_at LIKE CONCAT(#{nowDate},'%')) AS currentNum " + " FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND status = 2") Map<String, Long> countByCommunityId(@Param("communityId")Long communityId,@Param("nowDate")String nowDate); @Select("SELECT SUM(comment_num) as commentNum,SUM(fabulous_num) as fabulousNum,SUM(forward_num) as forwardNum FROM com_act_neighbor_circle WHERE community_id = #{communityId} and (status = 2 OR status =3) ") @Select("SELECT SUM(comment_num) as commentNum,SUM(fabulous_num) as fabulousNum,SUM(forward_num) as forwardNum FROM com_act_neighbor_circle WHERE community_id = #{communityId} and status = 2 ") Map<String, Object> sumScreenNum(@Param("communityId")Long communityId); @Select("SELECT release_images FROM com_act_neighbor_circle WHERE community_id = #{communityId} and (status = 2 OR status =3) order by create_at desc limit #{pageSize}") @Select("SELECT release_images FROM com_act_neighbor_circle WHERE community_id = #{communityId} and status = 2 order by create_at desc limit #{pageSize}") List<String> screenNeighborCircleImgs(@Param("communityId") Long communityId,@Param("pageSize") Integer pageSize); @Select("SELECT COUNT(id) as num,'随手拍' as name FROM com_act_easy_photo WHERE community_id = #{communityId} AND STATUS = 4 " + "UNION ALL " + "SELECT COUNT(id) as num,'微心愿' as name FROM com_act_micro_wish WHERE community_id = #{communityId} AND STATUS = 6 " + "UNION ALL " + "SELECT COUNT(id) as num,'一起议' as name FROM com_act_discuss WHERE community_id = #{communityId} " + "UNION ALL " + "SELECT COUNT(id) as num,'邻里圈' as name FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND STATUS = 2 " + "UNION ALL " + "SELECT (SELECT COUNT(id) FROM com_pb_activity WHERE community_id = #{communityId} AND STATUS = 5)+(SELECT COUNT(id) FROM com_pb_dyn WHERE community_id = #{communityId} AND STATUS = 2) as num, '党建工作' as name FROM DUAL " + "UNION ALL " + "SELECT COUNT(id) as num,'社区活动' as name FROM com_act_activity WHERE community_id = #{communityId} AND STATUS = 5 ") List<PieElementVO> countAllCompletedWorkByCommunityId(@Param("communityId")Long communityId); @Select("SELECT COUNT(id) as num,'随手拍' as name FROM com_act_easy_photo WHERE community_id = #{communityId} AND (STATUS = 1 or STATUS = 2) " + "UNION ALL " + "SELECT COUNT(id) as num,'微心愿' as name FROM com_act_micro_wish WHERE community_id = #{communityId} AND (STATUS = 1 or STATUS = 2 or STATUS = 3 or STATUS = 4) " + "UNION ALL " + "SELECT COUNT(id) as num,'一起议' as name FROM com_act_discuss WHERE community_id = #{communityId} " + "UNION ALL " + "SELECT COUNT(id) as num,'邻里圈' as name FROM com_act_neighbor_circle WHERE community_id = #{communityId} AND STATUS = 1 " + "UNION ALL " + "SELECT (SELECT COUNT(id) FROM com_pb_activity WHERE community_id = #{communityId} AND (STATUS = 1 or STATUS = 2 or STATUS = 3 or STATUS = 4) )+(SELECT COUNT(id) FROM com_pb_dyn WHERE community_id = #{communityId} AND STATUS = 1) as num ,'党建工作' as name FROM DUAL " + "UNION ALL " + "SELECT COUNT(id),'社区活动' as name FROM com_act_activity WHERE community_id = #{communityId} AND (STATUS = 1 or STATUS = 2 or STATUS = 3 or STATUS = 4) ") List<PieElementVO> countAllNoneCompletedWorkByCommunityId(@Param("communityId")Long communityId); @Select(" SELECT AVG(b.t)AS avgTime " + " FROM (SELECT TIMESTAMPDIFF(MINUTE,create_at,feedback_at) AS t FROM com_act_easy_photo WHERE community_id = #{communityId} and STATUS = 4 " + " UNION ALL SELECT TIMESTAMPDIFF(MINUTE,create_at,finish_at) AS t FROM com_act_micro_wish WHERE community_id = #{communityId} and STATUS = 6 " + " )AS b ") Map<String, Object> countAvgByCommunityId(@Param("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComPbDynDAO.java
@@ -28,4 +28,6 @@ "(SELECT COUNT(id) FROM com_pb_dyn WHERE community_id = #{communityId} AND STATUS = 2 AND #{start} < create_at AND create_at < #{end}) AS dyn " + "FROM DUAL") PbWorkVO countByTime(@Param("start")String start,@Param("end")String end, @Param("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ScreenWorkService.java
@@ -56,4 +56,6 @@ * @return */ R workCount(Long communityId); R dynamicWork(Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java
@@ -2,16 +2,22 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.panzhihua.common.model.dtos.partybuilding.ComPbActivityDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.screen.*; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.ComActDO; import com.panzhihua.service_community.model.dos.ComActDynDO; import com.panzhihua.service_community.service.ScreenWorkService; import org.apache.commons.net.ntp.TimeStamp; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -26,20 +32,19 @@ private static final Integer pageSize = 200; @Resource private ComActDAO comActDAO; @Resource private ComActNeighborCircleDAO comActNeighborCircleDAO; @Resource private ComActDynDAO comActDynDAO; @Resource private ComActMicroWishDAO comActMicroWishDAO; @Resource private ComActActivityDAO actActivityDAO; @Resource private ComActDiscussDAO comActDiscussDAO; @Resource private ComPbDynDAO comPbDynDAO; @Resource private ComActEasyPhotoDAO comActEasyPhotoDAO; @@ -209,9 +214,6 @@ return R.ok(comActEasyPhotoScreenVO); } private List<EasyPhotoPointVO> getList(Map<String, Long> dealMap) { Set<Map.Entry<String,Long>> entrySet = dealMap.entrySet(); @@ -229,63 +231,109 @@ @Override public R workCount(Long communityId) { ComActWorkScreenVO comActWorkScreenVO = new ComActWorkScreenVO(); comActWorkScreenVO.setAvgTime("1小时"); comActWorkScreenVO.setTotalCompletedPoint(70); comActWorkScreenVO.setEveryDayNum("0.3"); List<ActWorkCountVO> completetPoint = new ArrayList<>(); ActWorkCountVO easyPhoto = new ActWorkCountVO(); easyPhoto.setName("随手拍"); easyPhoto.setNum(10); completetPoint.add(easyPhoto); ActWorkCountVO wish = new ActWorkCountVO(); wish.setName("微心愿"); wish.setNum(23); completetPoint.add(wish); ActWorkCountVO discuss = new ActWorkCountVO(); discuss.setName("一起议"); discuss.setNum(33); completetPoint.add(discuss); ActWorkCountVO neighbor = new ActWorkCountVO(); neighbor.setName("邻里圈"); neighbor.setNum(43); completetPoint.add(neighbor); ActWorkCountVO pbWork = new ActWorkCountVO(); pbWork.setName("党建工作"); pbWork.setNum(13); completetPoint.add(pbWork); ActWorkCountVO activity = new ActWorkCountVO(); activity.setName("社区活动"); activity.setNum(63); completetPoint.add(activity); comActWorkScreenVO.setCompletetPoint(completetPoint); //已完成 comActWorkScreenVO.setCompletetList(comActNeighborCircleDAO.countAllCompletedWorkByCommunityId(communityId)); List<ActWorkCountVO> completetPoint2 = new ArrayList<>(); ActWorkCountVO easyPhoto2 = new ActWorkCountVO(); easyPhoto2.setName("随手拍"); easyPhoto2.setNum(10); completetPoint2.add(easyPhoto2); ActWorkCountVO wish2 = new ActWorkCountVO(); wish2.setName("微心愿"); wish2.setNum(23); completetPoint2.add(wish2); ActWorkCountVO discuss2 = new ActWorkCountVO(); discuss2.setName("一起议"); discuss2.setNum(33); completetPoint2.add(discuss2); ActWorkCountVO neighbor2 = new ActWorkCountVO(); neighbor2.setName("邻里圈"); neighbor2.setNum(43); completetPoint2.add(neighbor2); ActWorkCountVO pbWork2 = new ActWorkCountVO(); pbWork2.setName("党建工作"); pbWork2.setNum(13); completetPoint2.add(pbWork2); ActWorkCountVO activity2 = new ActWorkCountVO(); activity2.setName("社区活动"); activity2.setNum(63); completetPoint2.add(activity2); comActWorkScreenVO.setNonePoint(completetPoint2); //未完成 comActWorkScreenVO.setNoneList(comActNeighborCircleDAO.countAllNoneCompletedWorkByCommunityId(communityId)); comActWorkScreenVO.setTotalCompleted(comActWorkScreenVO.getCompletetList().stream().mapToInt(PieElementVO::getNum).sum()); comActWorkScreenVO.setTotalNoneCompleted(comActWorkScreenVO.getNoneList().stream().mapToInt(PieElementVO::getNum).sum()); //统计平均耗时、平均每天完成个数 Map<String,Object> avgMap = comActNeighborCircleDAO.countAvgByCommunityId(communityId); comActWorkScreenVO.setAvgTime(avgMap.get("avgTime") == null?"0h":convertTimeStr(Double.valueOf(avgMap.get("avgTime").toString()).intValue())); ComActDO comActDO = comActDAO.selectById(communityId); BigDecimal days = new BigDecimal(DateUtil.betweenDay(comActDO.getCreateAt(),new Date(),false)); BigDecimal num = new BigDecimal(comActWorkScreenVO.getTotalCompleted()); BigDecimal rt = num.divide(days,1, RoundingMode.HALF_UP); comActWorkScreenVO.setEveryDayNum(rt.toString()); return R.ok(comActWorkScreenVO); } private String convertTimeStr(int minute) { int hour = minute/60; int min = minute%60; StringBuilder timestr = new StringBuilder(); if(hour > 0){ timestr.append(hour).append("h"); } if(min > 0){ timestr.append(min).append("min"); } return timestr.toString(); } @Override public R dynamicWork(Long communityId){ ComDynamicWorkScreenVO workScreenVO = new ComDynamicWorkScreenVO(); String date = DateUtils.getDateFormatString(new Date(),moth_format_str); Map<String,Long> countMap = comActDynDAO.countByCommunityId(communityId,date); if(!countMap.isEmpty()){ workScreenVO.setTotalNum(countMap.get("dynTotal")== null ? 0L : Long.valueOf(countMap.get("dynTotal").toString())); workScreenVO.setCurrentNum(countMap.get("currentNum")== null ? 0L : Long.valueOf(countMap.get("currentNum").toString())); } //计算平均每天动态 DateScreenVO countAvg = comActDynDAO.countByAvgCommunityId(communityId); if(countAvg != null){ int day = DateUtils.differentDays(countAvg.getStartTime(),countAvg.getEndTime()); if(day > 0){ workScreenVO.setCurrentAvgNum(workScreenVO.getTotalNum().intValue()/day); } } //查询最新的10条社区动态 List<String> dynList = new ArrayList<>(); List<ComActDynDO> actDynDOList = comActDynDAO.selectList(new QueryWrapper<ComActDynDO>().lambda().eq(ComActDynDO::getCommunityId,communityId).orderByDesc(ComActDynDO::getCreateAt).last("limit 10")); if(!actDynDOList.isEmpty()){ actDynDOList.forEach(actDyn -> { dynList.add(actDyn.getTitle()); }); } workScreenVO.setDynList(dynList); //统计近半年数据 List<DynamicWorkVO> list = new ArrayList<>(); for(DynamicWorkVO dynamicWorkVO: listHalfYearByDyn()){ DynamicWorkVO result = comActDynDAO.countByTime(dynamicWorkVO.getStart(),dynamicWorkVO.getEnd(),communityId); result.setMonth(dynamicWorkVO.getMonth()); list.add(result); } workScreenVO.setList(list); return R.ok(workScreenVO); } private List<DynamicWorkVO> listHalfYearByDyn() { List<DynamicWorkVO> dateList = new ArrayList<>(); Date now = new Date(); for(int i= 6;i>=1;i--){ Date date = DateUtils.getDateM(now,-i); DateTime endDay = DateUtil.endOfMonth(date); int m = DateUtil.month(endDay); // if(m == 0){ // m = 12; // } // m--; int day = DateUtil.dayOfMonth(endDay); int half = day/2; String month = DateUtil.format(date,moth_format_str); DynamicWorkVO dynamicWorkVO = new DynamicWorkVO(); dynamicWorkVO.setMonth(monthStr[m]+"月上旬"); dynamicWorkVO.setStart(month+ "-01 00:00:00"); dynamicWorkVO.setEnd(month+ "-"+half+" 23:59:58"); dateList.add(dynamicWorkVO); DynamicWorkVO dynamicWorkVO1 = new DynamicWorkVO(); dynamicWorkVO1.setMonth(monthStr[m]+"月下旬"); dynamicWorkVO1.setStart(month+ "-"+half+" 23:59:58"); dynamicWorkVO1.setEnd(DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss")); dateList.add(dynamicWorkVO1); } return dateList; } } springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/api/BigScreenApi.java
@@ -34,4 +34,14 @@ return eventService.getScreenEventList(eventListDTO); } /** * 工作大屏-事件播报数据统计 * @param communityId 社区id * @return 事件播报数据统计 */ @GetMapping("/work/event") public R eventWork(@RequestParam("communityId")Long communityId) { return eventService.eventWork(communityId); } } springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventMapper.java
@@ -8,6 +8,9 @@ import com.panzhihua.common.model.dtos.grid.*; import com.panzhihua.common.model.vos.community.screen.event.EventListVO; import com.panzhihua.common.model.vos.grid.*; import com.panzhihua.common.model.vos.screen.DateScreenVO; import com.panzhihua.common.model.vos.screen.EventDetailWorkVO; import com.panzhihua.common.model.vos.screen.EventWorkVO; import com.panzhihua.service_grid.model.dos.EventDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -115,5 +118,11 @@ */ IPage<EventSpecialPopulationVO> specialPopulationList(Page page, @Param("specialPopulationDTO") PageEventSpecialPopulationDTO specialPopulationDTO); Map<String,Long> countByCommunityId(@Param("communityId") Long communityId,@Param("nowDate")String nowDate); DateScreenVO countByAvgCommunityId(@Param("communityId") Long communityId); List<EventDetailWorkVO> getWorkScreenEventList(@Param("communityId") Long communityId); EventWorkVO countByTime(@Param("start")String start, @Param("end")String end, @Param("communityId")Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/EventService.java
@@ -273,4 +273,6 @@ * @date 2021/6/10 17:00 */ Boolean updateLcUploadFlag(Long id); R eventWork(Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventServiceImpl.java
@@ -1,5 +1,7 @@ package com.panzhihua.service_grid.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdcardUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -17,7 +19,9 @@ import com.panzhihua.common.model.vos.community.ComActVO; import com.panzhihua.common.model.vos.community.screen.event.EventListVO; import com.panzhihua.common.model.vos.grid.*; import com.panzhihua.common.model.vos.screen.*; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.utlis.ExcelSelectListUtil; import com.panzhihua.common.utlis.LngLatUtils; import com.panzhihua.common.utlis.StringUtils; @@ -63,6 +67,10 @@ private EventGridDataService eventGridDataService; @Resource private EventResourceMapper eventResourceMapper; private final String moth_format_str = "yyyy-MM"; private final String[] monthStr = new String[]{"一","二","三","四","五","六","七","八","九","十","十一","十二"}; /** * 分页查找事件 @@ -2221,4 +2229,79 @@ } return false; } public R eventWork(Long communityId){ EventWorkScreenVO workScreenVO = new EventWorkScreenVO(); String date = DateUtils.getDateFormatString(new Date(),moth_format_str); Map<String,Long> countMap = this.eventMapper.countByCommunityId(communityId,date); if(!countMap.isEmpty()){ workScreenVO.setResolvedNum(countMap.get("resolvedNum")== null ? 0L : Long.valueOf(countMap.get("resolvedNum").toString())); workScreenVO.setPendingNum(countMap.get("pendingNum")== null ? 0L : Long.valueOf(countMap.get("pendingNum").toString())); workScreenVO.setPropagandaNum(countMap.get("propagandaNum")== null ? 0L : Long.valueOf(countMap.get("propagandaNum").toString())); workScreenVO.setCurrentNum(countMap.get("currentNum")== null ? 0L : Long.valueOf(countMap.get("currentNum").toString())); } //计算处理时间消耗的时间 DateScreenVO countAvg = this.eventMapper.countByAvgCommunityId(communityId); if(countAvg != null){ int second = (int) (countAvg.getStartTime().getTime() - countAvg.getEndTime().getTime())/1000; if(second > 0){ second = second/workScreenVO.getResolvedNum().intValue(); workScreenVO.setAvgCost(second); } } //查询最新事件轮播列表 List<EventDetailWorkVO> eventList = this.eventMapper.getWorkScreenEventList(communityId); if(!eventList.isEmpty()){ workScreenVO.setEventList(eventList); } //统计近半年数据 List<EventWorkVO> list = new ArrayList<>(); for(EventWorkVO eventWorkVO: listHalfYearByDyn()){ EventWorkVO result = this.eventMapper.countByTime(eventWorkVO.getStart(),eventWorkVO.getEnd(),communityId); result.setMonth(eventWorkVO.getMonth()); list.add(result); } workScreenVO.setList(list); return R.ok(workScreenVO); } private List<EventWorkVO> listHalfYearByDyn() { List<EventWorkVO> dateList = new ArrayList<>(); Date now = new Date(); for(int i= 6;i>=1;i--){ Date date = DateUtils.getDateM(now,-i); DateTime endDay = DateUtil.endOfMonth(date); int m = DateUtil.month(endDay); // if(m == 0){ // m = 11; // } // m--; int day = DateUtil.dayOfMonth(endDay); int half = day/2; String month = DateUtil.format(date,moth_format_str); EventWorkVO eventWorkVO = new EventWorkVO(); eventWorkVO.setMonth(monthStr[m]+"月上旬"); eventWorkVO.setStart(month+ "-01 00:00:00"); eventWorkVO.setEnd(month+ "-"+half+" 23:59:58"); dateList.add(eventWorkVO); EventWorkVO eventWorkVO1 = new EventWorkVO(); eventWorkVO1.setMonth(monthStr[m]+"月下旬"); eventWorkVO1.setStart(month+ "-"+half+" 23:59:58"); eventWorkVO1.setEnd(DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss")); dateList.add(eventWorkVO1); } return dateList; } public static void main(String[] args) { EventServiceImpl service = new EventServiceImpl(); List<EventWorkVO> list = service.listHalfYearByDyn(); System.out.println(list); } } springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventMapper.xml
@@ -980,4 +980,137 @@ cmp.create_at DESC </select> <select id="countByCommunityId" resultType="Map"> SELECT count( e.id ) AS resolvedNum, ( SELECT count( e1.id ) FROM `event` AS e1 LEFT JOIN event_grid_data AS egd1 ON egd1.id = e1.grid_id WHERE egd1.grid_community_id = #{communityId} AND e1.event_category = 1 AND e1.event_process_status = 1 AND e1.event_status AND e1.event_deal_status = 1 ) AS pendingNum, ( SELECT count( e2.id ) FROM `event` AS e2 LEFT JOIN event_grid_data AS egd2 ON egd2.id = e2.grid_id WHERE egd2.grid_community_id = #{communityId} AND e2.event_category = 2 AND e2.event_status = 2 ) AS propagandaNum, ( SELECT count( e3.id ) FROM `event` AS e3 LEFT JOIN event_grid_data AS egd3 ON egd3.id = e3.grid_id WHERE e3.event_status = 2 AND e3.create_at LIKE CONCAT(#{nowDate},'%')) as currentNum FROM `event` AS e LEFT JOIN event_grid_data AS egd ON egd.id = e.grid_id WHERE egd.grid_community_id = #{communityId} AND e.event_category = 1 AND e.event_process_status = 2 AND e.event_deal_status = 4 </select> <select id="countByAvgCommunityId" resultType="com.panzhihua.common.model.vos.screen.DateScreenVO"> SELECT e.create_at AS startTime,( SELECT e1.create_at FROM `event` AS e1 LEFT JOIN event_grid_data AS egd1 ON egd1.id = e1.grid_id WHERE egd1.grid_community_id = #{communityId} AND e1.event_process_status = 2 ORDER BY e1.create_at DESC LIMIT 1 ) AS endTime FROM `event` AS e LEFT JOIN event_grid_data AS egd ON egd.id = e.grid_id WHERE egd.grid_community_id = #{communityId} AND e.event_process_status = 2 ORDER BY e.create_at ASC LIMIT 1 </select> <select id="getWorkScreenEventList" resultType="com.panzhihua.common.model.vos.screen.EventDetailWorkVO"> SELECT e.id, su.nick_name AS userName, su.image_url, e.create_at, e.event_type, e.event_process_status, e.event_deal_status, e.major, e.red_card, e.yellow_card, e.urgent, e.danger_level, e.event_des, e.happen_address, e.happent_address, e.happent_lat_lng FROM `event` AS e LEFT JOIN event_grid_data AS egd ON egd.id = e.grid_id LEFT JOIN sys_user AS su ON su.user_id = e.grid_member_id WHERE egd.grid_community_id = #{communityId} AND e.event_status = 2 ORDER BY e.create_at DESC LIMIT 10 </select> <select id="countByTime" resultType="com.panzhihua.common.model.vos.screen.EventWorkVO"> SELECT ( SELECT COUNT( e.id ) FROM `event` AS e LEFT JOIN event_grid_data AS egd ON egd.id = e.grid_id WHERE egd.grid_community_id = #{communityId} and e.event_status = 2 AND e.create_at <![CDATA[<=]]> #{end}) AS eventTotal, ( SELECT COUNT( e1.id ) FROM `event` AS e1 LEFT JOIN event_grid_data AS egd1 ON egd1.id = e1.grid_id WHERE egd1.grid_community_id = #{communityId} and e1.event_status = 2 AND #{start} <![CDATA[<=]]> e1.create_at AND e1.create_at <![CDATA[<=]]> #{end}) AS eventAdd, ( SELECT COUNT( e2.id ) FROM `event` AS e2 LEFT JOIN event_grid_data AS egd2 ON egd2.id = e2.grid_id WHERE egd2.grid_community_id = #{communityId} and e2.event_process_status = 2 AND #{start} <![CDATA[<=]]> e2.create_at AND e2.create_at <![CDATA[<=]]> #{end}) AS eventSolve FROM DUAL </select> </mapper>