Browse Source

Merge remote-tracking branch 'origin/dev_guidance' into develop

master
zxc 4 years ago
parent
commit
dbe78557be
  1. 17
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/ActConstant.java
  2. 44
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/OrganizationalLifeLineChartDTO.java
  3. 22
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/OrganizationalLifeFormDTO.java
  4. 47
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/OrganizationalLifeResultDTO.java
  5. 4
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AllGroupListResultDTO.java
  6. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/RecommendGroupResultDTO.java
  7. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/RecommendedListResultDTO.java
  8. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java
  9. 39
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/GroupActInfoDao.java
  10. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java
  11. 84
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/impl/GroupActInfoServiceImpl.java
  12. 59
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/act/GroupActInfoDao.xml
  13. 9
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

17
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/ActConstant.java

@ -0,0 +1,17 @@
package com.epmet.resi.group.constant;
/**
* @Author zxc
* @DateTime 2021/9/3 4:39 下午
* @DESC
*/
public interface ActConstant {
/**
* 类型组织活动次数orgAct应参加活动次数joinAct活动签到次数signAct
*/
String ORG_ACT = "orgAct";
String JOIN_ACT = "joinAct";
String SIGN_ACT = "signAct";
}

44
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/OrganizationalLifeLineChartDTO.java

@ -0,0 +1,44 @@
package com.epmet.resi.group.dto.act;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/9/3 3:35 下午
* @DESC
*/
@Data
public class OrganizationalLifeLineChartDTO implements Serializable {
private static final long serialVersionUID = -4224453421929580053L;
/**
* 月份
*/
private String month;
/**
* 组织活动次数
*/
private Integer organizationalActCount;
/**
* 应参加活动次数
*/
private Integer shouldJoinActCount;
/**
* 活动签到次数
*/
private Integer actSignCount;
public OrganizationalLifeLineChartDTO() {
this.month = "";
this.organizationalActCount = NumConstant.ZERO;
this.shouldJoinActCount = NumConstant.ZERO;
this.actSignCount = NumConstant.ZERO;
}
}

22
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/form/OrganizationalLifeFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.resi.group.dto.act.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/9/3 2:52 下午
* @DESC
*/
@Data
public class OrganizationalLifeFormDTO implements Serializable {
private static final long serialVersionUID = -8611679719504666547L;
private String yearId;
private String userId;
private String customerId;
}

47
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/act/result/OrganizationalLifeResultDTO.java

@ -0,0 +1,47 @@
package com.epmet.resi.group.dto.act.result;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.resi.group.dto.act.OrganizationalLifeLineChartDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/9/3 2:35 下午
* @DESC
*/
@Data
public class OrganizationalLifeResultDTO implements Serializable {
private static final long serialVersionUID = 6991638491754890967L;
/**
* 组织活动次数
*/
private Integer organizationalActCount;
/**
* 应参加活动次数
*/
private Integer shouldJoinActCount;
/**
* 活动签到次数
*/
private Integer actSignCount;
/**
* 折线图
*/
private List<OrganizationalLifeLineChartDTO> lineChart;
public OrganizationalLifeResultDTO() {
this.organizationalActCount = NumConstant.ZERO;
this.shouldJoinActCount = NumConstant.ZERO;
this.actSignCount = NumConstant.ZERO;
this.lineChart = new ArrayList<>();
}
}

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

@ -47,4 +47,8 @@ public class AllGroupListResultDTO implements Serializable {
*/
private String groupType;
/**
* 群介绍
*/
private String groupIntroduction = "";
}

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/RecommendGroupResultDTO.java

@ -48,4 +48,9 @@ public class RecommendGroupResultDTO implements Serializable {
*/
private String groupType;
/**
* 群介绍
*/
private String groupIntroduction = "";
}

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/RecommendedListResultDTO.java

@ -37,4 +37,9 @@ public class RecommendedListResultDTO implements Serializable {
* 组长名
*/
private String leaderName;
/**
* 群介绍
*/
private String groupIntroduction = "";
}

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/controller/GroupActInfoController.java

@ -27,6 +27,7 @@ import com.epmet.resi.group.dto.act.GroupActIdDTO;
import com.epmet.resi.group.dto.act.form.*;
import com.epmet.resi.group.dto.act.result.ActDetailByLinkResultDTO;
import com.epmet.resi.group.dto.act.result.ActDetailResultDTO;
import com.epmet.resi.group.dto.act.result.OrganizationalLifeResultDTO;
import com.epmet.resi.group.dto.notice.result.NoticeReadListResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -153,4 +154,16 @@ public class GroupActInfoController {
return new Result();
}
/**
* @Description 组织生活
* @Param formDTO
* @author zxc
* @date 2021/9/3 2:57 下午
*/
@PostMapping("organizationallife")
public Result<OrganizationalLifeResultDTO> organizationalLife(@LoginUser TokenDto tokenDto, @RequestBody OrganizationalLifeFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
return new Result<OrganizationalLifeResultDTO>().ok(groupActInfoService.organizationalLife(formDTO));
}
}

39
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/dao/GroupActInfoDao.java

@ -19,7 +19,13 @@ package com.epmet.modules.act.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.act.entity.GroupActInfoEntity;
import com.epmet.resi.group.dto.act.OrganizationalLifeLineChartDTO;
import com.epmet.resi.group.dto.act.form.OrganizationalLifeFormDTO;
import com.epmet.resi.group.dto.act.result.OrganizationalLifeResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 组织活动信息
@ -29,5 +35,36 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface GroupActInfoDao extends BaseDao<GroupActInfoEntity> {
/**
* @Description 根据人查询支部小组小组审核状态为 approved 小组类型为 branch GROUP_LEADER_FLAG leader 人员状态为 approved
* @Param userId
* @Param leaderFlag 是否是组长标志
* @author zxc
* @date 2021/9/3 3:48 下午
*/
List<String> selectBranchGroupByUserId(@Param("userId")String userId,@Param("leaderFlag")Boolean leaderFlag);
/**
* @Description 按照yearId查询组织生活组织活动次数应参加活动次数活动签到次数
* @Param formDTO
* @Param groupIds
* @Param leaderFlag 是否是组长标志
* @author zxc
* @date 2021/9/3 4:12 下午
*/
OrganizationalLifeResultDTO selectOrgLife(@Param("userId")String userId, @Param("groupIds")List<String> groupIds,
@Param("leaderFlag")Boolean leaderFlag,@Param("yearId")String yearId);
/**
* @Description 组织生活折线图
* @Param leaderGroupIds
* @Param memberGroupIds
* @Param yearId
* @author zxc
* @date 2021/9/6 10:24 上午
*/
List<OrganizationalLifeLineChartDTO> selectLineChart(@Param("groupIds") List<String> groupId,@Param("leaderFlag")Boolean leaderFlag,
@Param("yearId")String yearId);
}

10
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/act/service/GroupActInfoService.java

@ -24,6 +24,7 @@ import com.epmet.resi.group.dto.act.GroupActInfoDTO;
import com.epmet.resi.group.dto.act.form.*;
import com.epmet.resi.group.dto.act.result.ActDetailByLinkResultDTO;
import com.epmet.resi.group.dto.act.result.ActDetailResultDTO;
import com.epmet.resi.group.dto.act.result.OrganizationalLifeResultDTO;
import com.epmet.resi.group.dto.notice.result.NoticeReadListResultDTO;
/**
@ -89,4 +90,13 @@ public interface GroupActInfoService extends BaseService<GroupActInfoEntity> {
* @return
*/
void closeAct(CloseGroupActFormDTO formDTO);
/**
* @Description 组织生活
* @Param formDTO
* @author zxc
* @date 2021/9/3 2:57 下午
*/
OrganizationalLifeResultDTO organizationalLife(OrganizationalLifeFormDTO formDTO);
}

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

@ -58,9 +58,11 @@ import com.epmet.modules.invitation.service.InvitationRecordService;
import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.resi.group.dto.act.GroupActIdDTO;
import com.epmet.resi.group.dto.act.GroupActInfoDTO;
import com.epmet.resi.group.dto.act.OrganizationalLifeLineChartDTO;
import com.epmet.resi.group.dto.act.form.*;
import com.epmet.resi.group.dto.act.result.ActDetailByLinkResultDTO;
import com.epmet.resi.group.dto.act.result.ActDetailResultDTO;
import com.epmet.resi.group.dto.act.result.OrganizationalLifeResultDTO;
import com.epmet.resi.group.dto.group.GroupMessageDTO;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.invitation.InvitationRecordDTO;
@ -75,6 +77,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -862,4 +865,85 @@ public class GroupActInfoServiceImpl extends BaseServiceImpl<GroupActInfoDao, Gr
//6、插入或更新
saveGroupMessage(actInfoEntity);
}
/**
* @Description 组织生活
* @Param formDTO
* @author zxc
* @date 2021/9/3 2:57 下午
*/
@Override
public OrganizationalLifeResultDTO organizationalLife(OrganizationalLifeFormDTO formDTO) {
OrganizationalLifeResultDTO result = new OrganizationalLifeResultDTO();
if (StringUtils.isBlank(formDTO.getYearId())){
formDTO.setYearId(String.valueOf(LocalDate.now().getYear()));
}
// 小组审核状态为 approved 的,小组类型为 branch 的,人员状态为 approved 的 小组ID
// 查询此人是组长,客户下所有支部小组
List<String> leaderGroupIds = baseDao.selectBranchGroupByUserId(formDTO.getUserId(),true);
List<OrganizationalLifeLineChartDTO> chartResult = new ArrayList<>();
if (!CollectionUtils.isEmpty(leaderGroupIds)){
// 按照yearId查询组织生活【我创建的活动】,组织活动次数、应参加活动次数、活动签到次数
OrganizationalLifeResultDTO dto = baseDao.selectOrgLife(formDTO.getUserId(), leaderGroupIds,true,formDTO.getYearId());
result.setOrganizationalActCount(dto.getOrganizationalActCount());
result.setActSignCount(dto.getActSignCount());
// 当此人是组长,创建了几个活动就应参加几个活动
result.setShouldJoinActCount(dto.getOrganizationalActCount());
List<OrganizationalLifeLineChartDTO> chartDTOS = baseDao.selectLineChart(leaderGroupIds, true, formDTO.getYearId());
if (!CollectionUtils.isEmpty(chartDTOS)){
chartResult.addAll(chartDTOS);
}
}
// 查询此人不是组长,客户下所有支部小组
List<String> memberGroupIds = baseDao.selectBranchGroupByUserId(formDTO.getUserId(),false);
if (!CollectionUtils.isEmpty(memberGroupIds)){
// 按照yearId查询组织生活【我所在支部组的活动】,组织活动次数、应参加活动次数、活动签到次数
OrganizationalLifeResultDTO dto = baseDao.selectOrgLife(formDTO.getUserId(), memberGroupIds,false, formDTO.getYearId());
result.setActSignCount(result.getActSignCount() + dto.getActSignCount());
// 当此人不是组长,支部小组下有几个活动,应参加活动就是几
result.setShouldJoinActCount(result.getShouldJoinActCount() + dto.getOrganizationalActCount());
// 此人不是组长,我组织的活动这就不加了
List<OrganizationalLifeLineChartDTO> chartDTOS = baseDao.selectLineChart(memberGroupIds, false, formDTO.getYearId());
if (!CollectionUtils.isEmpty(chartDTOS)){
chartResult.addAll(chartDTOS);
}
}
// 折线图组装
List<OrganizationalLifeLineChartDTO> lineChart = lineChart();
if (!CollectionUtils.isEmpty(chartResult)){
Map<String, List<OrganizationalLifeLineChartDTO>> groupByMonth = chartResult.stream().collect(Collectors.groupingBy(OrganizationalLifeLineChartDTO::getMonth));
groupByMonth.forEach((month,list) -> {
lineChart.forEach(l -> {
if (month.equals(l.getMonth())){
l.setOrganizationalActCount(list.stream().collect(Collectors.summingInt(OrganizationalLifeLineChartDTO::getOrganizationalActCount)));
l.setShouldJoinActCount(list.stream().collect(Collectors.summingInt(OrganizationalLifeLineChartDTO::getShouldJoinActCount)));
l.setActSignCount(list.stream().collect(Collectors.summingInt(OrganizationalLifeLineChartDTO::getActSignCount)));
}
});
});
}
result.setLineChart(lineChart);
return result;
}
/**
* @Description 折线图构造
* @author zxc
* @date 2021/9/6 10:55 上午
*/
public List<OrganizationalLifeLineChartDTO> lineChart(){
List<OrganizationalLifeLineChartDTO> lineChart = new ArrayList<>();
for (int i = NumConstant.ONE; i <= NumConstant.TWELVE; i++) {
OrganizationalLifeLineChartDTO dto = new OrganizationalLifeLineChartDTO();
if (i < NumConstant.TEN){
dto.setMonth(NumConstant.ZERO + String.valueOf(i) + "月");
}else {
dto.setMonth(String.valueOf(i) + "月");
}
lineChart.add(dto);
}
return lineChart;
}
}

59
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/act/GroupActInfoDao.xml

@ -3,6 +3,65 @@
<mapper namespace="com.epmet.modules.act.dao.GroupActInfoDao">
<!-- 根据人查询支部小组 -->
<select id="selectBranchGroupByUserId" resultType="java.lang.String">
SELECT
rg.ID
FROM resi_group rg
INNER JOIN resi_group_member rgm ON (rgm.RESI_GROUP_ID = rg.ID AND rgm.DEL_FLAG = '0')
WHERE rg.DEL_FLAG = '0'
AND rg.STATE = 'approved'
AND rg.GROUP_TYPE = 'branch'
<if test="leaderFlag == true">
AND rgm.GROUP_LEADER_FLAG = 'leader'
</if>
<if test="leaderFlag == false">
AND rgm.GROUP_LEADER_FLAG != 'leader'
</if>
AND rgm.`STATUS` = 'approved'
AND rgm.CUSTOMER_USER_ID = #{userId}
</select>
<!-- 按照yearId查询组织生活 -->
<select id="selectOrgLife" resultType="com.epmet.resi.group.dto.act.result.OrganizationalLifeResultDTO">
SELECT
count(ID) AS organizationalActCount,
IFNULL(sum(SIGNED_IN_NUM),0) actSignCount
FROM group_act_info
WHERE DEL_FLAG = '0'
<if test="leaderFlag == true">
AND PUBLISH_USER_ID = #{userId}
</if>
AND `STATUS` != 'canceled'
AND GROUP_ID IN (
<foreach collection="groupIds" item="groupId" separator=",">
#{groupId}
</foreach>
)
AND DATE_FORMAT(CREATED_TIME,'%Y') = #{yearId}
</select>
<!-- 组织生活折线图 -->
<select id="selectLineChart" resultType="com.epmet.resi.group.dto.act.OrganizationalLifeLineChartDTO">
SELECT
<if test="leaderFlag == true">
count( ID ) AS organizationalActCount,
</if>
<if test="leaderFlag == false">
0 AS organizationalActCount,
</if>
count( ID ) AS shouldJoinActCount,
IFNULL( sum( SIGNED_IN_NUM ), 0 ) AS actSignCount,
CONCAT(DATE_FORMAT( CREATED_TIME, '%m' ),'月') AS month
FROM group_act_info
WHERE
DEL_FLAG = '0'
AND `STATUS` != 'canceled'
AND GROUP_ID IN (
<foreach collection="groupIds" item="g" separator=",">
#{g}
</foreach>)
AND DATE_FORMAT( CREATED_TIME, '%Y' ) = #{yearId}
GROUP BY month
</select>
</mapper>

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

@ -157,7 +157,8 @@
rg.GROUP_NAME AS groupName,
rg.GROUP_TYPE AS groupType,
rgs.TOTAL_MEMBERS AS totalMember,
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember,
rg.GROUP_INTRODUCTION
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
@ -452,7 +453,8 @@
rg.GROUP_HEAD_PHOTO AS groupHeadPhoto,
rg.GROUP_NAME AS groupName,
rgs.TOTAL_MEMBERS AS totalMember,
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember
rgs.TOTAL_PARTY_MEMBERS AS totalPartyMember,
rg.GROUP_INTRODUCTION
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
@ -630,7 +632,8 @@
rg.group_name AS groupName,
rg.group_type AS groupType,
rgs.total_members AS totalMember,
rgs.total_party_members AS totalPartyMember
rgs.total_party_members AS totalPartyMember,
rg.GROUP_INTRODUCTION
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON (rg.id = rgs.resi_group_id)

Loading…
Cancel
Save