公会薪资流水明细-下拉周期-有效天数明细

This commit is contained in:
2025-08-13 18:08:56 +08:00
parent a027f4c4ba
commit 3e1964a6e3
9 changed files with 86 additions and 19 deletions

View File

@@ -5,8 +5,13 @@ import com.accompany.business.model.guildpolicy2.GuildDiamondWagePolicy2;
import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service; import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
import com.accompany.business.service.guildpolicy2.GuildDiamondWagePolicy2Service; import com.accompany.business.service.guildpolicy2.GuildDiamondWagePolicy2Service;
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
import com.accompany.business.service.guildpolicy2.GuildPolicy2Service;
import com.accompany.business.service.user.UsersService; import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.accompany.common.result.BusiResult;
import com.accompany.common.result.PageResult; import com.accompany.common.result.PageResult;
import com.accompany.core.exception.AdminServiceException; import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Users; import com.accompany.core.model.Users;
@@ -27,9 +32,13 @@ public class GuildPolicy2AdminService {
@Autowired @Autowired
private GuildDiamondWagePolicy2Service guildDiamondWagePolicy2Service; private GuildDiamondWagePolicy2Service guildDiamondWagePolicy2Service;
@Autowired @Autowired
private GuildPolicy2Service guildPolicy2Service;
@Autowired
private UsersService usersService; private UsersService usersService;
@Autowired @Autowired
private GuildService guildService; private GuildService guildService;
@Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo, public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo,
Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) { Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) {
@@ -70,4 +79,12 @@ public class GuildPolicy2AdminService {
} }
return pageResult; return pageResult;
} }
public BusiResult<List<CycleDateVo>> queryCycleDates(Integer partitionId) {
return guildPolicy2Service.getCycleDatesV2(partitionId);
}
public List<GuildMemberMicDayVo> queryMicDayDetail(Integer partitionId, String startDate, String endDate, Long guildMemberId) {
return guildMicStatisticsPolicy2Service.listByStatDate(startDate, endDate, partitionId, guildMemberId);
}
} }

View File

@@ -1,6 +1,8 @@
package com.accompany.admin.controller.guildpolicy; package com.accompany.admin.controller.guildpolicy;
import com.accompany.admin.service.guildpolicy2.GuildPolicy2AdminService; import com.accompany.admin.service.guildpolicy2.GuildPolicy2AdminService;
import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.accompany.common.result.BusiResult; import com.accompany.common.result.BusiResult;
import com.accompany.common.result.PageResult; import com.accompany.common.result.PageResult;
@@ -20,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.List;
@Api(tags = "公会政策2", value = "公会政策2") @Api(tags = "公会政策2", value = "公会政策2")
@RestController @RestController
@@ -63,4 +66,22 @@ public class GuildPolicy2AdminController {
EasyExcel.write(response.getOutputStream(), GuildPolicy2MemberAdminVo.class).sheet("薪资明细").doWrite(pageResult.getRows()); EasyExcel.write(response.getOutputStream(), GuildPolicy2MemberAdminVo.class).sheet("薪资明细").doWrite(pageResult.getRows());
} }
@ApiOperation(value = "周期下拉", httpMethod = "GET")
@GetMapping("/cycleDates")
public BusiResult<List<CycleDateVo>> queryCycleDates(@RequestParam(defaultValue = "8") Integer partitionId) {
return guildPolicy2AdminService.queryCycleDates(partitionId);
}
@ApiImplicitParams({
@ApiImplicitParam(name = "guildMemberId", value = "公会成员ID", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "startDate", value = "开始时间yyyy-MM-dd", required = true, dataType = "String"),
@ApiImplicitParam(name = "endDate", value = "结束时间yyyy-MM-dd", required = true, dataType = "String"),
})
@ApiOperation(value = "有效天数明细", httpMethod = "GET")
@GetMapping("/micDayDetail")
public BusiResult<List<GuildMemberMicDayVo>> queryMicDayDetail(@RequestParam(defaultValue = "8") Integer partitionId,
String startDate, String endDate, Long guildMemberId) {
return BusiResult.success(guildPolicy2AdminService.queryMicDayDetail(partitionId, startDate, endDate, guildMemberId));
}
} }

View File

@@ -4,6 +4,7 @@ import lombok.Data;
@Data @Data
public class GuildMemberMicDayVo { public class GuildMemberMicDayVo {
private String statDate;
private Long guildMemberId; private Long guildMemberId;
private Integer micMinutes; private Integer micMinutes;
private Integer micDay; private Integer micDay;

View File

@@ -1,5 +1,6 @@
package com.accompany.business.vo.guildpolicy; package com.accompany.business.vo.guildpolicy;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@@ -10,6 +11,8 @@ import java.math.BigDecimal;
@ApiModel @ApiModel
@Data @Data
public class GuildPolicy2MemberAdminVo { public class GuildPolicy2MemberAdminVo {
@ExcelIgnore
private Long guildMemberId;
@ExcelProperty("公会id") @ExcelProperty("公会id")
@ApiModelProperty("公会id") @ApiModelProperty("公会id")
private Integer guildId; private Integer guildId;

View File

@@ -17,9 +17,13 @@ import java.util.List;
public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper<GuildMicStatisticsPolicy2> { public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper<GuildMicStatisticsPolicy2> {
int updateDayMicStatistics(@Param("cycleDate")String cycleDate, @Param("statDate")String statDate, int updateDayMicStatistics(@Param("cycleDate")String cycleDate, @Param("statDate")String statDate,
@Param("guildMemberId")Long guildMemberId, @Param("partitionId") Integer partitionId, @Param("guildId")Integer guildId, @Param("uid")Long uid, @Param("guildMemberId")Long guildMemberId, @Param("partitionId") Integer partitionId,
@Param("micMinutes") Integer micMinutes, @Param("time") Date time); @Param("guildId")Integer guildId, @Param("uid")Long uid, @Param("micMinutes") Integer micMinutes, @Param("time") Date time);
List<GuildMemberMicDayVo> groupByStatDate(@Param("statDate")String statDate, @Param("endDate")String endDate, @Param("partitionId") Integer partitionId, @Param("guildMemberIds") List<Long> guildMemberIds); List<GuildMemberMicDayVo> groupByGuildMemberId(@Param("statDate")String statDate, @Param("endDate")String endDate,
@Param("partitionId") Integer partitionId, @Param("guildMemberIds") List<Long> guildMemberIds);
List<GuildMemberMicDayVo> groupByStatDate(@Param("statDate")String statDate, @Param("endDate")String endDate,
@Param("partitionId") Integer partitionId, @Param("guildMemberId") Long guildMemberId);
} }

View File

@@ -32,7 +32,7 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl<GuildMicStatis
if (CollectionUtils.isEmpty(guildMemberIds)) { if (CollectionUtils.isEmpty(guildMemberIds)) {
return new HashMap<>(); return new HashMap<>();
} }
List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberIds); List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByGuildMemberId(statDate, endDate, partitionId, guildMemberIds);
if (CollectionUtils.isEmpty(memberMicDayVos)) { if (CollectionUtils.isEmpty(memberMicDayVos)) {
return new HashMap<>(); return new HashMap<>();
} }
@@ -40,10 +40,14 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl<GuildMicStatis
} }
public Map<Long, GuildMemberMicDayVo> mapVoByStatDate(String statDate, String endDate, int partitionId, List<Long> guildMemberIds) { public Map<Long, GuildMemberMicDayVo> mapVoByStatDate(String statDate, String endDate, int partitionId, List<Long> guildMemberIds) {
List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberIds); List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByGuildMemberId(statDate, endDate, partitionId, guildMemberIds);
if (CollectionUtils.isEmpty(memberMicDayVos)) { if (CollectionUtils.isEmpty(memberMicDayVos)) {
return new HashMap<>(); return new HashMap<>();
} }
return memberMicDayVos.stream().collect(Collectors.toMap(GuildMemberMicDayVo::getGuildMemberId, x -> x)); return memberMicDayVos.stream().collect(Collectors.toMap(GuildMemberMicDayVo::getGuildMemberId, x -> x));
} }
public List<GuildMemberMicDayVo> listByStatDate(String statDate, String endDate, int partitionId, Long guildMemberId) {
return baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberId);
}
} }

View File

@@ -6,6 +6,7 @@ import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.guild.GuildAuthService; import com.accompany.business.service.guild.GuildAuthService;
import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.room.RoomMicService; import com.accompany.business.service.room.RoomMicService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.FullMonthCycleTimeUtil; import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.business.vo.guild.CycleDateVo; import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
@@ -15,6 +16,7 @@ import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException; import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +40,8 @@ public class GuildPolicy2Service {
private RoomMicService roomMicService; private RoomMicService roomMicService;
@Autowired @Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service; private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
@Autowired
private UsersService usersService;
public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) { public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) {
GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo(); GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo();
@@ -97,22 +101,20 @@ public class GuildPolicy2Service {
guildPolicy2Vo.setMyData(resultMyDate); guildPolicy2Vo.setMyData(resultMyDate);
} }
public BusiResult<List<CycleDateVo>> getCycleDates(Long uid) { public BusiResult<List<CycleDateVo>> getCycleDatesV2(Integer partitionId) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid); PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
if (null == guildMember){
throw new ServiceException(BusiStatus.FAMILY_NOT_EXIST);
}
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(guildMember.getPartitionId()); Date dateTime = DateUtil.parseDateTime("2025-08-02 02:02:02");
if (!guildAuthService.hasAuthByRoleType(partitionEnum.getClanMode(), guildMember.getRoleType(), GuildConstant.AuthCode.GUILD_POLICY2)) { List<CycleDateVo> cycleDateVos = FullMonthCycleTimeUtil.listCycleDateVo(dateTime,
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
}
DateUtil.parseDateTime("2025-08-02 02:02:02");
List<CycleDateVo> cycleDateVos = FullMonthCycleTimeUtil.listCycleDateVo(guildMember.getCreateTime(),
ZoneId.of(partitionEnum.getZoneId()), DateTimeUtil.DEFAULT_DATE_PATTERN); ZoneId.of(partitionEnum.getZoneId()), DateTimeUtil.DEFAULT_DATE_PATTERN);
return BusiResult.success(cycleDateVos); return BusiResult.success(cycleDateVos);
}
public BusiResult<List<CycleDateVo>> getCycleDates(Long uid) {
Users users = usersService.getUsersByUid(uid);
return getCycleDatesV2(users.getPartitionId());
} }
public void statMicSecond(GuildMember guildMember, Long entreTimestamp, Long timestamp) { public void statMicSecond(GuildMember guildMember, Long entreTimestamp, Long timestamp) {

View File

@@ -132,7 +132,9 @@
</select> </select>
<select id="listByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo"> <select id="listByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo">
select gd.guild_id guildId, select
gd.guild_member_id guildMemberId,
gd.guild_id guildId,
ANY_VALUE(u.erban_no) ownerErbanNo, ANY_VALUE(u.erban_no) ownerErbanNo,
ANY_VALUE(um.erban_no) erbanNo, ANY_VALUE(um.erban_no) erbanNo,
ANY_VALUE(um.nick) nick, ANY_VALUE(um.nick) nick,
@@ -158,7 +160,7 @@
<if test="uid != null"> <if test="uid != null">
and gd.uid = #{uid} and gd.uid = #{uid}
</if> </if>
group by gd.uid group by gd.guild_member_id
ORDER BY diamondNum desc ORDER BY diamondNum desc
</select> </select>

View File

@@ -11,7 +11,7 @@
update_time = values (update_time) update_time = values (update_time)
</update> </update>
<select id="groupByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo"> <select id="groupByGuildMemberId" resultType="com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo">
select guild_member_id guildMemberId, select guild_member_id guildMemberId,
sum(mic_minutes) micMinutes, sum(mic_minutes) micMinutes,
COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) AS micDay COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) AS micDay
@@ -25,4 +25,17 @@
group by guild_member_id group by guild_member_id
</select> </select>
<select id="groupByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo">
select
stat_date statDate,
guild_member_id guildMemberId,
mic_minutes micMinutes,
if(mic_minutes >= 120, 1, 0) AS micDay
from guild_mic_statistics_policy2
where stat_date >= #{statDate} and stat_date &lt;= #{endDate}
and partition_id = #{partitionId}
and guild_member_id = #{guildMemberId}
group by stat_date,guild_member_id
</select>
</mapper> </mapper>