首页 任务完成时间
This commit is contained in:
parent
f85b6750de
commit
12c07f1e8a
@ -102,4 +102,13 @@ public interface CacheNames {
|
||||
* 首页查询
|
||||
*/
|
||||
String HOME_G = "home_queryG#60s";
|
||||
|
||||
/**
|
||||
* 首页查询
|
||||
*/
|
||||
String HOME_H = "home_queryH#60s";
|
||||
/**
|
||||
* 首页查询
|
||||
*/
|
||||
String HOME_I = "home_queryI#60s";
|
||||
}
|
||||
|
@ -5,10 +5,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.pusong.business.domain.bo.PsSalaryBo;
|
||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||
import com.pusong.business.domain.vo.PsSalaryVo;
|
||||
import com.pusong.business.domain.vo.home.ChannelAmountVo;
|
||||
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
||||
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
||||
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
||||
import com.pusong.business.domain.vo.home.*;
|
||||
import com.pusong.business.service.HomeService;
|
||||
import com.pusong.business.service.IPsSalaryService;
|
||||
import com.pusong.common.core.domain.R;
|
||||
@ -23,6 +20,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 员工提成提成
|
||||
*
|
||||
@ -70,5 +69,23 @@ public class HomeController extends BaseController {
|
||||
return R.ok(homeService.byChannel(type));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 首页大盘数据:任务完成情况
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getTaskFinish")
|
||||
public R<FinishTaskVo> getTaskFinish(@RequestParam() Integer type) {
|
||||
return R.ok(homeService.getTaskList(type));
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页大盘数据:任务完成平均时间
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getTaskTime")
|
||||
public R<Map<String,Object>> getTaskTime(@RequestParam() Integer type) {
|
||||
return R.ok(homeService.getTaskTime(type));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,44 @@
|
||||
package com.pusong.business.domain.vo.home;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 任务完成情况vo
|
||||
*/
|
||||
@Data
|
||||
public class FinishTaskVo {
|
||||
/**
|
||||
* 当前时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private Date currentDate = new Date();
|
||||
/**
|
||||
* 统计范围
|
||||
*/
|
||||
private String dateStr;
|
||||
/**
|
||||
* 任务总数
|
||||
*/
|
||||
private Long count;
|
||||
/**
|
||||
* 任务已完成总数
|
||||
*/
|
||||
private Long finishNum;
|
||||
/**
|
||||
* 任务完成率
|
||||
*/
|
||||
private String finishPre;
|
||||
|
||||
/**
|
||||
* 任务未完成总数
|
||||
*/
|
||||
private Long unfinishNum;
|
||||
/**
|
||||
* 任务未完成率
|
||||
*/
|
||||
private String unfinishPre;
|
||||
|
||||
}
|
@ -26,6 +26,10 @@ public interface PsTaskMainMapper extends BaseMapper<PsTaskMain> {
|
||||
})
|
||||
Page<PsTaskMainVo> queryTaskPageList(@Param("page") Page<PsTaskMain> page, @Param(Constants.WRAPPER) Wrapper<PsTaskMain> queryWrapper);
|
||||
|
||||
|
||||
Page<PsTaskMainVo> queryInvoiceTaskPageList(@Param("page") Page<PsTaskMain> page, @Param(Constants.WRAPPER) Wrapper<PsTaskMain> queryWrapper);
|
||||
|
||||
|
||||
@DataPermission({
|
||||
@DataColumn(key = "deptName", value = "appo.create_dept"),
|
||||
@DataColumn(key = "userName", value = "appo.executor")
|
||||
|
@ -1,9 +1,8 @@
|
||||
package com.pusong.business.service;
|
||||
|
||||
import com.pusong.business.domain.vo.home.ChannelAmountVo;
|
||||
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
||||
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
||||
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
||||
import com.pusong.business.domain.vo.home.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 首页相关接口
|
||||
@ -20,4 +19,17 @@ public interface HomeService {
|
||||
* @return
|
||||
*/
|
||||
ChannelAmountVo byChannel(Integer type);
|
||||
|
||||
/**
|
||||
* 首页大盘数据:任务完成率
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
FinishTaskVo getTaskList(Integer type);
|
||||
/**
|
||||
* 首页大盘数据:任务完成时间
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> getTaskTime(Integer type);
|
||||
}
|
||||
|
@ -1,16 +1,23 @@
|
||||
package com.pusong.business.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.pusong.business.domain.PsContractInfo;
|
||||
import com.pusong.business.domain.PsContractPay;
|
||||
import com.pusong.business.domain.PsTaskAppoint;
|
||||
import com.pusong.business.domain.PsTaskMain;
|
||||
import com.pusong.business.domain.vo.home.*;
|
||||
import com.pusong.business.enums.CommonStatusEnum;
|
||||
import com.pusong.business.enums.ContractStatusEnum;
|
||||
import com.pusong.business.enums.PayStatusEnum;
|
||||
import com.pusong.business.enums.TaskStatusEnum;
|
||||
import com.pusong.business.mapper.PsContractInfoMapper;
|
||||
import com.pusong.business.mapper.PsContractPayMapper;
|
||||
import com.pusong.business.mapper.PsTaskAppointMapper;
|
||||
import com.pusong.business.mapper.PsTaskMainMapper;
|
||||
import com.pusong.business.service.HomeService;
|
||||
import com.pusong.common.core.constant.CacheNames;
|
||||
import com.pusong.system.domain.bo.SysDictDataBo;
|
||||
@ -37,6 +44,8 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
private final PsContractInfoMapper psContractInfoMapper;
|
||||
private final PsContractPayMapper payMapper;
|
||||
private final PsTaskMainMapper taskMainMapper;
|
||||
private final PsTaskAppointMapper taskAppointMapper;
|
||||
|
||||
private final ISysDictDataService dictDataService;
|
||||
|
||||
@ -256,4 +265,78 @@ public class HomeServiceImpl implements HomeService {
|
||||
res.cellPer();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 首页大盘数据:任务完成率
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@Cacheable(cacheNames = CacheNames.HOME_H, key = "#type")
|
||||
public FinishTaskVo getTaskList(Integer type){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
LambdaQueryWrapper<PsTaskMain> wq = Wrappers.<PsTaskMain>lambdaQuery().ne(PsTaskMain::getTaskStatus, TaskStatusEnum.CANCEL.getCode())
|
||||
.ge(startDate != null,PsTaskMain::getCreateTime,startDate)
|
||||
.le(endDate != null,PsTaskMain::getCreateTime,endDate);
|
||||
//任务的总数
|
||||
Long count = taskMainMapper.selectCount(wq);
|
||||
wq.eq(PsTaskMain::getTaskStatus, TaskStatusEnum.FINISH.getCode());
|
||||
//完成任务的总数
|
||||
Long finishCount = taskMainMapper.selectCount(wq);
|
||||
|
||||
FinishTaskVo finishTaskVo = new FinishTaskVo();
|
||||
finishTaskVo.setDateStr(date);
|
||||
finishTaskVo.setFinishNum(finishCount);
|
||||
finishTaskVo.setCount(count);
|
||||
finishTaskVo.setUnfinishNum(count-finishCount);
|
||||
finishTaskVo.setFinishPre(new BigDecimal(finishCount).divide(new BigDecimal(count),4,RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toPlainString());
|
||||
finishTaskVo.setUnfinishPre(new BigDecimal(finishTaskVo.getUnfinishNum()).divide(new BigDecimal(count),4,RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toPlainString());
|
||||
return finishTaskVo;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 首页大盘数据:任务完成时间
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@Cacheable(cacheNames = CacheNames.HOME_I, key = "#type")
|
||||
public Map<String,Object> getTaskTime(Integer type){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
//返回map
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
|
||||
//查范围内创建并且范围内完成的数据
|
||||
List<Map<String, Object>> allList = taskMainMapper.selectMaps(Wrappers.<PsTaskMain>query().select("round(AVG(TIMESTAMPDIFF(day, create_time, finish_date) )) avg")
|
||||
.eq("task_status", TaskStatusEnum.FINISH.getCode())
|
||||
.ge(startDate != null, "create_time", startDate).le(endDate != null, "create_time", endDate)
|
||||
.ge(startDate != null, "finish_date", startDate).le(endDate != null, "finish_date", endDate));
|
||||
|
||||
List<Map<String, Object>> appointList = taskAppointMapper.selectMaps(Wrappers.<PsTaskAppoint>query().select("appoint_type","round(AVG(TIMESTAMPDIFF(day, create_time, finish_date) )) avg")
|
||||
.eq("appoint_status", TaskStatusEnum.AppointStatusEnum.FINISH.getCode())
|
||||
.ge(startDate != null, "create_time", startDate).le(endDate != null, "create_time", endDate)
|
||||
.ge(startDate != null, "finish_date", startDate).le(endDate != null, "finish_date", endDate)
|
||||
.groupBy("appoint_type"));
|
||||
map.put("taskAvg",allList.get(0).get("avg"));//任务平均天数
|
||||
map.put("inAvg",0);//内勤
|
||||
map.put("outAvg",0);//外勤
|
||||
map.put("secAvg",0);//特勤
|
||||
for(Map<String, Object> appointMap : appointList){
|
||||
if(StringUtils.equals("1",appointMap.get("appoint_type").toString())){
|
||||
appointMap.put("inAvg",appointMap.get("avg"));
|
||||
}else if(StringUtils.equals("2",appointMap.get("appoint_type").toString())){
|
||||
appointMap.put("outAvg",appointMap.get("avg"));
|
||||
}else if(StringUtils.equals("3",appointMap.get("appoint_type").toString())){
|
||||
appointMap.put("secAvg",appointMap.get("avg"));
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
@ -521,6 +521,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
||||
if(task!=null){
|
||||
appointList = taskAppointMapper.selectList(Wrappers.<PsTaskAppoint>lambdaQuery()
|
||||
.eq(PsTaskAppoint::getContractCode, contractCode)
|
||||
.ne(PsTaskAppoint::getAppointStatus,AppointStatusEnum.CANCEL.getCode())
|
||||
.eq(PsTaskAppoint::getTaskId, task.getId()));
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,12 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
*/
|
||||
public TableDataInfo<PsTaskMainVo> queryPageList(PsTaskQueryBo bo, PageQuery pageQuery){
|
||||
QueryWrapper<PsTaskMain> lqw = buildQueryWrapper(bo);
|
||||
Page<PsTaskMainVo> page = baseMapper.queryTaskPageList(pageQuery.build(), lqw);
|
||||
Page<PsTaskMainVo> page;
|
||||
if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(),bo.getType())){//发票任务无需数据权限
|
||||
page = baseMapper.queryInvoiceTaskPageList(pageQuery.build(), lqw);
|
||||
}else{
|
||||
page = baseMapper.queryTaskPageList(pageQuery.build(), lqw);
|
||||
}
|
||||
for (PsTaskMainVo vo : page.getRecords()) {
|
||||
if(vo.getStartDate() != null){
|
||||
vo.setNumOfDat(DateUtils.calWorkDate(vo.getStartDate(),new Date()));
|
||||
@ -139,7 +144,8 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
||||
* @param id 任务主表主键
|
||||
*/
|
||||
public TaskPlanVo plan(Long id){
|
||||
List<PsTaskAppoint> list = appointMapper.selectList(Wrappers.<PsTaskAppoint>lambdaQuery().eq(PsTaskAppoint::getTaskId, id).eq(PsTaskAppoint::getDelFlag,"0"));
|
||||
List<PsTaskAppoint> list = appointMapper.selectList(Wrappers.<PsTaskAppoint>lambdaQuery().eq(PsTaskAppoint::getTaskId, id)
|
||||
.ne(PsTaskAppoint::getAppointStatus,AppointStatusEnum.CANCEL.getCode()).eq(PsTaskAppoint::getDelFlag,"0"));
|
||||
TaskPlanVo planVo = new TaskPlanVo();
|
||||
if(CollectionUtils.isEmpty(list)){return planVo;}
|
||||
list.forEach(item->{
|
||||
|
@ -14,8 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</resultMap>
|
||||
|
||||
|
||||
|
||||
<select id="queryTaskPageList" resultMap="taskMainResult">
|
||||
<sql id="queryTask">
|
||||
select main.id,
|
||||
main.task_type,
|
||||
main.start_date,
|
||||
@ -43,8 +42,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=2 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as outAppo,
|
||||
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=3 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as secAppo,
|
||||
(CASE WHEN (con.contract_amount -
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 ) +
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 )
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 and pay.contract_code = main.contract_code and pay.pay_status = '1' ) +
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 and cpay.contract_code = main.contract_code )
|
||||
) > 0 THEN '半款' ELSE '全款' END) as pay_stauts_desc,
|
||||
(select GROUP_CONCAT(appoint.executor SEPARATOR ',')
|
||||
from ps_task_appoint appoint where appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0') as executors,
|
||||
@ -55,9 +54,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
left join ps_company_info com on con.company_id = com.id
|
||||
left join ps_custom_info cus on con.custom_id = cus.id
|
||||
left join sys_user usr on con.custom_manager = usr.user_id
|
||||
</sql>
|
||||
<select id="queryTaskPageList" resultMap="taskMainResult">
|
||||
<include refid="queryTask"/>
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
<select id="queryInvoiceTaskPageList" resultMap="taskMainResult">
|
||||
<include refid="queryTask"/>
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="queryChildTaskPageList" resultMap="taskMainResult">
|
||||
select
|
||||
main.task_type,
|
||||
@ -83,8 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
cus.custom_name cus_custom_name ,
|
||||
cus.custom_mobile cus_custom_mobile,
|
||||
(CASE WHEN (con.contract_amount -
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 ) +
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 )
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 and pay.contract_code = main.contract_code and pay.pay_status = '1' ) +
|
||||
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 and cpay.contract_code = main.contract_code )
|
||||
) > 0 THEN '半款' ELSE '全款' END) as pay_stauts_desc,
|
||||
appo.executor as executors,
|
||||
appo.appoint_status,
|
||||
|
Loading…
Reference in New Issue
Block a user