Browse Source

Merge branch 'develop' into release_temp

master
sunyuchao 4 years ago
parent
commit
876d48c562
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 42
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java
  3. 67
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java
  4. 57
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java
  5. 27
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java
  6. 35
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java
  7. 27
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  8. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java
  9. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java
  10. 55
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java
  11. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  12. 332
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  13. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java
  14. 1
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  15. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java
  16. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java
  17. 63
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java
  18. 201
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  19. 41
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml
  20. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml
  21. 7
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java
  22. 6
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java
  23. 170
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java
  24. 8
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java
  25. 43
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/ReceiverGroupCommonFormDTO.java
  26. 11
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java
  27. 16
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReceiverGroupCommonResultDTO.java
  28. 12
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/StaffMessageResultDTO.java
  29. 79
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java
  30. 53
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java
  31. 100
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java
  32. 2
      epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml
  33. 8
      epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml
  34. 5
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java
  35. 5
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java
  36. 21
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GridPointRankResultDTO.java
  37. 3
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java
  38. 21
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointRankResultDTO.java
  39. 16
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java
  40. 30
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java
  41. 6
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointStatisticalDailyDao.java
  42. 2
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java
  43. 26
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointStatisticalDailyService.java
  44. 19
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java
  45. 144
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointStatisticalDailyServiceImpl.java
  46. 50
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml
  47. 21
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  48. 18
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GetAgencyListFormDTO.java
  49. 7
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java
  50. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java
  51. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  52. 4
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  53. 7
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  54. 39
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  55. 23
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java
  56. 3
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GuideListFormDTO.java
  57. 2
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GuideDetailResultDTO.java
  58. 18
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideCollectionController.java
  59. 10
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java
  60. 9
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideModuleController.java
  61. 14
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/GuideDao.java
  62. 22
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideCollectionService.java
  63. 9
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideModuleService.java
  64. 14
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideService.java
  65. 22
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  66. 57
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideCollectionServiceImpl.java
  67. 19
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideModuleServiceImpl.java
  68. 72
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java
  69. 139
      epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.7__create_guide_table.sql
  70. 12
      epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.8__insert_default_guidecategory.sql
  71. 43
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/GuideDao.xml
  72. 4
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java
  73. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActCommentServiceImpl.java
  74. 24
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java
  75. 36
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  76. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java
  77. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java
  78. 24
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  79. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeCommentServiceImpl.java
  80. 15
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java
  81. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java
  82. 6
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  83. 5
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/warmhearted/form/ResiWarmheartedSubmitFormDTO.java
  84. 15
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java
  85. 17
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java
  86. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java
  87. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java
  88. 7
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -110,6 +110,8 @@ public enum EpmetErrorCode {
PLEASE_CHOOSE_MEMBER(8611,"请选择成员"),
INFO_GROUP_NAME_EXISTS(8612,"名称已存在"),
INFO_REPLY_CONTENT_LENGTH_LIMIT(8613,"回复内容最多输入500字"),
INFO_GROUP_NOT_EXISTS(8614,"群不存在"),
INFO_GROUP_OPE_PERMISSION_REQUIRED(8615,"无权操作"),
// 爱心互助 居民端
NOT_IN_THE_SIGN_IN_RANGE(8510, "您还未进入指定的签到范围~"),

42
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java

@ -14,11 +14,13 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@ -80,4 +82,44 @@ public class ExcelUtils {
exportExcel(response, fileName, targetList, targetClass);
}
public static void exportExcelToTargetDisposeAll(HttpServletResponse response, String fileName, Collection<?> sourceList,
Class<?> targetClass) throws Exception {
if (!CollectionUtils.isEmpty(sourceList)){
List<Object> targetList = new ArrayList<>(sourceList.size());
for(Object source : sourceList){
Object target = targetClass.newInstance();
BeanUtils.copyProperties(source, target);
targetList.add(target);
}
exportExcelDispose(response, fileName, targetList, targetClass);
}else {
exportExcelDispose(response, fileName, new ArrayList<>(), targetClass);
}
}
public static void exportExcelDispose(HttpServletResponse response, String fileName, Collection<?> list,
Class<?> pojoClass) throws IOException {
if(StringUtils.isBlank(fileName)){
//当前日期
fileName = DateUtils.format(new Date());
}
ExportParams params = new ExportParams(fileName,fileName);
Workbook workbook = ExcelExportUtil.exportExcel(params, pojoClass, list);
Sheet sheet1 = workbook.getSheetAt(0);
sheet1.setDefaultColumnWidth(50*256);
sheet1.setDefaultRowHeight((short)(2*256));
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
fileName = fileName + ".xls";
response.setHeader("Content-Disposition",
"attachment;filename=" +fileName);
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}

67
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java

@ -0,0 +1,67 @@
package com.epmet.dataaggre.dto.datastats.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/9/10 11:04 上午
* @DESC
*/
@Data
public class CustomerDataManageFormDTO implements Serializable {
private static final long serialVersionUID = 6462094914874831738L;
public interface CustomerDataManageForm{}
/**
* 客户ID
*/
@NotBlank(message = "客户ID不能为空",groups = CustomerDataManageForm.class)
private String customerId;
/**
* 组织ID
*/
@NotBlank(message = "组织ID不能为空",groups = CustomerDataManageForm.class)
private String agencyId;
/**
* 区间:Interval 截止:end
*/
@NotBlank(message = "type不能为空",groups = CustomerDataManageForm.class)
private String type;
/**
* 开始时间yyyymmdd
*/
private String startTime;
/**
* 结束时间yyyymmdd
*/
@NotBlank(message = "结束时间不能为空",groups = CustomerDataManageForm.class)
private String endTime;
private Integer pageNo = 1;
private Integer pageSize = 20;
/**
* 是否分页true分 false不分
*/
@NotNull(message = "是否分页不能为空",groups = CustomerDataManageForm.class)
private Boolean isPage;
//组织或网格Id集合
private List<String> idList;
//按起始时间还是结束时间查数据【start end】
private String sourceType;
//数据类型【组织agency 网格grid】
private String dataType;
}

57
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java

@ -0,0 +1,57 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 运营情况数据导出-接口返参
* @Auth sun
*/
@Data
public class CustomerDataManageResultDTO {
List<CustomerDataManage> list = new ArrayList<>();
private Integer total;
@Data
public static class CustomerDataManage {
//组织、网格Id
private String orgId;
//组织、网格名称
private String orgName;
//用户数
private Integer userCount = 0;
//居民数
private Integer residentCount = 0;
//党员数
private Integer partyMemberCount = 0;
//小组数
private Integer groupCount = 0;
//话题数
private Integer topicCount = 0;
//议题数
private Integer issueCount = 0;
//项目数
private Integer projectCount = 0;
//结案项目数
private Integer closedProjectCount = 0;
//巡查人数
private Integer patrolPeopleCount = 0;
//巡查次数
private Integer patrolCount = 0;
//巡查时长
private String patrolDuration;
//未转换前的巡查时长
private Integer patrolDurationInteger = 0;
//数据对应dateId
@JsonIgnore
private String dateId;
@JsonIgnore
private String staffId;
}
}

27
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java

@ -0,0 +1,27 @@
package com.epmet.dataaggre.dto.evaluationindex;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author sun
* @Description 根据组织Id判断查询直属下级组织/网格列表组织存在子客户的查询包含子客户组织数据
*/
@Data
public class ScreenAgencyOrGridListDTO implements Serializable {
private static final long serialVersionUID = 6328123559936824470L;
//组织级别(社区级:community,乡(镇、街道)级:street,区县级: district,市级: city,省级:province)
private String level;
//直属下级组织或网格集合
private List<AgencyGrid> agencyGridList;
@Data
public static class AgencyGrid {
//组织id
private String orgId;
//组织名称
private String orgName;
}
}

35
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java

@ -1,18 +1,21 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.service.datastats.DataStatsService;
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 org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author sun
@ -215,4 +218,28 @@ public class DataStatsController {
return new Result<GovrnRatioResultDTO>().ok(dataStatsService.governRatio(formDTO));
}
/**
* @Description 客户数据管理导出
* @Param formDTO
* @Param response
* @author zxc
* @date 2021/9/10 3:52 下午
*/
@PostMapping("operateexport")
public void CustomerDataManage(@RequestBody CustomerDataManageFormDTO formDTO, HttpServletResponse response) throws Exception {
ValidatorUtils.validateEntity(formDTO, CustomerDataManageFormDTO.CustomerDataManageForm.class);
dataStatsService.CustomerDataManage(formDTO,response);
}
/**
* @Param formDTO
* @Description 运营情况数据查询
* @author sun
*/
@PostMapping("operatedata")
public Result<CustomerDataManageResultDTO> operatedata(@RequestBody CustomerDataManageFormDTO formDTO) throws ParseException {
ValidatorUtils.validateEntity(formDTO, CustomerDataManageFormDTO.CustomerDataManageForm.class);
return new Result<CustomerDataManageResultDTO>().ok(dataStatsService.operateExport(formDTO));
}
}

27
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.datastats;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO;
import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
@ -308,4 +309,30 @@ public interface DataStatsDao {
* @author sun
*/
List<GridMemberPatrolListResultDTO> selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO);
/**
* @Description 直属组织或网格下注册用户数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> regUserList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下群组数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> groupList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下话题数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> topicList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下议题数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> issueList(CustomerDataManageFormDTO formDTO);
/**
* @Description 直属组织或网格下项目数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> projectList(CustomerDataManageFormDTO formDTO);
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java

@ -19,6 +19,8 @@ package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import org.apache.ibatis.annotations.Mapper;
@ -43,4 +45,10 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao<StatsStaffPatrol
* @return
*/
List<PatrolDailySumResult> getPatrolSumList(@Param("agencyFullIdList") List<String> agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId);
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java

@ -95,4 +95,12 @@ public interface EvaluationIndexDao {
*/
List<ScreenCustomerAgencyDTO> getSubAgencyListByAgency(@Param("agencyId") String agencyId, @Param("areaCode") String areaCode, @Param("list") List<String> list);
/**
* @Description 根据组织ID查询组织名
* @Param agencyId
* @author zxc
* @date 2021/9/10 3:54 下午
*/
String selectAgencyNameByAgencyId(@Param("agencyId")String agencyId);
}

55
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java

@ -0,0 +1,55 @@
package com.epmet.dataaggre.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
/**
* @Author zxc
* @DateTime 2021/9/10 10:15 上午
* @DESC
*/
@Data
public class CustomerDataManageExcel {
@Excel(name = "组织")
private String orgName;
@Excel(name = "用户数")
private Integer userCount;
@Excel(name = "居民数")
private Integer residentCount;
@Excel(name = "党员数")
private Integer partyMemberCount;
@Excel(name = "小组数")
private Integer groupCount;
@Excel(name = "话题数")
private Integer topicCount;
@Excel(name = "议题数")
private Integer issueCount;
@Excel(name = "项目数")
private Integer projectCount;
@Excel(name = "结案项目数")
private Integer closedProjectCount;
@Excel(name = "巡查人数")
private Integer patrolPeopleCount;
@Excel(name = "巡查次数")
private Integer patrolCount;
@Excel(name = "巡查时长")
private String patrolDuration;
/**
* 未转换前的巡查时长
*/
private Integer patrolDurationInteger;
}

18
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -9,6 +9,8 @@ import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.List;
/**
@ -229,4 +231,20 @@ public interface DataStatsService {
* @author sun
*/
List<GridMemberPatrolListResultDTO> getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO);
/**
* @Description 客户数据管理导出
* @Param formDTO
* @Param response
* @author zxc
* @date 2021/9/10 3:52 下午
*/
void CustomerDataManage(CustomerDataManageFormDTO formDTO, HttpServletResponse response) throws Exception;
/**
* @Description 运营情况数据查询
* @author sun
*/
CustomerDataManageResultDTO operateExport(CustomerDataManageFormDTO formDTO) throws ParseException;
}

332
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -2,47 +2,53 @@
import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.OrgLevelEnum;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dao.datastats.DataStatsDao;
import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao;
import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO;
import com.epmet.dataaggre.dto.datastats.form.*;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
import com.epmet.dataaggre.excel.CustomerDataManageExcel;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
* @Author sun
@ -1841,4 +1847,258 @@ public class DataStatsServiceImpl implements DataStatsService {
return dataStatsDao.selectGirdMemberPatrol(formDTO);
}
/**
* @Description 客户数据管理导出
* @Param formDTO
* @Param response
* @author zxc
* @date 2021/9/10 3:52 下午
*/
@Override
public void CustomerDataManage(CustomerDataManageFormDTO formDTO, HttpServletResponse response) throws Exception {
List<CustomerDataManageResultDTO.CustomerDataManage> result = operateExport(formDTO).getList();
if (!CollectionUtils.isEmpty(result)){
CustomerDataManageResultDTO.CustomerDataManage c = new CustomerDataManageResultDTO.CustomerDataManage();
c.setOrgName("合计");
c.setUserCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getUserCount)));
c.setResidentCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getResidentCount)));
c.setPartyMemberCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getPartyMemberCount)));
c.setGroupCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getGroupCount)));
c.setTopicCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getTopicCount)));
c.setIssueCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getIssueCount)));
c.setProjectCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getProjectCount)));
c.setClosedProjectCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getClosedProjectCount)));
c.setPatrolPeopleCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolPeopleCount)));
c.setPatrolCount(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolCount)));
c.setPatrolDurationInteger(result.stream().collect(Collectors.summingInt(CustomerDataManageResultDTO.CustomerDataManage::getPatrolDurationInteger)));
c.setPatrolDuration(getHm(c.getPatrolDurationInteger()));
result.add(c);
}
String fileName = excelName(formDTO);
ExcelUtils.exportExcelToTargetDisposeAll(response,fileName,result, CustomerDataManageExcel.class);
}
/**
* @Description 秒转换时分
* @Param seconds
* @author zxc
* @date 2021/9/13 10:03 上午
*/
public String getHm(Integer seconds){
String result = "0分钟";
if (seconds >= NumConstant.SIXTY) {
Integer hours = seconds / 3600;
Integer minutes = seconds % 3600 / 60;
result = (hours < NumConstant.ONE ? "" : hours + "小时") + (minutes < NumConstant.ONE ? "" : minutes + "分钟");
}else if (seconds < NumConstant.SIXTY && seconds > NumConstant.ZERO){
result = "1分钟";
}
return result;
}
/**
* @Description 表头获取
* @Param formDTO
* @author zxc
* @date 2021/9/13 10:02 上午
*/
public String excelName(CustomerDataManageFormDTO formDTO){
StringBuffer s = new StringBuffer();
String agencyName = indexService.selectAgencyNameByAgencyId(formDTO.getAgencyId());
s.append(agencyName);
if (StringUtils.isNotBlank(formDTO.getStartTime())){
String startTime = formDTO.getStartTime();
String sYear = startTime.substring(0, 4);
String sMonth = startTime.substring(4, 6);
String sDay = startTime.substring(6, 8);
String endTime = formDTO.getEndTime();
String eYear = endTime.substring(0, 4);
String eMonth = endTime.substring(4, 6);
String eDay = endTime.substring(6, 8);
s.append(sYear).append("年").append(sMonth).append("月").append(sDay).append("日-")
.append(eYear).append("年").append(eMonth).append("月").append(eDay).append("日区间新增值");
}else {
String endTime = formDTO.getEndTime();
String eYear = endTime.substring(0, 4);
String eMonth = endTime.substring(4, 6);
String eDay = endTime.substring(6, 8);
s.append(eYear).append("年").append(eMonth).append("月").append(eDay).append("日截止累计值");
}
return s.toString();
}
/**
* @Param formDTO
* @Description 运营情况数据查询
* @author sun
*/
@Override
public CustomerDataManageResultDTO operateExport(CustomerDataManageFormDTO formDTO) throws ParseException {
CustomerDataManageResultDTO resultDTO = new CustomerDataManageResultDTO();
List<CustomerDataManageResultDTO.CustomerDataManage> dataManageList = new ArrayList<>();
//1.必要参数校验及处理
if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) {
throw new RenException("请选择开始时间或查询累计值");
}
//入参有开始时间的则需要减去一天
if (StringUtils.isNotBlank(formDTO.getStartTime())) {
SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD);
Date date = format.parse(formDTO.getStartTime());
Date yesterday = DateUtils.addDateDays(date, -1);
formDTO.setStartTime(format.format(yesterday));
}
//2.查询组织信息,判断查询下级组织还是网格数据
ScreenAgencyOrGridListDTO agencyGrid = indexService.getSubAgencyOrGridList(formDTO.getAgencyId());
if (null == agencyGrid) {
return new CustomerDataManageResultDTO();
}
//组织或网格Id集合
List<String> idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList());
formDTO.setDataType(!"community".equals(agencyGrid.getLevel()) ? "agency" : "grid");
formDTO.setIdList(idList);
resultDTO.setTotal(idList.size());
//3.查询截止日期用户、群组、话题、议题、项目、巡查数据
formDTO.setSourceType("end");
List<CustomerDataManageResultDTO.CustomerDataManage> userEnd = dataStatsDao.regUserList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> uEndMap = new HashMap<>();
userEnd.stream().forEach(u->uEndMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> groupEnd = dataStatsDao.groupList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> gEndMap = new HashMap<>();
groupEnd.stream().forEach(u->gEndMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> topicEnd = dataStatsDao.topicList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> tEndMap = new HashMap<>();
topicEnd.stream().forEach(u->tEndMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> issueEnd = dataStatsDao.issueList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> iEndMap = new HashMap<>();
issueEnd.stream().forEach(u->iEndMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> projectEnd = dataStatsDao.projectList(formDTO);
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> pEndMap = new HashMap<>();
projectEnd.stream().forEach(u->pEndMap.put(u.getOrgId(),u));
//巡查数据不区分区间差值,只计算累计值,人员做去重处理且是有巡查记录的人员
List<CustomerDataManageResultDTO.CustomerDataManage> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO);
//4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> uStartMap = new HashMap<>();
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> gStartMap = new HashMap<>();
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> tStartMap = new HashMap<>();
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> iStartMap = new HashMap<>();
HashMap<String, CustomerDataManageResultDTO.CustomerDataManage> pStartMap = new HashMap<>();
if ("Interval".equals(formDTO.getType())) {
formDTO.setSourceType("start");
List<CustomerDataManageResultDTO.CustomerDataManage> userStart = dataStatsDao.regUserList(formDTO);
userStart.stream().forEach(u->uStartMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> groupStart = dataStatsDao.groupList(formDTO);
groupStart.stream().forEach(u->gStartMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> topicStart = dataStatsDao.topicList(formDTO);
topicStart.stream().forEach(u->tStartMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> issueStart = dataStatsDao.issueList(formDTO);
issueStart.stream().forEach(u->iStartMap.put(u.getOrgId(),u));
List<CustomerDataManageResultDTO.CustomerDataManage> projectStart = dataStatsDao.projectList(formDTO);
projectStart.stream().forEach(u->pStartMap.put(u.getOrgId(),u));
}
//5.封装数据
agencyGrid.getAgencyGridList().forEach(org -> {
CustomerDataManageResultDTO.CustomerDataManage dto = new CustomerDataManageResultDTO.CustomerDataManage();
dto.setOrgId(org.getOrgId());
dto.setOrgName(org.getOrgName());
int user = 0;
int resi = 0;
int part = 0;
if(uEndMap.containsKey(org.getOrgId())){
user = uEndMap.get(org.getOrgId()).getUserCount();
resi = uEndMap.get(org.getOrgId()).getResidentCount();
part = uEndMap.get(org.getOrgId()).getPartyMemberCount();
if ("Interval".equals(formDTO.getType())&&uStartMap.containsKey(org.getOrgId())) {
user = user - uStartMap.get(org.getOrgId()).getUserCount();
resi = resi - uStartMap.get(org.getOrgId()).getResidentCount();
part = part - uStartMap.get(org.getOrgId()).getPartyMemberCount();
}
}
int group = 0;
if(gEndMap.containsKey(org.getOrgId())){
group = gEndMap.get(org.getOrgId()).getGroupCount();
if ("Interval".equals(formDTO.getType())&&gStartMap.containsKey(org.getOrgId())) {
group = group - gStartMap.get(org.getOrgId()).getGroupCount();
}
}
int topic = 0;
if(tEndMap.containsKey(org.getOrgId())){
topic = tEndMap.get(org.getOrgId()).getTopicCount();
if ("Interval".equals(formDTO.getType())&&tStartMap.containsKey(org.getOrgId())) {
topic = topic - tStartMap.get(org.getOrgId()).getTopicCount();
}
}
int issue = 0;
if(iEndMap.containsKey(org.getOrgId())){
issue = iEndMap.get(org.getOrgId()).getIssueCount();
if ("Interval".equals(formDTO.getType())&&iStartMap.containsKey(org.getOrgId())) {
issue = issue - iStartMap.get(org.getOrgId()).getIssueCount();
}
}
int project = 0;
int closed = 0;
if(pEndMap.containsKey(org.getOrgId())){
project = pEndMap.get(org.getOrgId()).getProjectCount();
closed = pEndMap.get(org.getOrgId()).getClosedProjectCount();
if ("Interval".equals(formDTO.getType())&&pStartMap.containsKey(org.getOrgId())) {
project = project - pStartMap.get(org.getOrgId()).getProjectCount();
closed = closed - pStartMap.get(org.getOrgId()).getClosedProjectCount();
}
}
int patro = 0;
int patroCount = 0;
String patrolDuration = "";
int patrolDurationInteger = 0;
HashSet set = new HashSet();
for (CustomerDataManageResultDTO.CustomerDataManage u : patrolEnd) {
if (org.getOrgId().equals(u.getOrgId())) {
patroCount += u.getPatrolCount();
patrolDurationInteger += u.getPatrolDurationInteger();
set.add(u.getStaffId());
}
}
patro = set.size();
Integer minutes = patrolDurationInteger / 60;
patrolDuration = (minutes / 60 > 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟");
dto.setUserCount(user);
dto.setResidentCount(resi);
dto.setPartyMemberCount(part);
dto.setGroupCount(group);
dto.setTopicCount(topic);
dto.setIssueCount(issue);
dto.setProjectCount(project);
dto.setClosedProjectCount(closed);
dto.setPatrolPeopleCount(patro);
dto.setPatrolCount(patroCount);
dto.setPatrolDuration(patrolDuration);
dto.setPatrolDurationInteger(patrolDurationInteger);
dataManageList.add(dto);
});
//6.默认按用户总数降序
Collections.sort(dataManageList, new Comparator<CustomerDataManageResultDTO.CustomerDataManage>() {
@Override
public int compare(CustomerDataManageResultDTO.CustomerDataManage o1, CustomerDataManageResultDTO.CustomerDataManage o2) {
return o2.getUserCount().compareTo(o1.getUserCount());
}
});
//7.物理分页并返回
if (formDTO.getIsPage()) {
int firstIndex = (formDTO.getPageNo() - 1) * formDTO.getPageSize();
int lastIndex = formDTO.getPageNo() * formDTO.getPageSize();
List<CustomerDataManageResultDTO.CustomerDataManage> list = dataManageList.subList((firstIndex > dataManageList.size() ? dataManageList.size() : firstIndex), (lastIndex > dataManageList.size() ? dataManageList.size() : lastIndex));
resultDTO.setList(list);
return resultDTO;
}
resultDTO.setList(dataManageList);
return resultDTO;
}
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java

@ -18,6 +18,8 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
@ -40,4 +42,9 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService<StatsSta
*/
List<PatrolDailySumResult> getPatrolSumList(List<String> agencyList, String startDateId, String endDateId);
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO);
}

1
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -598,6 +598,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
log.error("getStaffInfo have any agency staffId:{}",staffId);
return null;
}
result.setAgencyId(agencyDTO.getId());
result.setAgencyName(agencyDTO.getOrganizationName());
StaffOrgRelationResultDTO fromOrgTypeDto = govOrgService.getStaffFromOrgType(staffId);
String fromOrgType = OrgTypeEnum.AGENCY.getCode();

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java

@ -4,6 +4,8 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao;
import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO;
import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult;
import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity;
import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService;
@ -36,4 +38,13 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl<Stat
return baseDao.getPatrolSumList(agencyFullIdList,startDateId,endDateId);
}
/**
* @Description 直属组织或网格下巡查数据
* @author sun
*/
@Override
public List<CustomerDataManageResultDTO.CustomerDataManage> patrolList(CustomerDataManageFormDTO formDTO) {
return baseDao.patrolList(formDTO);
}
}

15
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java

@ -2,6 +2,7 @@ package com.epmet.dataaggre.service.evaluationindex;
import com.epmet.dataaggre.dto.datastats.form.GovrnRatioFormDTO;
import com.epmet.dataaggre.dto.datastats.result.GovrnRatioResultDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
@ -71,4 +72,18 @@ public interface EvaluationIndexService {
*/
List<ScreenCustomerAgencyDTO> getSubAgencyListByAgency(String agencyId);
/**
* @Description 根据组织ID查询组织名
* @Param agencyId
* @author zxc
* @date 2021/9/10 3:54 下午
*/
String selectAgencyNameByAgencyId(String agencyId);
/**
* @Description 根据组织Id判断查询直属下级组织/网格列表组织存在子客户的查询包含子客户组织数据
* @author sun
*/
ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String agencyId);
}

63
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java

@ -2,10 +2,12 @@ package com.epmet.dataaggre.service.evaluationindex.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.evaluationindex.EvaluationIndexDao;
import com.epmet.dataaggre.dto.datastats.form.GovrnRatioFormDTO;
import com.epmet.dataaggre.dto.datastats.result.GovrnRatioResultDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
@ -143,4 +145,65 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService {
}
}
/**
* @Description 根据组织ID查询组织名
* @Param agencyId
* @author zxc
* @date 2021/9/10 3:54 下午
*/
@Override
public String selectAgencyNameByAgencyId(String agencyId) {
return evaluationIndexDao.selectAgencyNameByAgencyId(agencyId);
}
/**
* @Description 根据组织Id判断查询直属下级组织/网格列表组织存在子客户的查询包含子客户组织数据
* @author sun
*/
@Override
public ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String agencyId) {
ScreenAgencyOrGridListDTO resultDTO = new ScreenAgencyOrGridListDTO();
List<ScreenAgencyOrGridListDTO.AgencyGrid> agencyGridList = new ArrayList<>();
//1.查询组织信息
ScreenCustomerAgencyDTO dto = evaluationIndexDao.getByAgencyId(agencyId);
if (dto == null) {
log.error(String.format("组织信息不存在,组织Id->%s"), agencyId);
return new ScreenAgencyOrGridListDTO();
}
//2.根据组织级别判断查询直属组织或网格列表
List<ScreenCustomerAgencyDTO> agencyList = new ArrayList<>();
List<ScreenCustomerGridDTO> gridList = new ArrayList<>();
List<ScreenAgencyOrGridListDTO.AgencyGrid> finalAgencyGridList = agencyGridList;
if (!"community".equals(dto.getLevel())) {
//2-1.直属下级组织列表
//2.判断客户是否存在子客户
List<String> list = customerRelation.haveSubCustomer(dto.getCustomerId());
if (!CollectionUtils.isNotEmpty(list)) {
agencyList = evaluationIndexDao.getSubAgencyListByAgency(agencyId, null, null);
} else {
list.add(dto.getCustomerId());
agencyList = evaluationIndexDao.getSubAgencyListByAgency(null, dto.getAreaCode(), list);
}
agencyList.forEach(gr->{
ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid();
org.setOrgId(gr.getAgencyId());
org.setOrgName(gr.getAgencyName());
finalAgencyGridList.add(org);
});
} else {
//2-2.直属下级网格列表
gridList = evaluationIndexDao.getSubGridList(agencyId);
gridList.forEach(gr->{
ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid();
org.setOrgId(gr.getGridId());
org.setOrgName(gr.getGridName());
finalAgencyGridList.add(org);
});
}
resultDTO.setLevel(dto.getLevel());
resultDTO.setAgencyGridList(agencyGridList);
return resultDTO;
}
}

201
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -797,4 +797,205 @@
GROUP BY staff_id
</select>
<select id="regUserList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.orgId, t.dateId, t.userCount, t.partyMemberCount,t.residentCount
FROM
(
SELECT DISTINCT
date_id dateId, reg_total userCount, partymember_total partyMemberCount, (reg_total - partymember_total) residentCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_reg_user_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_reg_user_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
</select>
<select id="groupList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.orgId, t.dateId, t.groupCount
FROM
(
SELECT DISTINCT
date_id dateId, group_total groupCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_group_total_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_group_total_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
</select>
<select id="topicList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.orgId, t.dateId, t.topicCount
FROM
(
SELECT DISTINCT
date_id dateId, topic_total topicCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_topic_total_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_topic_total_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
</select>
<select id="issueList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.orgId, t.dateId, t.issueCount
FROM
(
SELECT DISTINCT
date_id dateId, issue_total issueCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_issue_agency_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_issue_grid_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
</select>
<select id="projectList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.orgId, t.dateId, t.projectCount, t.closedProjectCount
FROM
(
SELECT DISTINCT
date_id dateId, project_total projectCount, closed_total closedProjectCount
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
FROM fact_agency_project_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
, grid_id orgId
FROM fact_grid_project_daily
WHERE del_flag = '0'
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='sourceType != "" and sourceType == "start" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
ORDER BY date_id ASC
</if>
<if test='sourceType != "" and sourceType == "end" and endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
ORDER BY date_id DESC
</if>
<choose>
<when test='dataType == "agency"'>, agency_id ASC</when>
<otherwise>, grid_id ASC</otherwise>
</choose>
) t
GROUP BY t.orgId
</select>
</mapper>

41
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml

@ -15,4 +15,45 @@
</foreach>
</select>
<select id="patrolList" resultType="com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO$CustomerDataManage">
SELECT
t.dateId, t.orgId, t.staffId, sum(t.patrolCount),SUM(t.patrolDurationInteger)
FROM (
SELECT
date_id dateId, grid_id, staff_id staffId, patrol_total patrolCount, total_time patrolDurationInteger
<choose>
<when test='dataType == "agency"'>
, agency_id orgId
</when>
<otherwise>
, grid_id orgId
</otherwise>
</choose>
FROM
stats_staff_patrol_record_daily
WHERE del_flag = '0'
AND patrol_total > 0
<choose>
<when test='dataType == "agency"'>
<foreach collection="idList" item="id" open="AND agency_id IN (" separator="," close=")">
#{id}
</foreach>
</when>
<otherwise>
<foreach collection="idList" item="id" open="AND grid_id IN (" separator="," close=")">
#{id}
</foreach>
</otherwise>
</choose>
<if test='type != "" and type == "Interval" and startTime != "" and startTime != null '>
AND date_id <![CDATA[>=]]> #{startTime}
</if>
<if test='endTime != "" and endTime != null '>
AND date_id <![CDATA[<=]]> #{endTime}
</if>
) t
GROUP BY t.grid_id, t.staffId
</select>
</mapper>

7
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml

@ -175,4 +175,11 @@
</if>
</select>
<!-- 根据组织ID查询组织名 -->
<select id="selectAgencyNameByAgencyId" resultType="java.lang.String">
SELECT AGENCY_NAME FROM screen_customer_agency
WHERE AGENCY_ID = #{agencyId}
AND DEL_FLAG = 0
</select>
</mapper>

7
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java

@ -21,6 +21,7 @@ import com.epmet.commons.tools.utils.*;
import com.epmet.constant.ActConstant;
import com.epmet.constant.ActMessageConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.UserMessageFormDTO;
@ -32,7 +33,6 @@ import com.epmet.entity.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.*;
import com.epmet.utils.ModuleConstant;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@ -694,6 +694,11 @@ public class WorkActServiceImpl implements WorkActService {
userMessageFormDTO.setMessageContent(String.format(ActMessageConstant.ACT_CANCELED,
actInfoDTO.getTitle(),
formDTO.getCancelReason()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.HEART_CANCEL_ACT);
userMessageFormDTO.setTargetId(formDTO.getActId());
userMessageFormDTOS.add(userMessageFormDTO);
//2020.10.26 添加发送微信订阅消息功能 sun
WxSubscribeMessageFormDTO dto = new WxSubscribeMessageFormDTO();

6
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java

@ -11,6 +11,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ActConstant;
import com.epmet.constant.ActMessageConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dao.ActInfoDao;
import com.epmet.dao.ActUserLogDao;
import com.epmet.dao.ActUserRelationDao;
@ -639,6 +640,11 @@ public class WorkActUserServiceImpl implements WorkActUserService {
} else if (ActConstant.ACT_USER_STATUS_REFUSED.equals(type)) {
userMessageFormDTO.setMessageContent(String.format(ActMessageConstant.AUDIT_REFUSED, actInfo.getTitle(), actUserRelationEntity.getFailureReason()));
}
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.HEART_SIGIN_UP_RES);
userMessageFormDTO.setTargetId(actUserRelationEntity.getId());
Result result = epmetMessageOpenFeignClient.saveUserMessage(userMessageFormDTO);
if (result.success()) {
logger.info("审核成功,已成功发送站内信");

170
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java

@ -16,9 +16,179 @@ public interface UserMessageTypeConstant {
/**
* 居民端提交热心居民申请通知网格长
* targetId:resi_warmhearted_apply.id
*/
String WARMHEARTED_APPLY="warmhearted_apply";
/**
* 工作端审核完热心居民申请通知居民结果
* targetId:resi_warmhearted_apply.id
*/
String WARMHEARTED_APPLY_RES="warmhearted_apply_res";
/**
* 居民端认证党员时补充信息填写完成提交后通知网格长人工审核党员申请
* targetId:partymember_info.id
*/
String PARTY_CERTIFY_APPLY="party_certify_apply";
/**
* 工作端审核居民是否是党员通知居民
* targetId:partymember_info.id
*/
String PARTY_CERTIFY_APPLY_RES="party_certify_apply_res";
/**
* 居民端用户申请创建小组提交小组信息后通知网格长
* targetId:resi_group.id
*/
String GROUP_CREATE_GROUP_APPLY="group_create_group_apply";
/**
* 工作端审核建群申请后通知建组人结果
* targetId:resi_group.id
*/
String GROUP_CREATE_GROUP_RES="group_create_group_res";
/**
* 居民单申请入群通知组长审核
* targetId:resi_group.id
*/
String GROUP_APPLY_ENTER="group_apply_enter";
/**
* 组长审核完入群申请通知居民结果
* targetId:resi_group.id
*/
String GROUP_APPLY_ENTER_RES="group_apply_enter_res";
/**
* 组员通过连接自动入组的通知组长
* targetId:resi_group.id
*/
String GROUP_ENTER_GROUP_BY_LINK_RES="group_enter_group_by_link_res";
/**
* 组内发布活动
* targetId:group_act_info.id
*/
String GROUP_ACT_PUBLISH="group_act_publish";
/**
* 组内发布活动,进行编辑
* targetId:group_act_info.id
*/
String GROUP_ACT_CHANGE="group_act_change";
/**
* 组内活动取消
* targetId:group_act_info.id
*/
String GROUP_ACT_CANCEL="group_act_cancel";
/**
* 工作端转交组长通知原组长
* targetId:resi_group.id
*/
String GROUP_ORIGINAL_LEADER_DOWN="group_original_leader_down";
/**
* 新任组长告诉他这个好消息
* targetId:resi_group.id
*/
String GROUP_NEW_LEADER_UP="group_new_leader_up";
/**
* 禁言组员
* targetId:resi_group.id
*/
String GROUP_SLIENT_MEMBER="group_slient_member";
/**
* 发布小组内通知
* targetId:notice.id
*/
String GROUP_MESSAGE_PUBLISH="group_message_publish";
/**
* 发布小组内通知
* targetId:notice.id
*/
String GROUP_MESSAGE_EDIT="group_message_edit";
/**
* 关闭议题时已解决或者无需解决通知议题发起人话题创建人
* targetId:issue.id
*/
String ISSUE_CLOSE_ISSUE="issue_close_issue";
/**
* 议题转项目时给话题创建人议题发起人勾选的工作人员分别推送消息
* targetId:居民端用户issue.id工作端project.id
*/
String ISSUE_SHIFT_PROJECT="issue_shift_project";
/**
* 项目流转
* targetId:project.id
*/
String PROJECT_TRANSFER="project_transfer";
/**
* 项目结案
* targetId:project.id
*/
String PROJECT_CLOSED="project_closed";
/**
* 项目退回
* targetId:project.id
*/
String PROJECT_RETURN="project_return";
/**
* 项目立项
* targetId:project.id
*/
String PROJECT_APPROVAL="project_approval";
/**
* 事件立项
* targetId:project.id
*/
String PROJECT_FROM_RESI_EVENT="project_from_resi_event";
/**
* 项目滞留超期提醒
*/
String PROJECT_REMIND="project_remind";
/**
* 发布党建声音
* targetId:article.DRAFT_ID
*/
String PARTY_VOICE_PUBLISH="party_voice_publish";
/**
* 爱心互助通过审核的用户发送消息
* targetId:act_info.id
*/
String HEART_CANCEL_ACT="heart_cancel_act";
/**
* 活动报名结果通知居民
* act_user_relation.id
*/
String HEART_SIGIN_UP_RES="heart_sigin_up_res";
/**
* 居民端提交徽章认证申请
* user_badge_certificate_record.id
*/
String BADGE_AUTH_APPLY="badge_auth_apply";
}

8
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java

@ -109,4 +109,12 @@ public class UserMessageDTO implements Serializable {
*/
private Date updatedTime;
/**
* 消息分类:info-上传下达消息 详见UserMessageTypeConstant
*/
private String messageType;
/**
* 消息对应的业务id,比如message_type=info时此列存储的是消息id,可跳转到消息详情
*/
private String targetId;
}

43
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/ReceiverGroupCommonFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Set;
/**
* @Description 通用的ReceiverGroup 入参dto
* @author wxz
* @date 2021.09.11 22:03:02
*/
@Data
public class ReceiverGroupCommonFormDTO {
public interface UpdateGroup {}
public interface RemoveMember {}
public interface AddMember {}
public interface DeleteGroup {}
/** 群id */
@NotBlank(message = "群ID不能为空", groups = { UpdateGroup.class, AddMember.class, RemoveMember.class, DeleteGroup.class })
private String receiverGroupId;
/** 群名字 */
@NotBlank(message = "群名字不能为空", groups = { UpdateGroup.class })
private String name;
/** 成员id */
@NotBlank(message = "组成员ID不能为空", groups = { RemoveMember.class })
private String staffId;
/** 成员ID列表 */
private List<String> staffIdList;
/**
* 按架构选择的组织或者网格或者部门的集合
*/
private Set<OrgCommonDTO> orgList;
}

11
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java

@ -1,8 +1,6 @@
package com.epmet.dto.form;
import lombok.Builder;
import lombok.Data;
import net.bytebuddy.implementation.bind.annotation.Default;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ -61,4 +59,13 @@ public class UserMessageFormDTO implements Serializable {
* 调用者 分内部调用和外部调用内部调用值为空外部默认为外挂-站内信
*/
private String referer;
/**
* 消息分类:info-上传下达消息 详见UserMessageTypeConstant
*/
private String messageType;
/**
* 消息对应的业务id,比如message_type=info时此列存储的是消息id,可跳转到消息详情
*/
private String targetId;
}

16
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReceiverGroupCommonResultDTO.java

@ -0,0 +1,16 @@
package com.epmet.dto.result;
import lombok.Data;
/**
* @Description 群通用Result dto
* @author wxz
* @date 2021.09.11 22:08:36
*/
@Data
public class ReceiverGroupCommonResultDTO {
private String receiverGroupId;
private String name;
}

12
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/StaffMessageResultDTO.java

@ -35,5 +35,17 @@ public class StaffMessageResultDTO implements Serializable {
* 通知时间
*/
private Long createdTime;
/**
* 消息分类:info-上传下达消息 详见UserMessageTypeConstant
*/
private String messageType;
/**
* 消息对应的业务id,比如message_type=info时此列存储的是消息id,可跳转到消息详情
*/
private String targetId;
}

79
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java

@ -33,6 +33,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Set;
/**
* 消息主表
@ -139,10 +143,83 @@ public class InfoController {
return new Result<AddReceiverGroupResultDTO>().ok(infoService.addReceiverGroup(formDTO));
}
/**
* @description 发送消息更新群信息
*
* @param form
* @param tokenDto
* @return
* @author wxz
* @date 2021.09.11 22:05:08
*/
@PostMapping("/receivergroup/update")
public Result updateInfoReceiverGroup(@RequestBody ReceiverGroupCommonFormDTO form, @LoginUser TokenDto tokenDto) {
ValidatorUtils.validateEntity(form, ReceiverGroupCommonFormDTO.UpdateGroup.class);
String userId = tokenDto.getUserId();
String receiverGroupId = form.getReceiverGroupId();
String name = form.getName();
infoService.updateReceiverGroup(userId, receiverGroupId, name);
return new Result();
}
/**
* @description 发送消息移除群成员
*
* @param form
* @param tokenDto
* @return
* @author wxz
* @date 2021.09.11 22:26:44
*/
@PostMapping("/receivergroup/member/remove")
public Result removeInfoGroupMember(@RequestBody ReceiverGroupCommonFormDTO form, @LoginUser TokenDto tokenDto) {
ValidatorUtils.validateEntity(form, ReceiverGroupCommonFormDTO.RemoveMember.class);
String userId = tokenDto.getUserId();
String receiverGroupId = form.getReceiverGroupId();
String staffId = form.getStaffId();
infoService.removeGroupMember(receiverGroupId, staffId, userId);
return new Result();
}
/**
* @description 发送消息添加新成员
*
* @param form
* @param tokenDto
* @return
* @author wxz
* @date 2021.09.13 13:54:02
*/
@PostMapping("/receivergroup/member/add")
public Result addInfoGroupMember(@RequestBody ReceiverGroupCommonFormDTO form, @LoginUser TokenDto tokenDto) {
ValidatorUtils.validateEntity(form, ReceiverGroupCommonFormDTO.AddMember.class);
String userId = tokenDto.getUserId();
String receiverGroupId = form.getReceiverGroupId();
Set<OrgCommonDTO> orgList = form.getOrgList();
List<String> staffIdList = form.getStaffIdList();
infoService.addInfoGroupMember(receiverGroupId, userId, orgList, staffIdList);
return new Result();
}
/**
* @description 发送消息删除群组
*
* @param form
* @param tokenDto
* @return
* @author wxz
* @date 2021.09.11 22:35:21
*/
@PostMapping("/receivergroup/remove")
public Result deleteInfoGroup(@RequestBody ReceiverGroupCommonFormDTO form, @LoginUser TokenDto tokenDto) {
ValidatorUtils.validateEntity(form, ReceiverGroupCommonFormDTO.DeleteGroup.class);
String operatorId = tokenDto.getUserId();
String receiverGroupId = form.getReceiverGroupId();
infoService.deleteInfoGroup(receiverGroupId, operatorId);
return new Result();
}

53
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java

@ -20,10 +20,14 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AddReceiverGroupResultDTO;
import com.epmet.dto.result.ReceiverGroupCommonResultDTO;
import com.epmet.dto.result.ReplyInfoResultDTO;
import com.epmet.dto.result.SendInfoResultDTO;
import com.epmet.entity.InfoEntity;
import java.util.List;
import java.util.Set;
/**
* 消息主表
*
@ -81,4 +85,53 @@ public interface InfoService extends BaseService<InfoEntity> {
* @date 2021/8/20 9:58 上午
*/
AddReceiverGroupResultDTO addReceiverGroup(AddReceiverGroupFormDTO formDTO);
/**
* @description 更新群信息
*
* @param operatorId
* @param receiverGroupId
* @param name
* @return
* @author wxz
* @date 2021.09.11 22:07:25
*/
void updateReceiverGroup(String operatorId, String receiverGroupId, String name);
/**
* @description 移除群成员
*
* @param receiverGroupId
*
* @param staffId
* @param operatorId
* @return
* @author wxz
* @date 2021.09.11 22:27:16
*/
void removeGroupMember(String receiverGroupId, String staffId, String operatorId);
/**
* @description 删除群
*
* @param receiverGroupId
* @param operatorId
* @return
* @author wxz
* @date 2021.09.11 22:36:27
*/
void deleteInfoGroup(String receiverGroupId, String operatorId);
/**
* @description 发送消息添加新成员
*
* @param receiverGroupId
* @param operatorId
* @param orgList
* @param staffIdList
* @return
* @author wxz
* @date 2021.09.13 13:54:45
*/
void addInfoGroupMember(String receiverGroupId, String operatorId, Set<OrgCommonDTO> orgList, List<String> staffIdList);
}

100
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java

@ -17,6 +17,8 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.NumConstant;
@ -31,6 +33,7 @@ import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dao.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AddReceiverGroupResultDTO;
import com.epmet.dto.result.ReceiverGroupCommonResultDTO;
import com.epmet.dto.result.ReplyInfoResultDTO;
import com.epmet.dto.result.SendInfoResultDTO;
import com.epmet.entity.*;
@ -44,9 +47,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
* 消息主表
@ -428,20 +430,100 @@ public class InfoServiceImpl extends BaseServiceImpl<InfoDao, InfoEntity> implem
}
@Override
public void updateReceiverGroup(String operatorId, String receiverGroupId, String name) {
InfoReceiverGroupEntity groupEntity = baseValidate(receiverGroupId, operatorId);
// 检查重名
if (infoReceiverGroupDao.selectCountName(name.trim(),groupEntity.getCustomerId(),operatorId) > 1) {
throw new RenException(EpmetErrorCode.INFO_GROUP_NAME_EXISTS.getCode(), EpmetErrorCode.INFO_GROUP_NAME_EXISTS.getMsg());
}
LambdaUpdateWrapper<InfoReceiverGroupEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(InfoReceiverGroupEntity::getId, receiverGroupId);
updateWrapper.set(InfoReceiverGroupEntity::getName, name);
infoReceiverGroupDao.update(null, updateWrapper);
}
@Override
public void removeGroupMember(String receiverGroupId, String staffId, String operatorId) {
baseValidate(receiverGroupId, operatorId);
LambdaQueryWrapper<InfoGroupReceiversEntity> query = new LambdaQueryWrapper<>();
query.eq(InfoGroupReceiversEntity::getStaffId, staffId);
query.eq(InfoGroupReceiversEntity::getInfoReceiverGroupId, receiverGroupId);
infoGroupReceiversDao.delete(query);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteInfoGroup(String receiverGroupId, String operatorId) {
baseValidate(receiverGroupId, operatorId);
// 1.先删除群
infoReceiverGroupDao.deleteById(receiverGroupId);
// 2.再删除成员
LambdaQueryWrapper<InfoGroupReceiversEntity> query = new LambdaQueryWrapper();
query.eq(InfoGroupReceiversEntity::getInfoReceiverGroupId, receiverGroupId);
infoGroupReceiversDao.delete(query);
}
@Override
@Transactional
public void addInfoGroupMember(String receiverGroupId, String operatorId, Set<OrgCommonDTO> orgList, List<String> staffIdList) {
InfoReceiverGroupEntity groupInfo = baseValidate(receiverGroupId, operatorId);
// 1、人员列表和组织列表不能同时为空
if (CollectionUtils.isEmpty(staffIdList) && CollectionUtils.isEmpty(orgList)) {
throw new RenException(EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getCode(), EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getMsg());
}
// 2、如果没有单选人,选择的组织内也没有人,那么给出提示
Set<String> orgStaffIds = queryOrgStaffIds(groupInfo.getCustomerId(), orgList);
if (CollectionUtils.isEmpty(staffIdList) && CollectionUtils.isEmpty(orgStaffIds)) {
throw new RenException(EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getCode(), EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getMsg());
}
// 3、用户合并,去重,如果当前用户也在所选成员中,去掉当前用户,不给自己发消息
Set<String> members = new LinkedHashSet<>(CollectionUtils.size(staffIdList) + orgStaffIds.size());
members.addAll(staffIdList);
members.addAll(orgStaffIds);
if (CollectionUtils.isNotEmpty(members) && members.contains(operatorId)) {
members.remove(operatorId);
}
if (CollectionUtils.isEmpty(members)) {
throw new RenException(EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getCode(), EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getMsg());
}
// 4、现有成员去重
Set<String> existingStaffIds = infoGroupReceiversDao.selectStaffIds(new HashSet<>(Arrays.asList(receiverGroupId)));
members = members.stream().filter(mId -> !existingStaffIds.contains(mId)).collect(Collectors.toSet());
// 5、插入新成员
members.forEach(memStaffId->{
InfoGroupReceiversEntity memberEntity=new InfoGroupReceiversEntity();
memberEntity.setCustomerId(groupInfo.getCustomerId());
memberEntity.setInfoReceiverGroupId(receiverGroupId);
memberEntity.setStaffId(memStaffId);
infoGroupReceiversDao.insert(memberEntity);
});
}
/**
* @description 基础检查并且返回组信息
*
* @param receiverGroupId
* @param operatorId
* @return
* @author wxz
* @date 2021.09.13 13:48:26
*/
private InfoReceiverGroupEntity baseValidate(String receiverGroupId, String operatorId) {
InfoReceiverGroupEntity groupEntity = infoReceiverGroupDao.selectById(receiverGroupId);
if (groupEntity == null) {
throw new RenException(EpmetErrorCode.INFO_GROUP_NOT_EXISTS.getCode(), "群不存在");
}
if (!groupEntity.getCreateStaffId().equals(operatorId)) {
// 不是拥有者 ,不允许删除
throw new RenException(EpmetErrorCode.INFO_GROUP_OPE_PERMISSION_REQUIRED.getCode(), "只有群所有者可以进行此操作");
}
return groupEntity;
}
}

2
epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml

@ -139,7 +139,7 @@
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<springProfile name="dev,test,local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>

8
epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml

@ -35,7 +35,9 @@
customer_id,
created_time,
grid_id,
message_content
message_content,
message_type,
target_id
FROM
user_message
WHERE
@ -66,7 +68,9 @@
title,
message_content as messageContent,
read_flag as readFlag,
unix_timestamp(CREATED_TIME) as createdTime
unix_timestamp(CREATED_TIME) as createdTime,
message_type AS messageType,
target_id AS targetId
from
user_message
where

5
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -103,4 +104,6 @@ public class BizPointUserTotalDetailDTO implements Serializable {
*/
private Date updatedTime;
private String rank;
}

5
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java

@ -21,14 +21,13 @@ public class GroupPointFormDTO implements Serializable {
public interface GridScopeRank {}
public interface CustomerScopeRank {}
public interface MyGroupRank {}
public interface PointRank extends CustomerClientShowGroup {}
@NotBlank(message = "小组Id不能为空", groups = {GroupPoint.class, GridRank.class})
private String groupId;
@NotBlank(message = "网格Id不能为空", groups = {GridRank.class, GridScopeRank.class, MyGroupRank.class})
@NotBlank(message = "网格Id不能为空", groups = {GridRank.class, GridScopeRank.class, MyGroupRank.class, PointRank.class})
private String gridId;
@NotBlank(message = "客户Id不能为空", groups = {CustomerScopeRank.class})
private String customerId;
@NotBlank(message = "用户ID不能为空", groups = {MyGroupRank.class})
private String userId;
/** 页码 */
private Integer pageNo = 1;

21
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GridPointRankResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/9/10 14:11
*/
@NoArgsConstructor
@Data
public class GridPointRankResultDTO implements Serializable {
private static final long serialVersionUID = 3288606889536923166L;
private String gridName;
private String agencyRank;
private String customerRank;
}

3
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java

@ -53,4 +53,7 @@ public class GroupPointRankingResultDTO implements Serializable {
/** 客户下总排名 */
private Integer customerRanking;
/** 我是否是组长 */
private String groupLeaderFlag;
}

21
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointRankResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Description
* @Author zhaoqifeng
* @Date 2021/9/10 13:44
*/
@NoArgsConstructor
@Data
public class MyPointRankResultDTO implements Serializable {
private static final long serialVersionUID = -2438231097029179782L;
private String headPhoto;
private String gridRank;
private String customerRank;
}

16
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java

@ -127,14 +127,14 @@ public class GroupPointController {
* @date 2021.09.07 13:35:45
*/
@PostMapping("grouppointranking/gridscope")
public Result<PageData<GroupPointRankingResultDTO>> listGroupPointRandingInGridScope(@RequestBody GroupPointFormDTO formDTO) {
public Result<List<GroupPointRankingResultDTO>> listGroupPointRandingInGridScope(@RequestBody GroupPointFormDTO formDTO, @LoginUser TokenDto loginUser) {
ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.GridScopeRank.class);
String gridId = formDTO.getGridId();
Integer pageNo = formDTO.getPageNo();
Integer pageSize = formDTO.getPageSize();
PageData<GroupPointRankingResultDTO> page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.GRID, gridId,pageNo, pageSize);
return new Result<PageData<GroupPointRankingResultDTO>>().ok(page);
List<GroupPointRankingResultDTO> page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.GRID, gridId,pageNo, pageSize, loginUser.getUserId());
return new Result<List<GroupPointRankingResultDTO>>().ok(page);
}
/**
@ -146,14 +146,14 @@ public class GroupPointController {
* @date 2021.09.08 09:18:37
*/
@PostMapping("grouppointranking/customerscope")
public Result<PageData<GroupPointRankingResultDTO>> listGroupPointRandingInCustomerScope(@RequestBody GroupPointFormDTO formDTO) {
public Result<List<GroupPointRankingResultDTO>> listGroupPointRandingInCustomerScope(@RequestBody GroupPointFormDTO formDTO, @LoginUser TokenDto loginUser) {
ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.CustomerScopeRank.class);
String customerId = formDTO.getCustomerId();
Integer pageNo = formDTO.getPageNo();
Integer pageSize = formDTO.getPageSize();
PageData<GroupPointRankingResultDTO> page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.CUSTOMER, customerId, pageNo, pageSize);
return new Result<PageData<GroupPointRankingResultDTO>>().ok(page);
List<GroupPointRankingResultDTO> page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.CUSTOMER, customerId, pageNo, pageSize, loginUser.getUserId());
return new Result<List<GroupPointRankingResultDTO>>().ok(page);
}
/**
@ -165,9 +165,9 @@ public class GroupPointController {
* @date 2021.09.08 13:31:09
*/
@PostMapping("grouppointranking/mygroups")
public Result<List<GroupPointRankingResultDTO>> listMyGroupPointRanding(@RequestBody GroupPointFormDTO formDTO) {
public Result<List<GroupPointRankingResultDTO>> listMyGroupPointRanding(@LoginUser TokenDto loginInfo, @RequestBody GroupPointFormDTO formDTO) {
String userId = loginInfo.getUserId();
ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.MyGroupRank.class);
String userId = formDTO.getUserId();
String gridId = formDTO.getGridId();
List<GroupPointRankingResultDTO> list = bizPointTotalDetailService.listMyGroupPointRanding(userId, gridId);
return new Result<List<GroupPointRankingResultDTO>>().ok(list);

30
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java

@ -190,4 +190,34 @@ public class ResiPointController {
ValidatorUtils.validateEntity(formDTO);
return new Result<List<MyPointTaskResultDTO>>().ok(pointActionLogService.queryMyPointTaskList(formDTO));
}
/**
* @Description 个人当月积分在网格和客户中的排名
* @Param tokenDto
* @Param formDTO
* @Return {@link Result< MyPointTaskResultDTO>}
* @Author zhaoqifeng
* @Date 2021/9/10 14:13
*/
@PostMapping("mypointrank")
public Result<MyPointRankResultDTO> myPointRank(@LoginUser TokenDto tokenDto, @RequestBody GroupPointFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.PointRank.class);
return new Result<MyPointRankResultDTO>().ok(userPointStatisticalDailyService.myPointRank(tokenDto, formDTO));
}
/**
* @Description 网格当月积分在组织和客户内排名
* @Param tokenDto
* @Param formDTO
* @Return {@link Result<GridPointRankResultDTO>}
* @Author zhaoqifeng
* @Date 2021/9/10 14:13
*/
@PostMapping("gridpointrank")
public Result<GridPointRankResultDTO> gridPointRank(@LoginUser TokenDto tokenDto, @RequestBody GroupPointFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.PointRank.class);
return new Result<GridPointRankResultDTO>().ok(userPointStatisticalDailyService.gridPointRank(tokenDto, formDTO));
}
}

6
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointStatisticalDailyDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.BizPointUserTotalDetailDTO;
import com.epmet.dto.form.ResiAroundPartyPointRankFormDTO;
import com.epmet.dto.result.AllPartyResultDTO;
import com.epmet.dto.result.ResiAroundPartyPointRankResultDTO;
@ -85,4 +86,9 @@ public interface UserPointStatisticalDailyDao extends BaseDao<UserPointStatistic
**/
List<ResiAroundPartyPointRankResultDTO> selectListGridPartyRankByMonth(ResiAroundPartyPointRankFormDTO formDTO);
List<AllPartyResultDTO> selectListGridPartyNewRankByMonth(ResiAroundPartyPointRankFormDTO formDTO);
List<BizPointUserTotalDetailDTO> selectUserPointByMonth(@Param("customerId") String customerId, @Param("agencyId") String agencyId,
@Param("gridId") String gridId);
List<BizPointUserTotalDetailDTO> selectGridPointByMonth(@Param("customerId") String customerId, @Param("agencyId") String agencyId);
}

2
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java

@ -148,7 +148,7 @@ public interface BizPointTotalDetailService extends BaseService<BizPointTotalDet
* @author wxz
* @date 2021.09.07 14:18:08
*/
PageData<GroupPointRankingResultDTO> listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize);
List<GroupPointRankingResultDTO> listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize, String currentUserId);
/**
* @description 小组排名- 列出我所在的小组的积分排名

26
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointStatisticalDailyService.java

@ -19,13 +19,13 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.UserPointStatisticalDailyDTO;
import com.epmet.dto.form.AllPartyFormDTO;
import com.epmet.dto.form.GroupPointFormDTO;
import com.epmet.dto.form.ResiAroundPartyPointRankFormDTO;
import com.epmet.dto.form.ResiPointRankFormDTO;
import com.epmet.dto.result.AllPartyResultDTO;
import com.epmet.dto.result.ResiAroundPartyPointRankResultDTO;
import com.epmet.dto.result.ResiPointRankListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.UserPointStatisticalDailyEntity;
import java.util.List;
@ -135,4 +135,24 @@ public interface UserPointStatisticalDailyService extends BaseService<UserPointS
* @date 2021/9/6 3:30 下午
*/
List<AllPartyResultDTO> allParty(AllPartyFormDTO formDTO);
/**
* @Description 个人当月积分在网格和客户中的排名
* @Param tokenDto
* @Param formDTO
* @Return {@link MyPointRankResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 14:18
*/
MyPointRankResultDTO myPointRank(TokenDto tokenDto, GroupPointFormDTO formDTO);
/**
* @Description 网格当月积分在组织和客户内排名
* @Param tokenDto
* @Param formDTO
* @Return {@link GridPointRankResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 14:18
*/
GridPointRankResultDTO gridPointRank(TokenDto tokenDto, GroupPointFormDTO formDTO);
}

19
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java

@ -263,7 +263,9 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
}
@Override
public PageData<GroupPointRankingResultDTO> listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize) {
public List<GroupPointRankingResultDTO> listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId,
Integer pageNo, Integer pageSize,
String currentUserId) {
// 1.查询有积分的小组得分排名
PageInfo<BizPointTotalDetailEntity> entityPageInfo = PageHelper.startPage(pageNo, pageSize).doSelectPageInfo(() -> {
@ -283,7 +285,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
List<String> groupIds = groupList.stream().map(g -> g.getObjectId()).collect(Collectors.toList());
// 2.将列表填充基本信息并且转换为dto
List<GroupPointRankingResultDTO> rankingInfoDTOs = convertGroupRankingInfoEntity2DTOs(groupIds, groupList);
List<GroupPointRankingResultDTO> rankingInfoDTOs = convertGroupRankingInfoEntity2DTOs(groupIds, groupList, currentUserId);
Page page = new Page(pageNo, pageSize);
@ -304,7 +306,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
// 不足0的从0开始
startRow = Math.max(startRow, 0);
List<GroupPointRankingResultDTO> gap;
gap = fillGroupPageGap(existingGroupIds, searchScopeType, searchScopeId, startRow, pageSize - groupList.size());
gap = fillGroupPageGap(existingGroupIds, searchScopeType, searchScopeId, startRow, pageSize - groupList.size(), currentUserId);
rankingInfoDTOs.addAll(gap);
}
@ -324,8 +326,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
g.setRanking(String.valueOf(ranking));
prevPoint = point;
}
PageData<GroupPointRankingResultDTO> pageData = new PageData<>(rankingInfoDTOs, entityPageInfo.getTotal());
return pageData;
return rankingInfoDTOs;
}
/**
@ -337,7 +338,8 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
* @author wxz
* @date 2021.09.07 16:30:28
*/
private List<GroupPointRankingResultDTO> fillGroupPageGap(List<String> existingGroupIds, SearchScopeTypeEnum searchScopeType, String searchScopeObjectId, Integer startRow, Integer rowCount) {
private List<GroupPointRankingResultDTO> fillGroupPageGap(List<String> existingGroupIds, SearchScopeTypeEnum searchScopeType,
String searchScopeObjectId, Integer startRow, Integer rowCount, String currentUserId) {
GroupFormDTO form = new GroupFormDTO();
form.setExcludeGroupIds(existingGroupIds);
form.setOrder(GroupFormDTO.OrderTypeEnum.DESC);
@ -360,6 +362,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
dto.setGroupName(g.getGroupName());
dto.setGroupId(g.getGroupId());
dto.setGridId(g.getGridId());
dto.setGroupLeaderFlag(g.getLeaderId().equals(currentUserId) ? "leader" : "member");
return dto;
}).collect(Collectors.toList());
}
@ -372,7 +375,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
* @author wxz
* @date 2021.09.07 15:52:17
*/
private List<GroupPointRankingResultDTO> convertGroupRankingInfoEntity2DTOs(List<String> groupIds, List<BizPointTotalDetailEntity> groupList) {
private List<GroupPointRankingResultDTO> convertGroupRankingInfoEntity2DTOs(List<String> groupIds, List<BizPointTotalDetailEntity> groupList, String currentUserId) {
if (CollectionUtils.isEmpty(groupIds)) {
return new ArrayList<>();
}
@ -395,6 +398,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
dto.setPoint(g.getTotalPoint().toString());
dto.setGroupHeadPhoto(groupInfo.getGroupHeadPhoto());
dto.setGridId(g.getGridId());
dto.setGroupLeaderFlag(groupInfo.getLeaderId().equals(currentUserId) ? "leader" : "member");
return dto;
}).collect(Collectors.toList());
return rankingDTOs;
@ -484,6 +488,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl<BizPointTota
dto.setPoint(point.toString());
dto.setGridRanking(gridRanking);
dto.setCustomerRanking(customerRanking);
dto.setGroupLeaderFlag(g.getGroupLeaderFlag());
return dto;
}).collect(Collectors.toList());
return groupDtoList;

144
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointStatisticalDailyServiceImpl.java

@ -25,11 +25,14 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
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.Result;
import com.epmet.dao.UserPointStatisticalDailyDao;
import com.epmet.dto.BizPointUserTotalDetailDTO;
import com.epmet.dto.UserPointStatisticalDailyDTO;
import com.epmet.dto.form.AllPartyFormDTO;
import com.epmet.dto.form.GroupPointFormDTO;
import com.epmet.dto.form.ResiAroundPartyPointRankFormDTO;
import com.epmet.dto.form.ResiPointRankFormDTO;
import com.epmet.dto.result.*;
@ -43,13 +46,14 @@ import com.epmet.utils.DimIdGenerator;
import com.epmet.utils.ModuleConstant;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
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.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@ -326,6 +330,64 @@ public class UserPointStatisticalDailyServiceImpl extends BaseServiceImpl<UserPo
return result;
}
/**
* @param tokenDto
* @param formDTO
* @Description 个人当月积分在网格和客户中的排名
* @Param tokenDto
* @Param formDTO
* @Return {@link MyPointRankResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 14:18
*/
@Override
public MyPointRankResultDTO myPointRank(TokenDto tokenDto, GroupPointFormDTO formDTO) {
List<String> userIds = new ArrayList<>();
userIds.add(tokenDto.getUserId());
//获取我的个人信息
Result<List<UserBaseInfoResultDTO>> myInfoResult = epmetUserOpenFeignClient.queryUserBaseInfo(userIds);
if(!myInfoResult.success()){
throw new RenException(myInfoResult.getCode(), myInfoResult.getMsg());
}
MyPointRankResultDTO result = new MyPointRankResultDTO();
result.setHeadPhoto(myInfoResult.getData().get(0).getHeadImgUrl());
//获取客户下用户积分
List<BizPointUserTotalDetailDTO> list = getUserPointList(tokenDto.getCustomerId(), null, null);
result.setCustomerRank(getRank(list, tokenDto.getUserId()));
//获取网格用户积分
List<BizPointUserTotalDetailDTO> gridRankList = getUserPointList(tokenDto.getCustomerId(), null, formDTO.getGridId());
result.setGridRank(getRank(gridRankList, tokenDto.getUserId()));
return result;
}
/**
* @param tokenDto
* @param formDTO
* @Description 网格当月积分在组织和客户内排名
* @Param tokenDto
* @Param formDTO
* @Return {@link GridPointRankResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 14:18
*/
@Override
public GridPointRankResultDTO gridPointRank(TokenDto tokenDto, GroupPointFormDTO formDTO) {
GridPointRankResultDTO result = new GridPointRankResultDTO();
//获取网格信息
Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(formDTO.getGridId());
if (!gridInfoResult.success()) {
throw new RenException(gridInfoResult.getCode());
}
result.setGridName(gridInfoResult.getData().getGridName());
String agencyId = gridInfoResult.getData().getParentAgencyId();
//获取客户下用户积分
List<BizPointUserTotalDetailDTO> list = getGridPointList(tokenDto.getCustomerId(), null);
result.setCustomerRank(getGridRank(list, formDTO.getGridId()));
List<BizPointUserTotalDetailDTO> agencyPointList = getGridPointList(tokenDto.getCustomerId(), agencyId);
result.setAgencyRank(getGridRank(agencyPointList, formDTO.getGridId()));
return result;
}
/**
* 获取认证通过的党员的 用户id
*
@ -372,4 +434,84 @@ public class UserPointStatisticalDailyServiceImpl extends BaseServiceImpl<UserPo
}
return rankResultDTOS;
}
/**
* @Description 获取客户下用户的当月积分
*
* @Param customerId
* @Return {@link List<BizPointUserTotalDetailDTO>}
* @Author zhaoqifeng
* @Date 2021/9/10 15:04
*/
private List<BizPointUserTotalDetailDTO> getUserPointList(String customerId, String agencyId, String gridId) {
return baseDao.selectUserPointByMonth(customerId, agencyId, gridId);
}
private List<BizPointUserTotalDetailDTO> getGridPointList(String customerId, String agencyId) {
return baseDao.selectGridPointByMonth(customerId, agencyId);
}
private Boolean havePoint(List<BizPointUserTotalDetailDTO> list, String userId) {
Map<String, Integer> map = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getUserId, BizPointUserTotalDetailDTO::getTotalPoint));
return null != map.get(userId);
}
private String getGridRank(List<BizPointUserTotalDetailDTO> list, String gridId) {
if (CollectionUtils.isEmpty(list)) {
return NumConstant.ONE_STR;
}
//如果当月网格没有积分变动,则积分为0
Map<String, Integer> map = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getGridId, BizPointUserTotalDetailDTO::getTotalPoint));
if (null == map.get(gridId)) {
BizPointUserTotalDetailDTO dto = new BizPointUserTotalDetailDTO();
dto.setGridId(gridId);
dto.setTotalPoint(NumConstant.ZERO);
list.add(dto);
}
//排序
list = list.stream().sorted(Comparator.comparing(BizPointUserTotalDetailDTO :: getTotalPoint).reversed()
.thenComparing(BizPointUserTotalDetailDTO::getGridId))
.collect(Collectors.toList());
AtomicInteger i = new AtomicInteger(1);
AtomicInteger point = new AtomicInteger(0);
list.forEach(item -> {
if (item.getTotalPoint().equals(point.get())) {
item.setRank(String.valueOf(i));
} else {
item.setRank(String.valueOf(i.getAndIncrement()));
}
point.set(item.getTotalPoint());
});
Map<String, String> rankMap = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getGridId, BizPointUserTotalDetailDTO::getRank));
return rankMap.get(gridId);
}
private String getRank(List<BizPointUserTotalDetailDTO> list, String userId) {
if (CollectionUtils.isEmpty(list)) {
return NumConstant.ONE_STR;
}
if (!havePoint(list, userId)) {
BizPointUserTotalDetailDTO dto = new BizPointUserTotalDetailDTO();
dto.setUserId(userId);
dto.setTotalPoint(NumConstant.ZERO);
list.add(dto);
}
//排序
list = list.stream().sorted(Comparator.comparing(BizPointUserTotalDetailDTO :: getTotalPoint).reversed()
.thenComparing(BizPointUserTotalDetailDTO::getUserId))
.collect(Collectors.toList());
AtomicInteger i = new AtomicInteger(1);
AtomicInteger point = new AtomicInteger(0);
list.forEach(item -> {
if (item.getTotalPoint().equals(point.get())) {
item.setRank(String.valueOf(i));
} else {
item.setRank(String.valueOf(i.getAndIncrement()));
}
point.set(item.getTotalPoint());
});
Map<String, String> map = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getUserId, BizPointUserTotalDetailDTO::getRank));
return map.get(userId);
}
}

50
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml

@ -227,4 +227,54 @@
ORDER BY P.point DESC
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="selectUserPointByMonth" resultType="com.epmet.dto.BizPointUserTotalDetailDTO">
SELECT
a.CUSTOMER_ID,
a.AGENCY_ID,
a.GRID_ID,
a.USER_ID,
SUM( POINT ) AS TOTAL_POINT
FROM
biz_point_user_total_detail a
INNER JOIN user_point_action_log b ON a.USER_ID = b.USER_ID
AND b.CUSTOMER_ID = #{customerId}
AND DATE_FORMAT( b.CREATED_TIME, '%Y%m' )= DATE_FORMAT( CURDATE( ), '%Y%m' )
AND b.DEL_FLAG = '0'
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
<if test="null != agencyId and agencyId != ''">
AND a.AGENCY_ID = #{agencyId}
</if>
<if test="null != gridId and gridId != ''">
AND a.GRID_ID = #{gridId}
</if>
GROUP BY a.CUSTOMER_ID,
a.AGENCY_ID,
a.GRID_ID,
a.USER_ID
</select>
<select id="selectGridPointByMonth" resultType="com.epmet.dto.BizPointUserTotalDetailDTO">
SELECT
a.CUSTOMER_ID,
a.AGENCY_ID,
a.GRID_ID,
SUM( POINT ) AS TOTAL_POINT
FROM
biz_point_user_total_detail a
INNER JOIN user_point_action_log b ON a.USER_ID = b.USER_ID
AND b.CUSTOMER_ID = #{customerId}
AND DATE_FORMAT( b.CREATED_TIME, '%Y%m' )= DATE_FORMAT( CURDATE( ), '%Y%m' )
AND b.DEL_FLAG = '0'
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
<if test="null != agencyId and agencyId != ''">
AND a.AGENCY_ID = #{agencyId}
</if>
GROUP BY a.CUSTOMER_ID,
a.AGENCY_ID,
a.GRID_ID
</select>
</mapper>

21
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -24,6 +24,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IssueConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dao.IssueDao;
import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao;
@ -755,6 +756,11 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
msgDTO.setMessageContent(messageContent);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
msgDTO.setUserId(topicDTO.getCreatedBy());
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.ISSUE_CLOSE_ISSUE);
msgDTO.setTargetId(entity.getId());
msgList.add(msgDTO);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!topicDTO.getCreatedBy().equals(entity.getCreatedBy())) {
@ -1067,11 +1073,21 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
msgDTO.setMessageContent(topicIssueMessage);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
msgDTO.setUserId(formDTO.getTopicDTO().getCreatedBy());
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.ISSUE_SHIFT_PROJECT);
msgDTO.setTargetId(entity.getId());
msgList.add(msgDTO);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!formDTO.getTopicDTO().getCreatedBy().equals(entity.getCreatedBy())) {
UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO, UserMessageFormDTO.class);
msgIssue.setUserId(entity.getCreatedBy());
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.ISSUE_SHIFT_PROJECT);
msgDTO.setTargetId(entity.getId());
msgList.add(msgIssue);
}
//2:创建项目工作人员消息对象
@ -1088,6 +1104,11 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
msg.setMessageContent(projectStaffMessage);
msg.setReadFlag(ReadFlagConstant.UN_READ);
msg.setUserId(staff.getStaffId());
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.ISSUE_SHIFT_PROJECT);
msgDTO.setTargetId(issueProjectResultDTO.getProjectId());
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}

18
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GetAgencyListFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/9/13 3:20 下午
* @DESC
*/
@Data
public class GetAgencyListFormDTO implements Serializable {
private static final long serialVersionUID = -5846836779036328298L;
private String customerId;
}

7
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java

@ -332,8 +332,11 @@ public class CustomerAgencyController {
* @Date 2021/9/8 15:20
*/
@PostMapping("agencylist")
public Result<AgencyTreeResultDTO> getAgencyList(@LoginUser TokenDto tokenDTO) {
return new Result<AgencyTreeResultDTO>().ok(customerAgencyService.getAgencyList(tokenDTO));
public Result<AgencyTreeResultDTO> getAgencyList(@LoginUser TokenDto tokenDTO,@RequestBody GetAgencyListFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getCustomerId())){
formDTO.setCustomerId(tokenDTO.getCustomerId());
}
return new Result<AgencyTreeResultDTO>().ok(customerAgencyService.getAgencyList(formDTO));
}
}

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

@ -254,5 +254,5 @@ public interface CustomerAgencyService extends BaseService<CustomerAgencyEntity>
* @Author zhaoqifeng
* @Date 2021/9/8 15:21
*/
AgencyTreeResultDTO getAgencyList(TokenDto tokenDTO);
AgencyTreeResultDTO getAgencyList(GetAgencyListFormDTO formDTO);
}

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

@ -1099,8 +1099,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
* @Date 2021/9/8 15:21
*/
@Override
public AgencyTreeResultDTO getAgencyList(TokenDto tokenDTO) {
return baseDao.getAllAgency(tokenDTO.getCustomerId());
public AgencyTreeResultDTO getAgencyList(GetAgencyListFormDTO formDTO) {
return baseDao.getAllAgency(formDTO.getCustomerId());
}
}

4
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -510,7 +510,7 @@
</resultMap>
<resultMap id="NodeTreeResult" type="com.epmet.dto.result.AgencyTreeResultDTO"
extends="BaseResultMap">
<collection property="subAgencyList" column="PID" ofType="com.epmet.dto.result.AgencyTreeResultDTO"
<collection property="subAgencyList" column="agencyId" ofType="com.epmet.dto.result.AgencyTreeResultDTO"
javaType="java.util.ArrayList" select="getSubAgencyList">
</collection>
</resultMap>
@ -526,7 +526,7 @@
AND PID= #{pid}
ORDER BY ID
</select>
<select id="getAllAgency" resultType="com.epmet.dto.result.AgencyTreeResultDTO">
<select id="getAllAgency" resultMap="NodeTreeResult">
select
ID AS agencyId,
ORGANIZATION_NAME AS agencyName,

7
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java

@ -36,13 +36,13 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.*;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectProcessDao;
import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.CustomerStaffDTO;
@ -453,6 +453,11 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
msg.setMessageContent(projectStaffMessage);
msg.setReadFlag(ReadFlagConstant.UN_READ);
msg.setUserId(staff.getStaffId());
//21.09.10:记录消息类型和对应的业务id
msg.setMessageType(UserMessageTypeConstant.PROJECT_TRANSFER);
msg.setTargetId(formDTO.getProjectId());
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}

39
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -31,10 +31,7 @@ import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.ParameterKeyConstant;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.constant.*;
import com.epmet.dao.ProjectDao;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectSatisfactionStatisticsDao;
@ -513,6 +510,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_CLOSED);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
@ -536,6 +538,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_CLOSED);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
@ -694,6 +701,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_CLOSED);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
@ -717,6 +729,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_CLOSED);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
@ -881,6 +898,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_RETURN);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
messageFeignClient.saveUserMessageList(msgList);
//2020.10.26 添加项目退回给勾选人推送微信订阅消息 sun
@ -1705,6 +1727,10 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(title);
messageFormDTO.setMessageContent(msg);
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_REMIND);
msgList.add(messageFormDTO);
//10.29 项目滞留提醒添加推送微信消息 sun
@ -2056,6 +2082,11 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setTitle(UserMessageConstant.PROJECT_TITLE);
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle()));
messageFormDTO.setReadFlag(Constant.UNREAD);
//21.09.10:记录消息类型和对应的业务id
messageFormDTO.setMessageType(UserMessageTypeConstant.PROJECT_RETURN);
messageFormDTO.setTargetId(fromDTO.getProjectId());
msgList.add(messageFormDTO);
messageFeignClient.saveUserMessageList(msgList);
//2020.10.26 添加项目退回给勾选人推送微信订阅消息 sun

23
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java

@ -15,10 +15,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ProjectConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.constant.*;
import com.epmet.dao.ProjectOrgRelationDao;
import com.epmet.dao.ProjectProcessAttachmentDao;
import com.epmet.dao.ProjectProcessDao;
@ -488,7 +485,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
//4.推送站内信、微信、短信消息
//4-1.调用epmet-message服务,给工作端勾选的工作人员发送消息
if (!shiftProjectMessage(formDTO).success()) {
if (!shiftProjectMessage(formDTO,projectEntity.getId()).success()) {
throw new RenException("项目立项,推送站内信失败");
}
@ -565,7 +562,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
* @Description 项目立项给勾选的工作人员推送站内信消息
* @author sun
*/
private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO) {
private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO,String projectId) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
//1.创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle());
@ -581,6 +578,11 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
msg.setMessageContent(projectStaffMessage);
msg.setReadFlag(ReadFlagConstant.UN_READ);
msg.setUserId(staff.getStaffId());
//21.09.10:记录消息类型和对应的业务id
msg.setMessageType(UserMessageTypeConstant.PROJECT_APPROVAL);
msg.setTargetId(projectId);
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}
@ -789,7 +791,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
//4.推送站内信、微信、短信消息
//4-1.调用epmet-message服务,给工作端勾选的工作人员发送消息
if (!shiftProjectMessage(formDTO.getStaffList(),formDTO.getCustomerId(),formDTO.getTitle()).success()) {
if (!shiftProjectMessage(formDTO.getStaffList(),formDTO.getCustomerId(),formDTO.getTitle(),projectEntity.getId()).success()) {
throw new RenException("事件转为项目,推送站内信失败");
}
@ -919,7 +921,7 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
* @Description 项目立项给勾选的工作人员推送站内信消息
* @author yinzuomei
*/
private Result shiftProjectMessage(List<TickStaffFormDTO> staffList,String customerId,String title) {
private Result shiftProjectMessage(List<TickStaffFormDTO> staffList,String customerId,String title,String projectId) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
//1.创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, title);
@ -935,6 +937,11 @@ public class ProjectTraceServiceImpl<ProjectTagService> implements ProjectTraceS
msg.setMessageContent(projectStaffMessage);
msg.setReadFlag(ReadFlagConstant.UN_READ);
msg.setUserId(staff.getStaffId());
//21.09.10:记录消息类型和对应的业务id
msg.setTargetId(projectId);
msg.setMessageType(UserMessageTypeConstant.PROJECT_FROM_RESI_EVENT);
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}

3
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GuideListFormDTO.java

@ -16,6 +16,7 @@ import java.io.Serializable;
public class GuideListFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -4471422632936288213L;
private String customerId;
/**
* 组织ID
*/
@ -23,7 +24,7 @@ public class GuideListFormDTO extends PageFormDTO implements Serializable {
/**
* 分类
*/
private String categoryId;
private String categoryCode;
/**
* 标题
*/

2
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GuideDetailResultDTO.java

@ -30,7 +30,7 @@ public class GuideDetailResultDTO implements Serializable {
/**
* 分类ID
*/
private String categoryId;
private String categoryCode;
/**
* 分类名
*/

18
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideCollectionController.java

@ -17,7 +17,9 @@
package com.epmet.controller;
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;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -25,6 +27,7 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.GuideCollectionDTO;
import com.epmet.dto.form.GuideFormDTO;
import com.epmet.service.GuideCollectionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -81,4 +84,19 @@ public class GuideCollectionController {
return new Result();
}
/**
* @Description 收藏指南
* @Param tokenDto
* @Param formDTO
* @Return {@link Result}
* @Author zhaoqifeng
* @Date 2021/9/9 9:46
*/
@PostMapping("collection")
public Result collection(@LoginUser TokenDto tokenDto, @RequestBody GuideFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
guideCollectionService.collection(tokenDto, formDTO);
return new Result();
}
}

10
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java

@ -164,9 +164,17 @@ public class GuideController {
public Result<GuideDetailResultDTO> guideDetail(@LoginUser TokenDto tokenDto, @RequestBody GuideFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
formDTO.setCustomerId(tokenDto.getCustomerId());
GuideDetailResultDTO result = guideService.guideDetail(formDTO);
GuideDetailResultDTO result = guideService.guideDetail(tokenDto, formDTO);
return new Result<GuideDetailResultDTO>().ok(result);
}
@PostMapping("collectionlist")
public Result<PageData<GuideListResultDTO>> collectionList(@LoginUser TokenDto tokenDto, @RequestBody PageFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class);
PageData<GuideListResultDTO> page = guideService.collectionList(tokenDto, formDTO);
return new Result<PageData<GuideListResultDTO>>().ok(page);
}
}

9
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideModuleController.java

@ -17,7 +17,9 @@
package com.epmet.controller;
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;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -25,10 +27,12 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.GuideModuleDTO;
import com.epmet.dto.ModuleDTO;
import com.epmet.service.GuideModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@ -81,4 +85,9 @@ public class GuideModuleController {
return new Result();
}
@PostMapping("list")
public Result<List<ModuleDTO>> getModuleList(@LoginUser TokenDto tokenDto) {
return new Result<List<ModuleDTO>>().ok(guideModuleService.getModuleList(tokenDto.getCustomerId()));
}
}

14
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/GuideDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.GuideListFormDTO;
import com.epmet.dto.result.GuideDetailResultDTO;
import com.epmet.dto.result.GuideListResultDTO;
@ -49,11 +50,22 @@ public interface GuideDao extends BaseDao<GuideEntity> {
/**
* 指南详情
*
* @Param customerId
* @Param guideId
* @Return {@link GuideDetailResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/8 9:59
*/
GuideDetailResultDTO getGuideDetail(@Param("guideId") String guideId);
GuideDetailResultDTO getGuideDetail(@Param("customerId") String customerId, @Param("guideId") String guideId);
/**
* 收藏列表
*
* @Param tokenDto
* @Return {@link List< GuideListResultDTO>}
* @Author zhaoqifeng
* @Date 2021/9/9 10:09
*/
List<GuideListResultDTO> getCollectionList(TokenDto tokenDto);
}

22
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideCollectionService.java

@ -19,7 +19,9 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.GuideCollectionDTO;
import com.epmet.dto.form.GuideFormDTO;
import com.epmet.entity.GuideCollectionEntity;
import java.util.List;
@ -92,4 +94,24 @@ public interface GuideCollectionService extends BaseService<GuideCollectionEntit
* @date 2021-09-06
*/
void delete(String[] ids);
/**
* @Description 收藏指南
* @Param tokenDto
* @Param formDTO
* @Return
* @Author zhaoqifeng
* @Date 2021/9/9 9:46
*/
void collection(TokenDto tokenDto, GuideFormDTO formDTO);
/**
* @Description 获取收藏信息
* @Param tokenDto
* @Param guideId
* @Return {@link GuideCollectionDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 9:52
*/
GuideCollectionDTO getCollection(TokenDto tokenDto, String guideId);
}

9
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideModuleService.java

@ -112,4 +112,13 @@ public interface GuideModuleService extends BaseService<GuideModuleEntity> {
* @Date 2021/9/8 10:13
*/
List<ModuleDTO> getByGuideId(String customerId, String guideId);
/**
* @Description 获取模块列表
* @Param customerId
* @Return {@link List< ModuleDTO>}
* @Author zhaoqifeng
* @Date 2021/9/9 14:46
*/
List<ModuleDTO> getModuleList(String customerId);
}

14
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideService.java

@ -18,6 +18,7 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.GuideDTO;
@ -144,10 +145,21 @@ public interface GuideService extends BaseService<GuideEntity> {
/**
* 指南详情
*
* @Param tokenDto
* @Param formDTO
* @Return {@link GuideDetailResultDTO}
* @Author zhaoqifeng
* @Date 2021/9/7 14:12
*/
GuideDetailResultDTO guideDetail(GuideFormDTO formDTO);
GuideDetailResultDTO guideDetail(TokenDto tokenDto, GuideFormDTO formDTO);
/**
* @Description 收藏列表
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< GuideListResultDTO>}
* @Author zhaoqifeng
* @Date 2021/9/9 10:07
*/
PageData<GuideListResultDTO> collectionList(TokenDto tokenDto, PageFormDTO formDTO);
}

22
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

@ -976,7 +976,8 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
}
if (!isOk) {
this.sendMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
//发布文章内容审核
this.sendMsg(draftEntity.getId(),draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
this.wxmpMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL, null);
return null;
@ -1054,7 +1055,8 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
}
} catch (Exception e) {
log.error("scanContent exception", e);
this.sendMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
//发布文章内容审核
this.sendMsg(draftEntity.getId(),draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
this.wxmpMsg(draftEntity.getCustomerId(), draftEntity.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draftEntity.getTitle()));
this.updateDraftPublishStatus(draftId, DraftConstant.AUDITFAIL, null);
}
@ -1092,7 +1094,8 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
}
} catch (Exception e) {
log.error("scanAllPassPublishArticle update db exception", e);
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
//发布文章内容审核
this.sendMsg(draft.getId(),draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
this.wxmpMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
@ -1157,12 +1160,14 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
} else if (titleFail) {
auditMsg = ModuleConstant.DRAFT_TITLE;
}
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_AUDIT_CONTENT, draft.getTitle(), auditMsg));
//发布文章内容审核
this.sendMsg(draft.getId(),draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_AUDIT_CONTENT, draft.getTitle(), auditMsg));
this.wxmpMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_AUDIT_CONTENT, draft.getTitle(), auditMsg));
}
} catch (Exception e) {
log.error("scanAllPassPublishArticle update db exception", e);
this.sendMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
//发布文章内容审核
this.sendMsg(draft.getId(),draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
this.wxmpMsg(draft.getCustomerId(), draft.getTitle(), String.format(ModuleConstant.MSG_ARTICLE_PUBLISH_ERROR, draft.getTitle()));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
@ -1174,7 +1179,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
return this.saveOrUpdateContent(tokenDto, fromDTO, false);
}
public Result sendMsg(String customerId, String title, String content) {
public Result sendMsg(String draftId,String customerId, String title, String content) {
UserMessageFormDTO formDTO = new UserMessageFormDTO();
formDTO.setCustomerId(customerId);
formDTO.setGridId("");
@ -1183,6 +1188,11 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
formDTO.setTitle(String.format(ModuleConstant.MSG_TITLE, title));
formDTO.setMessageContent(content);
formDTO.setReadFlag(ReadFlagConstant.UN_READ);
//21.09.10:记录消息类型和对应的业务id
formDTO.setMessageType(UserMessageTypeConstant.PARTY_VOICE_PUBLISH);
formDTO.setTargetId(draftId);
return epmetMessageOpenFeignClient.saveUserMessage(formDTO);
}
/**

57
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideCollectionServiceImpl.java

@ -17,14 +17,17 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
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.dao.GuideCollectionDao;
import com.epmet.dto.GuideCollectionDTO;
import com.epmet.dto.form.GuideFormDTO;
import com.epmet.entity.GuideCollectionEntity;
import com.epmet.service.GuideCollectionService;
import org.apache.commons.lang3.StringUtils;
@ -97,4 +100,58 @@ public class GuideCollectionServiceImpl extends BaseServiceImpl<GuideCollectionD
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param tokenDto
* @param formDTO
* @Description 收藏指南
* @Param tokenDto
* @Param formDTO
* @Return
* @Author zhaoqifeng
* @Date 2021/9/9 9:46
*/
@Override
public void collection(TokenDto tokenDto, GuideFormDTO formDTO) {
//获取指南收藏信息
LambdaQueryWrapper<GuideCollectionEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(GuideCollectionEntity::getGuideId, formDTO.getGuideId());
wrapper.eq(GuideCollectionEntity::getUserId, tokenDto.getUserId());
wrapper.eq(GuideCollectionEntity::getApp, tokenDto.getApp());
wrapper.eq(GuideCollectionEntity::getCustomerId, tokenDto.getCustomerId());
GuideCollectionEntity entity = baseDao.selectOne(wrapper);
//如果没有收藏记录,则添加收藏,有就删除收藏
if (null == entity) {
entity = new GuideCollectionEntity();
entity.setCustomerId(tokenDto.getCustomerId());
entity.setUserId(tokenDto.getUserId());
entity.setGuideId(formDTO.getGuideId());
entity.setApp(tokenDto.getApp());
insert(entity);
} else {
deleteById(entity.getId());
}
}
/**
* @param tokenDto
* @param guideId
* @Description 获取收藏信息
* @Param tokenDto
* @Param guideId
* @Return {@link GuideCollectionDTO}
* @Author zhaoqifeng
* @Date 2021/9/10 9:52
*/
@Override
public GuideCollectionDTO getCollection(TokenDto tokenDto, String guideId) {
//获取指南收藏信息
LambdaQueryWrapper<GuideCollectionEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(GuideCollectionEntity::getGuideId, guideId);
wrapper.eq(GuideCollectionEntity::getUserId, tokenDto.getUserId());
wrapper.eq(GuideCollectionEntity::getApp, tokenDto.getApp());
wrapper.eq(GuideCollectionEntity::getCustomerId, tokenDto.getCustomerId());
GuideCollectionEntity entity = baseDao.selectOne(wrapper);
return ConvertUtils.sourceToTarget(entity, GuideCollectionDTO.class);
}
}

19
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideModuleServiceImpl.java

@ -28,14 +28,14 @@ import com.epmet.dao.GuideModuleDao;
import com.epmet.dto.GuideModuleDTO;
import com.epmet.dto.ModuleDTO;
import com.epmet.entity.GuideModuleEntity;
import com.epmet.service.GuideModuleDictService;
import com.epmet.service.GuideModuleService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -48,6 +48,8 @@ import java.util.Map;
@Service
public class GuideModuleServiceImpl extends BaseServiceImpl<GuideModuleDao, GuideModuleEntity> implements GuideModuleService {
@Resource
private GuideModuleDictService guideModuleDictService;
@Override
public PageData<GuideModuleDTO> page(Map<String, Object> params) {
@ -129,4 +131,17 @@ public class GuideModuleServiceImpl extends BaseServiceImpl<GuideModuleDao, Guid
return baseDao.selectByGuideId(customerId, guideId);
}
/**
* @param customerId
* @Description 获取模块列表
* @Param customerId
* @Return {@link List< ModuleDTO>}
* @Author zhaoqifeng
* @Date 2021/9/9 14:46
*/
@Override
public List<ModuleDTO> getModuleList(String customerId) {
return guideModuleDictService.getModuleList(customerId);
}
}

72
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java

@ -21,6 +21,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -41,10 +43,7 @@ import com.epmet.entity.GuideEntity;
import com.epmet.entity.GuideExternalLinkEntity;
import com.epmet.entity.GuideModuleEntity;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.GuideAttachmentService;
import com.epmet.service.GuideExternalLinkService;
import com.epmet.service.GuideModuleService;
import com.epmet.service.GuideService;
import com.epmet.service.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
@ -76,6 +75,8 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
private GuideAttachmentService guideAttachmentService;
@Resource
private GuideExternalLinkService guideExternalLinkService;
@Resource
private GuideCollectionService guideCollectionService;
@Override
public PageData<GuideDTO> page(Map<String, Object> params) {
@ -113,7 +114,6 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
public void save(GuideDTO dto) {
GuideEntity entity = ConvertUtils.sourceToTarget(dto, GuideEntity.class);
insert(entity);
ConvertUtils.sourceToTarget(entity, GuideDTO.class);
}
@Override
@ -142,15 +142,18 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
@Override
public PageData<GuideListResultDTO> guideList(TokenDto tokenDto, GuideListFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
formDTO.setCustomerId(tokenDto.getCustomerId());
List<GuideListResultDTO> list = baseDao.getGuideList(formDTO);
list.forEach(item -> {
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), item.getCreatedId());
if (null == staffInfoCache) {
item.setCategoryName("");
} else {
item.setCreatedName(staffInfoCache.getRealName());
}
});
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), item.getCreatedId());
if (null == staffInfoCache) {
item.setCategoryName("");
} else {
item.setCreatedName(staffInfoCache.getRealName());
}
});
}
PageInfo<GuideListResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
@ -172,7 +175,7 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
throw new RenException(EpmetErrorCode.GUIDE_IS_NULL.getCode());
}
//保存办事指南表
GuideDTO guideDTO = new GuideDTO();
GuideEntity guideDTO = new GuideEntity();
guideDTO.setCustomerId(tokenDto.getCustomerId());
guideDTO.setOrgId(formDTO.getOrgId());
guideDTO.setOrgType(formDTO.getOrgType());
@ -193,7 +196,7 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
guideDTO.setPid(result.getData().getAgencyId());
}
guideDTO.setPids(result.getData().getPids().concat(":").concat(result.getData().getAgencyId()));
save(guideDTO);
insert(guideDTO);
//保存办事指南内容模块
if (CollectionUtils.isNotEmpty(formDTO.getModuleList())) {
List<GuideModuleEntity> guideModuleList = formDTO.getModuleList().stream().map(item -> {
@ -370,16 +373,51 @@ public class GuideServiceImpl extends BaseServiceImpl<GuideDao, GuideEntity> imp
* @Date 2021/9/7 14:12
*/
@Override
public GuideDetailResultDTO guideDetail(GuideFormDTO formDTO) {
public GuideDetailResultDTO guideDetail(TokenDto tokenDto, GuideFormDTO formDTO) {
//获取指南详情
GuideDetailResultDTO result = baseDao.getGuideDetail(formDTO.getGuideId());
GuideDetailResultDTO result = baseDao.getGuideDetail(formDTO.getCustomerId(), formDTO.getGuideId());
if (null == result) {
result = new GuideDetailResultDTO();
}
//获取指南内容模块
result.setModuleList(guideModuleService.getByGuideId(formDTO.getCustomerId(), formDTO.getGuideId()));
//获取指南附件
result.setAttachmentList(guideAttachmentService.getByGuideId(formDTO.getGuideId()));
//获取指南外链地址
result.setExternalLinks(guideExternalLinkService.getByGuideId(formDTO.getGuideId()));
//是否收藏
result.setCollectionFlag(NumConstant.ZERO_STR);
if (null != guideCollectionService.getCollection(tokenDto, formDTO.getGuideId())) {
result.setCollectionFlag(NumConstant.ONE_STR);
}
return result;
}
/**
* @param tokenDto
* @Description 收藏列表
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< GuideListResultDTO>}
* @Author zhaoqifeng
* @Date 2021/9/9 10:03
*/
@Override
public PageData<GuideListResultDTO> collectionList(TokenDto tokenDto, PageFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<GuideListResultDTO> list = baseDao.getCollectionList(tokenDto);
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), item.getCreatedId());
if (null == staffInfoCache) {
item.setCategoryName("");
} else {
item.setCreatedName(staffInfoCache.getRealName());
}
});
}
PageInfo<GuideListResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

139
epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.7__create_guide_table.sql

@ -0,0 +1,139 @@
CREATE TABLE `guide` (
`ID` varchar(64) NOT NULL COMMENT 'ID 唯一标识',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
`ORG_TYPE` varchar(255) DEFAULT NULL COMMENT '机关agency 网格grid 部门dept',
`ORG_ID` varchar(64) NOT NULL COMMENT '发布单位ID',
`ORG_NAME` varchar(128) DEFAULT NULL COMMENT '发布单位名',
`PID` varchar(64) NOT NULL COMMENT '所属组织机构ID(customer_agency.id)',
`PIDS` varchar(1024) NOT NULL COMMENT '所有上级组织ID,英文:隔开',
`TITLE` varchar(128) NOT NULL COMMENT '标题',
`CATEGORY_CODE` varchar(32) NOT NULL COMMENT '分类ID',
`DEL_FLAG` int(11) NOT NULL COMMENT '删除标识:0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='办事指南表 ';
CREATE TABLE `guide_attachment` (
`ID` varchar(64) NOT NULL COMMENT '唯一标识',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
`GUIDE_ID` varchar(64) NOT NULL COMMENT '办事指南ID',
`ATTACHMENT_NAME` varchar(128) DEFAULT NULL COMMENT '附件名',
`ATTACHMENT_SIZE` int(11) DEFAULT NULL COMMENT '文件大小 单位byte',
`ATTACHMENT_FORMAT` varchar(32) DEFAULT NULL COMMENT '文件格式 word、excel、pdf',
`ATTACHMENT_TYPE` varchar(32) DEFAULT NULL COMMENT '类型 ',
`ATTACHMENT_URL` varchar(256) DEFAULT NULL COMMENT '附件地址',
`DURATION` int(11) DEFAULT NULL COMMENT '语音或视频时长,秒',
`SORT` int(11) NOT NULL COMMENT '排序',
`DEL_FLAG` int(1) NOT NULL COMMENT '删除标识 0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='办事指南附件';
CREATE TABLE `guide_category` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id,产品默认配置此列存储default',
`CATEGORY_NAME` varchar(64) NOT NULL COMMENT '分类名,客户内唯一',
`CATEGORY_CODE` varchar(64) NOT NULL COMMENT '分类编码:分类名的全拼; eg:gongjijin',
`SORT` int(11) NOT NULL COMMENT '排序',
`STATUS` varchar(10) NOT NULL COMMENT '状态 禁用disable 启用enable',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南分类';
CREATE TABLE `guide_collection` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`GUIDE_ID` varchar(64) NOT NULL COMMENT '指南ID',
`USER_ID` varchar(64) NOT NULL COMMENT '用户ID',
`APP` varchar(64) NOT NULL COMMENT '用户所属客户端 居民端resi 工作端gov',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南收藏表';
CREATE TABLE `guide_external_link` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`GUIDE_ID` varchar(64) NOT NULL COMMENT '指南ID',
`DESCRIPTION` varchar(64) NOT NULL COMMENT '链接说明',
`EXTERNAL_LINK` varchar(255) NOT NULL COMMENT '外部链接',
`SORT` int(11) NOT NULL COMMENT '排序',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南外链表';
CREATE TABLE `guide_module` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`GUIDE_ID` varchar(64) NOT NULL COMMENT '指南ID',
`MODULE_ID` varchar(64) NOT NULL COMMENT '模块ID',
`MODULE_CONTENT` longtext,
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南模块关联表';
CREATE TABLE `guide_module_dict` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`MODULE_VALUE` varchar(64) NOT NULL COMMENT '模块key',
`MODULE_NAME` varchar(64) NOT NULL COMMENT '模块名',
`SORT` int(11) NOT NULL COMMENT '排序',
`STATUS` varchar(10) NOT NULL COMMENT '状态 禁用disable 启用enable',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南模块字典表';
CREATE TABLE `guide_module_dict_default` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`MODULE_VALUE` varchar(64) NOT NULL COMMENT '模块key',
`MODULE_NAME` varchar(64) NOT NULL COMMENT '模块名',
`SORT` int(11) NOT NULL COMMENT '排序',
`STATUS` varchar(10) NOT NULL COMMENT '状态 禁用disable 启用enable',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='指南模块默认字典表';

12
epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.8__insert_default_guidecategory.sql

@ -0,0 +1,12 @@
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1', 'default', '社保', 'shebao', 0, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('2', 'default', '驾驶行驶', 'jiashixingshi', 1, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('3', 'default', '公积金', 'gongjijin', 2, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('4', 'default', '出入境', 'churujing', 3, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('5', 'default', '婚育收养', 'hunyushouyang', 4, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('6', 'default', '户政', 'huzheng', 5, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('7', 'default', '教育培训', 'jiaoyupeixun', 6, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('8', 'default', '劳动就业', 'laodongjiuye', 7, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('9', 'default', '办税指南', 'banshuizhinan', 8, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('10', 'default', '人才', 'rencai', 9, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('11', 'default', '职业资格', 'zhiyezige', 10, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');
INSERT INTO `epmet_gov_voice`.`guide_category` (`ID`, `CUSTOMER_ID`, `CATEGORY_NAME`, `CATEGORY_CODE`, `SORT`, `STATUS`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('12', 'default', '医疗健康', 'yiliaojiankang', 11, 'enable', '0', 0, 'default', '2021-09-08 14:21:09', 'default', '2021-09-08 14:21:19');

43
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/GuideDao.xml

@ -24,38 +24,55 @@
SELECT
g.ID AS "guideId",
g.TITLE AS "title",
gc.CATEGORY_NAME AS categoryName,
g.CREATED_BY AS createdId,
g.UPDATED_TIME AS updatedTime,
gc.CATEGORY_NAME AS "categoryName",
g.CREATED_BY AS "createdId",
g.UPDATED_TIME AS "updatedTime"
FROM
guide g
INNER JOIN guide_category gc ON g.CATEGORY_ID = gc.ID
INNER JOIN guide_category gc ON g.CATEGORY_CODE = gc.CATEGORY_CODE AND gc.DEL_FLAG = 0 AND gc.CUSTOMER_ID = #{customerId}
WHERE g.DEL_FLAG = 0
AND g.CUSTOMER_ID = #{customerId}
<if test='null != agencyId and "" != agencyId'>
AND g.PIDS LIKE CONCAT( '%', #{agencyId}, '%' )
</if>
<if test='null != guideTitle and "" != guideTitle'>
AND g.TITLE LIKE CONCAT( '%', #{guideTitle}, '%' )
</if>
<if test='null != categoryId and "" != categoryId'>
AND g.CATEGORY_ID = #{categoryId}
<if test='null != categoryCode and "" != categoryCode'>
AND g.CATEGORY_CODE = #{categoryCode}
</if>
ORDER BY g.CREATED_TIME DESC
</select>
<select id="getGuideDetail" resultType="com.epmet.dto.result.GuideDetailResultDTO">
SELECT
g.ID AS "guideId",
ORG_TYPE,
ORG_ID,
ORG_NAME,
TITLE,
CATEGORY_CODE
CATEGORY_NAME
g.ORG_TYPE,
g.ORG_ID,
g.ORG_NAME,
g.TITLE,
g.CATEGORY_CODE,
gc.CATEGORY_NAME
FROM
guide g
INNER JOIN guide_category gc ON g.CATEGORY_CODE = gc.CATEGORY_CODE
INNER JOIN guide_category gc ON g.CATEGORY_CODE = gc.CATEGORY_CODE AND gc.CUSTOMER_ID = #{customerId}
WHERE
g.ID = #{guideId}
</select>
<select id="getCollectionList" resultType="com.epmet.dto.result.GuideListResultDTO">
SELECT
g.ID AS "guideId",
g.TITLE AS "title",
gc.CATEGORY_NAME AS categoryName,
g.CREATED_BY AS createdId,
g.UPDATED_TIME AS updatedTime
FROM
guide g
INNER JOIN guide_category gc ON g.CATEGORY_CODE = gc.CATEGORY_CODE AND gc.DEL_FLAG = 0 AND gc.CUSTOMER_ID = #{customerId}
INNER JOIN guide_collection gco ON g.ID = gco.GUIDE_ID AND gco.USER_ID = #{userId} AND gco.APP = #{app} AND gco.DEL_FLAG = 0
WHERE g.DEL_FLAG = 0
AND g.CUSTOMER_ID = #{customerId}
ORDER BY gco.CREATED_TIME DESC
</select>
</mapper>

4
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java

@ -22,4 +22,8 @@ public class GroupDetailResultDTO {
/** 群组类型:branch:支部小组,ordinary:楼院小组 */
private String groupType;
private String customerId;
/** 组长ID */
private String leaderId;
/** 当前用户是否是群主 */
private String groupLeaderFlag;
}

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActCommentServiceImpl.java

@ -111,8 +111,10 @@ public class ActCommentServiceImpl extends BaseServiceImpl<ActCommentDao, ActCom
}
}
//图片安全校验
List<String> imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
noticeCommentService.safetyCheck(new ArrayList<>(), imageList);
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getImageList())){
List<String> imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
noticeCommentService.safetyCheck(new ArrayList<>(), imageList);
}
//3、插入记录
ActCommentEntity actCommentEntity = new ActCommentEntity();

24
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java

@ -35,6 +35,7 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.result.GridInfoResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
@ -265,9 +266,17 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl<GroupActInfoDao, Gr
if(StringUtils.isNotBlank(formDTO.getGroupActId())){
// 活动修改后,站内信通知全组成员“您有一条小组消息 【某某小组】更新了********活动详情,请查看。
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.CHANGED_GROUP_ACT, resiGroupDTO.getGroupName(), groupActInfoEntity.getTitle()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_ACT_PUBLISH);
userMessageFormDTO.setTargetId(groupActInfoEntity.getId());
}else{
// 活动发布,站内信通知全组成员“您有一条小组消息 【某某小组】发布了*******活动,请查看。
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.PUBLISH_GROUP_ACT, resiGroupDTO.getGroupName(), groupActInfoEntity.getTitle()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_ACT_CHANGE);
userMessageFormDTO.setTargetId(groupActInfoEntity.getId());
}
list.add(userMessageFormDTO);
}
@ -760,6 +769,11 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl<GroupActInfoDao, Gr
userMessageFormDTO.setTitle(UserMessageConstant.GROUP_TITLE);
userMessageFormDTO.setReadFlag(ReadFlagConstant.UN_READ);
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.CANCEL_GROUP_ACT, resiGroupDTO.getGroupName(), actInfoEntity.getTitle()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_ACT_CANCEL);
userMessageFormDTO.setTargetId(actInfoEntity.getId());
list.add(userMessageFormDTO);
}
});
@ -910,7 +924,7 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl<GroupActInfoDao, Gr
}
}
// 折线图组装
List<OrganizationalLifeLineChartDTO> lineChart = lineChart();
List<OrganizationalLifeLineChartDTO> lineChart = lineChart(formDTO.getYearId());
if (!CollectionUtils.isEmpty(chartResult)){
Map<String, List<OrganizationalLifeLineChartDTO>> groupByMonth = chartResult.stream().collect(Collectors.groupingBy(OrganizationalLifeLineChartDTO::getMonth));
groupByMonth.forEach((month,list) -> {
@ -929,17 +943,19 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl<GroupActInfoDao, Gr
/**
* @Description 折线图构造
* 应前端要求日期格式由 01月02月 改为 2021-012021-02
* @author zxc
* @date 2021/9/6 10:55 上午
*/
public List<OrganizationalLifeLineChartDTO> lineChart(){
public List<OrganizationalLifeLineChartDTO> lineChart(String yearId){
String year = yearId.substring(NumConstant.ZERO,NumConstant.FOUR);
List<OrganizationalLifeLineChartDTO> lineChart = new ArrayList<>();
for (int i = NumConstant.ONE; i <= NumConstant.TWELVE; i++) {
OrganizationalLifeLineChartDTO dto = new OrganizationalLifeLineChartDTO();
if (i < NumConstant.TEN){
dto.setMonth(NumConstant.ZERO + String.valueOf(i) + "月");
dto.setMonth(year +"-"+NumConstant.ZERO + String.valueOf(i));
}else {
dto.setMonth(String.valueOf(i) + "月");
dto.setMonth(year +"-"+ String.valueOf(i));
}
lineChart.add(dto);
}

36
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.GroupAchievementMQMsg;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@ -40,7 +41,7 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.dto.BizPointTotalDetailDTO;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserInfoResultDTO;
import com.epmet.dto.result.UserResiInfoResultDTO;
@ -49,7 +50,6 @@ import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.group.constant.GroupConstant;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.constant.UserMessageConstant;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.modules.feign.EpmetMessageFeignClient;
import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.feign.GovOrgFeignClient;
@ -85,9 +85,7 @@ import com.epmet.resi.group.dto.member.result.AchievementResultDTO;
import com.epmet.resi.group.dto.member.result.GroupAchievementDTO;
import com.epmet.resi.group.enums.SearchScopeTypeEnum;
import com.epmet.send.SendMqMsgUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import kotlin.jvm.internal.Lambda;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -528,7 +526,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
}
resiGroupStatisticalService.save(resiGroupStatisticalDTO);
//发送消息:创建小组
sendMsgResi2Gov(UserMessageConstant.CREATE_GROUP_APPLYING_MSG_TITLE,msg,applyCreateGroupFormDTO.getGridId(),applyCreateGroupFormDTO.getUserId(),applyCreateGroupFormDTO.getCustomerId());
sendMsgResi2Gov(UserMessageConstant.CREATE_GROUP_APPLYING_MSG_TITLE,msg,applyCreateGroupFormDTO.getGridId(),applyCreateGroupFormDTO.getUserId(),applyCreateGroupFormDTO.getCustomerId(), resiGroupEntity.getId());
}
@ -722,6 +720,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
userMessageFormDTO.setGridId(resiGroupDTO.getGridId());
userMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId());
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_CREATE_GROUP_RES);
userMessageFormDTO.setTargetId(agreeApplyGroupFormDTO.getGroupId());
if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName())));
}
@ -786,6 +789,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
userMessageFormDTO.setGridId(resiGroupDTO.getGridId());
userMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId());
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_CREATE_GROUP_RES);
userMessageFormDTO.setTargetId(disAgreeApplyGroupFormDTO.getGroupId());
if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason())));
}
@ -1158,7 +1166,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
* @author wangc
* @date 2020.04.29 22:49
**/
private void sendMsgResi2Gov(String title,String msg,String gridId,String userId,String customerId){
private void sendMsgResi2Gov(String title,String msg,String gridId,String userId,String customerId,String groupId){
//1.查询加入当前网格下的人员 customer_staff_grid
CommonGridIdFormDTO commonGridIdFormDTO = new CommonGridIdFormDTO();
commonGridIdFormDTO.setGridId(gridId);
@ -1189,6 +1197,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
msgObj.setReadFlag(ReadFlagConstant.UN_READ);
msgObj.setTitle(title);
msgObj.setUserId(to);
//21.09.10:记录消息类型和对应的业务id
msgObj.setMessageType(UserMessageTypeConstant.GROUP_CREATE_GROUP_APPLY);
msgObj.setTargetId(groupId);
msgList.add(msgObj);
//微信订阅
WxSubscribeMessageFormDTO subscribeDTO = new WxSubscribeMessageFormDTO();
@ -1787,12 +1800,15 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
query.eq(ResiGroupEntity::getDelFlag, 0);
List<ResiGroupEntity> groupEntities = baseDao.selectList(query);
List<GroupDetailResultDTO> groupDtos = groupEntities.stream().map(ge -> {
ResiGroupMemberDTO leader = resiGroupMemberDao.selectLeaderMember(ge.getId());
GroupDetailResultDTO dto = new GroupDetailResultDTO();
dto.setGroupId(ge.getId());
dto.setGroupName(ge.getGroupName());
dto.setGroupHeadPhoto(ge.getGroupHeadPhoto());
dto.setGroupIntroduction(ge.getGroupIntroduction());
dto.setGroupType(ge.getGroupType());
dto.setLeaderId(leader.getCustomerUserId());
return dto;
}).collect(Collectors.toList());
return groupDtos;
@ -1804,9 +1820,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
if (CollectionUtils.isNotEmpty(excludeGroupIds)) {
query.notIn(ResiGroupEntity::getId, excludeGroupIds);
}
// 利用pagehelper计算起始条数
query.last(String.format("limit %s, %s", startRow, rowCount));
// 只显示审核通过且可用的小组
query.eq(ResiGroupEntity::getState, "approved");
SFunction<ResiGroupEntity, ?> sortFieldFun = null;
if (GroupFormDTO.SortTypeEnum.CREATE_TIME.getSortField().equals(sortType)) {
sortFieldFun = ResiGroupEntity::getCreatedTime;
@ -1825,6 +1843,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
}
List<ResiGroupEntity> groupList = baseDao.selectList(query);
return groupList.stream().map(ge -> {
// 查询组长id
ResiGroupMemberDTO leader = resiGroupMemberDao.selectLeaderMember(ge.getId());
GroupDetailResultDTO dto = new GroupDetailResultDTO();
dto.setGroupId(ge.getId());
dto.setGroupName(ge.getGroupName());
@ -1832,6 +1853,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
dto.setGroupIntroduction(ge.getGroupIntroduction());
dto.setGroupType(ge.getGroupType());
dto.setGridId(ge.getGridId());
dto.setLeaderId(leader.getCustomerUserId());
return dto;
}).collect(Collectors.toList());
}

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java

@ -28,6 +28,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserInfoOnEnterGridResultDTO;
import com.epmet.dto.result.UserResiInfoResultDTO;
@ -642,6 +643,11 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD
userMessage.setMessageContent(messageContent);
userMessage.setReadFlag(ReadFlagConstant.UN_READ);
userMessage.setTitle(UserMessageConstant.GROUP_TITLE);
//21.09.10:记录消息类型和对应的业务id
userMessage.setMessageType(UserMessageTypeConstant.GROUP_ENTER_GROUP_BY_LINK_RES);
userMessage.setTargetId(resiGroupDTO.getId());
//通知群主
userMessage.setUserId(groupInvitationDTO.getInviterUserId());
Result result = epmetMessageOpenFeignClient.saveUserMessage(userMessage);

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java

@ -25,6 +25,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.modules.constant.UserMessageConstant;
@ -204,6 +205,10 @@ public class GroupLeaderTransferRecordServiceImpl extends BaseServiceImpl<GroupL
originalLeader.setCustomerId(formDTO.getCustomerId());
originalLeader.setMessageContent(String.format(UserMessageConstant.ORIGINAL_LEADER_DOWN,resiGroupDTO.getGroupName()));
//21.09.10:记录消息类型和对应的业务id
originalLeader.setMessageType(UserMessageTypeConstant.GROUP_ORIGINAL_LEADER_DOWN);
originalLeader.setTargetId(resiGroupDTO.getId());
msgList.add(originalLeader);
}
//新组长
@ -217,6 +222,10 @@ public class GroupLeaderTransferRecordServiceImpl extends BaseServiceImpl<GroupL
newLeader.setCustomerId(formDTO.getCustomerId());
newLeader.setMessageContent(String.format(UserMessageConstant.NEW_LEADER_UP,resiGroupDTO.getGroupName()));
//21.09.10:记录消息类型和对应的业务id
newLeader.setMessageType(UserMessageTypeConstant.GROUP_NEW_LEADER_UP);
newLeader.setTargetId(resiGroupDTO.getId());
msgList.add(newLeader);
if(!epmetMessageOpenFeignClient.saveUserMessageList(msgList).success()){
log.warn("转让组发送站内信失败");

24
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -25,6 +25,7 @@ import com.epmet.commons.rocketmq.messages.GroupAchievementMQMsg;
import com.epmet.commons.tools.constant.*;
import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -33,6 +34,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SendMqMsgUtils;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.IssueShareLinkVisitRecordDTO;
import com.epmet.dto.form.CommonGridIdFormDTO;
import com.epmet.dto.form.*;
@ -45,7 +47,6 @@ import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.modules.constant.GroupMemberConstant;
import com.epmet.modules.constant.UserMessageConstant;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.feign.GovOrgFeignClient;
import com.epmet.modules.group.dao.ResiGroupDao;
@ -61,7 +62,6 @@ import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.modules.topic.service.ResiTopicService;
import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService;
import com.epmet.modules.topic.service.impl.ResiTopicServiceImpl;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.EnterGroupTypeConstant;
import com.epmet.resi.group.constant.LeaderFlagConstant;
@ -315,6 +315,11 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
userMessage.setTitle(UserMessageConstant.GROUP_TITLE);
//通知群主
userMessage.setUserId(groupLeader.getCustomerUserId());
//21.09.10:记录消息类型和对应的业务id
userMessage.setMessageType(UserMessageTypeConstant.GROUP_APPLY_ENTER);
userMessage.setTargetId(resiGroupDTO.getId());
epmetMessageOpenFeignClient.saveUserMessage(userMessage);
//微信订阅
@ -734,6 +739,11 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
userMessage.setMessageContent(messageContent);
userMessage.setReadFlag(ReadFlagConstant.UN_READ);
userMessage.setTitle(UserMessageConstant.GROUP_TITLE);
//21.09.10:记录消息类型和对应的业务id
userMessage.setMessageType(UserMessageTypeConstant.GROUP_APPLY_ENTER_RES);
userMessage.setTargetId(resiGroupMemberDTO.getResiGroupId());
//通知群主
userMessage.setUserId(resiGroupMemberDTO.getCustomerUserId());
epmetMessageOpenFeignClient.saveUserMessage(userMessage);
@ -819,6 +829,11 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
userMessage.setMessageContent(messageContent);
userMessage.setReadFlag(ReadFlagConstant.UN_READ);
userMessage.setTitle(UserMessageConstant.GROUP_TITLE);
//21.09.10:记录消息类型和对应的业务id
userMessage.setMessageType(UserMessageTypeConstant.GROUP_APPLY_ENTER_RES);
userMessage.setTargetId(groupMemeberOperationDTO.getGroupId());
//通知群主
userMessage.setUserId(groupMemeberOperationDTO.getCustomerUserId());
epmetMessageOpenFeignClient.saveUserMessage(userMessage);
@ -920,6 +935,11 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
String messageContent=String.format(UserMessageConstant.SLIENT_IN_GROUP, dateStr);
userMessageFormDTO.setMessageContent(messageContent);
userMessageFormDTO.setReadFlag(ReadFlagConstant.UN_READ);
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_SLIENT_MEMBER);
userMessageFormDTO.setTargetId(resiGroupMemberEntity.getResiGroupId());
epmetMessageOpenFeignClient.saveUserMessage(userMessageFormDTO);
//发送微信订阅
WxSubscribeMessageFormDTO subscribeMessageFormDTO = new WxSubscribeMessageFormDTO();

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeCommentServiceImpl.java

@ -120,8 +120,10 @@ public class NoticeCommentServiceImpl extends BaseServiceImpl<NoticeCommentDao,
}
}
//图片安全校验
List<String> imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
safetyCheck(new ArrayList<>(), imageList);
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getImageList())){
List<String> imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
safetyCheck(new ArrayList<>(), imageList);
}
//2.判断当前用户是否被禁言、移除、非本组成员
NoticeDTO notice = noticeService.get(formDTO.getNoticeId());

15
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java

@ -33,6 +33,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.ScanContentUtils;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.result.GridInfoResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
@ -58,7 +59,10 @@ import com.epmet.modules.notice.service.NoticeService;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.notice.NoticeDTO;
import com.epmet.resi.group.dto.notice.form.*;
import com.epmet.resi.group.dto.notice.form.AddNoticeFormDTO;
import com.epmet.resi.group.dto.notice.form.EditNoticeFormDTO;
import com.epmet.resi.group.dto.notice.form.NoticeDetailFormDTO;
import com.epmet.resi.group.dto.notice.form.NoticeFileDTO;
import com.epmet.resi.group.dto.notice.result.NoticeDetailResultDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
@ -272,6 +276,10 @@ public class NoticeServiceImpl extends BaseServiceImpl<NoticeDao, NoticeEntity>
userMessageFormDTO.setTitle(UserMessageConstant.GROUP_TITLE);
userMessageFormDTO.setReadFlag(ReadFlagConstant.UN_READ);
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.GROUP_NOTICE_ADD, groupEntity.getGroupName(), formDTO.getTitle()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_MESSAGE_PUBLISH);
userMessageFormDTO.setTargetId(messageEntity.getMessageId());
userMessageFormDTOS.add(userMessageFormDTO);
}
});
@ -430,6 +438,11 @@ public class NoticeServiceImpl extends BaseServiceImpl<NoticeDao, NoticeEntity>
userMessageFormDTO.setTitle(UserMessageConstant.GROUP_TITLE);
userMessageFormDTO.setReadFlag(ReadFlagConstant.UN_READ);
userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.GROUP_NOTICE_EDIT, groupEntity.getGroupName(), formDTO.getTitle()));
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setTargetId(entity.getId());
userMessageFormDTO.setMessageType(UserMessageTypeConstant.GROUP_MESSAGE_EDIT);
userMessageFormDTOS.add(userMessageFormDTO);
}
});

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java

@ -217,8 +217,10 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
}
}
//图片安全校验
List<String> imageList = resiCommentFormDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
noticeCommentService.safetyCheck(new ArrayList<>(), imageList);
if(CollectionUtils.isNotEmpty(resiCommentFormDTO.getImageList())){
List<String> imageList = resiCommentFormDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList());
noticeCommentService.safetyCheck(new ArrayList<>(), imageList);
}
//1.判断当前用户是否被禁言
ResiTopicDTO topic = resiTopicService.get(resiCommentFormDTO.getTopicId());

6
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

@ -1072,10 +1072,14 @@
resi_group.GROUP_NAME,
resi_group.GROUP_INTRODUCTION,
resi_group.GROUP_TYPE,
resi_group.CUSTOMER_ID
resi_group.CUSTOMER_ID,
resi_group_member.GROUP_LEADER_FLAG,
g_leader.CUSTOMER_USER_ID leaderId
from resi_group
inner join resi_group_member
on (resi_group.ID = resi_group_member.RESI_GROUP_ID and resi_group_member.DEL_FLAG = 0)
inner join resi_group_member g_leader on (g_leader.DEL_FLAG = 0 and g_leader.RESI_GROUP_ID = resi_group.ID and
g_leader.GROUP_LEADER_FLAG = 'leader')
where resi_group_member.CUSTOMER_USER_ID = #{memberUserId}
and resi_group.DEL_FLAG = 0
<if test="gridId != null and gridId.trim() != ''">

5
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/warmhearted/form/ResiWarmheartedSubmitFormDTO.java

@ -73,4 +73,9 @@ public class ResiWarmheartedSubmitFormDTO implements Serializable {
*/
private String messageText;
/**
* 无需前端传入此列用来数据传值
*/
private String applyId;
}

15
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java

@ -8,10 +8,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.PartyMemberConstant;
import com.epmet.constant.PartyMemberMessageConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.*;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -651,6 +648,11 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService
userMessageFormDTO.setGridId(formDTO.getGridId());
userMessageFormDTO.setApp(AppClientConstant.APP_RESI);
userMessageFormDTO.setTitle(PartyMemberMessageConstant.PARTY_AUTH_TITLE);
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.PARTY_CERTIFY_APPLY_RES);
userMessageFormDTO.setTargetId(formDTO.getId());
//调用gov-org服务查询网格信息
CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO();
customerGridFormDTO.setGridId(formDTO.getGridId());
@ -729,7 +731,12 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService
msgDTO.setTitle(PartyMemberMessageConstant.PARTY_AUTH_TITLE);
msgDTO.setMessageContent(message);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.PARTY_CERTIFY_APPLY);
msgDTO.setTargetId(formDTO.getId());
msgList.add(msgDTO);
//微信订阅
WxSubscribeMessageFormDTO subscribeDTO = new WxSubscribeMessageFormDTO();
subscribeDTO.setClientType(AppClientConstant.APP_GOV);

17
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.PartyMemberConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.CustomerStaffGridDTO;
import com.epmet.dto.UserRoleDTO;
@ -211,7 +212,8 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl<ResiWarmhea
}
formDTO.setMessageText(messageContent);
//1:将申请记录存入热心居民申请表中
saveResiWarmApply(formDTO);
String applyId=saveResiWarmApply(formDTO);
formDTO.setApplyId(applyId);
//2:将最后一次操作行为更新到热心居民申请行为记录表中
resiWarmheartedVisitService.updateResiWarmVisit(formDTO);
//3:添加消息信息,给网格长发消息
@ -234,7 +236,7 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl<ResiWarmhea
* @param formDTO
* @return
*/
public void saveResiWarmApply(ResiWarmheartedSubmitFormDTO formDTO) {
public String saveResiWarmApply(ResiWarmheartedSubmitFormDTO formDTO) {
ResiWarmheartedApplyEntity entity = new ResiWarmheartedApplyEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setGridId(formDTO.getGridId());
@ -245,6 +247,7 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl<ResiWarmhea
entity.setReadFlag(ResiWarmheartedVisitConstant.UN_READ);
entity.setMessageText(formDTO.getMessageText());
baseDao.insert(entity);
return entity.getId();
}
/**
* 热心居民申请像网格长发送消息
@ -289,6 +292,11 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl<ResiWarmhea
}
msgDTO.setMessageContent(formDTO.getMessageText());
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
//21.09.10:记录消息类型和对应的业务id
msgDTO.setMessageType(UserMessageTypeConstant.WARMHEARTED_APPLY);
msgDTO.setTargetId(formDTO.getApplyId());
msgList.add(msgDTO);
//微信订阅
WxSubscribeMessageFormDTO subscribeDTO = new WxSubscribeMessageFormDTO();
@ -466,6 +474,11 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl<ResiWarmhea
userMessageFormDTO.setGridId(formDTO.getGridId());
userMessageFormDTO.setUserId(formDTO.getUserId());
userMessageFormDTO.setApp(AppClientConstant.APP_RESI);
//21.09.10:记录消息类型和对应的业务id
userMessageFormDTO.setMessageType(UserMessageTypeConstant.WARMHEARTED_APPLY_RES);
userMessageFormDTO.setTargetId(formDTO.getId());
if (StrConstant.SPECIAL_CUSTOMER.equals(formDTO.getCustomerId())) {
userMessageFormDTO.setTitle("您有一条组长申请消息");
} else {

2
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java

@ -65,7 +65,7 @@ public interface UserBadgeDao {
* @author zxc
* @date 2020/11/4 2:13 下午
*/
void insertUserBadgeCertificateRecord(UserBadgeCertificateRecordDTO userBadgeCertificateRecordDTO);
int insertUserBadgeCertificateRecord(UserBadgeCertificateRecordDTO userBadgeCertificateRecordDTO);
/**
* @Description 更新认证徽章记录最新

16
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

@ -12,6 +12,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.BadgeConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.constant.UserMessageTypeConstant;
import com.epmet.dao.*;
import com.epmet.dto.ResiUserBadgeDTO;
import com.epmet.dto.UserBadgeCertificateRecordDTO;
@ -53,8 +54,6 @@ public class UserBadgeServiceImpl implements UserBadgeService {
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient messageFeignClient;
@Autowired
private UserRoleDao userRoleDao;
@Autowired
private ResiUserBadgeDao resiUserBadgeDao;
@ -278,11 +277,13 @@ public class UserBadgeServiceImpl implements UserBadgeService {
form.setSurname(certificationAddFormDTO.getSurname());
log.info(JSON.toJSONString(form));
userBadgeDao.insertUserBadgeCertificateRecord(form);
//TODO 站内信发送
String badgeName = badgeDao.selectBadgeName(form.getCustomerId(), form.getBadgeId());
String msg = String.format(BadgeConstant.MESSAGE_CONTENT, userBaseInfoResultDTOS.get(NumConstant.ZERO).getDistrict().concat(userBaseInfoResultDTOS.get(NumConstant.ZERO).getRealName()), badgeName);
sendMessage(BadgeConstant.AUTH_TITLE,msg,form.getGridId(),form.getUserId(),form.getCustomerId());
// 记录待审核id,和消息类型
sendMessage(BadgeConstant.AUTH_TITLE,msg,form.getGridId(),form.getUserId(),form.getCustomerId(),
UserMessageTypeConstant.BADGE_AUTH_APPLY,
form.getId());
return new Result();
}
@ -443,7 +444,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
* @author zxc
* @date 2020/11/19 上午9:16
*/
public void sendMessage(String title,String msg,String gridId,String userId,String customerId){
public void sendMessage(String title,String msg,String gridId,String userId,String customerId,String messageType,String userBadgeCertificateRecordId){
//1.查询加入当前网格下的人员 customer_staff_grid
CommonGridIdFormDTO commonGridIdFormDTO = new CommonGridIdFormDTO();
commonGridIdFormDTO.setGridId(gridId);
@ -474,6 +475,11 @@ public class UserBadgeServiceImpl implements UserBadgeService {
msgObj.setReadFlag(ReadFlagConstant.UN_READ);
msgObj.setTitle(title);
msgObj.setUserId(to);
//21.09.10:记录消息类型和对应的业务id
msgObj.setMessageType(messageType);
msgObj.setTargetId(userBadgeCertificateRecordId);
msgList.add(msgObj);
//微信订阅
WxSubscribeMessageFormDTO subscribeDTO = new WxSubscribeMessageFormDTO();

7
epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml

@ -170,7 +170,10 @@
</select>
<!-- 徽章审核记录表插入 -->
<insert id="insertUserBadgeCertificateRecord">
<insert id="insertUserBadgeCertificateRecord" useGeneratedKeys="true" keyColumn="ID" keyProperty="id" parameterType="com.epmet.dto.UserBadgeCertificateRecordDTO">
<selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
select replace(uuid(),'-','') AS ID
</selectKey>
INSERT INTO user_badge_certificate_record (
ID,
CUSTOMER_ID,
@ -197,7 +200,7 @@
)
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{ID},
#{customerId},
#{gridId},
#{userId},

Loading…
Cancel
Save