diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 5efb12edb9..f078bd4bb6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/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, "您还未进入指定的签到范围~"), diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java index 2ac6af82a5..773291dfcc 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java +++ b/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 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(); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/CustomerDataManageFormDTO.java new file mode 100644 index 0000000000..e707ef6d6c --- /dev/null +++ b/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 idList; + //按起始时间还是结束时间查数据【start end】 + private String sourceType; + //数据类型【组织agency 网格grid】 + private String dataType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/CustomerDataManageResultDTO.java new file mode 100644 index 0000000000..e736309945 --- /dev/null +++ b/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 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; + } + + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/evaluationindex/ScreenAgencyOrGridListDTO.java new file mode 100644 index 0000000000..02c5c9cbc8 --- /dev/null +++ b/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 agencyGridList; + + @Data + public static class AgencyGrid { + //组织id + private String orgId; + //组织名称 + private String orgName; + } +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java index a56d769119..9e1929056d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java +++ b/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().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 operatedata(@RequestBody CustomerDataManageFormDTO formDTO) throws ParseException { + ValidatorUtils.validateEntity(formDTO, CustomerDataManageFormDTO.CustomerDataManageForm.class); + return new Result().ok(dataStatsService.operateExport(formDTO)); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index 9cf5a3a6e1..8db54dd03b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/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 selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO); + + /** + * @Description 直属组织或网格下注册用户数据 + * @author sun + */ + List regUserList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下群组数据 + * @author sun + */ + List groupList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下话题数据 + * @author sun + */ + List topicList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下议题数据 + * @author sun + */ + List issueList(CustomerDataManageFormDTO formDTO); + /** + * @Description 直属组织或网格下项目数据 + * @author sun + */ + List projectList(CustomerDataManageFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java index c7e68c410e..11ed072080 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java +++ b/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 getPatrolSumList(@Param("agencyFullIdList") List agencyFullIdList, @Param("startDateId") String startDateId, @Param("endDateId") String endDateId); + + /** + * @Description 直属组织或网格下巡查数据 + * @author sun + */ + List patrolList(CustomerDataManageFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java index 197b4e05e6..138ff3d449 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java +++ b/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 getSubAgencyListByAgency(@Param("agencyId") String agencyId, @Param("areaCode") String areaCode, @Param("list") List list); + /** + * @Description 根据组织ID查询组织名 + * @Param agencyId + * @author zxc + * @date 2021/9/10 3:54 下午 + */ + String selectAgencyNameByAgencyId(@Param("agencyId")String agencyId); + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/CustomerDataManageExcel.java new file mode 100644 index 0000000000..821a11426f --- /dev/null +++ b/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; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index d4756648a0..36fa24c7b2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/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 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; + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 1002b8c34a..59be2dfd15 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/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 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 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 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 userEnd = dataStatsDao.regUserList(formDTO); + HashMap uEndMap = new HashMap<>(); + userEnd.stream().forEach(u->uEndMap.put(u.getOrgId(),u)); + List groupEnd = dataStatsDao.groupList(formDTO); + HashMap gEndMap = new HashMap<>(); + groupEnd.stream().forEach(u->gEndMap.put(u.getOrgId(),u)); + List topicEnd = dataStatsDao.topicList(formDTO); + HashMap tEndMap = new HashMap<>(); + topicEnd.stream().forEach(u->tEndMap.put(u.getOrgId(),u)); + List issueEnd = dataStatsDao.issueList(formDTO); + HashMap iEndMap = new HashMap<>(); + issueEnd.stream().forEach(u->iEndMap.put(u.getOrgId(),u)); + List projectEnd = dataStatsDao.projectList(formDTO); + HashMap pEndMap = new HashMap<>(); + projectEnd.stream().forEach(u->pEndMap.put(u.getOrgId(),u)); + //巡查数据不区分区间差值,只计算累计值,人员做去重处理且是有巡查记录的人员 + List patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO); + + //4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据 + HashMap uStartMap = new HashMap<>(); + HashMap gStartMap = new HashMap<>(); + HashMap tStartMap = new HashMap<>(); + HashMap iStartMap = new HashMap<>(); + HashMap pStartMap = new HashMap<>(); + if ("Interval".equals(formDTO.getType())) { + formDTO.setSourceType("start"); + List userStart = dataStatsDao.regUserList(formDTO); + userStart.stream().forEach(u->uStartMap.put(u.getOrgId(),u)); + List groupStart = dataStatsDao.groupList(formDTO); + groupStart.stream().forEach(u->gStartMap.put(u.getOrgId(),u)); + List topicStart = dataStatsDao.topicList(formDTO); + topicStart.stream().forEach(u->tStartMap.put(u.getOrgId(),u)); + List issueStart = dataStatsDao.issueList(formDTO); + issueStart.stream().forEach(u->iStartMap.put(u.getOrgId(),u)); + List 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() { + @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 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; + } + + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java index e8ec143b3c..ce49c18f73 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java +++ b/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 getPatrolSumList(List agencyList, String startDateId, String endDateId); + /** + * @Description 直属组织或网格下巡查数据 + * @author sun + */ + List patrolList(CustomerDataManageFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 92a02290bd..649ab17806 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/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(); diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java index aad90034f3..d24dcbe10c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java +++ b/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 patrolList(CustomerDataManageFormDTO formDTO) { + return baseDao.patrolList(formDTO); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java index 43be38a84f..67468e32de 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java +++ b/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 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); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java index f8c7eb301a..ea95c436a8 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java +++ b/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 agencyGridList = new ArrayList<>(); + //1.查询组织信息 + ScreenCustomerAgencyDTO dto = evaluationIndexDao.getByAgencyId(agencyId); + if (dto == null) { + log.error(String.format("组织信息不存在,组织Id->%s"), agencyId); + return new ScreenAgencyOrGridListDTO(); + } + //2.根据组织级别判断查询直属组织或网格列表 + List agencyList = new ArrayList<>(); + List gridList = new ArrayList<>(); + List finalAgencyGridList = agencyGridList; + if (!"community".equals(dto.getLevel())) { + //2-1.直属下级组织列表 + //2.判断客户是否存在子客户 + List 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; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 9f99415f2b..0850b865c5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -797,4 +797,205 @@ GROUP BY staff_id + + + + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml index 5642d17f40..5c9bc40337 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml @@ -15,4 +15,45 @@ + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml index 7ad70627dc..afa7e56c2d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml @@ -175,4 +175,11 @@ + + + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java index 15f6ee311f..b552ee29bc 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java +++ b/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(); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java index 735c82dda1..2a67649019 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActUserServiceImpl.java +++ b/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("审核成功,已成功发送站内信"); diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java index 1dcdce9821..adcea05711 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java +++ b/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"; } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java index d44c80ae47..2a86b7a7d3 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java +++ b/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; } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/ReceiverGroupCommonFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/ReceiverGroupCommonFormDTO.java new file mode 100644 index 0000000000..afcf24e16e --- /dev/null +++ b/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 staffIdList; + + /** + * 按架构选择的,组织或者网格或者部门的集合 + */ + private Set orgList; + +} diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java index e00bb88342..309a1222cc 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java +++ b/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; } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReceiverGroupCommonResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReceiverGroupCommonResultDTO.java new file mode 100644 index 0000000000..5d072c938d --- /dev/null +++ b/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; + +} diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/StaffMessageResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/StaffMessageResultDTO.java index 43a31a5e00..0e29e1175f 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/StaffMessageResultDTO.java +++ b/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; } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java index 25b0414b59..81bd630e91 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java +++ b/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().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 orgList = form.getOrgList(); + List 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(); + } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java index 601cbb4ab0..277bb43a64 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java +++ b/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 { * @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 orgList, List staffIdList); } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java index 292cf37b2d..1b15da4495 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java +++ b/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 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 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 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 query = new LambdaQueryWrapper(); + query.eq(InfoGroupReceiversEntity::getInfoReceiverGroupId, receiverGroupId); + infoGroupReceiversDao.delete(query); + } + @Override + @Transactional + public void addInfoGroupMember(String receiverGroupId, String operatorId, Set orgList, List 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 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 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 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; + } } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml index ee1f62a8ef..00797f713e 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/logback-spring.xml @@ -139,7 +139,7 @@ - + diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml index fa4266f1e7..7aca569542 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml +++ b/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 diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java index 3e5dc04f11..fde907f861 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java +++ b/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; + } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java index 641d5fbe9f..b62546ef20 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java +++ b/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; diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GridPointRankResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GridPointRankResultDTO.java new file mode 100644 index 0000000000..2ef1819bcc --- /dev/null +++ b/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; +} diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java index 2f06640b73..127686b68c 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java +++ b/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; } diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointRankResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointRankResultDTO.java new file mode 100644 index 0000000000..484c8f8055 --- /dev/null +++ b/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; +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java index d2901df068..947741b69d 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java +++ b/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> listGroupPointRandingInGridScope(@RequestBody GroupPointFormDTO formDTO) { + public Result> 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 page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.GRID, gridId,pageNo, pageSize); - return new Result>().ok(page); + List page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.GRID, gridId,pageNo, pageSize, loginUser.getUserId()); + return new Result>().ok(page); } /** @@ -146,14 +146,14 @@ public class GroupPointController { * @date 2021.09.08 09:18:37 */ @PostMapping("grouppointranking/customerscope") - public Result> listGroupPointRandingInCustomerScope(@RequestBody GroupPointFormDTO formDTO) { + public Result> 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 page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.CUSTOMER, customerId, pageNo, pageSize); - return new Result>().ok(page); + List page = bizPointTotalDetailService.listGroupPointRandingInPercificScope(SearchScopeTypeEnum.CUSTOMER, customerId, pageNo, pageSize, loginUser.getUserId()); + return new Result>().ok(page); } /** @@ -165,9 +165,9 @@ public class GroupPointController { * @date 2021.09.08 13:31:09 */ @PostMapping("grouppointranking/mygroups") - public Result> listMyGroupPointRanding(@RequestBody GroupPointFormDTO formDTO) { + public Result> 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 list = bizPointTotalDetailService.listMyGroupPointRanding(userId, gridId); return new Result>().ok(list); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java index 9f5ee8acf8..795f557449 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java +++ b/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>().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 myPointRank(@LoginUser TokenDto tokenDto, @RequestBody GroupPointFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.PointRank.class); + return new Result().ok(userPointStatisticalDailyService.myPointRank(tokenDto, formDTO)); + } + + /** + * @Description 网格当月积分在组织和客户内排名 + * @Param tokenDto + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2021/9/10 14:13 + */ + @PostMapping("gridpointrank") + public Result gridPointRank(@LoginUser TokenDto tokenDto, @RequestBody GroupPointFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GroupPointFormDTO.PointRank.class); + return new Result().ok(userPointStatisticalDailyService.gridPointRank(tokenDto, formDTO)); + } + + } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointStatisticalDailyDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointStatisticalDailyDao.java index 2ae8bb24f5..2966e00f75 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointStatisticalDailyDao.java +++ b/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 selectListGridPartyRankByMonth(ResiAroundPartyPointRankFormDTO formDTO); List selectListGridPartyNewRankByMonth(ResiAroundPartyPointRankFormDTO formDTO); + + List selectUserPointByMonth(@Param("customerId") String customerId, @Param("agencyId") String agencyId, + @Param("gridId") String gridId); + + List selectGridPointByMonth(@Param("customerId") String customerId, @Param("agencyId") String agencyId); } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java index 94204eb3ed..a13fa70708 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java @@ -148,7 +148,7 @@ public interface BizPointTotalDetailService extends BaseService listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize); + List listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize, String currentUserId); /** * @description 【小组排名】- 列出我所在的小组的积分排名 diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointStatisticalDailyService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointStatisticalDailyService.java index 1a82b5ca14..a563768be5 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointStatisticalDailyService.java +++ b/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 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); } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java index 037779147b..95d4bd33df 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java +++ b/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 listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, Integer pageNo, Integer pageSize) { + public List listGroupPointRandingInPercificScope(SearchScopeTypeEnum searchScopeType, String searchScopeId, + Integer pageNo, Integer pageSize, + String currentUserId) { // 1.查询有积分的小组得分排名 PageInfo entityPageInfo = PageHelper.startPage(pageNo, pageSize).doSelectPageInfo(() -> { @@ -283,7 +285,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl groupIds = groupList.stream().map(g -> g.getObjectId()).collect(Collectors.toList()); // 2.将列表填充基本信息并且转换为dto - List rankingInfoDTOs = convertGroupRankingInfoEntity2DTOs(groupIds, groupList); + List rankingInfoDTOs = convertGroupRankingInfoEntity2DTOs(groupIds, groupList, currentUserId); Page page = new Page(pageNo, pageSize); @@ -304,7 +306,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl 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 pageData = new PageData<>(rankingInfoDTOs, entityPageInfo.getTotal()); - return pageData; + return rankingInfoDTOs; } /** @@ -337,7 +338,8 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl fillGroupPageGap(List existingGroupIds, SearchScopeTypeEnum searchScopeType, String searchScopeObjectId, Integer startRow, Integer rowCount) { + private List fillGroupPageGap(List 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 convertGroupRankingInfoEntity2DTOs(List groupIds, List groupList) { + private List convertGroupRankingInfoEntity2DTOs(List groupIds, List groupList, String currentUserId) { if (CollectionUtils.isEmpty(groupIds)) { return new ArrayList<>(); } @@ -395,6 +398,7 @@ public class BizPointTotalDetailServiceImpl extends BaseServiceImpl userIds = new ArrayList<>(); + userIds.add(tokenDto.getUserId()); + //获取我的个人信息 + Result> 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 list = getUserPointList(tokenDto.getCustomerId(), null, null); + result.setCustomerRank(getRank(list, tokenDto.getUserId())); + //获取网格用户积分 + List 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 gridInfoResult = govOrgOpenFeignClient.queryGridInfo(formDTO.getGridId()); + if (!gridInfoResult.success()) { + throw new RenException(gridInfoResult.getCode()); + } + result.setGridName(gridInfoResult.getData().getGridName()); + String agencyId = gridInfoResult.getData().getParentAgencyId(); + //获取客户下用户积分 + List list = getGridPointList(tokenDto.getCustomerId(), null); + result.setCustomerRank(getGridRank(list, formDTO.getGridId())); + List agencyPointList = getGridPointList(tokenDto.getCustomerId(), agencyId); + result.setAgencyRank(getGridRank(agencyPointList, formDTO.getGridId())); + return result; + } + /** * 获取认证通过的党员的 用户id * @@ -372,4 +434,84 @@ public class UserPointStatisticalDailyServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2021/9/10 15:04 + */ + private List getUserPointList(String customerId, String agencyId, String gridId) { + return baseDao.selectUserPointByMonth(customerId, agencyId, gridId); + } + + private List getGridPointList(String customerId, String agencyId) { + return baseDao.selectGridPointByMonth(customerId, agencyId); + } + + private Boolean havePoint(List list, String userId) { + Map map = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getUserId, BizPointUserTotalDetailDTO::getTotalPoint)); + return null != map.get(userId); + } + + + private String getGridRank(List list, String gridId) { + if (CollectionUtils.isEmpty(list)) { + return NumConstant.ONE_STR; + } + //如果当月网格没有积分变动,则积分为0 + Map 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 rankMap = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getGridId, BizPointUserTotalDetailDTO::getRank)); + return rankMap.get(gridId); + } + + private String getRank(List 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 map = list.stream().collect(Collectors.toMap(BizPointUserTotalDetailDTO::getUserId, BizPointUserTotalDetailDTO::getRank)); + return map.get(userId); + } } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml index 49179803c7..6bd5f6b76a 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointStatisticalDailyDao.xml +++ b/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} + + + diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index 1a131bb685..7ca7b0551c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/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 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 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 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()); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GetAgencyListFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GetAgencyListFormDTO.java new file mode 100644 index 0000000000..0d97988fd7 --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java index 11d5e13542..c3937127ba 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java +++ b/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 getAgencyList(@LoginUser TokenDto tokenDTO) { - return new Result().ok(customerAgencyService.getAgencyList(tokenDTO)); + public Result getAgencyList(@LoginUser TokenDto tokenDTO,@RequestBody GetAgencyListFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getCustomerId())){ + formDTO.setCustomerId(tokenDTO.getCustomerId()); + } + return new Result().ok(customerAgencyService.getAgencyList(formDTO)); } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index c1a1915a72..b13bae23e7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -254,5 +254,5 @@ public interface CustomerAgencyService extends BaseService * @Author zhaoqifeng * @Date 2021/9/8 15:21 */ - AgencyTreeResultDTO getAgencyList(TokenDto tokenDTO); + AgencyTreeResultDTO getAgencyList(GetAgencyListFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index 4f1de1ae91..acacd98237 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/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 - @@ -526,7 +526,7 @@ AND PID= #{pid} ORDER BY ID - select ID AS agencyId, ORGANIZATION_NAME AS agencyName, diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java index f73740fd69..b082fa1813 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java +++ b/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 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 implements ProjectTraceS * @Description 项目立项给勾选的工作人员推送站内信消息 * @author sun */ - private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO) { + private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO,String projectId) { List msgList = new ArrayList<>(); //1.创建项目工作人员消息对象 String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle()); @@ -581,6 +578,11 @@ public class ProjectTraceServiceImpl 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 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 implements ProjectTraceS * @Description 项目立项给勾选的工作人员推送站内信消息 * @author yinzuomei */ - private Result shiftProjectMessage(List staffList,String customerId,String title) { + private Result shiftProjectMessage(List staffList,String customerId,String title,String projectId) { List msgList = new ArrayList<>(); //1.创建项目工作人员消息对象 String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, title); @@ -935,6 +937,11 @@ public class ProjectTraceServiceImpl 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()); } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GuideListFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GuideListFormDTO.java index d4ff3bdfcb..d8edcf1308 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/GuideListFormDTO.java +++ b/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; /** * 标题 */ diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GuideDetailResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GuideDetailResultDTO.java index 2987b227a0..88844f301c 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GuideDetailResultDTO.java +++ b/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; /** * 分类名 */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideCollectionController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideCollectionController.java index 08f94a4126..5c6ffe5019 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideCollectionController.java +++ b/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(); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java index 602916807e..88d8115216 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideController.java @@ -164,9 +164,17 @@ public class GuideController { public Result 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().ok(result); } + @PostMapping("collectionlist") + public Result> collectionList(@LoginUser TokenDto tokenDto, @RequestBody PageFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class); + PageData page = guideService.collectionList(tokenDto, formDTO); + return new Result>().ok(page); + } + + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideModuleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideModuleController.java index c1823c7684..dcaad21808 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/GuideModuleController.java +++ b/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> getModuleList(@LoginUser TokenDto tokenDto) { + return new Result>().ok(guideModuleService.getModuleList(tokenDto.getCustomerId())); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/GuideDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/GuideDao.java index ec78fb5803..18644f0249 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/GuideDao.java +++ b/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 { /** * 指南详情 * + * @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 getCollectionList(TokenDto tokenDto); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideCollectionService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideCollectionService.java index 6e8266c556..bd2e97c482 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideCollectionService.java +++ b/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 { * @Date 2021/9/8 10:13 */ List getByGuideId(String customerId, String guideId); + + /** + * @Description 获取模块列表 + * @Param customerId + * @Return {@link List< ModuleDTO>} + * @Author zhaoqifeng + * @Date 2021/9/9 14:46 + */ + List getModuleList(String customerId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideService.java index 2ae50707ec..a2493a88ac 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/GuideService.java +++ b/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 { /** * 指南详情 * + * @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 collectionList(TokenDto tokenDto, PageFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index 62274c346b..1d95335423 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/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 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 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); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideModuleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideModuleServiceImpl.java index 8a0ef25a72..0ccf158036 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideModuleServiceImpl.java +++ b/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 implements GuideModuleService { + @Resource + private GuideModuleDictService guideModuleDictService; @Override public PageData page(Map params) { @@ -129,4 +131,17 @@ public class GuideModuleServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2021/9/9 14:46 + */ + @Override + public List getModuleList(String customerId) { + return guideModuleDictService.getModuleList(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java index ac643590eb..d93f21b2af 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/GuideServiceImpl.java +++ b/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 imp private GuideAttachmentService guideAttachmentService; @Resource private GuideExternalLinkService guideExternalLinkService; + @Resource + private GuideCollectionService guideCollectionService; @Override public PageData page(Map params) { @@ -113,7 +114,6 @@ public class GuideServiceImpl extends BaseServiceImpl 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 imp @Override public PageData guideList(TokenDto tokenDto, GuideListFormDTO formDTO) { PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + formDTO.setCustomerId(tokenDto.getCustomerId()); List 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 pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); } @@ -172,7 +175,7 @@ public class GuideServiceImpl extends BaseServiceImpl 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 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 guideModuleList = formDTO.getModuleList().stream().map(item -> { @@ -370,16 +373,51 @@ public class GuideServiceImpl extends BaseServiceImpl 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 collectionList(TokenDto tokenDto, PageFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List 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 pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.7__create_guide_table.sql b/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.7__create_guide_table.sql new file mode 100644 index 0000000000..af177ee0d7 --- /dev/null +++ b/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='指南模块默认字典表'; + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.8__insert_default_guidecategory.sql b/epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.8__insert_default_guidecategory.sql new file mode 100644 index 0000000000..8a95feaad8 --- /dev/null +++ b/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'); \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/GuideDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/GuideDao.xml index 82a784dbe9..a850719121 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/GuideDao.xml +++ b/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} AND g.PIDS LIKE CONCAT( '%', #{agencyId}, '%' ) AND g.TITLE LIKE CONCAT( '%', #{guideTitle}, '%' ) - - AND g.CATEGORY_ID = #{categoryId} + + AND g.CATEGORY_CODE = #{categoryCode} + ORDER BY g.CREATED_TIME DESC + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java index fd585419a2..7d08176f31 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java +++ b/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; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActCommentServiceImpl.java index a117db2b23..a902a78dc6 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/ActCommentServiceImpl.java +++ b/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 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 imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList()); + noticeCommentService.safetyCheck(new ArrayList<>(), imageList); + } //3、插入记录 ActCommentEntity actCommentEntity = new ActCommentEntity(); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java index 41e77cee6a..62ea68fdca 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java +++ b/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 lineChart = lineChart(); + List lineChart = lineChart(formDTO.getYearId()); if (!CollectionUtils.isEmpty(chartResult)){ Map> groupByMonth = chartResult.stream().collect(Collectors.groupingBy(OrganizationalLifeLineChartDTO::getMonth)); groupByMonth.forEach((month,list) -> { @@ -929,17 +943,19 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl lineChart(){ + public List lineChart(String yearId){ + String year = yearId.substring(NumConstant.ZERO,NumConstant.FOUR); List 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); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 0cc90c660b..d8f9dc4b16 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/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 groupEntities = baseDao.selectList(query); List 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 sortFieldFun = null; if (GroupFormDTO.SortTypeEnum.CREATE_TIME.getSortField().equals(sortType)) { sortFieldFun = ResiGroupEntity::getCreatedTime; @@ -1825,6 +1843,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl 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 imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList()); - safetyCheck(new ArrayList<>(), imageList); + if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getImageList())){ + List imageList = formDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList()); + safetyCheck(new ArrayList<>(), imageList); + } //2.判断当前用户是否被禁言、移除、非本组成员 NoticeDTO notice = noticeService.get(formDTO.getNoticeId()); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java index 49f240ca3c..afe0ce523d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/notice/service/impl/NoticeServiceImpl.java +++ b/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 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 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); } }); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java index f51dddb12b..22469ae714 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java +++ b/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 imageList = resiCommentFormDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList()); - noticeCommentService.safetyCheck(new ArrayList<>(), imageList); + if(CollectionUtils.isNotEmpty(resiCommentFormDTO.getImageList())){ + List imageList = resiCommentFormDTO.getImageList().stream().map(NoticeFileDTO::getUrl).collect(Collectors.toList()); + noticeCommentService.safetyCheck(new ArrayList<>(), imageList); + } //1.判断当前用户是否被禁言 ResiTopicDTO topic = resiTopicService.get(resiCommentFormDTO.getTopicId()); diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml index a370c9e41c..6f7477cf70 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml +++ b/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 diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/warmhearted/form/ResiWarmheartedSubmitFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/warmhearted/form/ResiWarmheartedSubmitFormDTO.java index 38497917d8..61f1c0f8f5 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/warmhearted/form/ResiWarmheartedSubmitFormDTO.java +++ b/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; + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java index 1610de67c6..502a520dc3 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java +++ b/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); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java index 549a5ce8af..553f20bae2 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java +++ b/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 - + + + select replace(uuid(),'-','') AS ID + INSERT INTO user_badge_certificate_record ( ID, CUSTOMER_ID, @@ -197,7 +200,7 @@ ) VALUES ( - REPLACE ( UUID(), '-', '' ), + #{ID}, #{customerId}, #{gridId}, #{userId},