Commit 82f0b560 authored by cq990612's avatar cq990612

优化代码结构

parent 58d94ca6
package cn.wisenergy.mapper;
import cn.wisenergy.model.app.WorkTimeOrder;
import cn.wisenergy.model.dto.DayWorkTimeAndType;
import cn.wisenergy.model.dto.MonthlyWorkingHoursStatistics;
import cn.wisenergy.model.dto.UserWorkTimeStatisticsByProject;
import cn.wisenergy.model.dto.WorkTimeAndCostCollect;
import cn.wisenergy.model.dto.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
......@@ -108,4 +105,6 @@ public interface WorkTimeOrderMapper extends BaseMapper<WorkTimeOrder> {
List<UserWorkTimeStatisticsByProject> selectListByType(Map<String,Object> map);
List<DeptUserCollectDto> getDeptNotOrderInfo(@Param("userId") Integer userId,@Param("depts") List<Integer> depts,@Param("startDate") Date startDate, @Param("endDate") Date endDate);
}
......@@ -411,4 +411,37 @@
)
GROUP BY <if test="isAll">u.id,u.`name`,</if> t.type, t.is_overtime
</select>
<resultMap id="DeptUserCollectDto" type="cn.wisenergy.model.dto.DeptUserCollectDto">
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<collection property="workDay"
javaType="ArrayList"
ofType = "java.util.Date">
<result column="work_day"/>
</collection>
</resultMap>
<select id="getDeptNotOrderInfo" resultMap="DeptUserCollectDto">
select d.id as 'dept_id' ,d.dept_name,u.id as 'user_id',u.name as 'user_name',c.work_day
from work_user u LEFT JOIN work_collect c ON u.id = c.user_id LEFT JOIN work_dept d on u.dept_id = d.id
<where>
u.submit_order = 1 and u.`status` = 1 and c.`status` !=3
<if test=" startDate !=null and endDate !=null">
and c.work_day between #{startDate} and #{endDate}
</if>
<if test="depts !=null and depts.size()>0">
AND d.id in
<foreach collection="depts" item="dept" open="(" close=")" separator=",">
#{dept}
</foreach>
</if>
</where>
ORDER BY d.sort,u.name
</select>
</mapper>
package cn.wisenergy.model.dto;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Authotr:陈奇
* @QQ1799796883
*/
@Data
public class DeptUserCollectDto {
private Integer userId;
private String userName;
private Integer deptId;
private String deptName;
List<Date> workDay;
}
package cn.wisenergy.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
......@@ -15,5 +17,7 @@ public class DeptUserDto {
private String deptName;
private Date date;
@JsonFormat(shape=JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
private List<UserDto> userDtos;
}
......@@ -12,4 +12,6 @@ public class UserDto {
private Integer id;
private String name;
private Integer notWorkDays;
}
......@@ -11,7 +11,8 @@ public enum LevelEnum {
PROJECT_MANAGER( "项目/商机管理"),
TIMEEXPORT("工时导出"),
SYSTEMSETTINGS("系统设置"),
ACCOUNTMANAGEMENT("账号管理")
ACCOUNTMANAGEMENT("账号管理"),
MISSING("填报缺失"),
;
private String LevelName;
......
......@@ -2,7 +2,6 @@ package cn.wisenergy.service;
import cn.wisenergy.model.app.WorkTimeOrder;
import cn.wisenergy.model.dto.*;
import cn.wisenergy.model.vo.ManagerOrderVo;
import com.github.pagehelper.PageInfo;
import java.util.Date;
......@@ -120,5 +119,10 @@ public interface WorkTimeOrderService {
*/
int statusYes(Integer userId, Date workDay);
/**
* 获取本部门 填报缺失信息
* @param userId
* @return
*/
List<DeptUserDto> getDeptNotOrderInfo(Integer userId);
}
......@@ -73,11 +73,14 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
private WorkCollectService workCollectService;
@Autowired
private WorkUserDeptService workUserDeptService;
private WorkCentreService workCentreService;
@Autowired
private WorkUserProjectService workUserProjectService;
@Autowired
private StatisticsService statisticsService;
// 工单状态
......@@ -825,15 +828,15 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
if (null == projectId && null == type) {
List<ProjectManagerDto> projectManagerDto = getProjectManagerDto(user, workTypes);
if (!CollectionUtils.isEmpty(projectManagerDto)) {
projectManagerDto.forEach(project ->{
projectManagerDto.forEach(project -> {
if (null != project.getId()) {
projectIds.add(project.getId());
} else {
types.add(project.getType());
}
} );
});
}
}else{
} else {
if (null != projectId) {
projectIds.add(projectId);
}
......@@ -891,7 +894,6 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
}
private String getTypeName(Integer type, List<WorkType> workTypes) {
if (!CollectionUtils.isEmpty(workTypes)) {
for (WorkType value : workTypes) {
......@@ -926,11 +928,100 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
}
/**
* 功能:获取工单变更分页
* 获取本部门 填报缺失信息
*
* @param managerOrderVo 分页套件
* @return PageInfo
* @param userId
* @return
*/
@Override
public List<DeptUserDto> getDeptNotOrderInfo(Integer userId) {
log.info("WorkOrderServiceImpl[]getDeptNotOrderInfo[]input.param.userId" + userId);
if (null == userId) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
WorkUser user = workUserService.getById(userId);
List<Integer> ranks = UserRoleLevelUtils.getRankByUserAndLevelName(userId, LevelEnum.PROJECT_MANAGER.getLevelName());
if (CollectionUtils.isEmpty(ranks)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.THE_USER_NOT_MANAGER_PLASE_MANAGER_LOGIN);
}
Integer rankMax = null;
for (Integer rank : ranks) {
rankMax = rankMax == null ? rank : rank > rankMax ? rank : rankMax;
}
if (rankMax == null) {
return null;
}
List<DeptUserCollectDto> deptNotOrderInfo = new ArrayList<>();
List<Integer> deptIds = new ArrayList<>();
WorkSubmitAdopt adopt = workSubmitAdoptService.getById(1);
Integer submitTime = adopt.getSubmitTime();
Date date = new Date();
Date startDate = null;
Date endDate = null;
if (DateUtil.getDay(date) <= submitTime) {
date.setMonth(DateUtil.getMonth(date) - 1);
startDate = DateUtil.getFirstDayOfMonth(date);
endDate = DateUtil.getLastDayByMonth2(date);
} else {
startDate = DateUtil.getFirstDayOfMonth(date);
endDate = date;
}
boolean flag = DateUtil.isYearAndMonthEqual(date, new Date());
List<Date> workDays = statisticsService.currentMonthWorkDays(date, flag);
List<DeptUserDto> deptUserDtos = new ArrayList<>();
if (LevelRankEnum.CENTRAL_LEVEL.getRank().equals(rankMax)) {
List<WorkDept> deptByCentreManager = workCentreService.getDeptByCentreManager(user);
for (WorkDept workDept : deptByCentreManager) {
DeptUserDto deptUserDto = new DeptUserDto();
deptUserDto.setDeptId(workDept.getId());
deptUserDto.setDeptName(workDept.getDeptName());
deptUserDto.setDate(date);
deptUserDtos.add(deptUserDto);
}
if (CollectionUtils.isEmpty(deptByCentreManager)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.DEPT_NOT_FOUND);
}
deptByCentreManager.forEach(dept -> deptIds.add(dept.getId()));
deptNotOrderInfo = workTimeOrderMapper.getDeptNotOrderInfo(userId, deptIds, startDate, endDate);
}
if (LevelRankEnum.DEPARTMENT_LEVEL.getRank().equals(rankMax)) {
deptIds.add(user.getDeptId());
deptNotOrderInfo = workTimeOrderMapper.getDeptNotOrderInfo(userId, deptIds, startDate, endDate);
DeptUserDto deptUserDto = new DeptUserDto();
deptUserDto.setDeptId(deptNotOrderInfo.get(0).getDeptId());
deptUserDto.setDeptName(deptNotOrderInfo.get(0).getDeptName());
deptUserDto.setDate(date);
deptUserDtos.add(deptUserDto);
}
for (DeptUserDto deptUserDto : deptUserDtos) {
List<UserDto> userDtos = new ArrayList<>();
for (DeptUserCollectDto deptUserCollectDto : deptNotOrderInfo) {
UserDto userDto = new UserDto();
List<Date> workDays1 = new ArrayList<>(workDays);
userDto.setId(deptUserCollectDto.getUserId());
userDto.setName(deptUserCollectDto.getUserName());
workDays1.removeAll(deptUserCollectDto.getWorkDay());
userDto.setNotWorkDays(workDays1.size());
if (deptUserCollectDto.getDeptId().equals(deptUserDto.getDeptId())) {
userDtos.add(userDto);
}
}
deptUserDto.setUserDtos(userDtos);
}
System.out.println(deptNotOrderInfo);
return deptUserDtos;
}
}
......@@ -16,10 +16,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
@Component
public class UserRoleLevelUtils {
......@@ -183,6 +180,22 @@ public class UserRoleLevelUtils {
return false;
}
public static List<Integer> getRankByUserAndLevelName(Integer userId, String levelName) {
if (null == userId || StringUtils.isBlank(levelName)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
List<UserRoleLevelDto> roleUserLevel = UserRoleLevelUtils.getRoleUserLevel(userId);
if (CollectionUtils.isEmpty(roleUserLevel)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.THE_USER_NOT_MANAGER_PLASE_MANAGER_LOGIN);
}
List<Integer> ranks = new ArrayList<>();
for (UserRoleLevelDto userRoleLevelDto : roleUserLevel) {
if (levelName.equals(userRoleLevelDto.getLevelName())) {
ranks.add(userRoleLevelDto.getRank());
}
}
return ranks;
}
}
......@@ -5,10 +5,7 @@ import cn.wisenergy.common.utils.exception.CustomException;
import cn.wisenergy.common.utils.exception.RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.Result;
import cn.wisenergy.model.app.WorkTimeOrder;
import cn.wisenergy.model.dto.AppletsPendApprovalDto;
import cn.wisenergy.model.dto.CreateWorkOrderDto;
import cn.wisenergy.model.dto.ProjectsDto;
import cn.wisenergy.model.dto.WorkTimeOrderDto;
import cn.wisenergy.model.dto.*;
import cn.wisenergy.service.WorkTimeOrderService;
import cn.wisenergy.web.admin.controller.common.BaseController;
import com.github.pagehelper.PageInfo;
......@@ -161,4 +158,14 @@ public class WorkTimeOrderController extends BaseController {
return getResult(workTimeOrderDtos);
}
@ApiOperation(value = "查询工时缺失", notes = "查询工时缺失", httpMethod = "GET")
@ApiImplicitParam(name = "userId", value = "管理员Id", dataType = "int",required = true)
@GetMapping(value = "/getDeptNotOrderInfo")
public Result getDeptNotOrderInfo(Integer userId) {
log.info("WorkTimeOrderController[]getDeptNotOrderInfo[]input.param.userId:{}" + userId);
List<DeptUserDto> deptUserDtos = workTimeOrderService.getDeptNotOrderInfo(userId);
return getResult(deptUserDtos);
}
}
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