diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/WorkTimeOrderMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/WorkTimeOrderMapper.java index 11c261828e78d2e59f70a8c5f9319c5a03ff09b6..8af68a1367aa8d0ef5219831da82fa5c69c2174a 100644 --- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/WorkTimeOrderMapper.java +++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/WorkTimeOrderMapper.java @@ -93,6 +93,14 @@ public interface WorkTimeOrderMapper extends BaseMapper<WorkTimeOrder> { /** * 获å–人员项目工时 */ - List<UserWorkTimeStatisticsByProject> getUserProjectWorkTimeStatistics(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("isConclusion") Integer isConclusion, @Param("projectIds") List<Integer> projectIds, @Param("userIds") List<Integer>userIds); + List<UserWorkTimeStatisticsByProject> getUserProjectWorkTimeStatistics(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("isConclusion") Integer isConclusion, @Param("projectIds") List<Integer> projectIds, @Param("userIds") List<Integer> userIds); + /** + * æ ¹æ®å·¥å•状æ€èŽ·å–å¡«æŠ¥æ¡æ•° + * @param userId + * @param firstDayOfMonth + * @param status + * @return + */ + List<MonthlyWorkingHoursStatistics> selectCountByTypeAndStatus(@Param("userId") Integer userId, @Param("firstDayOfMonth") Date firstDayOfMonth,@Param("status") Integer[] status); } diff --git a/wisenergy-mapper/src/main/resources/mapper/WorkProjectTimeCost.xml b/wisenergy-mapper/src/main/resources/mapper/WorkProjectTimeCost.xml index 41a16931296dd5ae9155ae6231f18a5d1bc0fa11..d32c53ccc8396867ddf42a18fd9f76db8c30f115 100644 --- a/wisenergy-mapper/src/main/resources/mapper/WorkProjectTimeCost.xml +++ b/wisenergy-mapper/src/main/resources/mapper/WorkProjectTimeCost.xml @@ -32,6 +32,7 @@ <resultMap id="projectStatisticsByMonth" type="cn.wisenergy.model.dto.ProjectStatisticsByMonth"> <result property="projectId" column="project_id"/> <result property="projectName" column="project_name"/> + <result property="deptName" column="dept_name"/> <collection property="statisticsDateAndWorkTimes" ofType="cn.wisenergy.model.dto.ProjectStatisticsByMonth$StatisticsDateAndWorkTime"> <result property="date" column="date"/> <result property="totalTime" column="total_time"/> @@ -50,6 +51,7 @@ INSERT INTO work_project_time_cost ( project_id, user_id, + dept_id, statistics_start, statistics_end, total_time, @@ -59,6 +61,7 @@ SELECT project_id, t.user_id, + t.dept_id, min(work_day), max(work_day), sum(work_time / 8), @@ -72,6 +75,7 @@ AND t.`status` IN (2, 5) AND project_id is not null GROUP BY project_id, + t.dept_id, t.user_id, YEAR (work_day), MONTH (work_day) @@ -80,7 +84,7 @@ <select id="selectList" resultMap="workTimeAndCostCollect"> - SELECT case `type` when 1 then "项目" else "商机" end AS type ,dept_name,dept_id,ptc.project_id AS + SELECT type ,dept_name,ptc.dept_id,ptc.project_id AS project_id,project_name,min(statistics_start) AS statistics_start,max(statistics_end) AS statistics_end,sum(total_time) AS total_time,sum(cost) AS cost from work_project_time_cost ptc join work_project p on ptc.project_id=p.id join work_dept d on p.dept_id=d.id @@ -105,16 +109,16 @@ <select id="selectListByMonth" resultMap="projectStatisticsByMonth"> select ptc.project_id AS project_id, project_name, group_CONCAT(DISTINCT YEAR (statistics_start),'å¹´',MONTH (statistics_start),'月') AS date, - sum(total_time) AS total_time, sum(cost) AS cost - from work_project_time_cost ptc join work_project p on ptc.project_id = p.id + sum(total_time) AS total_time, sum(cost) AS cost <if test="projectId != null "> ,d.dept_name AS dept_name</if> + from work_project_time_cost ptc join work_project p on ptc.project_id = p.id join work_dept d on ptc.dept_id = d.id <where> <if test="projectId != null "> ptc.project_id = #{projectId} </if> <if test="deptId != null"> - AND dept_id = #{deptId} AND year(statistics_start) = #{year} + AND p.dept_id = #{deptId} AND year(statistics_start) = #{year} </if> </where> - group by ptc.project_id,project_name,year(statistics_start),MONTH(statistics_start) + group by ptc.project_id,project_name,year(statistics_start),MONTH(statistics_start) <if test="projectId != null "> ,ptc.dept_id</if> </select> </mapper> \ No newline at end of file diff --git a/wisenergy-mapper/src/main/resources/mapper/WorkTimeOrderMapper.xml b/wisenergy-mapper/src/main/resources/mapper/WorkTimeOrderMapper.xml index 23b158c02b2eaba726fb4fb53ebe932a13c171da..9a48c1bc749b9de208d72d3a7c18d6c70f688da0 100644 --- a/wisenergy-mapper/src/main/resources/mapper/WorkTimeOrderMapper.xml +++ b/wisenergy-mapper/src/main/resources/mapper/WorkTimeOrderMapper.xml @@ -89,7 +89,9 @@ <resultMap id="monthlyWorkHourStatistics" type="cn.wisenergy.model.dto.MonthlyWorkingHoursStatistics"> <result property="count" column="count(1)"/> <result property="workTime" column="sum(work_time)"/> - <result property="projectType" column="type"/> + <result property="projectType" column="id"/> + <result property="typeName" column="name"/> + <result property="approved" column="approved"/> </resultMap> <sql id="table"> @@ -180,10 +182,9 @@ </sql> <select id="statisticsByProjectType" resultMap="monthlyWorkHourStatistics"> - select CASE WHEN type = 1 THEN "项目" WHEN type = 2 THEN "商机" END AS type, count(1),sum(work_time) - from - <include refid="table"/> - where user_id = #{userId} AND type in (1,2) AND work_day >= #{currentMonthFirstDay} + select t2.id AS id , t2.name AS name ,count(1),sum(work_time) + from work_time_order t join work_type t2 on t.type = t2.id + where user_id = #{userId} AND work_day >= #{currentMonthFirstDay} group by type </select> @@ -230,7 +231,7 @@ </select> <select id="getWorkTimeAndCostCollect" resultMap="workTimeAndCostCollect" > - SELECT CASE t.type WHEN 1 THEN "项目" WHEN 2 THEN "商机" WHEN 3 THEN "请å‡" WHEN 4 THEN "调休" WHEN 5 THEN "外部商务/技术交æµ" WHEN 6 THEN "内部培è®/技术准备/管ç†" WHEN 7 THEN "å…¶ä»–éžé¡¹ç›®/商机工作" END AS type,t.dept_id AS dept_id, + SELECT t.type AS type,t.dept_id AS dept_id, t.project_id AS project_id ,MIN(t.work_day) AS first_time,MAX(t.work_day) AS last_time,ROUND(SUM(t.work_time)/8,2) AS total_time, SUM(t.work_time * s.day_salary)/8 AS cost,dept_name AS dept_name,project_name FROM work_time_order t LEFT JOIN work_project p ON t.project_id=p.id LEFT JOIN work_dept d ON t.dept_id=d.id LEFT JOIN work_user_salary s ON s.user_id = t.user_id @@ -297,7 +298,7 @@ <select id="getUserProjectWorkTimeStatistics" resultMap="userWorkTimeStatisticsByProject"> SELECT u.id AS user_id ,u.`name` AS user_name, t.project_id AS project_id - ,case t.type when 1 then '项目' when 2 then '商机' when 5 then '外部商务/技术交æµ' when 6 then '内部培è®/技术准备/管ç†' when 7 then 'å…¶ä»–éžé¡¹ç›®/商机工作' end AS project_type + ,case t.type when 1 then '项目' when 2 then '商机' when 5 then 'å¤–éƒ¨å•†åŠ¡ã€æŠ€æœ¯äº¤æµ' when 6 then '内部培è®ã€æŠ€æœ¯å‡†å¤‡ã€ç®¡ç†' when 7 then 'å…¶ä»–éžé¡¹ç›®/商机工作' end AS project_type ,p.project_name AS project_name, case t.is_overtime when 1 then 'åŠ ç' ELSE 'æ£å¸¸' end AS is_overtime,SUM(t.work_time) AS work_time from work_time_order t left join work_project p on t.project_id = p.id join work_user u on t.user_id = u.id where @@ -319,7 +320,7 @@ <if test="userIds != null"> UNION SELECT u.id AS user_id ,u.`name` AS user_name, t.project_id AS project_id - ,case t.type when 1 then '项目' when 2 then '商机' when 5 then '外部商务/技术交æµ' when 6 then '内部培è®/技术准备/管ç†' when 7 then 'å…¶ä»–éžé¡¹ç›®/商机工作' end AS project_type + ,case t.type when 1 then '项目' when 2 then '商机' when 5 then 'å¤–éƒ¨å•†åŠ¡ã€æŠ€æœ¯äº¤æµ' when 6 then '内部培è®ã€æŠ€æœ¯å‡†å¤‡ã€ç®¡ç†' when 7 then 'å…¶ä»–éžé¡¹ç›®/商机工作' end AS project_type ,p.project_name AS project_name, case t.is_overtime when 1 then 'åŠ ç' ELSE 'æ£å¸¸' end AS is_overtime,SUM(t.work_time) AS work_time from work_time_order t left join work_project p on t.project_id = p.id join work_user u on t.user_id = u.id where @@ -330,4 +331,14 @@ GROUP BY u.id,u.`name`,t.project_id,t.type,p.project_name, t.is_overtime </if> </select> + + <select id="selectCountByTypeAndStatus" resultType="cn.wisenergy.model.dto.MonthlyWorkingHoursStatistics"> + select type AS projectType, count(1) AS approved + from <include refid="table"/> + where user_id = #{userId} and work_day >= #{firstDayOfMonth} AND status in + <foreach collection="status" open="(" close=")" separator="," item="s"> + #{s} + </foreach> + GROUP BY type + </select> </mapper> diff --git a/wisenergy-mapper/src/main/resources/mapper/WorkTypeMapper.xml b/wisenergy-mapper/src/main/resources/mapper/WorkTypeMapper.xml index d3a279934b3288ceb33b53a22ed13f69af4f8c6f..5989f2cdaf7a3ff1686f6171612f0abd9e186752 100644 --- a/wisenergy-mapper/src/main/resources/mapper/WorkTypeMapper.xml +++ b/wisenergy-mapper/src/main/resources/mapper/WorkTypeMapper.xml @@ -7,6 +7,7 @@ SELECT id,name,reviewer FROM work_type </select> + <select id="getIdByReviewer" resultType="java.lang.Integer"> SELECT id FROM work_type diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/MonthlyWorkingHoursStatistics.java b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/MonthlyWorkingHoursStatistics.java index 852460e39555db6b0707b47d6a3130bad01b5625..86a552181237449286ea70d5434d7136b485559a 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/MonthlyWorkingHoursStatistics.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/MonthlyWorkingHoursStatistics.java @@ -13,38 +13,55 @@ import java.io.Serializable; **/ @Data @ApiModel(value = "MonthlyWorkingHoursStatistics", description = "统计本月的填报信æ¯") -public class MonthlyWorkingHoursStatistics implements Serializable { +public class MonthlyWorkingHoursStatistics implements Serializable ,Comparable{ private static final long serialVersionUID = -8216457470821285624L; + // å·¥å•类型展示顺åºï¼Œå˜å‚¨ä¸ºç±»åž‹id + private final static Integer[] TYPE_ORDER = {1, 2, 5, 6, 7, 3, 4}; + /** - * å·¥å•类型:商机/项目 + * å·¥å•类型 */ @ApiModelProperty(name = "projectType", value = "å·¥å•类型:商机/项目") - private String projectType; + private Integer projectType; /** - * 填报次数 + * å·¥å•类型åç§° */ - @ApiModelProperty(name = "count", value = "填报次数") - private int count; + @ApiModelProperty(name = "typeName", value = "类型åç§°") + private String typeName; /** - * 填报工时 + * 已审批 */ - @ApiModelProperty(name = "workTime", value = "填报工时") - private int workTime; + @ApiModelProperty(name = "approved", value = "å·²å®¡æ‰¹æ¡æ•°") + private Integer approved; /** - * 未填报天数 + * 填报次数 */ - @ApiModelProperty(name = "notFilledCount", value = "未填报天数") - private int notFilledCount; + @ApiModelProperty(name = "count", value = "填报次数") + private int count; /** - * 现å˜è¢«é©³å›žæ•° + * 填报工时 */ - @ApiModelProperty(name = "rejectCount", value = "现å˜è¢«é©³å›žæ•°") - private int rejectCount; - + @ApiModelProperty(name = "workTime", value = "åˆè®¡å¡«æŠ¥å·¥æ—¶") + private int workTime; + @Override + public int compareTo(Object o) { + MonthlyWorkingHoursStatistics monthlyWorkingHoursStatistics = (MonthlyWorkingHoursStatistics) o; + int thisI = 0; + int oI = 0; + for (int i = 0; i < TYPE_ORDER.length; i++) { + if (projectType == TYPE_ORDER[i]) { + thisI = i; + } + if (monthlyWorkingHoursStatistics.getProjectType() == TYPE_ORDER[i]) { + oI = i; + } + } + return thisI - oI; + } } diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/ProjectStatisticsByMonth.java b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/ProjectStatisticsByMonth.java index ff037cfd3ca986296bdf0d2050cc50205f0fd475..cb2e850e14e0ea836ffa773f34bfce7954c7c209 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/ProjectStatisticsByMonth.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/ProjectStatisticsByMonth.java @@ -24,6 +24,9 @@ public class ProjectStatisticsByMonth implements Serializable { @ApiModelProperty(name = "projectName", value = "项目åç§°") private String projectName; + @ApiModelProperty(name = "deptName", value = "部门åç§°") + private String deptName; + @ApiModelProperty(name = "statisticsDateAndWorkTime", value = "项目统计的时间段ã€å·¥æ—¶å’Œæˆæœ¬") List<StatisticsDateAndWorkTime> statisticsDateAndWorkTimes; diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/WorkTimeAndCostCollect.java b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/WorkTimeAndCostCollect.java index 0225b0e1209cb83288e9e8f37ffa032846180cc4..eb4ac0f5919dc8880b2f7a24dd089024f03fc7c6 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/dto/WorkTimeAndCostCollect.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/dto/WorkTimeAndCostCollect.java @@ -15,14 +15,20 @@ import java.util.List; **/ @Data @ApiModel(value = "WorkTimeAndCostCollect", description = "é¡¹ç›®çš„å·¥æ—¶å’Œå·¥æ—¶æˆæœ¬ç»Ÿè®¡") -public class WorkTimeAndCostCollect implements Serializable { +public class WorkTimeAndCostCollect implements Serializable, Comparable { private static final long serialVersionUID = 7207732278277982917L; + // å·¥å•类型展示顺åºï¼Œå˜å‚¨ä¸ºç±»åž‹id + private final static Integer[] TYPE_ORDER = {1, 2, 5, 6, 7, 3, 4}; + + @ApiModelProperty(name = "type", value = "工时类型主键") + private Integer type; + /** * 工时类型 */ - @ApiModelProperty(name = "type", value = "工时类型") - private String type; + @ApiModelProperty(name = "typeName", value = "工时类型") + private String typeName; /** * 部门工时统计 @@ -36,4 +42,19 @@ public class WorkTimeAndCostCollect implements Serializable { @ApiModelProperty(name = "workTime", value = "工时总计") private BigDecimal workTime; + @Override + public int compareTo(Object o) { + WorkTimeAndCostCollect workTimeAndCostCollect = (WorkTimeAndCostCollect) o; + int thisI = 0; + int oI = 0; + for (int i = 0; i < TYPE_ORDER.length; i++) { + if (type == TYPE_ORDER[i]) { + thisI = i; + } + if (workTimeAndCostCollect.getType() == TYPE_ORDER[i]) { + oI = i; + } + } + return thisI - oI; + } } diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/enums/ProjectTypeEnum.java b/wisenergy-model/src/main/java/cn/wisenergy/model/enums/ProjectTypeEnum.java index 5d83165af33e67a5918765c56fe88be6bae24fdf..d6240868a6f4fb434b4e7d888b7095e993180001 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/enums/ProjectTypeEnum.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/enums/ProjectTypeEnum.java @@ -5,8 +5,8 @@ public enum ProjectTypeEnum { BUSINESS_OPPORTUNITY(2, "商机", 1), LEAVE(3, "请å‡", 2), COMPENSATORY_LEAVE(4, "调休", 2), - EXTERNAL_BUSINESS(5, "外部商务/技术交æµ", 3), - INTERNAL_TRAINING(6, "内部培è®/技术准备/管ç†", 3), + EXTERNAL_BUSINESS(5, "å¤–éƒ¨å•†åŠ¡ã€æŠ€æœ¯äº¤æµ", 3), + INTERNAL_TRAINING(6, "内部培è®ã€æŠ€æœ¯å‡†å¤‡ã€ç®¡ç†", 3), OTHER_NON_PROJECTS(7, "å…¶ä»–éžé¡¹ç›®/商机工作", 3), ; diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/StatisticsService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/StatisticsService.java index 6c7af04ae3a553a02ec49fac0fd32ca844f70654..66c18c9a5bf69f4a8c6a10afce8812cab4916dc8 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/StatisticsService.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/StatisticsService.java @@ -8,6 +8,7 @@ import com.github.pagehelper.PageInfo; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.util.List; +import java.util.Map; public interface StatisticsService { @@ -25,7 +26,7 @@ public interface StatisticsService { * @param userId * @return */ - List<Object> getMonthlyStatistics(Integer userId); + Map<String,Object> getMonthlyStatistics(Integer userId); /** * 获å–è´Ÿè´£é¡¹ç›®çš„å·¥æ—¶æ±‡æ€»ï¼šèŠ±è´¹å·¥æ—¶ï¼Œå·¥æ—¶æˆæœ¬ diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/impl/StatisticsServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/impl/StatisticsServiceImpl.java index cc160bfe2707f46c659665418231bfed08783e7b..00145e75b9175d90d333583716a5e0dd03dfa8f2 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/impl/StatisticsServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/impl/StatisticsServiceImpl.java @@ -8,6 +8,7 @@ import cn.wisenergy.common.utils.exception.BaseCustomException; import cn.wisenergy.mapper.*; import cn.wisenergy.model.app.WorkHoliday; import cn.wisenergy.model.app.WorkProject; +import cn.wisenergy.model.app.WorkType; import cn.wisenergy.model.app.WorkUser; import cn.wisenergy.model.dto.*; import cn.wisenergy.model.enums.*; @@ -60,6 +61,9 @@ public class StatisticsServiceImpl implements StatisticsService { @Autowired private UserRoleLevelUtils userRoleLevelUtils; + @Autowired + private WorkTypeMapper workTypeMapper; + @Autowired private WorkProjectTimeCostMapper workProjectTimeCostMapper; @@ -132,14 +136,14 @@ public class StatisticsServiceImpl implements StatisticsService { } @Override - public List<Object> getMonthlyStatistics(Integer userId) { + public Map<String,Object> getMonthlyStatistics(Integer userId) { log.info("WorkTimeOrderServiceImpl[]getMonthlyStatistics[]input.param" + userId); WorkUser user = workUserService.getById(userId); List<Integer> role = userRoleLevelUtils.getRole(user.getId()); //本月第一天 Date firstDayOfMonth = DateUtil.getCurrentFirstDayOfMonth(); //返回数æ®å¯¹è±¡ - List<Object> objects = new ArrayList<>(); + Map<String,Object> objects = new HashMap<>(); //å˜æ”¾æŸ¥è¯¢æ¡ä»¶ Map<String, Object> map = new HashMap<>(); //用户是项目或部门级别,查询审批统计 @@ -182,7 +186,7 @@ public class StatisticsServiceImpl implements StatisticsService { approvalStatistics.setApprovalCount(completedCount); approvalStatistics.setRejectNotSubmit(rejectAndNotResubmit); approvalStatistics.setNotApprovalCount(notCompletedCount); - objects.add(approvalStatistics); + objects.put("manager",approvalStatistics); } // 填报情况 @@ -201,28 +205,44 @@ public class StatisticsServiceImpl implements StatisticsService { Integer countByCondition = workTimeOrderMapper.getCountByCondition(map); List<MonthlyWorkingHoursStatistics> monthlyWorkingHoursStatistics = workTimeOrderMapper.statisticsByProjectType(userId, firstDayOfMonth); + Integer[] status = {StatusEnum.APPROVED.getCode(), StatusEnum.AUTOMATIC_AUDIT.getCode()}; + // å·²å®¡æ‰¹çš„ç±»åž‹å’Œç»Ÿè®¡æ¡æ•° + List<MonthlyWorkingHoursStatistics> monthlyWorkingHoursStatistics1 = workTimeOrderMapper.selectCountByTypeAndStatus(userId, firstDayOfMonth, status); + for (MonthlyWorkingHoursStatistics workingHoursStatistics : monthlyWorkingHoursStatistics1) { + for (MonthlyWorkingHoursStatistics monthlyWorkingHoursStatistic : monthlyWorkingHoursStatistics) { + if (workingHoursStatistics.getProjectType().equals(monthlyWorkingHoursStatistic.getProjectType())) { + monthlyWorkingHoursStatistic.setApproved(workingHoursStatistics.getApproved()); + } + } + } + + List<Integer> types = monthlyWorkingHoursStatistics.stream().map(MonthlyWorkingHoursStatistics::getProjectType).collect(Collectors.toList()); // å¦‚æžœæ²¡å¡«å†™å¡«æŠ¥ç±»åž‹å…¶ä¸æŸé¡¹ï¼Œé€ å¯¹è±¡ä¼ å‰ç«¯ - if (monthlyWorkingHoursStatistics.size() < 5) { - // 获å–工时类型(项目或商机) - List<String> projectTypes = monthlyWorkingHoursStatistics.stream().map(MonthlyWorkingHoursStatistics::getProjectType).collect(Collectors.toList()); - for (ProjectTypeEnum value : ProjectTypeEnum.values()) { - // 除开请å‡ã€è°ƒä¼‘ - if (!projectTypes.contains(value.getTypeName()) && !value.getTypeName().equals(ProjectTypeEnum.LEAVE.getTypeName()) && !value.getTypeName().equals(ProjectTypeEnum.COMPENSATORY_LEAVE.getTypeName())) { + List<WorkType> workTypes = workTypeMapper.getAll(); + if (monthlyWorkingHoursStatistics.size() < workTypes.size()) { + for (WorkType workType : workTypes) { + if (!types.contains(workType.getId())) { MonthlyWorkingHoursStatistics workingHoursStatistics = new MonthlyWorkingHoursStatistics(); - workingHoursStatistics.setProjectType(value.getTypeName()); + workingHoursStatistics.setTypeName(workType.getName()); + workingHoursStatistics.setProjectType(workType.getId()); workingHoursStatistics.setCount(0); workingHoursStatistics.setWorkTime(0); monthlyWorkingHoursStatistics.add(workingHoursStatistics); } } } + // è°ƒæ•´ç±»åž‹é¡ºåº + Collections.sort(monthlyWorkingHoursStatistics); // 赋值未填报天数ã€è¢«é©³å›žæœªé‡æŠ¥å¤© for (MonthlyWorkingHoursStatistics monthlyWorkingHoursStatistic : monthlyWorkingHoursStatistics) { - monthlyWorkingHoursStatistic.setNotFilledCount(notFilledCount); - monthlyWorkingHoursStatistic.setRejectCount(countByCondition); + if (monthlyWorkingHoursStatistic.getApproved() == null) { + monthlyWorkingHoursStatistic.setApproved(0); + } } - objects.add(monthlyWorkingHoursStatistics); + objects.put("notFilledCount", notFilledCount); + objects.put("countByCondition", countByCondition); + objects.put("user" ,monthlyWorkingHoursStatistics); return objects; } @@ -265,8 +285,9 @@ public class StatisticsServiceImpl implements StatisticsService { // 工时类型包å«ï¼šé¡¹ç›®ï¼Œå•†æœº List<Integer> types = new ArrayList<>(); - types.add(ProjectTypeEnum.PROJECT.getType()); - types.add(ProjectTypeEnum.BUSINESS_OPPORTUNITY.getType()); + List<WorkType> workTypes = workTypeMapper.getAll(); + types.add(workTypes.get(1).getId()); + types.add(workTypes.get(2).getId()); map.put("types", types); // 查询项目和商机的工时统计 @@ -277,10 +298,11 @@ public class StatisticsServiceImpl implements StatisticsService { // 请å‡ã€è°ƒä¼‘ã€å¤–éƒ¨å•†åŠ¡ã€æŠ€æœ¯äº¤æµ,内部培è®ã€æŠ€æœ¯å‡†å¤‡ã€ç®¡ç†,å…¶ä»–éžé¡¹ç›®/商机工作 types.clear(); map.clear(); - for (ProjectTypeEnum value : ProjectTypeEnum.values()) { + + for (WorkType workType : workTypes) { // 查询æ¡ä»¶æŽ’除项目和商机 - if (!value.getTypeName().equals(ProjectTypeEnum.PROJECT.getTypeName()) && !value.getTypeName().equals(ProjectTypeEnum.BUSINESS_OPPORTUNITY.getTypeName())) { - types.add(value.getType()); + if (!workType.getName().equals(workTypes.get(1).getName()) && !workType.getName().equals(workTypes.get(2).getName())) { + types.add(workType.getId()); } } // ç”¨æˆ·ä»…ä¸ºéƒ¨é—¨ç®¡ç† @@ -291,13 +313,19 @@ public class StatisticsServiceImpl implements StatisticsService { List<WorkTimeAndCostCollect> workTimeAndCostCollect = workTimeOrderMapper.getWorkTimeAndCostCollect(map); // 将查询结果å°è£…在一起 collect.addAll(workTimeAndCostCollect); + + for (WorkTimeAndCostCollect timeAndCostCollect : collect) { + WorkType workType = workTypes.get(timeAndCostCollect.getType()-1); + timeAndCostCollect.setTypeName(workType.getName()); + } // èŽ·å–æŸ¥è¯¢ç»“æžœä¸çš„类型 - List<String> typeList = collect.stream().map(WorkTimeAndCostCollect::getType).collect(Collectors.toList()); + List<Integer> typeList = collect.stream().map(WorkTimeAndCostCollect::getType).collect(Collectors.toList()); // 如果查询结果ä¸åŒ…嫿Ÿ¥è¯¢æ¡ä»¶ä¸çš„ç±»åž‹ï¼Œé€ å¯¹è±¡ä¼ å‰ç«¯ - for (ProjectTypeEnum value : ProjectTypeEnum.values()) { - if (!typeList.contains(value.getTypeName())) { + for (WorkType workType : workTypes) { + if (!typeList.contains(workType.getId())) { WorkTimeAndCostCollect workTimeAndCostCollect1 = new WorkTimeAndCostCollect(); - workTimeAndCostCollect1.setType(value.getTypeName()); + workTimeAndCostCollect1.setType(workType.getId()); + workTimeAndCostCollect1.setTypeName(workType.getName()); collect.add(workTimeAndCostCollect1); } } @@ -316,6 +344,7 @@ public class StatisticsServiceImpl implements StatisticsService { } workTimeAndCostCollect.setWorkTime(typeTotalTime); } + Collections.sort(collect); return collect; } @@ -681,20 +710,21 @@ public class StatisticsServiceImpl implements StatisticsService { public List<ProjectWorkTimeAndType> createProjectWorkTimeAndTypeListByType() { List<ProjectWorkTimeAndType> list = new ArrayList<>(6); ProjectWorkTimeAndType timeAndType; + List<WorkType> workTypes = workTypeMapper.getAll(); // å¤–éƒ¨å•†åŠ¡ã€æŠ€æœ¯äº¤æµ - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.EXTERNAL_BUSINESS.getTypeName(), "æ£å¸¸"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(5).getName(), "æ£å¸¸"); list.add(timeAndType); - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.EXTERNAL_BUSINESS.getTypeName(), "åŠ ç"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(5).getName(), "åŠ ç"); list.add(timeAndType); // 内部培è®ã€æŠ€æœ¯å‡†å¤‡ã€ç®¡ç† - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.INTERNAL_TRAINING.getTypeName(), "æ£å¸¸"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(6).getName(), "æ£å¸¸"); list.add(timeAndType); - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.INTERNAL_TRAINING.getTypeName(), "åŠ ç"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(6).getName(), "åŠ ç"); list.add(timeAndType); // å…¶ä»–éžé¡¹ç›®/商机工作 - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.OTHER_NON_PROJECTS.getTypeName(), "æ£å¸¸"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(7).getName(), "æ£å¸¸"); list.add(timeAndType); - timeAndType = createProjectWorkTimeAndTypeByType(ProjectTypeEnum.OTHER_NON_PROJECTS.getTypeName(), "åŠ ç"); + timeAndType = createProjectWorkTimeAndTypeByType(workTypes.get(7).getName(), "åŠ ç"); list.add(timeAndType); return list; } @@ -745,4 +775,16 @@ public class StatisticsServiceImpl implements StatisticsService { } } } + +// public void adjust(List<MonthlyWorkingHoursStatistics> monthlyWorkingHoursStatistics, List<WorkType> workTypes) { +// for (Integer integer : TYPE_ORDER) { +// int i = 0; +// MonthlyWorkingHoursStatistics workingHoursStatistics = monthlyWorkingHoursStatistics.get(i); +// if (!workingHoursStatistics.getProjectType().equals(workTypes.get(integer))) { +// monthlyWorkingHoursStatistics. +// } +// i++; +// } +// +// } } diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/impl/WorkUserServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/impl/WorkUserServiceImpl.java index 9b43fe5e5d8ce722299c5f41ba06b3f31c0e2124..15ba9d2e5181e13f52a7374dcbb5f95d0f2c93eb 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/impl/WorkUserServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/impl/WorkUserServiceImpl.java @@ -226,19 +226,15 @@ public class WorkUserServiceImpl implements WorkUserService { if (user.getStatus() != ON_THE_JOB_STATUS) { throw new BaseCustomException(BASE_RESP_CODE_ENUM.LEAVE_JOB_USER); } -/* - if (user.getModifyTime() != user.getCreateTime()) { - 修改密ç - } - */ - //å¦‚æžœç™»å½•æ¥æºæ˜¯PC,判æ–ç”¨æˆ·æ˜¯ä¸æ˜¯ç®¡ç†å‘˜ + + // å¦‚æžœç™»å½•æ¥æºæ˜¯PC,判æ–ç”¨æˆ·æ˜¯ä¸æ˜¯ç®¡ç†å‘˜ List<Integer> roles = UserRoleLevelUtils.getRole(user.getId()); if (LOGIN_SOURCE.equals(source)) { if (roles.contains(ManagerEnum.NOT_MANAGER.getCode())) { throw new BaseCustomException(BASE_RESP_CODE_ENUM.THE_USER_NOT_MANAGER_PLASE_MANAGER_LOGIN); } } - + // é™åˆ¶å®¡æ ¸çš„天数 WorkSubmitAdopt byId = workSubmitAdoptService.getById(1); //将用户对象转æ¢ä¸ºdto diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/StatisticsController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/StatisticsController.java index 2959be298f65de76740a412e97143c42933fbcb1..9dcb39bbdff51521a48d105303576f55db7676b1 100644 --- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/StatisticsController.java +++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/StatisticsController.java @@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.List; +import java.util.Map; /** * @description: @@ -74,12 +75,12 @@ public class StatisticsController extends BaseController { @ApiOperation(value = "èŽ·å–æœ¬æœˆå·¥æ—¶ç»Ÿè®¡å’Œå®¡æ ¸ç»Ÿè®¡", notes = "èŽ·å–æœ¬æœˆ", httpMethod = "GET") @ApiImplicitParam(name = "userId", value = "用户主键", dataType = "int", required = true) @GetMapping("/getMonthlyWorkingHours") - public Result<List<Object>> getMonthlyWorkingHours(Integer userId) { + public Result<Map<String,Object>> getMonthlyWorkingHours(Integer userId) { log.info("WorkOrderController[]getMonthlyWorkingHours[]input.param" + userId); if (userId == null) { throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL); } - List<Object> monthlyStatistics = statisticsService.getMonthlyStatistics(userId); + Map<String,Object> monthlyStatistics = statisticsService.getMonthlyStatistics(userId); return getResult(monthlyStatistics); }