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

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.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
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.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.accompany.common.result.BusiResult;
import com.accompany.common.result.PageResult;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Users;
@@ -27,9 +32,13 @@ public class GuildPolicy2AdminService {
@Autowired
private GuildDiamondWagePolicy2Service guildDiamondWagePolicy2Service;
@Autowired
private GuildPolicy2Service guildPolicy2Service;
@Autowired
private UsersService usersService;
@Autowired
private GuildService guildService;
@Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo,
Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) {
@@ -70,4 +79,12 @@ public class GuildPolicy2AdminService {
}
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;
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.common.result.BusiResult;
import com.accompany.common.result.PageResult;
@@ -20,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
@Api(tags = "公会政策2", value = "公会政策2")
@RestController
@@ -63,4 +66,22 @@ public class GuildPolicy2AdminController {
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
public class GuildMemberMicDayVo {
private String statDate;
private Long guildMemberId;
private Integer micMinutes;
private Integer micDay;

View File

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

View File

@@ -17,9 +17,13 @@ import java.util.List;
public interface GuildMicStatisticsPolicy2Mapper extends BaseMapper<GuildMicStatisticsPolicy2> {
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("micMinutes") Integer micMinutes, @Param("time") Date time);
@Param("guildMemberId")Long guildMemberId, @Param("partitionId") Integer partitionId,
@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)) {
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)) {
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) {
List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberIds);
List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByGuildMemberId(statDate, endDate, partitionId, guildMemberIds);
if (CollectionUtils.isEmpty(memberMicDayVos)) {
return new HashMap<>();
}
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.GuildMemberService;
import com.accompany.business.service.room.RoomMicService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.business.vo.guild.CycleDateVo;
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.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +40,8 @@ public class GuildPolicy2Service {
private RoomMicService roomMicService;
@Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
@Autowired
private UsersService usersService;
public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) {
GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo();
@@ -97,22 +101,20 @@ public class GuildPolicy2Service {
guildPolicy2Vo.setMyData(resultMyDate);
}
public BusiResult<List<CycleDateVo>> getCycleDates(Long uid) {
GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
if (null == guildMember){
throw new ServiceException(BusiStatus.FAMILY_NOT_EXIST);
}
public BusiResult<List<CycleDateVo>> getCycleDatesV2(Integer partitionId) {
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(guildMember.getPartitionId());
if (!guildAuthService.hasAuthByRoleType(partitionEnum.getClanMode(), guildMember.getRoleType(), GuildConstant.AuthCode.GUILD_POLICY2)) {
throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED);
}
DateUtil.parseDateTime("2025-08-02 02:02:02");
List<CycleDateVo> cycleDateVos = FullMonthCycleTimeUtil.listCycleDateVo(guildMember.getCreateTime(),
Date dateTime = DateUtil.parseDateTime("2025-08-02 02:02:02");
List<CycleDateVo> cycleDateVos = FullMonthCycleTimeUtil.listCycleDateVo(dateTime,
ZoneId.of(partitionEnum.getZoneId()), DateTimeUtil.DEFAULT_DATE_PATTERN);
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) {

View File

@@ -132,7 +132,9 @@
</select>
<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(um.erban_no) erbanNo,
ANY_VALUE(um.nick) nick,
@@ -158,7 +160,7 @@
<if test="uid != null">
and gd.uid = #{uid}
</if>
group by gd.uid
group by gd.guild_member_id
ORDER BY diamondNum desc
</select>

View File

@@ -11,7 +11,7 @@
update_time = values (update_time)
</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,
sum(mic_minutes) micMinutes,
COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) AS micDay
@@ -25,4 +25,17 @@
group by guild_member_id
</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>