同步代码 更换电脑

This commit is contained in:
2025-06-16 15:59:23 +08:00
parent c09c14642d
commit b02ba9e482
6 changed files with 145 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -105,4 +106,14 @@ public class OaProjectReportController extends BaseController {
@PathVariable Long[] reportIds) {
return toAjax(iOaProjectReportService.deleteWithValidByIds(Arrays.asList(reportIds), true));
}
/**
* 数据统计接口
*/
@GetMapping("/card")
public R<ProjectReportCardVo> getCardData(){
return R.ok(iOaProjectReportService.getCardData());
}
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.oa.domain.vo;
import lombok.Data;
@Data
public class ProjectReportCardVo {
/**
* 今日报工
*/
private Long todayCount;
/**
* 昨日报工
*/
private Long todayCountChange;
/**
* 今日涉及项目数
*/
private Long inProgressProjects;
/**
* 昨日涉及项目数量
*/
private Long projectChange;
/**
* 涉及完成
*/
private Long completionRate;
/**
* 昨日涉及完成
*/
private Long completionChange;
/**
* 未完成(等待,未完成,待)
*/
private Long exceptions;
}

View File

@@ -8,6 +8,8 @@ import com.ruoyi.oa.domain.vo.OaProjectReportVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
/**
* 项目报工Mapper接口
*
@@ -20,4 +22,7 @@ public interface OaProjectReportMapper extends BaseMapperPlus<OaProjectReportMap
OaProjectReportVo selectVoByIdPlus(@Param("reportId") Long reportId);
Long countWithPending(Date date);
Long countWithCompleted(Date createTime);
}

View File

@@ -5,6 +5,7 @@ import com.ruoyi.oa.domain.vo.OaProjectReportVo;
import com.ruoyi.oa.domain.bo.OaProjectReportBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
import java.util.Collection;
import java.util.List;
@@ -46,4 +47,11 @@ public interface IOaProjectReportService {
* 校验并批量删除项目报工信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 报工数据看板
* @return
*/
ProjectReportCardVo getCardData();
}

View File

@@ -9,6 +9,8 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
import liquibase.pro.packaged.D;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.OaProjectReportBo;
@@ -17,8 +19,10 @@ import com.ruoyi.oa.domain.OaProjectReport;
import com.ruoyi.oa.mapper.OaProjectReportMapper;
import com.ruoyi.oa.service.IOaProjectReportService;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -58,13 +62,14 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
*/
@Override
public List<OaProjectReportVo> queryList(OaProjectReportBo bo) {
QueryWrapper<OaProjectReport> lqw = buildQueryWrapper(bo);
QueryWrapper<OaProjectReport> lqw = ClearbuildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private QueryWrapper<OaProjectReport> buildQueryWrapper(OaProjectReportBo bo) {
Map<String, Object> params = bo.getParams();
QueryWrapper<OaProjectReport> lqw = Wrappers.query();
lqw.eq("opr.del_flag", 0);
lqw.eq(bo.getUserId()!=null, "opr.user_id", bo.getUserId());
lqw.eq(bo.getProjectId() != null, "opr.project_id", bo.getProjectId());
@@ -86,6 +91,23 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
return lqw;
}
private QueryWrapper<OaProjectReport> ClearbuildQueryWrapper(OaProjectReportBo bo) {
Map<String, Object> params = bo.getParams();
QueryWrapper<OaProjectReport> lqw = Wrappers.query();
if (bo.getCreateTime() != null) {
LocalDateTime start = bo.getCreateTime() // LocalDateTime / Date 都行
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate() // 先取日期
.atStartOfDay(); // 00:00:00
LocalDateTime end = start.plusDays(1); // 下一天 00:00:00
lqw.ge("create_time", start)
.lt("create_time", end); // [start, end)
}
return lqw;
}
/**
* 新增项目报工
*/
@@ -128,4 +150,35 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public ProjectReportCardVo getCardData() {
ProjectReportCardVo projectReportCardVo = new ProjectReportCardVo();
OaProjectReportBo oaProjectReportBo = new OaProjectReportBo();
oaProjectReportBo.setCreateTime(new Date());
QueryWrapper<OaProjectReport> oaProjectReportQueryWrapper = ClearbuildQueryWrapper(oaProjectReportBo);
// 查询今日数据
projectReportCardVo.setTodayCount(baseMapper.selectCount(oaProjectReportQueryWrapper));
oaProjectReportQueryWrapper.select("COUNT(DISTINCT project_id) AS cnt");
projectReportCardVo.setInProgressProjects(baseMapper.selectCount(oaProjectReportQueryWrapper));
projectReportCardVo.setExceptions(baseMapper.countWithPending(new Date()));
projectReportCardVo.setCompletionRate(baseMapper.countWithCompleted(new Date()));
// 把 new Date() 换成昨天
Date yesterday = Date.from(
LocalDate.now()
.minusDays(1) // 昨天的日期
.atStartOfDay(ZoneId.systemDefault()) // 当天零点
.toInstant()
);
oaProjectReportBo.setCreateTime(yesterday);
// 查询昨日报工数据两
projectReportCardVo.setTodayCountChange(baseMapper.selectCount(ClearbuildQueryWrapper(oaProjectReportBo)));
// 查询昨日涉及项目数据量
oaProjectReportQueryWrapper.select("COUNT(DISTINCT project_id) AS cnt");
projectReportCardVo.setProjectChange(baseMapper.selectCount(oaProjectReportQueryWrapper));
projectReportCardVo.setCompletionChange(baseMapper.countWithCompleted(yesterday));
return projectReportCardVo;
}
}