Browse Source

Merge branch 'yantai_zhengwu_master' of http://git.elinkit.com.cn:7070/r/epmet-cloud into yantai_zhengwu_master

# Conflicts:
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
#	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
dev
lichao 2 years ago
parent
commit
09e628d136
  1. 7
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/AuthOperationLogListener.java
  2. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java
  3. 41
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java
  4. 42
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java
  5. 41
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java
  6. 44
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java
  7. 30
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java
  8. 37
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java
  9. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java
  10. 132
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java
  11. 61
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java
  12. 45
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java
  13. 28
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java
  14. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  15. 75
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java
  16. 17
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  17. 229
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java
  18. 165
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml
  19. 4
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml

7
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/AuthOperationLogListener.java

@ -1,6 +1,7 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationConstants;
import com.epmet.auth.constants.AuthOperationEnum;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
@ -77,7 +78,11 @@ public class AuthOperationLogListener implements MessageListenerConcurrently {
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatingTime(msgObj.getLoginTime());
logEntity.setContent("成功登录系统");
if(AuthOperationConstants.LOGIN.equals(logEntity.getType())){
logEntity.setContent("成功登录系统");
}else{
logEntity.setContent("成功退出系统");
}
DistributedLock distributedLock = null;
RLock lock = null;

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java

@ -32,6 +32,11 @@ public class CustomerStaffInfoCache implements Serializable {
*/
private String agencyName;
/**
* 组织级别
*/
private String level;
/**
* 2级组织名称 根据添加的来源返回xx组织-组织/网格/部门
*/

41
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.form.yt;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description 下级社区账号登录次数排名入参
* @Author yzm
* @Date 2023/4/6 14:18
*/
@Data
public class CommunityLoginFormDTO extends PageFormDTO {
/**
* 所选择的组织id
*/
private String orgId;
/**
* 组织类型
*/
private String level;
/**
* 开始日期yyyy-MM-dd
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startDate;
/**
* 截止日期yyyy-MM-dd
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endDate;
}

42
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java

@ -0,0 +1,42 @@
package com.epmet.dto.form.yt;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description 下级社区账号登录次数排名入参
* @Author yzm
* @Date 2023/4/6 14:18
*/
@Data
public class CountActivityFormDTO extends PageFormDTO {
/**
* 所选择的组织id
*/
private String orgId;
/**
* 是否活跃 1 活跃 0 不活跃
*/
private String isActivity;
/**
* 开始日期yyyy-MM-dd
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startDate;
/**
* 截止日期yyyy-MM-dd
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endDate;
}

41
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.form.yt;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description 账号登录情况查询市级账号/区县级账号/镇街级账号/社区级账号登录次数入参dto
* @Author yzm
* @Date 2023/4/6 10:09
*/
@Data
public class LoginLogCountByLevelFormDTO {
/**
* 所选择的组织id
*/
private String orgId;
/**
* 组织类型
*/
private String level;
/**
* 开始日期yyyy-MM-dd
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startDate;
/**
* 截止日期yyyy-MM-dd
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endDate;
}

44
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java

@ -0,0 +1,44 @@
package com.epmet.dto.result.yt;
import lombok.Data;
import java.io.Serializable;
/**
* @author: qushutong
* @Date: 2023/4/6 13:33
* @Description: 账户活跃情况
*/
@Data
public class AccountActivityInfo implements Serializable {
private static final long serialVersionUID = -918630886413844674L;
/**
* 组织名称
*/
private String agencyName = "";
/**
* 登陆次数
*/
private String loginCount = "";
/**
* 活跃账号数
*/
private String accountActivityCount = "";
/**
* 总账号数
*/
private String accountCount = "";
/**
* 组织id
*/
private String agencyId = "";
}

30
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java

@ -0,0 +1,30 @@
package com.epmet.dto.result.yt;
import lombok.Data;
import java.io.Serializable;
/**
* @author: qushutong
* @Date: 2023/4/6 13:33
* @Description: 账户活跃总数
*/
@Data
public class ActivityTatalInfo implements Serializable {
private static final long serialVersionUID = -918630886413844674L;
/**
* 不活跃账号总数
*/
private String inactivityCount = "";
/**
* 活跃账号总数
*/
private String activityCount = "";
}

37
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dto.result.yt;
import lombok.Data;
/**
* @Description 下级社区账号登录次数排名
* @Author yzm
* @Date 2023/4/6 14:15
*/
@Data
public class CommunityLoginResultDTO {
/**
* 组织id
*/
private String agencyId;
/**
* 组织名称
*/
private String agencyName;
/**
* 组织级别社区级community 街道:street, 区县级: district, 市级: city 省级:province
*/
private String agencyLevel;
/**
* 所属街道名称
*/
private String streetName;
/**
* 所属区县名称
*/
private String districtName;
/**
* 登录次数
*/
private Integer count;
}

29
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.result.yt;
import lombok.Data;
/**
* @Description 账号登录情况查询市级账号/区县级账号/镇街级账号/社区级账号登录次数返参dto
* @Author yzm
* @Date 2023/4/6 10:13
*/
@Data
public class LoginLogCountByLevelResultDTO {
/**
* 市级账号登录总次数-1时不展示
*/
private Integer cityCount;
/**
* 区县级账号登录总次数-1时不展示
*/
private Integer districtCount;
/**
* 镇街级账号登录总次数-1时不展示
*/
private Integer streetCount;
/**
* 社区级账号登录总次数-1时不展示
*/
private Integer communityCount;
}

132
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java

@ -1,9 +1,30 @@
package com.epmet.controller;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.yt.CommunityLoginFormDTO;
import com.epmet.dto.form.yt.CountActivityFormDTO;
import com.epmet.dto.form.yt.LoginLogCountByLevelFormDTO;
import com.epmet.dto.result.yt.ActivityTatalInfo;
import com.epmet.dto.result.yt.CommunityLoginResultDTO;
import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO;
import com.epmet.excel.yt.AccountActivityExcel;
import com.epmet.excel.yt.AccountInactivityExcel;
import com.epmet.service.StaffLoginLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.epmet.dto.result.yt.AccountActivityInfo;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -19,4 +40,115 @@ public class StaffLoginLogController {
@Autowired
private StaffLoginLogService staffLoginLogService;
/**
* 返回市级账号登录总次数区县级账号登录总次数镇街级账号登录总次数社区级账号登录总次数
*
* @param formDTO
* @return
*/
@PostMapping("count-level")
public Result<LoginLogCountByLevelResultDTO> countLevel(@RequestBody LoginLogCountByLevelFormDTO formDTO) {
return new Result<LoginLogCountByLevelResultDTO>().ok(staffLoginLogService.countLevel(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate()));
}
/**
* 下级社区账号登录次数排名
*
* @return
*/
@PostMapping("community-count")
public Result<PageData<CommunityLoginResultDTO>> communityCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.pageCommunityCount(formDTO));
}
/**
* 柱状图下级组织账号登录次数汇总
*
* @param formDTO
* @return
*/
@PostMapping("sub-count")
public Result<PageData<CommunityLoginResultDTO>> querySubCount(@RequestBody LoginLogCountByLevelFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.querySubCount(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate()));
}
/**
* 查看区县
*
* @param formDTO
* @return
*/
@PostMapping("district-count")
public Result<PageData<CommunityLoginResultDTO>> districtCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.pageDistrictCount(formDTO.getOrgId(),
formDTO.getLevel(), formDTO.getStartDate(),
formDTO.getEndDate(), formDTO.getIsPage(),
formDTO.getPageNo(), formDTO.getPageSize()));
}
/**
* 查看街镇
*
* @param formDTO
* @return
*/
@PostMapping("street-count")
public Result<PageData<CommunityLoginResultDTO>> streetCount(@RequestBody CommunityLoginFormDTO formDTO) {
return new Result<PageData<CommunityLoginResultDTO>>().ok(staffLoginLogService.streetCount(formDTO.getOrgId(),
formDTO.getStartDate(),
formDTO.getEndDate(), formDTO.getIsPage(),
formDTO.getPageNo(), formDTO.getPageSize()));
}
/***
* 获取当前agencyid下 下级组织活跃情况
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.yt.AccountActivityInfo>
* @author qushutong
* @date 2023/4/6 13:41
*/
@PostMapping("getAccountActivityInfo")
public Result<PageData<AccountActivityInfo>> getAccountActivityInfo(@RequestBody CountActivityFormDTO formDTO) {
return new Result<PageData<AccountActivityInfo>>().ok(staffLoginLogService.getAccountActivityInfo(formDTO));
}
/***
* 获取活跃度总数
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.commons.tools.page.PageData < com.epmet.dto.result.yt.AccountActivityInfo>>
* @author qushutong
* @date 2023/4/6 17:35
*/
@PostMapping("getActivityTotal")
public Result<ActivityTatalInfo> getActivityTotal(@RequestBody CountActivityFormDTO formDTO) {
return new Result<ActivityTatalInfo>().ok(staffLoginLogService.getActivityTotal(formDTO));
}
/***
* 导出活跃
* @param response
* @param tokenDto
* @param formDTO
* @return void
* @author qushutong
* @date 2023/4/6 18:04
*/
@PostMapping("accountActivityInfo-export")
public void analysisExport(HttpServletResponse response, @LoginUser TokenDto tokenDto, @RequestBody CountActivityFormDTO formDTO) throws Exception {
formDTO.setIsPage(false);
PageData<AccountActivityInfo> res = staffLoginLogService.getAccountActivityInfo(formDTO);
if (!CollectionUtils.isEmpty(res.getList())) {
if("1".equals(formDTO.getIsActivity())){
List<AccountActivityExcel> accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountActivityExcel.class);
ExcelUtils.exportExcelToTarget(response, null, accountActivityExcels, AccountActivityInfo.class);
}else {
List<AccountInactivityExcel> accountActivityExcels = ConvertUtils.sourceToTarget(res.getList(), AccountInactivityExcel.class);
ExcelUtils.exportExcelToTarget(response, null, accountActivityExcels, AccountActivityInfo.class);
}
}
}
}

61
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java

@ -1,8 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.yt.CountActivityFormDTO;
import com.epmet.dto.result.yt.ActivityTatalInfo;
import com.epmet.dto.result.yt.CommunityLoginResultDTO;
import com.epmet.dto.result.yt.AccountActivityInfo;
import com.epmet.entity.StaffLoginLogEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 工作人员登录日志表
@ -12,5 +20,56 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface StaffLoginLogDao extends BaseDao<StaffLoginLogEntity> {
/**
* 各社区登录总次数
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> pageCommunityCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
/**
* 柱状图下级组织账号登录次数汇总
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> querySubCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
/**
* 各区县登录总次数
*
* @param orgId
* @param startDate
* @param endDate
* @return
*/
List<CommunityLoginResultDTO> pageDistrictCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
List<CommunityLoginResultDTO> pageStreetCount(@Param("orgId") String orgId,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
/***
* 获取登陆情况
* @param formDTO
* @return com.epmet.dto.result.yt.AccountActivityInfo
* @author qushutong
* @date 2023/4/6 13:47
*/
List<AccountActivityInfo> selectListActivityInfo(CountActivityFormDTO formDTO);
ActivityTatalInfo selectOneActivityTotal(CountActivityFormDTO formDTO);
}

45
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java

@ -0,0 +1,45 @@
package com.epmet.excel.yt;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
/**
* @author: qushutong
* @Date: 2023/4/6 13:33
* @Description: 账户活跃情况
*/
@Data
public class AccountActivityExcel implements Serializable {
private static final long serialVersionUID = -918630886413844674L;
/**
* 组织名称
*/
@Excel(name = "组织名称")
private String agencyName = "";
/**
* 登陆次数
*/
@Excel(name = "登陆次数")
private String loginCount = "";
/**
* 活跃账号数
*/
@Excel(name = "活跃账号数")
private String accountActivityCount = "";
/**
* 总账号数
*/
@Excel(name = "总账号数")
private String accountCount = "";
}

28
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java

@ -0,0 +1,28 @@
package com.epmet.excel.yt;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
/**
* @author: qushutong
* @Date: 2023/4/6 13:33
* @Description: 账户不活跃情况
*/
@Data
public class AccountInactivityExcel implements Serializable {
private static final long serialVersionUID = -918630886413844674L;
/**
* 组织名称
*/
@Excel(name = "组织名称")
private String agencyName = "";
}

8
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java

@ -18,7 +18,6 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
@ -356,5 +355,12 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
**/
Result<List<CurrentUserCommunityInfoResultDTO>> getCurrentUserCommunityInfo(TokenDto tokenDTO);
/**
* 返回组织的orgIdPath包含自身
*
* @param orgId
* @return
*/
String getOrgIdPath(String orgId);
List<AgencyCountCensusResultDTO> getAgencyCountList(String agencyId);
}

75
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java

@ -1,6 +1,13 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.yt.CommunityLoginFormDTO;
import com.epmet.dto.form.yt.CountActivityFormDTO;
import com.epmet.dto.result.yt.ActivityTatalInfo;
import com.epmet.dto.result.yt.CommunityLoginResultDTO;
import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO;
import com.epmet.dto.result.yt.AccountActivityInfo;
import com.epmet.entity.StaffLoginLogEntity;
import java.util.Date;
@ -14,9 +21,77 @@ import java.util.Date;
public interface StaffLoginLogService extends BaseService<StaffLoginLogEntity> {
/**
* 登录插入记录
*
* @param staffId
* @param loginTime
*/
void saveLog(String staffId, Date loginTime);
/**
* 返回市级账号登录总次数区县级账号登录总次数镇街级账号登录总次数社区级账号登录总次数
*
* @param orgId 为空时默认当前登录用户所属组织id
* @param level
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return
*/
LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate);
/**
* 下级社区账号登录次数排名
*
* @param formDTO
* @return
*/
PageData<CommunityLoginResultDTO> pageCommunityCount(CommunityLoginFormDTO formDTO);
/**
* 柱状图下级组织账号登录次数汇总
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @return
*/
PageData<CommunityLoginResultDTO> querySubCount(String orgId, String level, Date startDate, Date endDate);
/**
* 查看区县
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @param isPage
* @param pageNo
* @param pageSize
* @return
*/
PageData<CommunityLoginResultDTO> pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize);
/**
* 查看街镇
*
* @param orgId
* @param startDate
* @param endDate
* @param isPage
* @param pageNo
* @param pageSize
* @return
*/
PageData<CommunityLoginResultDTO> streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize);
/***
* 获取登陆情况
* @param formDTO
* @return com.epmet.dto.result.yt.AccountActivityInfo
* @author qushutong
* @date 2023/4/6 13:47
*/
PageData<AccountActivityInfo> getAccountActivityInfo(CountActivityFormDTO formDTO);
ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO);
}

17
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -1607,6 +1607,23 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
return new Result<List<CurrentUserCommunityInfoResultDTO>>().ok(list);
}
/**
* 返回组织的orgIdPath包含自身
*
* @param orgId
* @return
*/
@Override
public String getOrgIdPath(String orgId) {
CustomerAgencyEntity customerAgencyEntity = baseDao.selectById(orgId);
if (null == customerAgencyEntity) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode());
}
if (StringUtils.isBlank(customerAgencyEntity.getPid()) || NumConstant.ZERO_STR.equals(customerAgencyEntity.getPid())) {
return orgId;
}
return customerAgencyEntity.getPids().concat(StrConstant.COLON).concat(orgId);
}
@Override
public List<AgencyCountCensusResultDTO> getAgencyCountList(String agencyId) {

229
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java

@ -1,25 +1,39 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.StaffLoginLogDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.form.yt.CommunityLoginFormDTO;
import com.epmet.dto.form.yt.CountActivityFormDTO;
import com.epmet.dto.result.yt.ActivityTatalInfo;
import com.epmet.dto.result.yt.CommunityLoginResultDTO;
import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO;
import com.epmet.dto.result.yt.AccountActivityInfo;
import com.epmet.entity.StaffLoginLogEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.StaffLoginLogService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
/**
* 工作人员登录日志表
@ -69,7 +83,222 @@ public class StaffLoginLogServiceImpl extends BaseServiceImpl<StaffLoginLogDao,
}
/**
* 返回市级账号登录总次数区县级账号登录总次数镇街级账号登录总次数社区级账号登录总次数
*
* @param orgId 为空时默认当前登录用户所属组织id
* @param level :组织级别社区级community 街道:street,区县级: district,市级: city;省级:province
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return
*/
@Override
public LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate) {
if (StringUtils.isBlank(orgId)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
orgId = staffInfoCacheResult.getAgencyId();
level = staffInfoCacheResult.getLevel();
}
String orgIdPath = SpringContextUtils.getBean(CustomerAgencyService.class).getOrgIdPath(orgId);
LoginLogCountByLevelResultDTO resultDTO = new LoginLogCountByLevelResultDTO();
if (Constant.CITY.equals(level)) {
//市级账号登录
LambdaQueryWrapper<StaffLoginLogEntity> cityWrapper = new LambdaQueryWrapper<>();
cityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCityCount(baseDao.selectCount(cityWrapper));
// 市下面区县账号
LambdaQueryWrapper<StaffLoginLogEntity> districtWrapper = new LambdaQueryWrapper<>();
districtWrapper.eq(StaffLoginLogEntity::getPid, orgId)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.DISTRICT)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper));
// 市级下面所有街道
LambdaQueryWrapper<StaffLoginLogEntity> streetWrapper = new LambdaQueryWrapper<>();
streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setStreetCount(baseDao.selectCount(streetWrapper));
// 市级下面所有社区
LambdaQueryWrapper<StaffLoginLogEntity> communityWrapper = new LambdaQueryWrapper<>();
communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper));
} else if (Constant.DISTRICT.equals(level)) {
resultDTO.setCityCount(NumConstant.ONE_NEG);
//只展示本区县的登录情况
LambdaQueryWrapper<StaffLoginLogEntity> districtWrapper = new LambdaQueryWrapper<>();
districtWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper));
// 区县下所有的街道
LambdaQueryWrapper<StaffLoginLogEntity> streetWrapper = new LambdaQueryWrapper<>();
streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setStreetCount(baseDao.selectCount(streetWrapper));
// 去线下所有社区
LambdaQueryWrapper<StaffLoginLogEntity> communityWrapper = new LambdaQueryWrapper<>();
communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper));
} else if (Constant.STREET.equals(level)) {
resultDTO.setCityCount(NumConstant.ONE_NEG);
resultDTO.setDistrictCount(NumConstant.ONE_NEG);
// 只展示本街道的登录情况
LambdaQueryWrapper<StaffLoginLogEntity> streetWrapper = new LambdaQueryWrapper<>();
streetWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setStreetCount(baseDao.selectCount(streetWrapper));
// 街道下所有社区
LambdaQueryWrapper<StaffLoginLogEntity> communityWrapper = new LambdaQueryWrapper<>();
communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath)
.eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper));
} else if (Constant.COMMUNITY.equals(level)) {
resultDTO.setCityCount(NumConstant.ONE_NEG);
resultDTO.setDistrictCount(NumConstant.ONE_NEG);
resultDTO.setStreetCount(NumConstant.ONE_NEG);
// 只展示本社区的登录情况
LambdaQueryWrapper<StaffLoginLogEntity> communityWrapper = new LambdaQueryWrapper<>();
communityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId)
.between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate);
resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper));
}
return resultDTO;
}
@Override
public PageData<AccountActivityInfo> getAccountActivityInfo(CountActivityFormDTO formDTO) {
List<AccountActivityInfo> accountActivityInfos = baseDao.selectListActivityInfo(formDTO);
int total = CollectionUtils.isEmpty(accountActivityInfos) ? NumConstant.ZERO : accountActivityInfos.size();
return new PageData<>(accountActivityInfos, total);
}
@Override
public ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO) {
return baseDao.selectOneActivityTotal(formDTO);
}
/**
* 下级社区账号登录次数排名
*
* @param formDTO
* @return
*/
@Override
public PageData<CommunityLoginResultDTO> pageCommunityCount(CommunityLoginFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getOrgId())) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
formDTO.setOrgId(staffInfoCacheResult.getAgencyId());
formDTO.setLevel(staffInfoCacheResult.getLevel());
}
if (formDTO.getIsPage()) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<CommunityLoginResultDTO> list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate());
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), formDTO.getPageSize());
}
// 不分页
List<CommunityLoginResultDTO> list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate());
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<>(list, total, total);
}
/**
* 柱状图下级组织账号登录次数汇总
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @return
*/
@Override
public PageData<CommunityLoginResultDTO> querySubCount(String orgId, String level, Date startDate, Date endDate) {
if (StringUtils.isBlank(orgId)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
orgId = staffInfoCacheResult.getAgencyId();
}
List<CommunityLoginResultDTO> list = baseDao.querySubCount(orgId, startDate, endDate);
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<CommunityLoginResultDTO>(list, total, total);
}
/**
* 查看区县
*
* @param orgId
* @param level
* @param startDate
* @param endDate
* @param isPage
* @param pageNo
* @param pageSize
* @return 返回agencyIdagencyNamecount
*/
@Override
public PageData<CommunityLoginResultDTO> pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) {
if (StringUtils.isBlank(orgId)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
orgId = staffInfoCacheResult.getAgencyId();
}
if (isPage) {
PageHelper.startPage(pageNo, pageSize);
List<CommunityLoginResultDTO> list = baseDao.pageDistrictCount(orgId, startDate, endDate);
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
// 不分页
List<CommunityLoginResultDTO> list = baseDao.pageDistrictCount(orgId, startDate, endDate);
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<>(list, total, total);
}
/**
* 查看街镇
*
* @param orgId
* @param startDate
* @param endDate
* @param isPage
* @param pageNo
* @param pageSize
* @return
*/
@Override
public PageData<CommunityLoginResultDTO> streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) {
if (StringUtils.isBlank(orgId)) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId());
orgId = staffInfoCacheResult.getAgencyId();
}
if (isPage) {
PageHelper.startPage(pageNo, pageSize);
List<CommunityLoginResultDTO> list = baseDao.pageStreetCount(orgId, startDate, endDate);
PageInfo<CommunityLoginResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal(), pageSize);
}
// 不分页
List<CommunityLoginResultDTO> list = baseDao.pageStreetCount(orgId, startDate, endDate);
int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size();
return new PageData<>(list, total, total);
}
}

165
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml

@ -22,5 +22,170 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 账号登录情况:各社区登录总次数 -->
<select id="pageCommunityCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
d.ORGANIZATION_NAME AS districtName,
s.ORGANIZATION_NAME AS streetName,
ca.ORGANIZATION_NAME AS agencyName,
ca.`LEVEL` AS agencyLevel,
count( l.id ) AS count
FROM customer_agency ca
left JOIN staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
LEFT JOIN customer_agency s
ON ( ca.PID = s.ID )
LEFT JOIN customer_agency d
ON ( s.PID = d.ID )
WHERE
ca.DEL_FLAG = '0'
AND (ca.id = #{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'community'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc
</select>
<!--社区活跃列表-->
<select id="selectListActivityInfo" resultType="com.epmet.dto.result.yt.AccountActivityInfo">
SELECT
COUNT(DISTINCT(l.id)) AS loginCount,
COUNT(DISTINCT(l.STAFF_ID)) accountActivityCount,
COUNT(DISTINCT(ag.USER_ID)) accountCount,
a.ID agencyId,
a.ALL_PARENT_NAME agencyName
FROM
customer_agency a
LEFT JOIN staff_login_log l ON a.ID = l.AGENCY_ID
AND a.`LEVEL` = l.AGENCY_LEVEL
AND l.DEL_FLAG = '0'
LEFT JOIN customer_staff_agency ag ON a.ID = ag.AGENCY_ID
AND ag.DEL_FLAG = '0'
WHERE
a.DEL_FLAG = '0'
AND a.`LEVEL` = 'community'
<if test="orgId!= null and orgId.trim() != ''">
AND a.PIDS LIKE CONCAT('%',#{orgId},'%')
</if>
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
<choose >
<when test='isActivity!= null and isActivity == "1" and isActivity.trim() != ""'>
AND l.AGENCY_ID is NOT NULL
</when>
<otherwise>
AND l.AGENCY_ID is NULL
</otherwise>
</choose>
GROUP BY
a.ID
ORDER BY
COUNT(DISTINCT(l.id)) DESC;
</select>
<!-- 账号登录情况:柱状图:下级组织账号登录次数汇总 -->
<select id="querySubCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
select
ca.ID AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.level as agencyLevel,
count(l.ID) AS count
from customer_agency ca
left join staff_login_log l
on(ca.ID=l.AGENCY_ID)
where ca.DEL_FLAG='0'
and ca.PID = #{orgId}
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
group by ca.id
order by count(l.ID) desc
</select>
<!-- 账号登录情况:查看区县-->
<select id="pageDistrictCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.LEVEL AS agencyLevel,
count(l.id) AS count
FROM customer_agency ca
left join staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
WHERE ca.DEL_FLAG = '0'
and (ca.id=#{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'district'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc
</select>
<!-- 账号登录情况:查看街镇-->
<select id="pageStreetCount" parameterType="map" resultType="com.epmet.dto.result.yt.CommunityLoginResultDTO">
SELECT
ca.id AS agencyId,
ca.ORGANIZATION_NAME AS agencyName,
ca.LEVEL AS agencyLevel,
pa.ORGANIZATION_NAME as districtName,
count(l.id) AS count
FROM customer_agency ca
left join staff_login_log l
ON ( ca.ID =l.AGENCY_ID and l.DEL_FLAG = '0')
left join customer_agency pa
on(ca.pid=pa.id)
WHERE
ca.DEL_FLAG = '0'
and (ca.id = #{orgId} or ca.pids like concat('%',#{orgId},'%') )
AND ca.LEVEL = 'street'
<if test='null != startDate'>
and l.LOGIN_TIME &gt;= #{startDate}
</if>
<if test='null != endDate'>
and l.LOGIN_TIME &lt;= #{endDate}
</if>
GROUP BY ca.id
order by count(l.id) desc
</select>
<select id="selectOneActivityTotal" resultType="com.epmet.dto.result.yt.ActivityTatalInfo">
SELECT
COUNT(t.activityCount = '0' OR NULL) inactivityCount,
COUNT(t.activityCount > '0' OR NULL) activityCount
FROM
(
SELECT
COUNT(DISTINCT(l.ID)) activityCount
FROM
customer_agency a
LEFT JOIN staff_login_log l ON a.ID = l.AGENCY_ID
WHERE
a.PIDS LIKE CONCAT(
'%',
#{orgId},
'%'
)
AND a.`LEVEL` = 'community'
AND a.DEL_FLAG = '0'
GROUP BY
a.ID
) t;
</select>
</mapper>

4
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml

@ -28,6 +28,7 @@
<if test="orgType == 'grid'">
and e.GRID_ID=#{orgId}
</if>
and e.DEL_FLAG = '0'
and CUSTOMER_ID = #{customerId}
and HAPPEN_TIME >= #{queryStartTime}
and HAPPEN_TIME <![CDATA[<=]]> #{queryEndTime}
@ -81,7 +82,8 @@
select date_format(e.HAPPEN_TIME, '%Y-%m') monthName
from ic_event e
<where>
e.HAPPEN_TIME >= date_format(#{queryStartTime}, '%Y-%m')
e.DEL_FLAG = '0'
and e.HAPPEN_TIME >= date_format(#{queryStartTime}, '%Y-%m')
and e.HAPPEN_TIME <![CDATA[ <= ]]> date_format(#{queryEndTime}, '%Y-%m')
<if test="orgType == 'grid'">
and e.GRID_ID =#{orgId}

Loading…
Cancel
Save