|
|
@@ -9,19 +9,23 @@ import com.punchsettle.server.atomic.entity.PiStatusHistory;
|
|
|
import com.punchsettle.server.atomic.entity.PiTask;
|
|
|
import com.punchsettle.server.atomic.entity.PiTaskExt;
|
|
|
import com.punchsettle.server.atomic.entity.PiTaskHistory;
|
|
|
+import com.punchsettle.server.atomic.entity.SettlePointsHistory;
|
|
|
import com.punchsettle.server.atomic.entity.StatPiTaskMonth;
|
|
|
import com.punchsettle.server.atomic.entity.StatPiTaskWeek;
|
|
|
+import com.punchsettle.server.atomic.entity.User;
|
|
|
import com.punchsettle.server.atomic.service.IPiMultiTaskExtService;
|
|
|
import com.punchsettle.server.atomic.service.IPiMultiTaskHistoryService;
|
|
|
import com.punchsettle.server.atomic.service.IPiMultiTaskRelaService;
|
|
|
import com.punchsettle.server.atomic.service.IPiMultiTaskService;
|
|
|
import com.punchsettle.server.atomic.service.IPiStatusHistoryService;
|
|
|
+import com.punchsettle.server.atomic.service.ISettlePointsHistoryService;
|
|
|
import com.punchsettle.server.atomic.service.IStatPiTaskMonthService;
|
|
|
import com.punchsettle.server.atomic.service.IStatPiTaskWeekService;
|
|
|
import com.punchsettle.server.atomic.service.IPiStatusService;
|
|
|
import com.punchsettle.server.atomic.service.IPiTaskExtService;
|
|
|
import com.punchsettle.server.atomic.service.IPiTaskHistoryService;
|
|
|
import com.punchsettle.server.atomic.service.IPiTaskService;
|
|
|
+import com.punchsettle.server.atomic.service.IUserService;
|
|
|
import com.punchsettle.server.constant.ArchiveStatusEnum;
|
|
|
import com.punchsettle.server.constant.ContinueStageEnum;
|
|
|
import com.punchsettle.server.constant.ContinueStatusEnum;
|
|
|
@@ -152,7 +156,13 @@ public class PunchInCoreTask {
|
|
|
@Autowired
|
|
|
private ICalendarManager calendarManager;
|
|
|
|
|
|
- public void manual(List<Long> userIds, String punchInDateStr) {
|
|
|
+ @Autowired
|
|
|
+ private IUserService userService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISettlePointsHistoryService settlePointsHistoryService;
|
|
|
+
|
|
|
+ public void manual(List<Long> userIds, String punchInDateStr, Long settleTaskHistoryId) {
|
|
|
List<PunchInSettleData> punchInSettleData = getPunchInSettleData(userIds, punchInDateStr);
|
|
|
|
|
|
// 打卡日期
|
|
|
@@ -173,10 +183,15 @@ public class PunchInCoreTask {
|
|
|
List<PiStatusHistory> addPiStatusHistories = new ArrayList<>();
|
|
|
List<StatPiTaskWeek> addStatPiTaskWeekList = new ArrayList<>();
|
|
|
List<StatPiTaskMonth> addStatPiTaskMonthList = new ArrayList<>();
|
|
|
+ List<SettlePointsHistory> addSettlePointsHistories = new ArrayList<>();
|
|
|
+ List<User> updateUserList = new ArrayList<>();
|
|
|
List<PiStatus> updatePiStatusList = new ArrayList<>();
|
|
|
List<PiTaskHistory> updatePunchInTaskHistories = new ArrayList<>();
|
|
|
List<PiMultiTaskHistory> updatePunchInMultiTaskHistories = new ArrayList<>(punchInSettleData.size());
|
|
|
for (PunchInSettleData punchInSettle : punchInSettleData) {
|
|
|
+ // 结算总积分
|
|
|
+ int settlePoints = 0;
|
|
|
+
|
|
|
// 单任务处理部分
|
|
|
for (PiTaskData piTaskData : punchInSettle.getPiTaskDataList()) {
|
|
|
PiTask piTask = piTaskData.getPiTask();
|
|
|
@@ -323,13 +338,13 @@ public class PunchInCoreTask {
|
|
|
int taskPoints = settleManager.calculatePointsInTask(piTask, piTaskExtList, piTaskHistory, piStatus);
|
|
|
piStatus.setPointsInWeek(piStatus.getPointsInWeek() + taskPoints);
|
|
|
piStatus.setPointsInMonth(piStatus.getPointsInMonth() + taskPoints);
|
|
|
-
|
|
|
- // TODO 要设置结算任务执行ID
|
|
|
+ settlePoints += taskPoints;
|
|
|
|
|
|
// 打卡记录 更新
|
|
|
updatePiTaskHistory.setSettlePoints(taskPoints);
|
|
|
updatePiTaskHistory.setSettleResult(SettleResultEnum.SETTLED);
|
|
|
updatePiTaskHistory.setSettlePiTaskId(piTask.getId());
|
|
|
+ updatePiTaskHistory.setSettleTaskHistoryId(settleTaskHistoryId);
|
|
|
|
|
|
addPiStatusHistories.add(piStatusHistory);
|
|
|
updatePiStatusList.add(piStatus);
|
|
|
@@ -421,14 +436,40 @@ public class PunchInCoreTask {
|
|
|
int multiTaskPoints = settleManager.calculatePointsInMultiTask(piMultiTask,
|
|
|
punchInSettle.getPiMultiTaskExtList(), piMultiTaskHistory,
|
|
|
punchInSettle.getPiStatus());
|
|
|
+ settlePoints += multiTaskPoints;
|
|
|
+
|
|
|
updatePiMultiTaskHistory.setSettlePoints(multiTaskPoints);
|
|
|
updatePiMultiTaskHistory.setSettleResult(SettleResultEnum.SETTLED);
|
|
|
-
|
|
|
- // TODO 要设置结算任务执行ID
|
|
|
+ updatePiMultiTaskHistory.setSettleTaskHistoryId(settleTaskHistoryId);
|
|
|
updatePunchInMultiTaskHistories.add(updatePiMultiTaskHistory);
|
|
|
+
|
|
|
+ User user = punchInSettle.getUser();
|
|
|
+ Integer totalPoints = Optional.ofNullable(user.getTotalPoints()).orElse(0);
|
|
|
+ Integer unusedPoints = Optional.ofNullable(user.getUnusedPoints()).orElse(0);
|
|
|
+
|
|
|
+ User updateUser = new User();
|
|
|
+ updateUser.setId(user.getId());
|
|
|
+ updateUser.setTotalPoints(totalPoints);
|
|
|
+ updateUser.setUnusedPoints(unusedPoints + settlePoints);
|
|
|
+ updateUserList.add(user);
|
|
|
+
|
|
|
+ SettlePointsHistory addSettlePointsHistory = new SettlePointsHistory();
|
|
|
+ addSettlePointsHistory.setSettleTaskHistoryId(settleTaskHistoryId);
|
|
|
+ addSettlePointsHistory.setUserId(user.getId());
|
|
|
+ addSettlePointsHistory.setSettleDate(punchInDateStr);
|
|
|
+ addSettlePointsHistory.setSettlePoints(settlePoints);
|
|
|
+ addSettlePointsHistory.setBeforeSettlePoints(totalPoints);
|
|
|
+ addSettlePointsHistory.setAfterSettlePoints(totalPoints + settlePoints);
|
|
|
+ addSettlePointsHistories.add(addSettlePointsHistory);
|
|
|
}
|
|
|
|
|
|
// 数据入库
|
|
|
+ if (!CollectionUtils.isEmpty(updateUserList)) {
|
|
|
+ userService.batchUpdateUser(updateUserList);
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(addSettlePointsHistories)) {
|
|
|
+ settlePointsHistoryService.insertList(addSettlePointsHistories);
|
|
|
+ }
|
|
|
if (!CollectionUtils.isEmpty(addPiStatusHistories)) {
|
|
|
piStatusHistoryService.insertList(addPiStatusHistories);
|
|
|
}
|
|
|
@@ -457,8 +498,9 @@ public class PunchInCoreTask {
|
|
|
* @return
|
|
|
*/
|
|
|
private List<PunchInSettleData> getPunchInSettleData(List<Long> userIds, String punchInDateStr) {
|
|
|
- // 打卡日期
|
|
|
- LocalDate punchInDate = LocalDate.parse(punchInDateStr);
|
|
|
+ // 用户信息, 用户ID-用户信息关联
|
|
|
+ List<User> users = userService.listByIds(userIds);
|
|
|
+ Map<Long, User> userMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key1));
|
|
|
|
|
|
// 获取多任务信息,用户ID-多任务关联
|
|
|
PiMultiTaskQuery piMultiTaskQuery = new PiMultiTaskQuery();
|
|
|
@@ -532,6 +574,9 @@ public class PunchInCoreTask {
|
|
|
PunchInSettleData punchInSettleData = new PunchInSettleData();
|
|
|
punchInSettleData.setUserId(userId);
|
|
|
|
|
|
+ User user = userMap.get(userId);
|
|
|
+ punchInSettleData.setUser(user);
|
|
|
+
|
|
|
PiMultiTask piMultiTask = punchInMultiTaskMap.get(userId);
|
|
|
punchInSettleData.setPiMultiTask(piMultiTask);
|
|
|
|