From 3096d7f37b0270ccae137f405f68806dbc2fa7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E5=BB=BA=E8=B6=85?= <3182967682@qq.com> Date: Tue, 22 Sep 2020 11:33:30 +0800 Subject: [PATCH] fix --- .../controller/ReportResultController.java | 81 ++++++++++++------- .../com/lz/modules/app/dto/CharBarDto.java | 20 +++++ .../java/com/lz/modules/app/dto/ChartDto.java | 16 ---- .../lz/modules/app/resp/ReportChartResp.java | 11 +-- .../lz/modules/app/service/StaffService.java | 8 +- .../app/service/impl/StaffServiceImpl.java | 60 ++++++++++---- .../sys/dao/app/ResultRecordMapper.java | 6 -- .../modules/sys/service/app/ChartService.java | 3 +- .../sys/service/app/ResultRecordService.java | 8 -- .../service/app/impl/ChartServiceImpl.java | 40 +++++---- .../app/impl/ResultRecordServiceImpl.java | 6 -- .../mapper/app/ResultRecordMapper.xml | 7 +- 12 files changed, 154 insertions(+), 112 deletions(-) create mode 100644 src/main/java/com/lz/modules/app/dto/CharBarDto.java delete mode 100644 src/main/java/com/lz/modules/app/dto/ChartDto.java diff --git a/src/main/java/com/lz/modules/app/controller/ReportResultController.java b/src/main/java/com/lz/modules/app/controller/ReportResultController.java index bd7b7e62..c5792f8d 100644 --- a/src/main/java/com/lz/modules/app/controller/ReportResultController.java +++ b/src/main/java/com/lz/modules/app/controller/ReportResultController.java @@ -1,12 +1,13 @@ package com.lz.modules.app.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.common.collect.Maps; +import com.lz.common.utils.BigDecimalUtil; import com.lz.common.utils.R; import com.lz.common.utils.StringUtil; -import com.lz.modules.app.dto.*; +import com.lz.modules.app.dto.CharBarDto; +import com.lz.modules.app.dto.DepartmentsDto; +import com.lz.modules.app.dto.GraphicsDto; +import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; -import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.enums.ResultRecordStatusEnum; import com.lz.modules.app.enums.ResultRecordTypeEnum; import com.lz.modules.app.resp.OwnResultResp; @@ -15,16 +16,20 @@ import com.lz.modules.app.service.DepartmentsService; import com.lz.modules.app.service.DepartmentsStaffRelateService; import com.lz.modules.app.service.StaffService; import com.lz.modules.sys.controller.AbstractController; -import com.lz.modules.sys.entity.app.ResultRecord; import com.lz.modules.sys.service.app.ChartService; import com.lz.modules.sys.service.app.ResultRecordService; +import com.sun.org.apache.bcel.internal.generic.NEW; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; -import java.util.*; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; /** * @Author: djc @@ -49,36 +54,31 @@ public class ReportResultController extends AbstractController{ @RequestMapping("chart") - public R reportChart(String monthTime){ + public R reportChart(String monthTime,String departmentId){ if(StringUtil.isBlank(monthTime)){ String time = LocalDate.now().toString(); monthTime = time.substring(0,time.length()-3); } ReportChartResp data = new ReportChartResp(); //月初目标 - List start = chartService.resultProgressDistribution(ResultRecordTypeEnum.TARGET.getType(),monthTime); + List start = chartService.resultProgressDistribution(ResultRecordTypeEnum.TARGET.getType(),monthTime,""); //月末结果 - List end = chartService.resultProgressDistribution(ResultRecordTypeEnum.RESULT.getType(),monthTime); + List end = chartService.resultProgressDistribution(ResultRecordTypeEnum.RESULT.getType(),monthTime,""); //人员等级分布 + List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(departmentId); + int total = staffService.countStaffByAllDeparmentIds(allDeparmentIds); List staffLevels = resultRecordService.staffDistribution(monthTime); - - List sortStaffLevels = new ArrayList<>(); - // 0人是否需要展示 - Map map = Maps.newHashMap(); + List names = new ArrayList<>(); + List datas = new ArrayList<>(); + int konwn = 0; for (GraphicsStatisticalDto staffLevel : staffLevels) { - map.put(staffLevel.getCategory(),staffLevel.getNumber()); - } - // 默认等级赋予默认值并排序 - for (String level : levels) { - GraphicsStatisticalDto dto = new GraphicsStatisticalDto(); - dto.setCategory(level); - if(!map.containsKey(level)){ - dto.setNumber(0); - }else { - dto.setNumber(map.get(level)); - } - sortStaffLevels.add(dto); + names.add(staffLevel.getCategory()); + datas.add(BigDecimalUtil.div(Double.valueOf(staffLevel.getNumber()),Double.valueOf(total),2)); + konwn = konwn + staffLevel.getNumber(); + logger.info("等级:" + staffLevel.getCategory() + " 人数:" + staffLevel.getNumber()); } + names.add("未知"); + datas.add(BigDecimalUtil.div(Double.valueOf((total - konwn)),Double.valueOf(total),2)); //部门等级占比 GraphicsDto dto = new GraphicsDto(); dto.setRows(start); @@ -86,9 +86,12 @@ public class ReportResultController extends AbstractController{ dto = new GraphicsDto(); dto.setRows(end); data.setResultDistribution(dto); - dto = new GraphicsDto(); - dto.setRows(sortStaffLevels); - data.setStaffDistribution(dto); + CharBarDto barDto= new CharBarDto(); + barDto.setNames(names); + barDto.setDatas(datas); + barDto.setTotal(total); + data.setStaffDistribution(barDto); + data.setMonthTime(YearMonth.now().toString()); return R.ok().put("data",data); } @@ -157,3 +160,25 @@ public class ReportResultController extends AbstractController{ } } + + + + + +// 0人是否需要展示 + /* List sortStaffLevels = new ArrayList<>(); + Map map = Maps.newHashMap(); + for (GraphicsStatisticalDto staffLevel : staffLevels) { + map.put(staffLevel.getCategory(),staffLevel.getNumber()); + } + // 默认等级赋予默认值并排序 + for (String level : levels) { + GraphicsStatisticalDto dto = new GraphicsStatisticalDto(); + dto.setCategory(level); + if(!map.containsKey(level)){ + dto.setNumber(0); + }else { + dto.setNumber(map.get(level)); + } + sortStaffLevels.add(dto); + }*/ \ No newline at end of file diff --git a/src/main/java/com/lz/modules/app/dto/CharBarDto.java b/src/main/java/com/lz/modules/app/dto/CharBarDto.java new file mode 100644 index 00000000..306c1a58 --- /dev/null +++ b/src/main/java/com/lz/modules/app/dto/CharBarDto.java @@ -0,0 +1,20 @@ +package com.lz.modules.app.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Author: djc + * @Desc: + * @Date: 2020/9/21 10:21 + */ +@Data +public class CharBarDto { + + private List names; + + private List datas; + + private int total; +} diff --git a/src/main/java/com/lz/modules/app/dto/ChartDto.java b/src/main/java/com/lz/modules/app/dto/ChartDto.java deleted file mode 100644 index 06a4ce30..00000000 --- a/src/main/java/com/lz/modules/app/dto/ChartDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.lz.modules.app.dto; - -import lombok.Data; - -/** - * @Author: djc - * @Desc: - * @Date: 2020/9/16 16:39 - */ -@Data -public class ChartDto { - //属性名 - private String name; - //属性值 - private String value; -} diff --git a/src/main/java/com/lz/modules/app/resp/ReportChartResp.java b/src/main/java/com/lz/modules/app/resp/ReportChartResp.java index b157bbc3..b3c27fa2 100644 --- a/src/main/java/com/lz/modules/app/resp/ReportChartResp.java +++ b/src/main/java/com/lz/modules/app/resp/ReportChartResp.java @@ -1,12 +1,9 @@ package com.lz.modules.app.resp; -import com.lz.modules.app.dto.ChartDto; +import com.lz.modules.app.dto.CharBarDto; import com.lz.modules.app.dto.GraphicsDto; -import com.lz.modules.app.dto.GraphicsStatisticalDto; import lombok.Data; -import java.util.List; - /** * @Author: djc * @Desc: @@ -19,8 +16,8 @@ public class ReportChartResp { //月末结果 private GraphicsDto resultDistribution; //个人等级占比 - private GraphicsDto staffDistribution; - //部门等级占比 - private GraphicsDto departmentDistribution; + private CharBarDto staffDistribution; + //当前月份 + private String monthTime; } diff --git a/src/main/java/com/lz/modules/app/service/StaffService.java b/src/main/java/com/lz/modules/app/service/StaffService.java index 43044875..e3f96b89 100644 --- a/src/main/java/com/lz/modules/app/service/StaffService.java +++ b/src/main/java/com/lz/modules/app/service/StaffService.java @@ -75,7 +75,11 @@ public interface StaffService extends IService { SysUserEntity getUser(String userName); - //查询部门下的所有人员 包括子部门下人员 - List selectAllStaffByDepartmentId(String departmentId); + //查询部门下的所有子部门 + List selectAllDeparmentIdsByDepartmentParentId(String departmentId); + //统计部门下的人数 + int countStaffByAllDeparmentIds(List deparmentIds); + + } diff --git a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java index 8068cf87..4345ccef 100644 --- a/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java +++ b/src/main/java/com/lz/modules/app/service/impl/StaffServiceImpl.java @@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; -import com.lz.common.utils.DateUtils; -import com.lz.common.utils.PageUtils; -import com.lz.common.utils.Query; -import com.lz.common.utils.R; +import com.lz.common.utils.*; import com.lz.modules.app.dao.DepartmentsDao; import com.lz.modules.app.dto.*; import com.lz.modules.app.dao.StaffDao; @@ -17,6 +14,7 @@ import com.lz.modules.app.entity.*; import com.lz.modules.app.service.*; import com.lz.modules.job.model.responseBo.DepartmentStaffBo; import com.lz.modules.sys.entity.SysUserEntity; +import org.apache.commons.collections.CollectionUtils; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,6 +24,8 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; @Service("staffService") @@ -49,6 +49,8 @@ public class StaffServiceImpl extends ServiceImpl impleme DepartmentsStaffRelateService departmentsStaffRelateService; @Autowired private DepartmentsDao departmentsDao; + @Autowired + private StaffService staffService; @@ -378,11 +380,42 @@ public class StaffServiceImpl extends ServiceImpl impleme @Override - public List selectAllStaffByDepartmentId(String departmentId) { - //154344269,154322459,154274609,154254673 - List parentsIds = Lists.newArrayList("154344269","154322459","154274609","154254673"); + public List selectAllDeparmentIdsByDepartmentParentId(String departmentId) { + //默认所有 + if(StringUtil.isBlank(departmentId)){ + departmentId = "1"; + } + List parentsIds = Lists.newArrayList(departmentId); List departmentsList = new ArrayList<>(); - return null; + List childs = departmentsDao.selectDepartmentIdsByparentIds(parentsIds); + if(CollectionUtils.isEmpty(childs)){ + departmentsList.addAll(parentsIds); + return departmentsList; + } + departmentsList.addAll(childs); + List allChilds = getAllChilds(departmentsList, childs); + return allChilds; + } + + + @Override + public int countStaffByAllDeparmentIds(List deparmentIds) { + if(CollectionUtils.isEmpty(deparmentIds)){ + return 0; + } + //获取所有子部门 + List list = departmentsStaffRelateService.list(new QueryWrapper() + .select("staff_id") + .eq("is_delete", 0) + .in("department_id", deparmentIds)); + if(CollectionUtils.isEmpty(list)){ + return 0; + } + //获取人员个数去重 + List staffs = list.stream().map(e -> e.getStaffId() + "").collect(Collectors.toList()); + List staffdistincts = staffs.stream().distinct().collect(Collectors.toList()); + return staffdistincts.size(); + } /** @@ -393,12 +426,11 @@ public class StaffServiceImpl extends ServiceImpl impleme */ private List getAllChilds(List departmentsList,List parentIds){ List childs = departmentsDao.selectDepartmentIdsByparentIds(parentIds); - /* while (childs!=null){ - - }*/ - return null; - - + if(CollectionUtils.isEmpty(childs)){ + return departmentsList; + } + departmentsList.addAll(childs); + return getAllChilds(departmentsList,childs); } diff --git a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java index e94a9c5a..c1f30215 100644 --- a/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java +++ b/src/main/java/com/lz/modules/sys/dao/app/ResultRecordMapper.java @@ -10,7 +10,6 @@ package com.lz.modules.sys.dao.app; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.lz.modules.app.dto.ChartDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.app.resp.OwnResultResp; @@ -57,9 +56,4 @@ public interface ResultRecordMapper extends BaseMapper { List staffDistribution(@Param("monthTime") String monthTime); - List departmentDistribution(@Param("monthTime") String monthTime); - - - - } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/ChartService.java b/src/main/java/com/lz/modules/sys/service/app/ChartService.java index 945e82ca..100252e3 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ChartService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ChartService.java @@ -1,6 +1,5 @@ package com.lz.modules.sys.service.app; -import com.lz.modules.app.dto.ChartDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import java.util.List; @@ -18,7 +17,7 @@ public interface ChartService { * @param monthTime * @return */ - List resultProgressDistribution(int type, String monthTime); + List resultProgressDistribution(int type, String monthTime,String departmentId); diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index e4b7e918..d515c88f 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.PageUtils; import com.lz.common.utils.R; -import com.lz.modules.app.dto.ChartDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.req.ResultRecordReq; @@ -79,11 +78,4 @@ public interface ResultRecordService extends IService { */ List staffDistribution(String monthTime); - /** - * 部门等级占比 - * @param monthTime - * @return - */ - List departmentDistribution(String monthTime); - } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ChartServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ChartServiceImpl.java index 8ffd7307..a306d089 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ChartServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ChartServiceImpl.java @@ -1,8 +1,6 @@ package com.lz.modules.sys.service.app.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.lz.common.utils.StringUtil; -import com.lz.modules.app.dto.ChartDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.enums.ResultRecordStatusEnum; @@ -10,7 +8,6 @@ import com.lz.modules.app.service.StaffService; import com.lz.modules.sys.entity.app.ResultRecord; import com.lz.modules.sys.service.app.ChartService; import com.lz.modules.sys.service.app.ResultRecordService; -import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,15 +26,18 @@ public class ChartServiceImpl implements ChartService { @Autowired private StaffService staffService; @Override - public List resultProgressDistribution(int type, String monthTime) { + public List resultProgressDistribution(int type, String monthTime,String departmentId) { List dtos = new ArrayList<>(); - int total = staffService.count(new QueryWrapper().eq("is_delete", 0)); - + //获取所有人员总数 + List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(departmentId); + int total = staffService.countStaffByAllDeparmentIds(allDeparmentIds); + //已提交 int commit = resultRecordService.count(new QueryWrapper() .eq("is_delete", 0) .eq("type", type) .like("month_time",monthTime) .ne("status", ResultRecordStatusEnum.CREATE.getStatus())); + //已完成 int finished = resultRecordService.count(new QueryWrapper() .eq("is_delete", 0) .eq("type", type) @@ -45,17 +45,23 @@ public class ChartServiceImpl implements ChartService { .in("status", ResultRecordStatusEnum.REFUSE.getStatus(),ResultRecordStatusEnum.AGREE.getStatus())); GraphicsStatisticalDto dto = new GraphicsStatisticalDto(); - dto.setCategory("未提交"); - dto.setNumber(total-commit); - dtos.add(dto); - dto = new GraphicsStatisticalDto(); - dto.setCategory("已完成"); - dto.setNumber(finished); - dtos.add(dto); - dto = new GraphicsStatisticalDto(); - dto.setCategory("审核中"); - dto.setNumber(commit-finished); - dtos.add(dto); + if(total-commit>0){ + dto.setCategory("未提交"); + dto.setNumber(total-commit); + dtos.add(dto); + } + if(finished>0){ + dto = new GraphicsStatisticalDto(); + dto.setCategory("已完成"); + dto.setNumber(finished); + dtos.add(dto); + } + if(commit-finished>0){ + dto = new GraphicsStatisticalDto(); + dto.setCategory("审核中"); + dto.setNumber(commit-finished); + dtos.add(dto); + } return dtos; } diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index 02345dff..01585a3c 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -7,7 +7,6 @@ import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.*; import com.lz.modules.app.dao.DepartmentsDao; import com.lz.modules.app.dao.DepartmentsStaffRelateDao; -import com.lz.modules.app.dto.ChartDto; import com.lz.modules.app.dto.EmployeesDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.DepartmentsEntity; @@ -622,9 +621,4 @@ public class ResultRecordServiceImpl extends ServiceImpl staffDistribution(String monthTime) { return resultRecordMapper.staffDistribution(monthTime); } - - @Override - public List departmentDistribution(String monthTime) { - return resultRecordMapper.departmentDistribution(monthTime); - } } diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml index 75c542fd..2e51d655 100644 --- a/src/main/resources/mapper/app/ResultRecordMapper.xml +++ b/src/main/resources/mapper/app/ResultRecordMapper.xml @@ -259,12 +259,7 @@ - - -