结算天数问题修复
This commit is contained in:
parent
03a75e40b2
commit
50631033ae
@ -157,7 +157,7 @@ public final class TeamBillCycleUtils {
|
|||||||
long targetTimeHours = target.sumAllTargetTime() / 60;
|
long targetTimeHours = target.sumAllTargetTime() / 60;
|
||||||
Long acceptGiftValue = target.sumAcceptGiftValue();
|
Long acceptGiftValue = target.sumAcceptGiftValue();
|
||||||
|
|
||||||
// 计算有效天数:统计每日在线时长 >= 60分钟的天数
|
// 计算有效天数:统计每日在线时长 >= 120分钟的天数
|
||||||
Integer effectiveDay = calculateEffectiveDay(target);
|
Integer effectiveDay = calculateEffectiveDay(target);
|
||||||
|
|
||||||
TeamBillMemberTarget resultTarget = new TeamBillMemberTarget()
|
TeamBillMemberTarget resultTarget = new TeamBillMemberTarget()
|
||||||
@ -230,7 +230,7 @@ public final class TeamBillCycleUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算有效天数
|
* 计算有效天数
|
||||||
* 规则:每日在线时长 >= 60分钟算作有效一天
|
* 规则:每日在线时长 >= 120分钟算作有效一天
|
||||||
*
|
*
|
||||||
* @param target 成员目标数据
|
* @param target 成员目标数据
|
||||||
* @return 有效天数
|
* @return 有效天数
|
||||||
@ -240,12 +240,12 @@ public final class TeamBillCycleUtils {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 统计每日在线时长 >= 60分钟的天数
|
// 统计每日在线时长 >= 120分钟的天数
|
||||||
int effectiveDayCount = 0;
|
int effectiveDayCount = 0;
|
||||||
for (Object dailyData : target.getDailyTargets()) {
|
for (Object dailyData : target.getDailyTargets()) {
|
||||||
// 假设dailyData是包含ownOnlineTime和otherOnlineTime的对象
|
// 假设dailyData是包含ownOnlineTime和otherOnlineTime的对象
|
||||||
Long dailyOnlineTime = getDailyTotalOnlineTime(dailyData);
|
Long dailyOnlineTime = getDailyTotalOnlineTime(dailyData);
|
||||||
if (dailyOnlineTime != null && dailyOnlineTime >= 60) {
|
if (dailyOnlineTime != null && dailyOnlineTime >= 120) {
|
||||||
effectiveDayCount++;
|
effectiveDayCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.red.circle.OtherServiceApplication;
|
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.manager.activity.award.WeeklyRewardsSentManager;
|
||||||
import com.red.circle.other.app.scheduler.TeamBillTask;
|
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.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.TeamBillCycle;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget;
|
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMemberTarget;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.team.team.TeamPolicyManager;
|
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.TeamPolicyManagerService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.team.team.TeamProfileService;
|
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.other.infra.database.mongo.service.user.region.SysRegionConfigService;
|
||||||
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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 org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SpringBootTest(classes = OtherServiceApplication.class)
|
@SpringBootTest(classes = OtherServiceApplication.class)
|
||||||
@ -61,7 +66,7 @@ public class TeamMonthBillTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testListener() {
|
public void testListener() {
|
||||||
Long teamId = 1978293732420083713L;
|
Long teamId = 1969441508127473665L;
|
||||||
|
|
||||||
// 获取团队信息
|
// 获取团队信息
|
||||||
TeamProfile teamProfile = teamProfileService.getById(teamId);
|
TeamProfile teamProfile = teamProfileService.getById(teamId);
|
||||||
@ -86,9 +91,45 @@ public class TeamMonthBillTest {
|
|||||||
List<TeamBillMemberTarget> teamBillMemberTargets =
|
List<TeamBillMemberTarget> teamBillMemberTargets =
|
||||||
TeamBillCycleUtils.calculatorPolicyTargetNew(teamMemberTargets, regionPolicyManager, regionConfig);
|
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
|
@Test
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user