同步代码 更换电脑
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
@@ -105,4 +106,14 @@ public class OaProjectReportController extends BaseController {
|
|||||||
@PathVariable Long[] reportIds) {
|
@PathVariable Long[] reportIds) {
|
||||||
return toAjax(iOaProjectReportService.deleteWithValidByIds(Arrays.asList(reportIds), true));
|
return toAjax(iOaProjectReportService.deleteWithValidByIds(Arrays.asList(reportIds), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据统计接口
|
||||||
|
*/
|
||||||
|
@GetMapping("/card")
|
||||||
|
public R<ProjectReportCardVo> getCardData(){
|
||||||
|
|
||||||
|
return R.ok(iOaProjectReportService.getCardData());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,6 +8,8 @@ import com.ruoyi.oa.domain.vo.OaProjectReportVo;
|
|||||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目报工Mapper接口
|
* 项目报工Mapper接口
|
||||||
*
|
*
|
||||||
@@ -20,4 +22,7 @@ public interface OaProjectReportMapper extends BaseMapperPlus<OaProjectReportMap
|
|||||||
|
|
||||||
OaProjectReportVo selectVoByIdPlus(@Param("reportId") Long reportId);
|
OaProjectReportVo selectVoByIdPlus(@Param("reportId") Long reportId);
|
||||||
|
|
||||||
|
Long countWithPending(Date date);
|
||||||
|
|
||||||
|
Long countWithCompleted(Date createTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.ruoyi.oa.domain.vo.OaProjectReportVo;
|
|||||||
import com.ruoyi.oa.domain.bo.OaProjectReportBo;
|
import com.ruoyi.oa.domain.bo.OaProjectReportBo;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -46,4 +47,11 @@ public interface IOaProjectReportService {
|
|||||||
* 校验并批量删除项目报工信息
|
* 校验并批量删除项目报工信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报工数据看板
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ProjectReportCardVo getCardData();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import com.ruoyi.common.core.domain.PageQuery;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.ruoyi.oa.domain.vo.ProjectReportCardVo;
|
||||||
|
import liquibase.pro.packaged.D;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.oa.domain.bo.OaProjectReportBo;
|
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.mapper.OaProjectReportMapper;
|
||||||
import com.ruoyi.oa.service.IOaProjectReportService;
|
import com.ruoyi.oa.service.IOaProjectReportService;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -58,13 +62,14 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<OaProjectReportVo> queryList(OaProjectReportBo bo) {
|
public List<OaProjectReportVo> queryList(OaProjectReportBo bo) {
|
||||||
QueryWrapper<OaProjectReport> lqw = buildQueryWrapper(bo);
|
QueryWrapper<OaProjectReport> lqw = ClearbuildQueryWrapper(bo);
|
||||||
return baseMapper.selectVoList(lqw);
|
return baseMapper.selectVoList(lqw);
|
||||||
}
|
}
|
||||||
|
|
||||||
private QueryWrapper<OaProjectReport> buildQueryWrapper(OaProjectReportBo bo) {
|
private QueryWrapper<OaProjectReport> buildQueryWrapper(OaProjectReportBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
QueryWrapper<OaProjectReport> lqw = Wrappers.query();
|
QueryWrapper<OaProjectReport> lqw = Wrappers.query();
|
||||||
|
lqw.eq("opr.del_flag", 0);
|
||||||
lqw.eq(bo.getUserId()!=null, "opr.user_id", bo.getUserId());
|
lqw.eq(bo.getUserId()!=null, "opr.user_id", bo.getUserId());
|
||||||
|
|
||||||
lqw.eq(bo.getProjectId() != null, "opr.project_id", bo.getProjectId());
|
lqw.eq(bo.getProjectId() != null, "opr.project_id", bo.getProjectId());
|
||||||
@@ -86,6 +91,23 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService {
|
|||||||
return lqw;
|
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectVoPagePlus" resultType="com.ruoyi.oa.domain.vo.OaProjectReportVo">
|
<select id="selectVoPagePlus" resultType="com.ruoyi.oa.domain.vo.OaProjectReportVo">
|
||||||
select opr.report_id,
|
select opr.report_id,
|
||||||
opr.user_id,
|
opr.user_id,
|
||||||
@@ -67,5 +69,26 @@
|
|||||||
where report_id = #{reportId}
|
where report_id = #{reportId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 查询 content 中包含 “完成” 的记录数,按时间过滤 -->
|
||||||
|
<select id="countWithCompleted" parameterType="java.util.Date" resultType="Long">
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM oa_project_report
|
||||||
|
WHERE del_flag = 0
|
||||||
|
AND content LIKE CONCAT('%', '完成', '%')
|
||||||
|
AND create_time >= #{createTime}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 查询 content 中包含 “未完成” 或 “等待” 或 “待” 的记录数,按时间过滤 -->
|
||||||
|
<select id="countWithPending" parameterType="java.util.Date" resultType="Long">
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM oa_project_report
|
||||||
|
WHERE del_flag = 0
|
||||||
|
AND (
|
||||||
|
content LIKE CONCAT('%', '未完成', '%')
|
||||||
|
OR content LIKE CONCAT('%', '等待', '%')
|
||||||
|
OR content LIKE CONCAT('%', '待', '%')
|
||||||
|
)
|
||||||
|
AND create_time >= #{createTime}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user