From e13b68163f13019bea2d6c84f92ff07a5a9f15ec Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 29 九月 2025 18:17:46 +0800 Subject: [PATCH] app任务 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 114 insertions(+), 1 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java index b4a0014..0e94d2f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.BasePage; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.system.dto.TMissionUserDto; import com.ruoyi.system.mapper.TMissionMapper; import com.ruoyi.system.mapper.TMissionUserMapper; import com.ruoyi.system.model.TMission; @@ -13,8 +14,18 @@ import com.ruoyi.system.query.TMissionQuery; import com.ruoyi.system.service.TMissionService; import com.ruoyi.system.vo.MissionTotalVo; +import com.ruoyi.system.vo.TMissionReassignVO; import com.ruoyi.system.vo.TMissionVO; +import com.ruoyi.system.vo.TotalHistoryVo; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; import javax.annotation.Resource; import java.math.BigDecimal; @@ -41,7 +52,106 @@ private RedisCache redisCache; @Override + public PageInfo<TMissionVO> pageListAssigned(TMissionQuery query) { + PageInfo<TMissionVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TMissionVO> list = this.baseMapper.pageListAssigned(query, pageInfo); + if(CollectionUtils.isEmpty(list)){ + return pageInfo; + } + // 计算时间差 + for (TMissionVO tMissionVO : list) { + if(Objects.nonNull(tMissionVO.getAssignTime())){ + if(Objects.nonNull(tMissionVO.getReceiveTime())){ + // 计算LocalDateTime两个时间相差秒数 + Duration duration = Duration.between(tMissionVO.getAssignTime(), tMissionVO.getReceiveTime()); + tMissionVO.setResponseTimePoor(duration.getSeconds()); + } + if(Objects.nonNull(tMissionVO.getFinishTime())){ + // 计算LocalDateTime两个时间相差小时 + Duration duration = Duration.between(tMissionVO.getReceiveTime(), tMissionVO.getFinishTime()); + double minutes = (double) duration.toMinutes(); + minutes = minutes / 60; + tMissionVO.setFinishTimePoor(minutes); + } + } + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public PageInfo<TMissionReassignVO> pageListReassignAudit(TMissionQuery query) { + PageInfo<TMissionReassignVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TMissionReassignVO> list = this.baseMapper.pageListReassignAudit(query, pageInfo); + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public PageInfo<TMissionVO> pageListMissionPool(TMissionQuery query) { + PageInfo<TMissionVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TMissionVO> list = this.baseMapper.pageListMissionPool(query, pageInfo); + if(CollectionUtils.isEmpty(list)){ + return pageInfo; + } + // 计算时间差 + for (TMissionVO tMissionVO : list) { + if(Objects.nonNull(tMissionVO.getAssignTime())){ + if(Objects.nonNull(tMissionVO.getReceiveTime())){ + // 计算LocalDateTime两个时间相差秒数 + Duration duration = Duration.between(tMissionVO.getAssignTime(), tMissionVO.getReceiveTime()); + tMissionVO.setResponseTimePoor(duration.getSeconds()); + } + if(Objects.nonNull(tMissionVO.getFinishTime())){ + // 计算LocalDateTime两个时间相差小时 + Duration duration = Duration.between(tMissionVO.getReceiveTime(), tMissionVO.getFinishTime()); + double minutes = (double) duration.toMinutes(); + minutes = minutes / 60; + tMissionVO.setFinishTimePoor(minutes); + } + } + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public TotalHistoryVo totalHistory(String userId) { + TotalHistoryVo totalHistoryVo = new TotalHistoryVo(); + List<TMissionUser> tMissionUsers = missionUserMapper.selectList(new LambdaQueryWrapper<TMissionUser>().eq(TMissionUser::getAppUserId, userId)); + if(tMissionUsers.isEmpty()){ + return totalHistoryVo; + } + long count = tMissionUsers.stream().filter(e -> e.getStatus() == 1).count(); + BigDecimal successRate = new BigDecimal(count).divide(new BigDecimal(tMissionUsers.size()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + totalHistoryVo.setSuccessRate(successRate); + + long count1 = tMissionUsers.stream().filter(e -> e.getStatus() == 2).count(); + BigDecimal failRate = new BigDecimal(count1).divide(new BigDecimal(tMissionUsers.size()), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + totalHistoryVo.setFailRate(failRate); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM"); + // 查询当前时间的年月日 + String now = LocalDate.now().toString(); + List<TMissionUser> todayMissionUsers = tMissionUsers.stream().filter(e -> now.equals(simpleDateFormat.format(e.getSuccessTime()))).collect(Collectors.toList()); + totalHistoryVo.setTodaySuccessNum(todayMissionUsers.size()); + // 查询当前时间的年月 + String firstDayOfMonth = LocalDate.now().withDayOfMonth(1).toString().substring(0, 7); + + List<TMissionUser> monthMissionUsers = tMissionUsers.stream().filter(e -> firstDayOfMonth.equals(simpleDateFormat1.format(e.getSuccessTime()))).collect(Collectors.toList()); + totalHistoryVo.setMonthSuccessNum(monthMissionUsers.size()); + return totalHistoryVo; + } + + @Override + public void successMission(TMissionUserDto dto) { + + } + + @Override public PageInfo<TMissionVO> pageList(TMissionQuery query) { + return null; } @@ -65,7 +175,7 @@ } @Override - public void grabMission(String missionId, String userId) { + public String grabMission(String missionId, String userId) { try { boolean b = redisCache.trylockLoop(missionId, UUID.randomUUID().toString(), 30); if(b){ @@ -75,10 +185,13 @@ tMissionUser.setStatus(0); tMissionUser.setUserType(1); missionUserMapper.insert(tMissionUser); + return tMissionUser.getMissionId(); + } }finally { redisCache.unlock(missionId, UUID.randomUUID().toString()); } + return null; } @Override -- Gitblit v1.7.1