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 a43ac4cf..138c1915 100644 --- a/src/main/java/com/lz/modules/app/controller/ReportResultController.java +++ b/src/main/java/com/lz/modules/app/controller/ReportResultController.java @@ -1,15 +1,14 @@ package com.lz.modules.app.controller; import com.lz.common.utils.BigDecimalUtil; +import com.lz.common.utils.PageUtils; import com.lz.common.utils.R; import com.lz.common.utils.StringUtil; -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.dto.*; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; import com.lz.modules.app.enums.ResultRecordStatusEnum; import com.lz.modules.app.enums.ResultRecordTypeEnum; +import com.lz.modules.app.req.ReportListReq; import com.lz.modules.app.resp.OwnResultResp; import com.lz.modules.app.resp.ReportChartResp; import com.lz.modules.app.service.DepartmentsService; @@ -37,7 +36,7 @@ import java.util.List; * @Date: 2020/9/11 10:22 */ @RestController -@RequestMapping("/report") +@RequestMapping("/result") public class ReportResultController extends AbstractController{ @Autowired private ResultRecordService resultRecordService; @@ -58,40 +57,20 @@ public class ReportResultController extends AbstractController{ if(StringUtil.isBlank(selectMonthTime)){ selectMonthTime = YearMonth.now().toString(); } - ReportChartResp data = new ReportChartResp(); - //月初目标 - List start = chartService.resultProgressDistribution(ResultRecordTypeEnum.TARGET.getType(),selectMonthTime,departmentId); - //月末结果 - List end = chartService.resultProgressDistribution(ResultRecordTypeEnum.RESULT.getType(),selectMonthTime,departmentId); - //人员等级分布 - List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(departmentId); - List strings = staffService.staffsByAllDeparmentIds(allDeparmentIds); - int total = strings.size(); - List staffLevels = resultRecordService.staffDistribution(selectMonthTime,strings); - List names = new ArrayList<>(); - List datas = new ArrayList<>(); - int konwn = 0; - for (GraphicsStatisticalDto staffLevel : staffLevels) { - 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); - data.setTargetDistribution(dto); - dto = new GraphicsDto(); - dto.setRows(end); - data.setResultDistribution(dto); - CharBarDto barDto= new CharBarDto(); - barDto.setNames(names); - barDto.setDatas(datas); - barDto.setTotal(total); - data.setStaffDistribution(barDto); - return R.ok().put("data",data); + ReportChartResp reportChartResp = chartService.reportChart(selectMonthTime, departmentId); + return R.ok().put("data",reportChartResp); + } + + + + + @RequestMapping("/report") + public R list(ReportListReq req){ + //获取部门下所有人员 + List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(req.getDepartmentId()); + List staffIds = staffService.staffsByAllDeparmentIds(allDeparmentIds); + PageUtils pageUtils = chartService.resultReportList(req, staffIds); + return R.ok().put("page",pageUtils); } @@ -106,16 +85,12 @@ public class ReportResultController extends AbstractController{ return R.ok().put("data",ownResultResp); } +} - @RequestMapping("/team/result") - public R teamResult(){ - return R.ok(); - } - //是在这个地方查询出所有的部门选择 还是 通过关键字搜索 - @RequestMapping("underDepartment") + /* @RequestMapping("underDepartment") public R underDepartment(){ DepartmentsStaffRelateEntity departmentsStaffRelateEntity = departmentsStaffRelateService.selectByStaffId(null); if(departmentsStaffRelateEntity == null){ @@ -128,12 +103,12 @@ public class ReportResultController extends AbstractController{ } return R.ok(); - } + }*/ //获取日期之内的月份 - private static List getMonthBetween(String minDate, String maxDate){ + /* private static List getMonthBetween(String minDate, String maxDate){ ArrayList result = new ArrayList(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月 @@ -157,8 +132,8 @@ public class ReportResultController extends AbstractController{ return result; } +*/ -} diff --git a/src/main/java/com/lz/modules/app/dao/DepartmentsStaffRelateDao.java b/src/main/java/com/lz/modules/app/dao/DepartmentsStaffRelateDao.java index fb42e702..2cd353b1 100644 --- a/src/main/java/com/lz/modules/app/dao/DepartmentsStaffRelateDao.java +++ b/src/main/java/com/lz/modules/app/dao/DepartmentsStaffRelateDao.java @@ -1,5 +1,7 @@ package com.lz.modules.app.dao; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.lz.modules.app.dto.ReportProgressListDto; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lz.modules.app.entity.StaffEntity; @@ -58,4 +60,8 @@ public interface DepartmentsStaffRelateDao extends BaseMapper getDepartmentNameByStaffIds(@Param("staffIds") List staffIds); + + } diff --git a/src/main/java/com/lz/modules/app/dao/StaffDao.java b/src/main/java/com/lz/modules/app/dao/StaffDao.java index d1237722..ce268521 100644 --- a/src/main/java/com/lz/modules/app/dao/StaffDao.java +++ b/src/main/java/com/lz/modules/app/dao/StaffDao.java @@ -2,10 +2,7 @@ package com.lz.modules.app.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.lz.modules.app.dto.GraphicsStatisticalDto; -import com.lz.modules.app.dto.StaffBaseInfoDto; -import com.lz.modules.app.dto.StaffDto; -import com.lz.modules.app.dto.StaffStatisticalDto; +import com.lz.modules.app.dto.*; import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.equipment.entity.model.FindByNameModel; import org.apache.ibatis.annotations.Mapper; @@ -80,4 +77,6 @@ public interface StaffDao extends BaseMapper { List selectBySearchName(@Param("page") IPage page, @Param("model") FindByNameModel nameModel); List selectAll(); + + List getPositionByStaffIds(@Param("staffIds") List staffIds,@Param("page") IPage page); } diff --git a/src/main/java/com/lz/modules/app/dto/ReportProgressListDto.java b/src/main/java/com/lz/modules/app/dto/ReportProgressListDto.java new file mode 100644 index 00000000..f9e131e6 --- /dev/null +++ b/src/main/java/com/lz/modules/app/dto/ReportProgressListDto.java @@ -0,0 +1,32 @@ +package com.lz.modules.app.dto; + +import lombok.Data; + +/** + * @Author: djc + * @Desc: + * @Date: 2020/9/23 11:21 + */ +@Data +public class ReportProgressListDto { + private Long id; + + private String staffId; + + private String staffName; + + private String departmentName; + //职位 + private String position; + //业务得分 + private String businessScore; + //价值观得分 + private String valueScore; + //得分 + private String score; + //等级 + private String scoreLevel; + + private int status; + +} diff --git a/src/main/java/com/lz/modules/app/req/ReportListReq.java b/src/main/java/com/lz/modules/app/req/ReportListReq.java new file mode 100644 index 00000000..5c25c32d --- /dev/null +++ b/src/main/java/com/lz/modules/app/req/ReportListReq.java @@ -0,0 +1,26 @@ +package com.lz.modules.app.req; + +import com.lz.modules.equipment.entity.model.BasePage; +import lombok.Data; + +import java.time.YearMonth; + +/** + * @Author: djc + * @Desc: + * @Date: 2020/9/23 11:07 + */ +@Data +public class ReportListReq extends BasePage { + String departmentId; + + //String startMonthTime; + + //String endMonthTime; + + String selectMonthTime = YearMonth.now().toString(); + //提交审核状态 + int status =0; + //目标还是结果 + int type =1; +} 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 a33d5298..f4912ea3 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 @@ -11,6 +11,7 @@ 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.GraphicsStatisticalDto; +import com.lz.modules.app.dto.ReportProgressListDto; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.app.resp.OwnResultResp; import com.lz.modules.flow.model.ResultRecordDto; @@ -57,4 +58,6 @@ public interface ResultRecordMapper extends BaseMapper { List staffDistribution(@Param("monthTime") String monthTime,@Param("staffIds") List staffIds); ResultRecord selectResultRecordByStaffIdStatus(@Param("staffId") Long staffId, @Param("status") int status); + + List targetReportList(@Param("monthTime") String monthTime,@Param("staffIds") List staffIds,@Param("page") IPage page); } \ 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 100252e3..67527f5f 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,10 @@ package com.lz.modules.sys.service.app; +import com.lz.common.utils.PageUtils; import com.lz.modules.app.dto.GraphicsStatisticalDto; +import com.lz.modules.app.dto.ReportProgressListDto; +import com.lz.modules.app.req.ReportListReq; +import com.lz.modules.app.resp.ReportChartResp; import java.util.List; @@ -19,6 +23,10 @@ public interface ChartService { */ List resultProgressDistribution(int type, String monthTime,String departmentId); + PageUtils resultReportList(ReportListReq req, List staffIds); + + ReportChartResp reportChart(String selectMonthTime, 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 0e332903..94b26fbf 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 @@ -5,6 +5,7 @@ import com.lz.common.emun.WorkMsgTypeEnum; import com.lz.common.utils.PageUtils; import com.lz.common.utils.R; import com.lz.modules.app.dto.GraphicsStatisticalDto; +import com.lz.modules.app.dto.ReportProgressListDto; import com.lz.modules.app.entity.DepartmentsEntity; import com.lz.modules.app.entity.StaffEntity; import com.lz.modules.app.req.ResultRecordReq; @@ -86,4 +87,7 @@ public interface ResultRecordService extends IService { ResultRecord selectResultRecordByStaffIdStatus(Long staffId, int status); R reject( ResultRecord resultRecord,ResultRecordReq req, Long userId); + + // ReportProgressListDto targetReportList(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 ec65b14d..9054f31c 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,30 +1,56 @@ package com.lz.modules.sys.service.app.impl; 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.PageUtils; +import com.lz.modules.app.dao.DepartmentsStaffRelateDao; +import com.lz.modules.app.dao.StaffDao; +import com.lz.modules.app.dto.CharBarDto; +import com.lz.modules.app.dto.GraphicsDto; import com.lz.modules.app.dto.GraphicsStatisticalDto; +import com.lz.modules.app.dto.ReportProgressListDto; 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.req.ReportListReq; +import com.lz.modules.app.resp.ReportChartResp; import com.lz.modules.app.service.StaffService; +import com.lz.modules.sys.dao.app.ResultRecordMapper; 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 lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Author: djc * @Desc: * @Date: 2020/9/14 16:54 */ +@Slf4j @Service public class ChartServiceImpl implements ChartService { @Autowired private ResultRecordService resultRecordService; @Autowired private StaffService staffService; + @Autowired + private ResultRecordMapper resultRecordMapper; + @Autowired + private DepartmentsStaffRelateDao departmentsStaffRelateDao; + @Autowired + private StaffDao staffDao; + @Override public List resultProgressDistribution(int type, String monthTime,String departmentId) { List dtos = new ArrayList<>(); @@ -65,4 +91,86 @@ public class ChartServiceImpl implements ChartService { return dtos; } + + @Override + public ReportChartResp reportChart(String selectMonthTime, String departmentId) { + ReportChartResp data = new ReportChartResp(); + //月初目标 + List start = this.resultProgressDistribution(ResultRecordTypeEnum.TARGET.getType(),selectMonthTime,departmentId); + //月末结果 + List end = this.resultProgressDistribution(ResultRecordTypeEnum.RESULT.getType(),selectMonthTime,departmentId); + //人员等级分布 + List allDeparmentIds = staffService.selectAllDeparmentIdsByDepartmentParentId(departmentId); + List staffIds = staffService.staffsByAllDeparmentIds(allDeparmentIds); + int total = staffIds.size(); + List staffLevels = resultRecordService.staffDistribution(selectMonthTime,staffIds); + List names = new ArrayList<>(); + List datas = new ArrayList<>(); + int konwn = 0; + for (GraphicsStatisticalDto staffLevel : staffLevels) { + names.add(staffLevel.getCategory()); + datas.add(BigDecimalUtil.div(Double.valueOf(staffLevel.getNumber()),Double.valueOf(total),2)); + konwn = konwn + staffLevel.getNumber(); + log.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); + data.setTargetDistribution(dto); + dto = new GraphicsDto(); + dto.setRows(end); + data.setResultDistribution(dto); + CharBarDto barDto= new CharBarDto(); + barDto.setNames(names); + barDto.setDatas(datas); + barDto.setTotal(total); + data.setStaffDistribution(barDto); + return data; + } + + @Override + public PageUtils resultReportList(ReportListReq req, List staffIds) { + // 状态为0的数据存在两张表,单独处理 + if(req.getStatus()!=0){ + //获取处理过业绩目标的人员 + PageUtils pageUtils = PageUtils.startPage(req.getCurrPage(),req.getPageSize()).doSelect( + page -> resultRecordMapper.targetReportList(req.getSelectMonthTime(), staffIds, page) + ); + List list = pageUtils.getList(); + + return pageUtils; + + }else { + //获取已提交人员 + List commitStaffIds = new ArrayList<>(); + List collect=resultRecordService.listObjs(new QueryWrapper() + .eq("is_delete", 0) + .eq("type", req.getType()) + .like("month_time",req.getSelectMonthTime()) + .ne("status", ResultRecordStatusEnum.CREATE.getStatus()) + .select("staff_id")); + if(CollectionUtils.isNotEmpty(collect)){ + commitStaffIds = collect.stream().map((Function) o -> o.toString()).collect(Collectors.toList()); + } + //去除已经提交的 + staffIds.removeAll(commitStaffIds); + PageUtils pageUtils = PageUtils.startPage(req.getCurrPage(),req.getPageSize()).doSelect( + page ->staffDao.getPositionByStaffIds(staffIds,page) + ); + //本次分页数据 + List dataList = pageUtils.getList(); + if(dataList.size()<1){ + return pageUtils; + } + //拿到用户数据查询部门信息封装 + List selectStaffIds = dataList.stream().map(reportProgressListDto -> reportProgressListDto.getStaffId()).collect(Collectors.toList()); + List departmentNameByStaffIds = departmentsStaffRelateDao.getDepartmentNameByStaffIds(selectStaffIds); + Map map = Maps.newHashMap(); + departmentNameByStaffIds.forEach(reportProgressListDto -> map.put(reportProgressListDto.getStaffId(),reportProgressListDto.getDepartmentName())); + dataList.forEach(reportProgressListDto -> reportProgressListDto.setDepartmentName(map.get(reportProgressListDto.getStaffId()))); + return pageUtils; + } + } } diff --git a/src/main/resources/mapper/app/ResultRecordMapper.xml b/src/main/resources/mapper/app/ResultRecordMapper.xml index a6099e7e..77f759f4 100644 --- a/src/main/resources/mapper/app/ResultRecordMapper.xml +++ b/src/main/resources/mapper/app/ResultRecordMapper.xml @@ -274,5 +274,26 @@ select * from lz_result_record where is_delete = 0 and staff_id = #{staffId} and type = 1 and status = #{status} order by id desc limit 1 + + + + + + + diff --git a/src/main/resources/mapper/generator/DepartmentsStaffRelateDao.xml b/src/main/resources/mapper/generator/DepartmentsStaffRelateDao.xml index b6b1c66d..f52f9b19 100644 --- a/src/main/resources/mapper/generator/DepartmentsStaffRelateDao.xml +++ b/src/main/resources/mapper/generator/DepartmentsStaffRelateDao.xml @@ -81,4 +81,17 @@ select * from lz_departments_staff_relate where is_delete=0 and staff_id = #{staffId} + + diff --git a/src/main/resources/mapper/generator/StaffDao.xml b/src/main/resources/mapper/generator/StaffDao.xml index 2e63c1c7..6620b28f 100644 --- a/src/main/resources/mapper/generator/StaffDao.xml +++ b/src/main/resources/mapper/generator/StaffDao.xml @@ -447,4 +447,16 @@ select * from lz_staff where is_delete = 0 +