结算天数问题修复
This commit is contained in:
parent
03a75e40b2
commit
50631033ae
@ -157,7 +157,7 @@ public final class TeamBillCycleUtils {
|
||||
long targetTimeHours = target.sumAllTargetTime() / 60;
|
||||
Long acceptGiftValue = target.sumAcceptGiftValue();
|
||||
|
||||
// 计算有效天数:统计每日在线时长 >= 60分钟的天数
|
||||
// 计算有效天数:统计每日在线时长 >= 120分钟的天数
|
||||
Integer effectiveDay = calculateEffectiveDay(target);
|
||||
|
||||
TeamBillMemberTarget resultTarget = new TeamBillMemberTarget()
|
||||
@ -230,7 +230,7 @@ public final class TeamBillCycleUtils {
|
||||
|
||||
/**
|
||||
* 计算有效天数
|
||||
* 规则:每日在线时长 >= 60分钟算作有效一天
|
||||
* 规则:每日在线时长 >= 120分钟算作有效一天
|
||||
*
|
||||
* @param target 成员目标数据
|
||||
* @return 有效天数
|
||||
@ -240,12 +240,12 @@ public final class TeamBillCycleUtils {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 统计每日在线时长 >= 60分钟的天数
|
||||
// 统计每日在线时长 >= 120分钟的天数
|
||||
int effectiveDayCount = 0;
|
||||
for (Object dailyData : target.getDailyTargets()) {
|
||||
// 假设dailyData是包含ownOnlineTime和otherOnlineTime的对象
|
||||
Long dailyOnlineTime = getDailyTotalOnlineTime(dailyData);
|
||||
if (dailyOnlineTime != null && dailyOnlineTime >= 60) {
|
||||
if (dailyOnlineTime != null && dailyOnlineTime >= 120) {
|
||||
effectiveDayCount++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.red.circle.OtherServiceApplication;
|
||||
@ -6,6 +7,7 @@ import com.red.circle.other.app.listener.team.TeamBillSettleListener;
|
||||
import com.red.circle.other.app.manager.activity.award.WeeklyRewardsSentManager;
|
||||
import com.red.circle.other.app.scheduler.TeamBillTask;
|
||||
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillMemberTarget;
|
||||
import com.red.circle.other.infra.database.mongo.dto.team.TeamBillSettleResult;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamBillCycle;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget;
|
||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager;
|
||||
@ -17,6 +19,7 @@ import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberTar
|
||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamPolicyManagerService;
|
||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService;
|
||||
import com.red.circle.other.infra.database.mongo.service.user.region.SysRegionConfigService;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -25,6 +28,8 @@ import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest(classes = OtherServiceApplication.class)
|
||||
@ -61,7 +66,7 @@ public class TeamMonthBillTest {
|
||||
*/
|
||||
@Test
|
||||
public void testListener() {
|
||||
Long teamId = 1978293732420083713L;
|
||||
Long teamId = 1969441508127473665L;
|
||||
|
||||
// 获取团队信息
|
||||
TeamProfile teamProfile = teamProfileService.getById(teamId);
|
||||
@ -86,9 +91,45 @@ public class TeamMonthBillTest {
|
||||
List<TeamBillMemberTarget> teamBillMemberTargets =
|
||||
TeamBillCycleUtils.calculatorPolicyTargetNew(teamMemberTargets, regionPolicyManager, regionConfig);
|
||||
|
||||
System.out.println(teamBillMemberTargets);
|
||||
// 结算账单.
|
||||
TeamBillSettleResult settleResult = new TeamBillSettleResult()
|
||||
.setPolicy(regionPolicyManager)
|
||||
.setWorkMembers(countWorkMembers(teamMemberTargets))
|
||||
.setFinishMembers(teamBillMemberTargets.size())
|
||||
.setMemberSalary(sumMemberSalary(teamBillMemberTargets))
|
||||
.setOwnSalary(ownSalary(teamBillMemberTargets))
|
||||
.setTotalSalary(ownTotalSalary(teamBillMemberTargets));
|
||||
|
||||
// teamBillSettleListener.processBillTest(1984239048869130242L);
|
||||
System.out.println("============= 账单结算结果 =============");
|
||||
System.out.printf("政策信息: %s%n", settleResult.getPolicy());
|
||||
System.out.printf("工作人数: %d%n", settleResult.getWorkMembers());
|
||||
System.out.printf("完成人数: %d%n", settleResult.getFinishMembers());
|
||||
System.out.printf("成员工资: %s%n", settleResult.getMemberSalary());
|
||||
System.out.printf("拥有者工资: %s%n", settleResult.getOwnSalary());
|
||||
System.out.printf("工资合计: %s%n", settleResult.getTotalSalary());
|
||||
System.out.println("=======================================");
|
||||
}
|
||||
|
||||
private int countWorkMembers(List<TeamMemberTarget> teamMemberTargets) {
|
||||
return CollectionUtils.isNotEmpty(teamMemberTargets) ? teamMemberTargets.size() : 0;
|
||||
}
|
||||
|
||||
private BigDecimal sumMemberSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {
|
||||
return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getMemberSalary)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
}
|
||||
|
||||
private BigDecimal ownSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {
|
||||
return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getOwnSalary)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
}
|
||||
|
||||
private BigDecimal ownTotalSalary(List<TeamBillMemberTarget> teamBillMemberTargets) {
|
||||
return teamBillMemberTargets.stream().map(TeamBillMemberTarget::getTotalSalary)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user