提交 f55ccc66 authored 作者: 任建彩's avatar 任建彩

1.个人月度绩效统计

上级 e473e516
......@@ -2,6 +2,9 @@ package com.zrqx.olive.personnel.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -10,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.common.CheckAdminToken;
import com.common.CommonPage;
import com.common.CommonResult;
import com.common.PageParamRequest;
......@@ -20,6 +24,9 @@ import com.zrqx.olive.personnel.service.UserTaskLevelService;
import com.zrqx.olive.personnel.vo.StatisticsTask;
import com.zrqx.olive.personnel.vo.StatisticsTaskTime;
import com.zrqx.olive.personnel.vo.StatisticsTaskTimeSplit;
import com.zrqx.olive.system.model.SystemAdmin;
import com.zrqx.olive.system.response.SystemAdminResponse;
import com.zrqx.olive.system.service.SystemAdminService;
import com.zrqx.olive.ttask.service.TaskService;
import io.swagger.annotations.Api;
......@@ -37,6 +44,10 @@ public class PersonnelController {
private TaskService taskService;
@Autowired
private UserTaskLevelService service;
@Autowired
private SystemAdminService systemAdminService;
@Autowired
private CheckAdminToken checkAdminToken;
@ApiOperation(value = "人员-工时统计修改/添加基础工时")
@PostMapping("/saveOrUpdate/taskLevel")
......@@ -47,8 +58,10 @@ public class PersonnelController {
@ApiOperation(value = "在职人员、离职人员列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public CommonResult<CommonPage<StatisticsTaskTime>> getPersonnelList(PersonnelRequest taskRequest,
@Validated PageParamRequest pageParamRequest) {
return CommonResult.success(CommonPage.restPage(taskService.getPersonnelList(taskRequest, pageParamRequest)));
@Validated PageParamRequest pageParamRequest,HttpServletRequest request) throws Exception {
String token = checkAdminToken.getTokenFormRequest(request);
SystemAdminResponse systemAdminResponse = systemAdminService.getInfoByToken(token);
return CommonResult.success(CommonPage.restPage(taskService.getPersonnelList(taskRequest, pageParamRequest,systemAdminResponse)));
}
@ApiOperation(value = "人员-工时统计详情页")
@RequestMapping(value = "/expect_man_hours_info/page", method = RequestMethod.GET)
......
package com.zrqx.olive.personnel.controller;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.common.CheckAdminToken;
import com.common.CommonPage;
import com.common.CommonResult;
import com.common.PageParamRequest;
import com.utils.DateUtils;
import com.zrqx.olive.personnel.dao.UserTaskLevelDao;
import com.zrqx.olive.personnel.model.UserScore;
import com.zrqx.olive.personnel.model.UserTaskLevel;
import com.zrqx.olive.personnel.request.PersonnelRequest;
import com.zrqx.olive.personnel.request.QueryLevelForm;
import com.zrqx.olive.personnel.request.ScoreRequest;
import com.zrqx.olive.personnel.service.UserScoreService;
import com.zrqx.olive.personnel.service.UserTaskLevelService;
import com.zrqx.olive.personnel.vo.StatisticsTaskTime;
import com.zrqx.olive.personnel.vo.UserScoreRecorsVo;
import com.zrqx.olive.personnel.vo.UserScoreVo;
import com.zrqx.olive.project.model.ProjectFile;
import com.zrqx.olive.system.model.SystemAdmin;
import com.zrqx.olive.system.response.SystemAdminResponse;
import com.zrqx.olive.system.service.SystemAdminService;
import com.zrqx.olive.ttask.model.Task;
import com.zrqx.olive.ttask.service.TaskService;
import com.zrqx.olive.ttask.vo.TaskVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@RestController
@RequestMapping("api/admin/score")
@Api(tags = "绩效打分")
public class UserScoreController {
@Autowired
private TaskService taskService;
@Autowired
private UserTaskLevelService service;
@Autowired
private SystemAdminService systemAdminService;
@Autowired
private UserScoreService userScoreService;
@Autowired
private UserTaskLevelDao userTaskLevelDao;
/**
* 查询任务管理表信息
*
* @param id Integer
* @since 2020-04-18
*/
@ApiOperation(value = "详情")
@RequestMapping(value = "/info", method = RequestMethod.GET)
@ApiImplicitParam(name = "id", value = "用户ID")
public CommonResult<UserScoreVo> info(@RequestParam(value = "id") Integer id,String date) {
UserScoreVo vo = userScoreService.info(id,date);
return CommonResult.success(vo);
}
@ApiOperation(value = "绩效打分统计表")
@RequestMapping(value = "/update", method = RequestMethod.POST)
public CommonResult<Boolean> update(@RequestBody ScoreRequest scoreRequest) {
return CommonResult.success(userScoreService.saveOrUpdate(scoreRequest));
}
@ApiOperation(value = "历史记录")
@RequestMapping(value = "/recors", method = RequestMethod.GET)
@ApiImplicitParam(name = "id", value = "用户ID")
public CommonResult<UserScoreRecorsVo> recors(@RequestParam(value = "id") Integer id,String year) {
UserScoreRecorsVo vo = userScoreService.recors(id,year);
return CommonResult.success(vo);
}
}
package com.zrqx.olive.personnel.dao;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zrqx.olive.personnel.model.UserScore;
import com.zrqx.olive.personnel.vo.UserScoreRecorsVo;
public interface UserScoreDao extends BaseMapper<UserScore> {
@Select("<script>"
+ "SELECT * from t_user_score a where 1=1 "
+ "<if test = 'id!=null'> "
+ " and user_id=#{id} "
+ "</if>"
+ "<if test = 'date!=null'>"
+ " AND a.generation_date = concat(#{beginDate}, ' 00:00:00' ) "
+ "</if>"
+ "</script>")
UserScore queryByInfo(@Param("id") Integer id, @Param("date") String date);
@Select("<script>"
+ "SELECT id,user_id,company_score,roles,generation_date from t_user_score a where 1=1 "
+ "<if test = 'id!=null'> "
+ " and user_id=#{id} "
+ "</if>"
+ "<if test = 'year!=null'>"
+ " AND a.generation_date like concat(#{year}, '%' ) "
+ "</if>"
+ "</script>")
UserScoreRecorsVo recors(Integer id, String year);
}
package com.zrqx.olive.personnel.model;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_user_score")
@ApiModel(value="UserScore对象", description="绩效打分表")
public class UserScore {
@ApiModelProperty(value = "后台管理员表ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("userId")
private Integer userId;
@ApiModelProperty("工时分")
private BigDecimal hoursFraction;
@ApiModelProperty("协作互助(4%)(研发组)、工作质量(22%)")
private BigDecimal workQuality;
@ApiModelProperty("工作质量(bug数量)分、工作质量(22%)")
private BigDecimal bugScore;
@ApiModelProperty("工作效率分")
private BigDecimal completeScore;
@ApiModelProperty("专业能力分、工作难度(8%)")
private BigDecimal majorScore;
@ApiModelProperty("敬业协作分")
private BigDecimal cooperationScore;
@ApiModelProperty("工作态度分----遵守公司规章制度")
private BigDecimal attitudeScore1;
@ApiModelProperty("工作态度分----迟到、早退次数")
private BigDecimal attitudeScore2;
@ApiModelProperty("工作态度分----请假次数")
private BigDecimal attitudeScore3;
@ApiModelProperty("管理分值")
private BigDecimal managementScore;
@ApiModelProperty("项目经理")
private BigDecimal projectManagerScore;
@ApiModelProperty("公司分")
private BigDecimal companyScore;
@ApiModelProperty("总和")
private BigDecimal totalScore;
@ApiModelProperty(value = "后台管理员权限(menus_id)")
private String roles;
@ApiModelProperty(value = "评价")
private String description;
@ApiModelProperty(value = "生成日期")
private String generationDate;
}
package com.zrqx.olive.personnel.request;
import java.io.Serializable;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ScoreRequest对象", description = "绩效考核表")
public class ScoreRequest implements Serializable {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("userId")
private Integer userId;
@ApiModelProperty("工时分")
private BigDecimal hoursFraction;
@ApiModelProperty("协作互助(4%)(研发组)、工作质量(22%)")
private BigDecimal workQuality;
@ApiModelProperty("工作质量(bug数量)分、工作质量(22%)")
private BigDecimal bugScore;
@ApiModelProperty("工作效率分")
private BigDecimal completeScore;
@ApiModelProperty("专业能力分、工作难度(8%)")
private BigDecimal majorScore;
@ApiModelProperty("敬业协作分")
private BigDecimal cooperationScore;
@ApiModelProperty("工作态度分----遵守公司规章制度")
private BigDecimal attitudeScore1;
@ApiModelProperty("工作态度分----迟到、早退次数")
private BigDecimal attitudeScore2;
@ApiModelProperty("工作态度分----请假次数")
private BigDecimal attitudeScore3;
@ApiModelProperty("管理分值")
private BigDecimal managementScore;
@ApiModelProperty("项目经理")
private BigDecimal projectManagerScore;
@ApiModelProperty("公司分")
private BigDecimal companyScore;
@ApiModelProperty("总和")
private BigDecimal totalScore;
@ApiModelProperty(value = "后台管理员权限(menus_id)")
private String roles;
@ApiModelProperty(value = "评价")
private String description;
@ApiModelProperty(value = "生成日期")
private String generationDate;
}
package com.zrqx.olive.personnel.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zrqx.olive.personnel.model.UserScore;
import com.zrqx.olive.personnel.request.ScoreRequest;
import com.zrqx.olive.personnel.vo.UserScoreRecorsVo;
import com.zrqx.olive.personnel.vo.UserScoreVo;
public interface UserScoreService extends IService<UserScore> {
UserScore queryByInfo(Integer id, String date);
boolean saveOrUpdate(ScoreRequest scoreRequest);
UserScoreVo info(Integer id, String date);
UserScoreRecorsVo recors(Integer id, String year);
}
......@@ -6,6 +6,7 @@ import com.zrqx.olive.personnel.request.QueryLevelForm;
import com.zrqx.olive.personnel.request.QueryStatisticsProjectRequest;
import com.zrqx.olive.personnel.request.SaveOrUpdateLevelForm;
import com.zrqx.olive.personnel.vo.StatisticsProjectNumVo;
import com.zrqx.olive.personnel.vo.UserScoreVo;
/**
* SystemAdminService 接口
......@@ -25,5 +26,6 @@ public interface UserTaskLevelService extends IService<UserTaskLevel> {
Integer getSumLevel(QueryLevelForm form);
}
package com.zrqx.olive.personnel.service.impl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.utils.DateUtils;
import com.zrqx.olive.personnel.dao.UserScoreDao;
import com.zrqx.olive.personnel.dao.UserTaskLevelDao;
import com.zrqx.olive.personnel.model.UserScore;
import com.zrqx.olive.personnel.request.PersonnelRequest;
import com.zrqx.olive.personnel.request.QueryLevelForm;
import com.zrqx.olive.personnel.request.ScoreRequest;
import com.zrqx.olive.personnel.service.UserScoreService;
import com.zrqx.olive.personnel.vo.UserScoreRecorsVo;
import com.zrqx.olive.personnel.vo.UserScoreVo;
import com.zrqx.olive.project.model.Customer;
import com.zrqx.olive.system.dao.SystemAdminDao;
import com.zrqx.olive.system.model.SystemAdmin;
import com.zrqx.olive.ttask.dao.TaskDao;
@Service
public class UserScoreServiceImpl extends ServiceImpl<UserScoreDao, UserScore> implements UserScoreService {
@Resource
private UserScoreDao userScoreDao;
@Autowired
private UserTaskLevelDao userTaskLevelDao;
@Autowired
private TaskDao taskDao;
@Autowired
private SystemAdminDao systemAdminDao;
@Override
public UserScore queryByInfo(Integer id, String date) {
return userScoreDao.queryByInfo(id,date);
}
@Override
public boolean saveOrUpdate(ScoreRequest scoreRequest) {
// TODO Auto-generated method stub
if(scoreRequest.getId()==null) {
UserScore userScore=new UserScore();
BeanUtils.copyProperties(scoreRequest, userScore);
userScoreDao.insert(userScore);
}else {
UserScore form =userScoreDao.selectById(scoreRequest.getId());
BeanUtils.copyProperties(scoreRequest, form);
userScoreDao.updateById(form);
}
return true;
}
@Override
public UserScoreVo info(Integer id, String date) {
SystemAdmin admin = systemAdminDao.selectById(id);
UserScoreVo vo = new UserScoreVo();
if(StringUtils.isNotBlank(date)) {
UserScore userScore = userScoreDao.queryByInfo(id,date);
BeanUtils.copyProperties(userScore, vo);
}else {
vo.setRoles(admin.getRoles());
vo.setUserId(id);
//工时分数=本月工时/基准工时*64(取整数)
Date date1 = DateUtils.getLastMonthBeginDate();
//上月结束日期
Date date2 = DateUtils.getLastMonthEndDate();
String beginDate = DateUtils.dateTimeToStrYMD(date1);
String endDate = DateUtils.dateTimeToStrYMD(date2);
//上个月总工时
BigDecimal countTask = taskDao.getByCountTask(id,beginDate,endDate);
//查基准工时
Integer sumLevel = this.getLevel(beginDate, endDate, id);
//开发人员
if(admin.getRoles().equals("11")) {
BigDecimal hoursFraction = countTask.divide(new BigDecimal(sumLevel) ,2, BigDecimal.ROUND_HALF_UP);
BigDecimal multiply = hoursFraction.multiply(new BigDecimal(64));
vo.setHoursFraction(multiply);
//bug分值
Integer countBug = taskDao.getByCountBug(id,beginDate,endDate);
BigDecimal bugScore=null;
if(countBug<=20) {
bugScore= new BigDecimal(5);
}else if(countBug<40) {
bugScore= new BigDecimal(3);
}else if(countBug<60) {
bugScore= new BigDecimal(1);
}else if(countBug>=60) {
bugScore= new BigDecimal(0);
}
vo.setBugScore(bugScore);
}
//设计人员
if(admin.getRoles().equals("12")) {
BigDecimal hoursFraction = countTask.divide(new BigDecimal(sumLevel)).multiply(new BigDecimal(57));
vo.setHoursFraction(hoursFraction);
}
}
return vo;
}
//查基准工时
public Integer getLevel(String beginDate,String endDate,Integer id) {
QueryLevelForm query1 = new QueryLevelForm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate start = LocalDate.parse(beginDate, formatter);
LocalDate end = LocalDate.parse(endDate, formatter);
DateTimeFormatter ff = DateTimeFormatter.ofPattern("yyyy-MM");
query1.setStartTime(start.format(ff));
query1.setEndTime(end.format(ff));
query1.setUserId(id);
Integer sumLevel = userTaskLevelDao.getSumLevel(query1);
return sumLevel;
}
@Override
public UserScoreRecorsVo recors(Integer id, String year) {
// TODO Auto-generated method stub
return userScoreDao.recors(id,year);
}
}
package com.zrqx.olive.personnel.service.impl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
......@@ -12,11 +16,14 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.utils.ArrayUtils;
import com.utils.DateUtils;
import com.zrqx.olive.personnel.dao.UserTaskLevelDao;
import com.zrqx.olive.personnel.model.UserScore;
import com.zrqx.olive.personnel.model.UserTaskLevel;
import com.zrqx.olive.personnel.request.QueryLevelForm;
import com.zrqx.olive.personnel.request.SaveOrUpdateLevelForm;
import com.zrqx.olive.personnel.service.UserTaskLevelService;
import com.zrqx.olive.personnel.vo.UserScoreVo;
import com.zrqx.olive.system.dao.SystemAdminDao;
import com.zrqx.olive.system.model.SystemAdmin;
......
package com.zrqx.olive.personnel.vo;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserScoreRecorsVo {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("userId")
private Integer userId;
private BigDecimal companyScore;
@ApiModelProperty("总和")
private BigDecimal totalScore;
@ApiModelProperty(value = "后台管理员权限(menus_id)")
private String roles;
@ApiModelProperty(value = "生成日期")
private String generationDate;
}
package com.zrqx.olive.personnel.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserScoreVo {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("userId")
private Integer userId;
@ApiModelProperty("工时分")
private BigDecimal hoursFraction;
@ApiModelProperty("协作互助(4%)(研发组)、工作质量(22%)")
private BigDecimal workQuality;
@ApiModelProperty("工作质量(bug数量)分、工作质量(22%)")
private BigDecimal bugScore;
@ApiModelProperty("工作效率分")
private BigDecimal completeScore;
@ApiModelProperty("专业能力分、工作难度(8%)")
private BigDecimal majorScore;
@ApiModelProperty("敬业协作分")
private BigDecimal cooperationScore;
@ApiModelProperty("工作态度分----遵守公司规章制度")
private BigDecimal attitudeScore1;
@ApiModelProperty("工作态度分----迟到、早退次数")
private BigDecimal attitudeScore2;
@ApiModelProperty("工作态度分----请假次数")
private BigDecimal attitudeScore3;
@ApiModelProperty("管理分值")
private BigDecimal managementScore;
@ApiModelProperty("项目经理")
private BigDecimal projectManagerScore;
@ApiModelProperty("公司分")
private BigDecimal companyScore;
@ApiModelProperty("总和")
private BigDecimal totalScore;
@ApiModelProperty(value = "后台管理员权限(menus_id)")
private String roles;
@ApiModelProperty(value = "评价")
private String description;
@ApiModelProperty(value = "生成日期")
private String generationDate;
}
......@@ -141,14 +141,18 @@ public class ProjectController {
@ApiOperation(value = "分页查询" , notes ="分页查询")
@GetMapping(value = "/page" )
public CommonResult<CommonPage<ProjectListVo>> query(QueryProjectRequest form, PageParamRequest pageParamRequest){
return CommonResult.success(CommonPage.restPage(service.page(form, pageParamRequest)));
public CommonResult<CommonPage<ProjectListVo>> query(QueryProjectRequest form, PageParamRequest pageParamRequest,HttpServletRequest request) throws Exception{
String token = checkAdminToken.getTokenFormRequest(request);
SystemAdminResponse systemAdminResponse = systemAdminService.getInfoByToken(token);
return CommonResult.success(CommonPage.restPage(service.page(form, pageParamRequest,systemAdminResponse)));
}
@ApiOperation(value = "查询全部项目" , notes ="分页查询")
@GetMapping(value = "/projectList" )
public CommonResult<List<ProjectListVo1>> list(QueryProjectRequest form){
return CommonResult.success(service.list(form));
public CommonResult<List<ProjectListVo1>> list(QueryProjectRequest form,HttpServletRequest request) throws Exception{
String token = checkAdminToken.getTokenFormRequest(request);
SystemAdminResponse systemAdminResponse = systemAdminService.getInfoByToken(token);
return CommonResult.success(service.list(form,systemAdminResponse));
}
@ApiOperation(value = "查询项目" , notes ="查询项目")
@RequestMapping(value = "/listProject", method = RequestMethod.GET)
......
......@@ -6,14 +6,12 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zrqx.olive.personnel.request.QueryStatisticsProjectRequest;
import com.zrqx.olive.personnel.vo.EchartsDataDaysVo;
import com.zrqx.olive.personnel.vo.EchartsDataMonthsVo;
import com.zrqx.olive.personnel.vo.EchartsDataweeksVo;
import com.zrqx.olive.personnel.vo.PreSaleEchartsDataMonthsVo;
import com.zrqx.olive.personnel.vo.PreSaleEchartsDataQuartersVo;
import com.zrqx.olive.personnel.vo.PreSaleEchartsDataYearsVo;
import com.zrqx.olive.personnel.vo.StatisticsProjectNumVo;
import com.zrqx.olive.project.model.StatisticsProject;
import com.zrqx.olive.project.request.QueryProjectRequest;
import com.zrqx.olive.project.vo.ProjectListVo;
......@@ -21,8 +19,14 @@ import com.zrqx.olive.project.vo.ProjectListVo1;
public interface StatisticsProjectDao extends BaseMapper<StatisticsProject> {
@Select("<script>"
+ "select id,project,customer,customer_id,name,status,DATE_FORMAT(start_time,'%Y-%m-%d') start_time,"
+ "DATE_FORMAT(end_time,'%Y-%m-%d') end_time,px,presale,to_be_allocated FROM t_statistics_project where 1=1 "
+ "select a.id,project,customer,customer_id,name,status,DATE_FORMAT(start_time,'%Y-%m-%d') start_time,"
+ "DATE_FORMAT(end_time,'%Y-%m-%d') end_time,px,presale,to_be_allocated FROM t_statistics_project a "
+ "<if test = 'roles ==11 or roles ==12 or roles ==13'> "
+ "INNER JOIN t_team_member_relation b on a.id=b.project_id where 1=1 and b.account_id =#{user_Id} "
+ "</if>"
+ "<if test = 'roles !=11 and roles !=12 and roles !=13'> "
+ " where 1=1 "
+ "</if>"
// 项目负责人
+ "<if test = 'form.name !=null'> "
+ "AND name like concat('%', #{form.name},'%') "
......@@ -41,18 +45,24 @@ public interface StatisticsProjectDao extends BaseMapper<StatisticsProject> {
+ " AND presale = #{form.presale} "
+ "</if>"
+ "</script>")
List<ProjectListVo> queryProjectPage(@Param("form") QueryProjectRequest form);
List<ProjectListVo> queryProjectPage(@Param("form") QueryProjectRequest form,@Param("roles") Integer roles,@Param("user_Id") Integer user_Id);
@Select("<script>"
+ "SELECT max(px) FROM t_statistics_project "
+ "</script>")
Integer selectByMaxSort();
@Select("<script>"
+ "select id,project,px FROM t_statistics_project where 1=1 "
+ "select a.id,project,px FROM t_statistics_project a "
+ "<if test = 'roles ==11 or roles ==12 or roles ==13'> "
+ "INNER JOIN t_team_member_relation b on a.id=b.project_id where 1=1 and b.account_id =#{user_Id} "
+ "</if>"
+ "<if test = 'roles !=11 and roles !=12 and roles !=13'> "
+ " where 1=1 "
+ "</if>"
+ "<if test = 'form.project !=\"\" and form.project !=null'> "
+ "AND project like concat('%',#{form.project},'%')"
+ "</if>"
+ "</script>")
List<ProjectListVo1> list(@Param("form") QueryProjectRequest form);
List<ProjectListVo1> list(@Param("form") QueryProjectRequest form, @Param("roles") Integer roles,@Param("user_Id") Integer user_Id);
@Select("<script>"
+ "select COUNT(*) FROM t_statistics_project p WHERE 1=1 "
+ "<if test = 'status!=null'> "
......
......@@ -28,7 +28,7 @@ public interface StatisticsProjectService extends IService<StatisticsProject> {
* @author 任建彩
* @date 2021年7月27日
*/
PageInfo<ProjectListVo> page(QueryProjectRequest form,PageParamRequest pageParam);
PageInfo<ProjectListVo> page(QueryProjectRequest form,PageParamRequest pageParam,SystemAdminResponse systemAdminResponse);
/**
* 新增/更新项目
* @Title: StatisticsProjectService.java
......@@ -73,7 +73,7 @@ public interface StatisticsProjectService extends IService<StatisticsProject> {
* @author 任建彩
* @date 2021年9月8日
*/
List<ProjectListVo1> list(QueryProjectRequest form);
List<ProjectListVo1> list(QueryProjectRequest form,SystemAdminResponse systemAdminResponse);
/**
* 统计项目数量
* @Title: StatisticsProjectService.java
......
......@@ -80,14 +80,16 @@ public class StatisticsProjectServiceImpl extends ServiceImpl<StatisticsProjectD
private TeamDao teamDao;
@Override
public PageInfo<ProjectListVo> page(QueryProjectRequest form, PageParamRequest pageParamRequest) {
public PageInfo<ProjectListVo> page(QueryProjectRequest form, PageParamRequest pageParamRequest,SystemAdminResponse systemAdminResponse) {
//开启分页
if(pageParamRequest.getOrderBy()==null) {
pageParamRequest.setOrderBy("start_time desc,px desc");
}
String roles = systemAdminResponse.getRoles();
Integer user_Id = systemAdminResponse.getId();
Page<StatisticsProject> startPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit(),
pageParamRequest.getOrderBy());
List<ProjectListVo> list = mapper.queryProjectPage(form);
List<ProjectListVo> list = mapper.queryProjectPage(form,Integer.parseInt(roles),user_Id);
for (ProjectListVo projectListVo : list) {
projectListVo.setStatus_Name(ProjectStatusEnum.getName(projectListVo.getStatus()));
Double designApplyTimeChange = timeApplyChangeMapper.timeApplyChangeMapper(projectListVo.getId(),null) == null ? 0.0 : timeApplyChangeMapper.timeApplyChangeMapper(projectListVo.getId(),null);
......@@ -229,9 +231,11 @@ public class StatisticsProjectServiceImpl extends ServiceImpl<StatisticsProjectD
}
@Override
public List<ProjectListVo1> list(QueryProjectRequest form) {
public List<ProjectListVo1> list(QueryProjectRequest form,SystemAdminResponse systemAdminResponse) {
// TODO Auto-generated method stub
return mapper.list(form) ;
String roles = systemAdminResponse.getRoles();
Integer user_Id = systemAdminResponse.getId();
return mapper.list(form,Integer.parseInt(roles),user_Id) ;
}
@Override
......
......@@ -25,7 +25,6 @@ import com.zrqx.olive.project.model.Team;
import com.zrqx.olive.project.model.TeamMemberRelation;
import com.zrqx.olive.project.request.QueryTeamRequest;
import com.zrqx.olive.project.request.SaveTeamRequest;
import com.zrqx.olive.project.request.StatisticsProjectRequest;
import com.zrqx.olive.project.request.TeamRequest;
import com.zrqx.olive.project.service.TeamService;
import com.zrqx.olive.system.dao.SystemRoleDao;
......
package com.zrqx.olive.test;
import java.net.URLEncoder;
import java.util.Arrays;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
public class Test {
public static void main(String[] args) throws Exception{
Long timestamp = System.currentTimeMillis();
String secret ="SECd4a6be1e02dc9864c688f283e3e0a2486d0f9211648a17b17d58dea331b15534";
String stringToSign = timestamp + "\n" + secret;
Mac mac =Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=0ae8cbc485e8a22e12373e9806492adb134106b4b33a1e719a18ca2bfc1592aa&timestamp="+timestamp+"&sign="+sign+"");
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("link");
OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
link.setMessageUrl("http://test12.zhongdianyun.com/#/project_manage/toAudit");
link.setPicUrl("");
link.setTitle("中软启信管理系统");
link.setText("段思明提交了一个工时申请单,请您尽快审核!");
request.setLink(link);
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setAtMobiles(Arrays.asList("15011250677"));//设置@那些人,使用的是手机号
request.setAt(at);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getErrcode());
}
}
......@@ -260,7 +260,7 @@ public class TimeApplyChangeServiceImpl extends ServiceImpl<TimeApplyChangeDao,T
timeApplyChangeMapper.insert(form);
StatisticsProject project = projectDao.selectById(form.getProjectId());
project.setTotalApplyTime(form.getChangeTime());
dingding(1,null,project.getProject(),null);
//dingding(1,null,project.getProject(),null);
return true;
}
@Override
......@@ -295,7 +295,7 @@ public class TimeApplyChangeServiceImpl extends ServiceImpl<TimeApplyChangeDao,T
teamService.updateById(team);
}
dingding(2,value,project.getProject(),entity.getProjectId());
//dingding(2,value,project.getProject(),entity.getProjectId());
}
return true;
}
......
......@@ -178,7 +178,7 @@ public interface TaskDao extends BaseMapper<Task> {
@Select("<script>"
+ " select sum(working_hours) FROM t_task a where task_status=3 and user_id is not null"
+ " select sum(working_hours) FROM t_task a where task_type=1 and task_status=3 and user_id is not null"
+ "<if test = 'id!=null and id!=\"\"'> "
+ " AND a.project_id = #{id} "
+ "</if>"
......@@ -197,7 +197,7 @@ public interface TaskDao extends BaseMapper<Task> {
+ "</script>")
BigDecimal queryConsume(String id,Integer userId,Integer departmentId,String presale);
@Select("<script>"
+ " select sum(working_hours) FROM t_task a where 1=1 "
+ " select sum(working_hours) FROM t_task a where 1=1 and task_type=1 "
+ "<if test = 'id!=null and id!=\"\"'> "
+ " AND a.project_id = #{id} "
+ "</if>"
......@@ -288,6 +288,7 @@ public interface TaskDao extends BaseMapper<Task> {
+ " AND a.complete_Time &lt;= concat(#{taskRequest.endTime}, ' 23:59:59' ) "
+ "</if>"
+ ") totalTime,b.id,b.real_name,c.department_name FROM eb_system_admin b INNER JOIN sys_department c on b.department_id=c.id where 1=1 "
+ "<if test = 'taskRequest.isType!=null'>"
+ " AND b.is_type = #{taskRequest.isType} "
+ "</if>"
......@@ -295,12 +296,15 @@ public interface TaskDao extends BaseMapper<Task> {
+ "<if test = 'taskRequest.departmentName!=null'> "
+ " and c.department_name like concat('%',#{taskRequest.departmentName},'%') "
+ "</if>"
+ "<if test = 'roles ==11 or roles ==12 or roles ==13'> "
+ " and b.id =#{user_Id}"
+ "</if>"
+ "<if test = 'taskRequest.userName!=null'> "
+ " and b.real_name like concat('%',#{taskRequest.userName},'%') "
+ "</if>"
+ " GROUP BY b.real_name ORDER BY department_name DESC,totalTime desc "
+ "</script>")
List<StatisticsTaskTime> getPersonnelList(@Param("taskRequest") PersonnelRequest taskRequest);
List<StatisticsTaskTime> getPersonnelList(@Param("taskRequest") PersonnelRequest taskRequest,@Param("roles") Integer roles,@Param("user_Id") Integer user_Id);
@Select("<script>"
+ " SELECT a.id,a.task_name,a.task_description,b.real_name finishedBy,c.project,a.working_hours,a.complete_time from t_task a INNER JOIN eb_system_admin b on a.user_id=b.id INNER JOIN t_statistics_project c on a.project_id=c.id where 1=1 and a.task_status=3 "
+ "<if test = 'form.userName!=null'> "
......@@ -352,4 +356,32 @@ public interface TaskDao extends BaseMapper<Task> {
+ " GROUP BY department_id) tt"
+ "</script>")
List<DeptTotalInfoMonthVo> deptTotalInfoMonth();
@Select("<script>"
+ "SELECT SUM(working_hours) sumTime from t_task a where task_status=3 and task_type=1 "
+ "<if test = 'id!=null'> "
+ " and user_id=#{id} "
+ "</if>"
+ "<if test = 'beginDate!=null'>"
+ " AND a.complete_Time &gt;= concat(#{beginDate}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = 'endDate!=null'>"
+ " AND a.complete_Time &lt;= concat(#{endDate}, ' 23:59:59' ) "
+ "</if>"
+ "</script>")
BigDecimal getByCountTask(@Param("id") Integer id,@Param("beginDate") String beginDate,@Param("endDate") String endDate);
@Select("<script>"
+ "SELECT count(*) sumTime from t_task a where task_type=2 "
+ "<if test = 'id!=null'> "
+ " and user_id=#{id} "
+ "</if>"
+ "<if test = 'beginDate!=null'>"
+ " AND a.complete_Time &gt;= concat(#{beginDate}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = 'endDate!=null'>"
+ " AND a.complete_Time &lt;= concat(#{endDate}, ' 23:59:59' ) "
+ "</if>"
+ "</script>")
Integer getByCountBug(@Param("id") Integer id,@Param("beginDate") String beginDate,@Param("endDate") String endDate);
}
......@@ -16,6 +16,7 @@ import com.zrqx.olive.personnel.request.PersonnelRequest;
import com.zrqx.olive.personnel.vo.StatisticsTask;
import com.zrqx.olive.personnel.vo.StatisticsTaskTime;
import com.zrqx.olive.personnel.vo.StatisticsTaskTimeSplit;
import com.zrqx.olive.system.response.SystemAdminResponse;
import com.zrqx.olive.ttask.model.Task;
import com.zrqx.olive.ttask.request.TaskForm;
import com.zrqx.olive.ttask.request.TaskRequest;
......@@ -57,9 +58,27 @@ public interface TaskService extends IService<Task> {
* @author 任建彩
* @date 2021年9月16日
*/
PageInfo<StatisticsTaskTime> getPersonnelList(PersonnelRequest taskRequest, PageParamRequest pageParamRequest);
PageInfo<StatisticsTaskTime> getPersonnelList(PersonnelRequest taskRequest, PageParamRequest pageParamRequest,SystemAdminResponse systemAdminResponse);
PageInfo<StatisticsTask> queryTaskPage(PageParamRequest pageParamRequest, CompleteQueryForm form);
List<StatisticsTaskTimeSplit> queryProjectSplitData(CompleteQueryForm form);
/**
* 获取上月的完成总工时
* @Title: TaskService.java
* @Package com.zrqx.olive.ttask.service
* @Description: TODO
* @author 任建彩
* @date 2021年9月27日
*/
BigDecimal getByCountTask(Integer id, String beginDate,String endDate);
/**
* 获取bug数量
* @Title: TaskService.java
* @Package com.zrqx.olive.ttask.service
* @Description: TODO
* @author 任建彩
* @date 2021年9月27日
*/
Integer getByCountBug(Integer id, String beginDate,String endDate);
}
......@@ -39,6 +39,7 @@ import com.zrqx.olive.project.model.DiyType;
import com.zrqx.olive.project.model.Team;
import com.zrqx.olive.project.service.DiyTypeService;
import com.zrqx.olive.project.service.TeamService;
import com.zrqx.olive.system.response.SystemAdminResponse;
import com.zrqx.olive.ttask.dao.TaskDao;
import com.zrqx.olive.ttask.model.Task;
import com.zrqx.olive.ttask.request.TaskForm;
......@@ -277,10 +278,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
@Override
public PageInfo<StatisticsTaskTime> getPersonnelList(PersonnelRequest taskRequest,
PageParamRequest pageParamRequest) {
PageParamRequest pageParamRequest,SystemAdminResponse systemAdminResponse) {
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit(),
pageParamRequest.getOrderBy());
List<StatisticsTaskTime> list = dao.getPersonnelList(taskRequest);
String roles = systemAdminResponse.getRoles();
Integer user_Id = systemAdminResponse.getId();
List<StatisticsTaskTime> list = dao.getPersonnelList(taskRequest,Integer.parseInt(roles),user_Id);
for (StatisticsTaskTime statisticsTaskTime : list) {
if(taskRequest.getStartTime()!=null && taskRequest.getEndTime()!=null) {
taskRequest.setUserId(statisticsTaskTime.getId());
......@@ -288,7 +291,6 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
statisticsTaskTime.setTaskLevel(level);
}
}
return new PageInfo<StatisticsTaskTime>(list);
}
......@@ -324,4 +326,16 @@ public class TaskServiceImpl extends ServiceImpl<TaskDao, Task> implements TaskS
List<StatisticsTaskTimeSplit> list=dao.queryProjectSplitData(form);
return list;
}
@Override
public BigDecimal getByCountTask(Integer id,String beginDate,String endDate) {
// TODO Auto-generated method stub
return dao.getByCountTask(id,beginDate,endDate);
}
@Override
public Integer getByCountBug(Integer id, String beginDate, String endDate) {
// TODO Auto-generated method stub
return dao.getByCountBug(id,beginDate,endDate);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论