Commit d4e3ec46 authored by nie'hong's avatar nie'hong

完善工时统计

parent 96357dfe
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<update id="updateByIds"> <update id="updateByIds">
UPDATE UPDATE
<include refid="table"/> <include refid="table"/>
SET status = 2,reviewer_id = #{reviewerId} SET status = 2,reviewer_id = #{reviewerId},modify_time = now()
WHERE work_id IN WHERE work_id IN
<foreach collection="ids" item="id" open="(" close=")" separator=","> <foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id} #{id}
...@@ -211,7 +211,10 @@ ...@@ -211,7 +211,10 @@
<where> <where>
<include refid="criteria"/> <include refid="criteria"/>
<if test="startDay != null"> <if test="startDay != null">
AND work_day>=#{startDay} AND modify_time>=#{startModifyTime}
</if>
<if test="">
AND work_day>={startWorkTime}
</if> </if>
<if test="projectIdList != null"> <if test="projectIdList != null">
AND project_id IN AND project_id IN
......
...@@ -55,9 +55,6 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -55,9 +55,6 @@ public class StatisticsServiceImpl implements StatisticsService {
@Autowired @Autowired
private WorkUserMapper workUserMapper; private WorkUserMapper workUserMapper;
@Autowired
private UserRoleLevelUtils userRoleLevelUtils;
@Autowired @Autowired
private WorkTypeMapper workTypeMapper; private WorkTypeMapper workTypeMapper;
...@@ -146,7 +143,13 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -146,7 +143,13 @@ public class StatisticsServiceImpl implements StatisticsService {
public Map<String, Object> getMonthlyStatistics(Integer userId) { public Map<String, Object> getMonthlyStatistics(Integer userId) {
log.info("WorkTimeOrderServiceImpl[]getMonthlyStatistics[]input.param" + userId); log.info("WorkTimeOrderServiceImpl[]getMonthlyStatistics[]input.param" + userId);
WorkUser user = workUserService.getById(userId); WorkUser user = workUserService.getById(userId);
// 用户权限
List<String> userAuthority = this.getUserAuthority(userId); List<String> userAuthority = this.getUserAuthority(userId);
// 用户权限与权限对应级别
List<Integer> role = UserRoleLevelUtils.getRole(userId);
List<Integer> list = UserRoleLevelUtils.getlevelIds(role);
List<WorkLevel> workLevels = UserRoleLevelUtils.getlevelByIds(list);
List<Integer> rank = this.getUserRank(workLevels, LevelEnum.EXAMINE.getLevelName());
// 本月第一天 // 本月第一天
Date firstDayOfMonth = DateUtil.getCurrentFirstDayOfMonth(); Date firstDayOfMonth = DateUtil.getCurrentFirstDayOfMonth();
// 返回数据对象 // 返回数据对象
...@@ -157,7 +160,7 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -157,7 +160,7 @@ public class StatisticsServiceImpl implements StatisticsService {
if (CollectionUtil.isNotEmpty(userAuthority) && userAuthority.contains(LevelEnum.EXAMINE.getLevelName())) { if (CollectionUtil.isNotEmpty(userAuthority) && userAuthority.contains(LevelEnum.EXAMINE.getLevelName())) {
//以审批人、审核状态、开始时间查询本月审批数量 //以审批人、审核状态、开始时间查询本月审批数量
map.put("reviewerId", userId); map.put("reviewerId", userId);
map.put("startDay", firstDayOfMonth); map.put("startModifyTime", firstDayOfMonth);
Integer completedCount = workTimeOrderMapper.getCountByCondition(map); Integer completedCount = workTimeOrderMapper.getCountByCondition(map);
//本月驳回未重报数量 //本月驳回未重报数量
...@@ -184,17 +187,18 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -184,17 +187,18 @@ public class StatisticsServiceImpl implements StatisticsService {
// 查询用户负责审批的除项目合商机的其余类型 // 查询用户负责审批的除项目合商机的其余类型
Integer notCompletedCount2 = 0; Integer notCompletedCount2 = 0;
List<WorkTypeManager> workTypeManagers = workTypeManagerMapper.getListByManagerId(userId); if (rank.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())) {
if (CollectionUtil.isNotEmpty(workTypeManagers)) {
map.remove("projectIdList"); map.remove("projectIdList");
List<Integer> type = workTypeManagers.stream().map(WorkTypeManager::getType).collect(Collectors.toList()); List<WorkType> allType = workTypeMapper.getAll();
List<Integer> type = new ArrayList<>();
for (int i = 4; i < allType.size(); i++) {
type.add(allType.get(i).getId());
}
map.put("typeList", type); map.put("typeList", type);
map.put("deptId", user.getDeptId()); map.put("deptId", user.getDeptId());
// 其余类型为审批的条数 // 其余类型为审批的条数
notCompletedCount2 = workTimeOrderMapper.getCountByCondition(map); notCompletedCount2 = workTimeOrderMapper.getCountByCondition(map);
} }
//所有查询结果封装进对象 //所有查询结果封装进对象
ApprovalStatistics approvalStatistics = new ApprovalStatistics(); ApprovalStatistics approvalStatistics = new ApprovalStatistics();
approvalStatistics.setApprovalCount(completedCount); approvalStatistics.setApprovalCount(completedCount);
...@@ -215,7 +219,7 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -215,7 +219,7 @@ public class StatisticsServiceImpl implements StatisticsService {
map.clear(); map.clear();
map.put("status", StatusEnum.REJECTED.getCode()); map.put("status", StatusEnum.REJECTED.getCode());
map.put("userId", userId); map.put("userId", userId);
map.put("startDay", firstDayOfMonth); map.put("startWorkTime", firstDayOfMonth);
Integer countByCondition = workTimeOrderMapper.getCountByCondition(map); Integer countByCondition = workTimeOrderMapper.getCountByCondition(map);
List<MonthlyWorkingHoursStatistics> monthlyWorkingHoursStatistics = workTimeOrderMapper.statisticsByProjectType(userId, firstDayOfMonth); List<MonthlyWorkingHoursStatistics> monthlyWorkingHoursStatistics = workTimeOrderMapper.statisticsByProjectType(userId, firstDayOfMonth);
...@@ -286,7 +290,7 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -286,7 +290,7 @@ public class StatisticsServiceImpl implements StatisticsService {
// 获取角色对应的权限 // 获取角色对应的权限
List<WorkLevel> workLevels = UserRoleLevelUtils.getlevelByIds(list); List<WorkLevel> workLevels = UserRoleLevelUtils.getlevelByIds(list);
// 用户该权限的级别 // 用户该权限的级别
List<Integer> rank = this.getUserRank(workLevels,LevelEnum.EXAMINE.getLevelName()); List<Integer> rank = this.getUserRank(workLevels, LevelEnum.EXAMINE.getLevelName());
// 获取所有的类型 // 获取所有的类型
List<WorkType> workTypes = workTypeMapper.getAll(); List<WorkType> workTypes = workTypeMapper.getAll();
...@@ -311,13 +315,12 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -311,13 +315,12 @@ public class StatisticsServiceImpl implements StatisticsService {
workTimeAndCostCollects = workProjectTimeCostMapper.selectList(map); workTimeAndCostCollects = workProjectTimeCostMapper.selectList(map);
// 除项目和项目的类型 // 除项目和项目的类型
map.put("types",types); map.put("types", types);
// 获取这些类型的所有工单 // 获取这些类型的所有工单
List<WorkTimeAndCostCollect> workTimeAndCostCollect = workTimeOrderMapper.getWorkTimeAndCostCollect(map); List<WorkTimeAndCostCollect> workTimeAndCostCollect = workTimeOrderMapper.getWorkTimeAndCostCollect(map);
workTimeAndCostCollects.addAll(workTimeAndCostCollect); workTimeAndCostCollects.addAll(workTimeAndCostCollect);
} } else if (rank.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())) { // 如果用户的审批权限的级别最高为部门级别
else if (rank.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank()) ) { // 如果用户的审批权限的级别最高为部门级别
// 获取部门下的所有项目和商机的工时统计 // 获取部门下的所有项目和商机的工时统计
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("deptId", user.getDeptId()); map.put("deptId", user.getDeptId());
...@@ -325,12 +328,11 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -325,12 +328,11 @@ public class StatisticsServiceImpl implements StatisticsService {
workTimeAndCostCollects = workProjectTimeCostMapper.selectList(map); workTimeAndCostCollects = workProjectTimeCostMapper.selectList(map);
// 除项目和项目的类型 // 除项目和项目的类型
map.put("types",types); map.put("types", types);
// 获取这些类型的所有工单 // 获取这些类型的所有工单
List<WorkTimeAndCostCollect> workTimeAndCostCollect = workTimeOrderMapper.getWorkTimeAndCostCollect(map); List<WorkTimeAndCostCollect> workTimeAndCostCollect = workTimeOrderMapper.getWorkTimeAndCostCollect(map);
workTimeAndCostCollects.addAll(workTimeAndCostCollect); workTimeAndCostCollects.addAll(workTimeAndCostCollect);
} } else if (rank.contains(LevelRankEnum.PROJECT_LEVEL.getRank())) { // 如果用户的审批权限的级别最高为项目/商机级别,与其他两种级别不同的是只汇总项目和商机类型的工单
else if (rank.contains(LevelRankEnum.PROJECT_LEVEL.getRank())) { // 如果用户的审批权限的级别最高为项目/商机级别,与其他两种级别不同的是只汇总项目和商机类型的工单
// 获取部门下的所有项目和商机的工时统计 // 获取部门下的所有项目和商机的工时统计
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
// 获取用户负责项目和商机id // 获取用户负责项目和商机id
...@@ -476,15 +478,17 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -476,15 +478,17 @@ public class StatisticsServiceImpl implements StatisticsService {
// 节假日单元格标绿色 // 节假日单元格标绿色
if (!days.contains(r + 1)) { if (!days.contains(r + 1)) {
cell.setCellStyle(cellStyle1); cell.setCellStyle(cellStyle1);
} else {
cell.setCellStyle(cellStyle);
} }
// 获取单元格中的工时,当日总工时小于8,则单元格底色为红色 // 获取单元格中的工时,当日总工时小于8,则单元格底色为红色
String cellValue = ExcelUtils.getCellValue(cell, true); // String cellValue = ExcelUtils.getCellValue(cell, true);
if (StringUtil.isNotEmpty(cellValue)) { // if (StringUtil.isNotEmpty(cellValue)) {
Integer numberOfString = this.getNumberOfString(cellValue); // Integer numberOfString = this.getNumberOfString(cellValue);
if (numberOfString != null && numberOfString < 8) { // if (numberOfString != null && numberOfString < 8) {
cell.setCellStyle(cellStyle2); // cell.setCellStyle(cellStyle2);
} // }
} // }
} }
} }
return sheets; return sheets;
...@@ -518,7 +522,7 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -518,7 +522,7 @@ public class StatisticsServiceImpl implements StatisticsService {
// 获取用户权限的级别 // 获取用户权限的级别
List<Integer> list = UserRoleLevelUtils.getlevelIds(role); List<Integer> list = UserRoleLevelUtils.getlevelIds(role);
List<WorkLevel> workLevels = UserRoleLevelUtils.getlevelByIds(list); List<WorkLevel> workLevels = UserRoleLevelUtils.getlevelByIds(list);
List<Integer> rank = this.getUserRank(workLevels,LevelEnum.USER_STATISTICS.getLevelName()); List<Integer> rank = this.getUserRank(workLevels, LevelEnum.USER_STATISTICS.getLevelName());
// 不是中心级不能选择部门 // 不是中心级不能选择部门
if (!rank.contains(LevelRankEnum.CENTRAL_LEVEL.getRank()) && deptId != null) { if (!rank.contains(LevelRankEnum.CENTRAL_LEVEL.getRank()) && deptId != null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.NO_AUTHORITY); throw new BaseCustomException(BASE_RESP_CODE_ENUM.NO_AUTHORITY);
...@@ -541,11 +545,11 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -541,11 +545,11 @@ public class StatisticsServiceImpl implements StatisticsService {
// 查询部门下所有项目,部门主键为空时是默认部门 // 查询部门下所有项目,部门主键为空时是默认部门
map.put("deptId", deptId); map.put("deptId", deptId);
userManageProjects = workProjectMapper.getListByCriteria(map); userManageProjects = workProjectMapper.getListByCriteria(map);
}else if(rank.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())){ } else if (rank.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())) {
// 查询部门下所有项目,部门主键是用户的部门主键,当前权限最高级别为部门级别 // 查询部门下所有项目,部门主键是用户的部门主键,当前权限最高级别为部门级别
map.put("deptId", user.getDeptId()); map.put("deptId", user.getDeptId());
userManageProjects = workProjectMapper.getListByCriteria(map); userManageProjects = workProjectMapper.getListByCriteria(map);
}else { } else {
map.put("managerId", user.getId()); map.put("managerId", user.getId());
userManageProjects = workProjectMapper.getListByCriteria(map); userManageProjects = workProjectMapper.getListByCriteria(map);
} }
...@@ -700,10 +704,18 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -700,10 +704,18 @@ public class StatisticsServiceImpl implements StatisticsService {
//获取的是工作日 //获取的是工作日
if (specialDate.getDayType().equals(HolidayTypeEnum.WORKING_DAY.getCode())) { if (specialDate.getDayType().equals(HolidayTypeEnum.WORKING_DAY.getCode())) {
//在本月应上班集合中加上这天,一般都是放假前后的周末调整上班 //在本月应上班集合中加上这天,一般都是放假前后的周末调整上班
workDays.addAll(isWorkDays); for (Date isWorkDay : isWorkDays) {
if (isWorkDay.compareTo(endDate) != 1 && isWorkDay.compareTo(startDate) != -1 && !workDays.contains(isWorkDay)) {
workDays.add(isWorkDay);
}
}
} else { } else {
//否则就除去假日 //否则就除去假日
workDays.removeAll(isWorkDays); for (Date isWorkDay : isWorkDays) {
if (isWorkDay.compareTo(endDate) != 1 && isWorkDay.compareTo(startDate) != -1 && !workDays.contains(isWorkDay)) {
workDays.remove(isWorkDay);
}
}
} }
} }
return workDays; return workDays;
...@@ -789,7 +801,7 @@ public class StatisticsServiceImpl implements StatisticsService { ...@@ -789,7 +801,7 @@ public class StatisticsServiceImpl implements StatisticsService {
} }
// 获取用户当前权限对应的级别 // 获取用户当前权限对应的级别
public List<Integer> getUserRank(List<WorkLevel> workLevels, String levelName){ public List<Integer> getUserRank(List<WorkLevel> workLevels, String levelName) {
List<Integer> rank = new ArrayList<>(); List<Integer> rank = new ArrayList<>();
for (WorkLevel workLevel : workLevels) { for (WorkLevel workLevel : workLevels) {
if (workLevel.getName().equals(levelName)) { if (workLevel.getName().equals(levelName)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment