Commit 5da3619d authored by nie'hong's avatar nie'hong

导出完善

parent f178822f
......@@ -22,24 +22,26 @@
<sql id="cols_exclude_id">
dept_name, create_time, modify_time
</sql>
<!-- 通用查询结果列 -->
<sql id="criteria">
<if test="deptName != null">AND dept_name = #{deptName}</if>
<if test="createTime != null">AND create_time = #{createTime}</if>
<if test="modifyTime != null">AND modify_time = #{modifyTime}</if>
</sql>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, oa_dept_id, dept_name, create_time, modify_time
</sql>
<select id="getDeptById" resultMap="BaseResultMap" parameterType="integer">
select <include refid="cols_all"/>
from <include refid="table"/>
where id = #{deptId}
<if test="deptId != null">
where id = #{deptId}
</if>
</select>
</mapper>
......@@ -3,6 +3,8 @@ package cn.wisenergy.service;
import cn.wisenergy.model.dto.GetMonthlyCollectParam;
import com.github.pagehelper.PageInfo;
import java.util.List;
public interface StatisticsService {
/**
......@@ -11,4 +13,11 @@ public interface StatisticsService {
* @return
*/
PageInfo getMonthlyCollect(GetMonthlyCollectParam param);
/**
* 获取用户本月填报和审批情况,权限为填报时只有填报情况
* @param userId
* @return
*/
List<Object> getMonthlyStatistics(Integer userId);
}
......@@ -17,7 +17,7 @@ public interface WorkDeptService {
WorkDept getById(Integer id);
/**
* 获取所有部门的信息
* 获取全部部门信息或单条信息
* @param deptId
* @return
*/
......
......@@ -17,12 +17,7 @@ import java.util.List;
*/
public interface WorkTimeOrderService {
/**
* 获取用户本月填报和审批情况,权限为填报时只有填报情况
* @param userId
* @return
*/
List<Object> getMonthlyStatistics(Integer userId);
/**
* 功能; 获取某日填报信息
......
package cn.wisenergy.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.wisenergy.common.utils.DateUtil;
import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.BaseCustomException;
import cn.wisenergy.mapper.WorkTimeOrderMapper;
import cn.wisenergy.mapper.WorkUserDeptMapper;
import cn.wisenergy.model.app.WorkProject;
import cn.wisenergy.model.app.WorkUser;
import cn.wisenergy.model.dto.DayWorkTimeAndType;
import cn.wisenergy.model.dto.GetMonthlyCollectParam;
import cn.wisenergy.model.dto.StatisticsTableDto;
import cn.wisenergy.model.dto.*;
import cn.wisenergy.model.enums.ManagerEnum;
import cn.wisenergy.model.enums.ProjectTypeEnum;
import cn.wisenergy.model.enums.WorkOrderStatus;
import cn.wisenergy.model.enums.WorkOrderType;
import cn.wisenergy.service.StatisticsService;
import cn.wisenergy.service.WorkDeptService;
import cn.wisenergy.service.WorkProjectService;
import cn.wisenergy.service.WorkUserService;
import com.alibaba.excel.util.StringUtils;
import com.github.pagehelper.PageHelper;
......@@ -22,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
......@@ -40,11 +45,17 @@ public class StatisticsServiceImpl implements StatisticsService {
private WorkDeptService workDeptService;
@Autowired
private WorkTimeOrderMapper workOrderMapper;
private WorkTimeOrderMapper workTimeOrderMapper;
@Autowired
private WorkUserDeptMapper workUserDeptMapper;
@Autowired
private WorkProjectService workProjectService;
private final static Integer DEFAULT_DEPT_ID = 1;
@Override
public PageInfo getMonthlyCollect(GetMonthlyCollectParam param) {
log.info("StatisticsServiceImpl[]getMonthlyCollect[]input.param" + param);
......@@ -67,7 +78,7 @@ public class StatisticsServiceImpl implements StatisticsService {
//默认部门主键为1
Integer deptId = param.getDeptId();
if (param.getDeptId() == null) {
deptId = 1;
deptId = DEFAULT_DEPT_ID;
}
//默认当前页码为1,每页数量为10
if (param.getCurrentPage() == null) {
......@@ -86,7 +97,7 @@ public class StatisticsServiceImpl implements StatisticsService {
for (Integer id : userIdList) {
WorkUser workUser = workUserService.getById(id);
//获取当月每天工时信息
List<DayWorkTimeAndType> dayWorkTimeAndTypes = workOrderMapper.listByDateAndUserId(year, month, id);
List<DayWorkTimeAndType> dayWorkTimeAndTypes = workTimeOrderMapper.listByDateAndUserId(year, month, id);
//获取用户部门名称
String deptName = workDeptService.getById(workUser.getDeptId()).getDeptName();
//封装成对象
......@@ -101,4 +112,75 @@ public class StatisticsServiceImpl implements StatisticsService {
return pageInfo;
}
@Override
public ArrayList<Object> getMonthlyStatistics(Integer userId) {
log.info("WorkTimeOrderServiceImpl[]getMonthlyStatistics[]input.param" + userId);
WorkUser user = workUserService.getById(userId);
//本月第一天
Date firstDayOfMonth = DateUtil.getCurrentFirstDayOfMonth();
//返回数据对象
ArrayList<Object> objects = new ArrayList<>();
//用户是项目或部门级别
if (user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode() ||
user.getLevel() == ManagerEnum.IS_DEPARTMENT_DIRECTOR.getCode()) {
HashMap<String, Object> map = new HashMap<>();
//以审批人、审核状态、开始时间查询本月审批数量
map.put("reviewerId", userId);
map.put("status", WorkOrderStatus.ALREADY_AUDIT.getCode());
map.put("startDay", firstDayOfMonth);
Integer completedCount = workTimeOrderMapper.getCountByCondition(map);
//本月驳回未重报数量
map.replace("status", WorkOrderStatus.TURN_DOWN.getCode());
Integer rejectAndNotResubmit = workTimeOrderMapper.getCountByCondition(map);
//项目级别,获取所管理项目,
if (user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode()) {
List<WorkProject> projects = workProjectService.getUserManageProjects(userId);
ArrayList<Integer> projectIds = new ArrayList<>();
for (WorkProject project : projects) {
projectIds.add(project.getId());
}
if (CollectionUtil.isNotEmpty(projectIds)) {
map.put("projectIds", projectIds);
}
}
//部门级别
if (user.getLevel() == ManagerEnum.IS_DEPARTMENT_DIRECTOR.getCode()) {
map.put("deptId", user.getDeptId());
//填报项目类型编码
int[] workOrderTypeArray = {WorkOrderType.EXTERNAL_WORK.getCode(), WorkOrderType.INTERNAL_WORK.getCode(), WorkOrderType.OTHER_NOT_PROJECT_BUSINESS.getCode()};
map.put("typeArray", workOrderTypeArray);
}
//待审核包括:新提交和重新提交的
ArrayList<Integer> statusArray = new ArrayList<>();
statusArray.add(WorkOrderStatus.WAIT_AUDIT.getCode());
statusArray.add(WorkOrderStatus.RE_SUBMIT.getCode());
map.remove("reviewerId");
map.remove("status");
map.put("statusArray", statusArray);
//本月未审批数量
Integer notCompletedCount = workTimeOrderMapper.getCountByCondition(map);
//所有查询结果封装进对象
ApprovalStatistics approvalStatistics = new ApprovalStatistics();
approvalStatistics.setApprovalCount(completedCount);
approvalStatistics.setRejectNotSubmit(rejectAndNotResubmit);
approvalStatistics.setNotApprovalCount(notCompletedCount);
objects.add(approvalStatistics);
}
//用户是普通用户或项目级别用户
ArrayList<MonthlyWorkingHoursStatistics> statisticsArrayList = new ArrayList<>();
if (user.getLevel() == ManagerEnum.NOT_MANAGER.getCode() ||
user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode()) {
String currentDayOfMonth = DateUtil.convertDateToYMDStr(DateUtil.getCurrentFirstDayOfMonth());
//统计项目类型工单填报次数、总工时
MonthlyWorkingHoursStatistics statistics1 = workTimeOrderMapper.collectByProjectType(userId, ProjectTypeEnum.PROJECT.getCode(), currentDayOfMonth);
statisticsArrayList.add(statistics1);
//统计商机类型工单填报次数、总工时
MonthlyWorkingHoursStatistics statistics2 = workTimeOrderMapper.collectByProjectType(userId, ProjectTypeEnum.BUSINESS_OPPORTUNITY.getCode(), currentDayOfMonth);
statisticsArrayList.add(statistics2);
objects.add(statisticsArrayList);
}
return objects;
}
}
......@@ -6,7 +6,6 @@ import cn.wisenergy.common.utils.exception.BaseCustomException;
import cn.wisenergy.mapper.WorkDeptMapper;
import cn.wisenergy.model.app.WorkDept;
import cn.wisenergy.service.WorkDeptService;
import cn.wisenergy.service.WorkUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -44,9 +43,6 @@ public class WorkDeptServiceImpl implements WorkDeptService {
@Override
public List<WorkDept> getDeptInfo(Integer deptId) {
log.info("WorkDeptServiceImpl[]getAllDeptInfo" + deptId);
if (deptId == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
//获取部门信息
List<WorkDept> workDepts = workDeptMapper.getDeptById(deptId);
if (CollectionUtil.isEmpty(workDepts)) {
......
......@@ -64,75 +64,6 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
private WorkUserProjectService workUserProjectService;
@Override
public ArrayList<Object> getMonthlyStatistics(Integer userId) {
log.info("WorkTimeOrderServiceImpl[]getMonthlyStatistics[]input.param" + userId);
WorkUser user = workUserService.getById(userId);
//本月第一天
Date firstDayOfMonth = DateUtil.getCurrentFirstDayOfMonth();
//返回数据对象
ArrayList<Object> objects = new ArrayList<>();
//用户是项目或部门级别
if (user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode() ||
user.getLevel() == ManagerEnum.IS_DEPARTMENT_DIRECTOR.getCode()) {
HashMap<String, Object> map = new HashMap<>();
//以审批人、审核状态、开始时间查询本月审批数量
map.put("reviewerId", userId);
map.put("status", WorkOrderStatus.ALREADY_AUDIT.getCode());
map.put("startDay", firstDayOfMonth);
Integer completedCount = workTimeOrderMapper.getCountByCondition(map);
//本月驳回未重报数量
map.replace("status", WorkOrderStatus.TURN_DOWN.getCode());
Integer rejectAndNotResubmit = workTimeOrderMapper.getCountByCondition(map);
//项目级别,获取所管理项目,
if (user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode()) {
List<WorkProject> projects = workProjectService.getUserManageProjects(userId);
ArrayList<Integer> projectIds = new ArrayList<>();
for (WorkProject project : projects) {
projectIds.add(project.getId());
}
if (CollectionUtil.isNotEmpty(projectIds)) {
map.put("projectIds", projectIds);
}
}
//部门级别
if (user.getLevel() == ManagerEnum.IS_DEPARTMENT_DIRECTOR.getCode()) {
map.put("deptId", user.getDeptId());
//填报项目类型编码
int[] workOrderTypeArray = {WorkOrderType.EXTERNAL_WORK.getCode(), WorkOrderType.INTERNAL_WORK.getCode(), WorkOrderType.OTHER_NOT_PROJECT_BUSINESS.getCode()};
map.put("typeArray", workOrderTypeArray);
}
//待审核包括:新提交和重新提交的
ArrayList<Integer> statusArray = new ArrayList<>();
statusArray.add(WorkOrderStatus.WAIT_AUDIT.getCode());
statusArray.add(WorkOrderStatus.RE_SUBMIT.getCode());
map.remove("reviewerId");
map.remove("status");
map.put("statusArray", statusArray);
//本月未审批数量
Integer notCompletedCount = workTimeOrderMapper.getCountByCondition(map);
//所有查询结果封装进对象
ApprovalStatistics approvalStatistics = new ApprovalStatistics();
approvalStatistics.setApprovalCount(completedCount);
approvalStatistics.setRejectNotSubmit(rejectAndNotResubmit);
approvalStatistics.setNotApprovalCount(notCompletedCount);
objects.add(approvalStatistics);
}
//用户是普通用户或项目级别用户
ArrayList<MonthlyWorkingHoursStatistics> statisticsArrayList = new ArrayList<>();
if (user.getLevel() == ManagerEnum.NOT_MANAGER.getCode() ||
user.getLevel() == ManagerEnum.IS_PROJECT_DIRECTOR.getCode()) {
String currentDayOfMonth = DateUtil.convertDateToYMDStr(DateUtil.getCurrentFirstDayOfMonth());
//统计项目类型工单填报次数、总工时
MonthlyWorkingHoursStatistics statistics1 = workTimeOrderMapper.collectByProjectType(userId, ProjectTypeEnum.PROJECT.getCode(), currentDayOfMonth);
statisticsArrayList.add(statistics1);
//统计商机类型工单填报次数、总工时
MonthlyWorkingHoursStatistics statistics2 = workTimeOrderMapper.collectByProjectType(userId, ProjectTypeEnum.BUSINESS_OPPORTUNITY.getCode(), currentDayOfMonth);
statisticsArrayList.add(statistics2);
objects.add(statisticsArrayList);
}
return objects;
}
......
package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.BaseCustomException;
import cn.wisenergy.model.app.WorkDept;
import cn.wisenergy.model.dto.GetMonthlyCollectParam;
import cn.wisenergy.service.StatisticsService;
......@@ -27,7 +25,7 @@ import java.util.List;
@RestController
@RequestMapping(value = "/statistics")
@Slf4j
@Api(tags = "统计报表")
@Api(tags = "统计报表")
public class StatisticsController extends BaseController {
@Autowired
StatisticsService statisticsService;
......@@ -43,14 +41,11 @@ public class StatisticsController extends BaseController {
return monthlyCollect;
}
@ApiOperation(value = "获取部门信息", notes = "获取部门信息")
@ApiImplicitParam(name = "deptId", value = "部门主键", required = true)
@ApiOperation(value = "获取全部部门信息或单条信息", notes = "获取全部部门信息或单条信息")
@ApiImplicitParam(name = "deptId", value = "部门主键")
@GetMapping("/getDeptInfo")
public List<WorkDept> getDeptInfo( Integer deptId) {
log.info("StatisticsController[]getDeptInfo[]input.param" + deptId);
if (deptId == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
List<WorkDept> workDepts = workDeptService.getDeptInfo(deptId);
return workDepts;
}
......
......@@ -2,7 +2,7 @@ package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.exception.*;
import cn.wisenergy.model.dto.ResultUser;
import cn.wisenergy.service.WorkTimeOrderService;
import cn.wisenergy.service.StatisticsService;
import cn.wisenergy.service.WorkUserService;
import cn.wisenergy.web.admin.controller.common.BaseController;
import io.swagger.annotations.Api;
......@@ -32,7 +32,7 @@ public class WorkUserController extends BaseController {
private WorkUserService workUserService;
@Autowired
WorkTimeOrderService workOrderService;
private StatisticsService statisticsService;
@ApiOperation(value = "根据id获取用户信息", notes = "根据id获取用户信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "用户id", dataType = "int", required = true)
......@@ -81,7 +81,7 @@ public class WorkUserController extends BaseController {
if (userId == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
List<Object> monthlyStatistics = workOrderService.getMonthlyStatistics(userId);
List<Object> monthlyStatistics = statisticsService.getMonthlyStatistics(userId);
return getResult(monthlyStatistics);
}
}
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