新增签到月份检索,加班时间折算,项目数据月份检索,

This commit is contained in:
2025-03-15 16:35:15 +08:00
parent b4b227395c
commit c0fe9c8885
10 changed files with 45 additions and 28 deletions

View File

@@ -61,7 +61,6 @@ public class EmployeeFilesController extends BaseController {
/**
* 新增文件档案管理
*/
@Log(title = "文件档案管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserFilesVo filesVo) {

View File

@@ -129,8 +129,8 @@ public class SysOaFinanceController extends BaseController {
* 最近6个月的支出/收入情况
*/
@SaCheckPermission("oa:finance:list")
@PostMapping("/findFinanceByMonth")
public R<List<Object>> findFinanceByMonth(SysOaFinanceBo bo) {
@GetMapping("/findFinanceByMonth")
public R<List<Object>> findFinanceByMonth(SysOaFinanceBo bo,@RequestParam Map<String, Object> params) {
LocalDate now = LocalDate.now();
/* 建立一个数组 */
int[] integers = {0,1, 2, 3, 4, 5};
@@ -152,8 +152,8 @@ public class SysOaFinanceController extends BaseController {
outMap.put("financeType", '0');
outMap.put("beginTime", firstDay);
outMap.put("endTime", lastDay);
outMap.put("payType",bo.getPayType());
outMap.put("receiveAccountId",bo.getReceiveAccountId());
outMap.put("payType",params.get("payType"));
outMap.put("receiveAccountId",params.get("receiveAccountId"));
BigDecimal financeOutReduce = iSysOaFinanceService.findFinanceByTime(bo, outMap);
//收入
@@ -161,8 +161,8 @@ public class SysOaFinanceController extends BaseController {
comeMap.put("financeType", '1');
comeMap.put("beginTime", firstDay);
comeMap.put("endTime", lastDay);
comeMap.put("payType",bo.getPayType());
comeMap.put("receiveAccountId",bo.getReceiveAccountId());
comeMap.put("payType",params.get("payType"));
comeMap.put("receiveAccountId",params.get("receiveAccountId"));
BigDecimal financeComeReduce = iSysOaFinanceService.findFinanceByTime(bo, comeMap);
//收入减支出
BigDecimal subtract = financeComeReduce.subtract(financeOutReduce);

View File

@@ -1,5 +1,6 @@
package com.ruoyi.oa.controller;
import java.util.Date;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
@@ -81,9 +82,9 @@ public class SysOaProjectController extends BaseController {
* 获取项目管理详细信息
*
*/
@GetMapping("/projectDataByMonth")
public R<List<SysOaProjectVo>> getProjectDataByMonth() {
return R.ok(iSysOaProjectService.getProjectDataByMonth());
@GetMapping("/projectDataByMonth/{date}")
public R<List<SysOaProjectVo>> getProjectDataByMonth(@PathVariable("date") Date date) {
return R.ok(iSysOaProjectService.getProjectDataByMonth(date));
}
/**

View File

@@ -29,6 +29,9 @@ public class LaborCostData extends BaseEntity {
// 小时计时长
private Double hourWorkTime;
// 加班时间
private Double overtime;
}

View File

@@ -6,13 +6,13 @@ import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 项目管理业务对象 sys_oa_project
@@ -162,4 +162,7 @@ public class SysOaProjectBo extends BaseEntity {
*/
private String color;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
}

View File

@@ -82,4 +82,7 @@ public class SysOaAttendanceVo extends SysOaAttendance {
// 小时计单个工作时间
private Double hourWorkTimes;
private Double overTime;
}

View File

@@ -8,6 +8,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
@@ -55,7 +56,7 @@ public interface ISysOaProjectService {
* 获取每个项目当月的人力资源成本(人天)
* @return
*/
List<SysOaProjectVo> getProjectDataByMonth();
List<SysOaProjectVo> getProjectDataByMonth(Date date);
/**

View File

@@ -217,8 +217,8 @@ public class SysOaAttendanceServiceImpl implements ISysOaAttendanceService {
List<SysOaProjectVo> projectVos = new ArrayList<>();
Double workTimes = 0.0;
Double hourWorkTimes = 0.0;
Double overTime = 0.0;
for (SysOaAttendanceVo oaAttendanceVo : sysOaAttendanceVos) {
// 出差问题解决
if (oaAttendanceVo.getProjectId() != 0 && oaAttendanceVo.getProjectId() != 1) {
SysOaProjectVo sysOaProjectVo = projectService.queryById(oaAttendanceVo.getProjectId());
@@ -228,8 +228,10 @@ public class SysOaAttendanceServiceImpl implements ISysOaAttendanceService {
projectVos.add(sysOaProjectVo);
workTimes += oaAttendanceVo.getWorkTimes();
hourWorkTimes += oaAttendanceVo.getHourWorkTimes();
overTime+=oaAttendanceVo.getOverTime();
}
}
// 此为所有小时计的综合
projectVos.stream().distinct().collect(Collectors.toList());
LaborCostData laborCostData = new LaborCostData();
laborCostData.setProjects(projectVos);
@@ -237,6 +239,8 @@ public class SysOaAttendanceServiceImpl implements ISysOaAttendanceService {
laborCostData.setSysUser(sysUser);
laborCostData.setWorkTimes(workTimes);
laborCostData.setHourWorkTime(hourWorkTimes);
// 加班时间
laborCostData.setOvertime(overTime);
costDataList.add(laborCostData);
}

View File

@@ -133,11 +133,12 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
* @return
*/
@Override
public List<SysOaProjectVo> getProjectDataByMonth() {
Date date = new Date();
List<SysOaProjectVo> projectVos = baseMapper.getProjectDataByMonth(getFirstDay(date),getLastDay(date));
return projectVos;
public List<SysOaProjectVo> getProjectDataByMonth(Date date) {
System.out.println(date);
if (date==null){
date = new Date();
}
return baseMapper.getProjectDataByMonth(getFirstDay(date),getLastDay(date));
}
/**

View File

@@ -97,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectVoListAndTime" resultType="com.ruoyi.oa.domain.vo.SysOaAttendanceVo">
select ANY_VALUE(id),
SELECT ANY_VALUE(id),
user_id,
ANY_VALUE(attendance_day),
project_id,
@@ -109,15 +109,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ANY_VALUE(update_by),
ANY_VALUE(remark),
ANY_VALUE(del_flag),
count(*) as count,
sum(day_length) as work_times,
sum(hour) as hour_work_times
from sys_oa_attendance soa
where user_id = #{userId}
and #{lastDay} > create_time
and create_time > #{firstDay}
and del_flag = '0'
group by soa.project_id
count(id) AS count,
SUM(day_length) + CEILING(SUM(hour) / 9) AS work_times,
(SUM(day_length) + CEILING(SUM(hour) / 9)) * 9 AS hour_work_times,
FLOOR(SUM(hour) / 9) AS overTime
FROM sys_oa_attendance soa
WHERE user_id = #{userId}
AND #{lastDay} > create_time
AND create_time > #{firstDay}
AND del_flag = '0'
GROUP BY soa.project_id
</select>
<select id="selectUserListAndAttendanceListAndProjectListByUserIds"