From 12c07f1e8af850cb98da723f641fe0ebae16c798 Mon Sep 17 00:00:00 2001 From: 1073413548 <14628403+gjb0917@user.noreply.gitee.com> Date: Wed, 11 Sep 2024 16:52:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/CacheNames.java | 9 ++ .../business/controller/HomeController.java | 25 +++++- .../business/domain/vo/home/FinishTaskVo.java | 44 ++++++++++ .../business/mapper/PsTaskMainMapper.java | 4 + .../pusong/business/service/HomeService.java | 20 ++++- .../service/impl/HomeServiceImpl.java | 83 +++++++++++++++++++ .../impl/PsContractInfoServiceImpl.java | 1 + .../service/impl/PsTaskServiceImpl.java | 10 ++- .../mapper/business/PsTaskMainMapper.xml | 43 +++++----- 9 files changed, 210 insertions(+), 29 deletions(-) create mode 100644 pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/FinishTaskVo.java diff --git a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/constant/CacheNames.java b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/constant/CacheNames.java index 0e59ba0..aaf03e7 100644 --- a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/constant/CacheNames.java +++ b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/constant/CacheNames.java @@ -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"; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java index a245d85..8d0c44f 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java @@ -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 getTaskFinish(@RequestParam() Integer type) { + return R.ok(homeService.getTaskList(type)); + } + /** + * 首页大盘数据:任务完成平均时间 + * @param type 1本月 2上月 3本季度 4本年 5所有 + * @return + */ + @GetMapping("/getTaskTime") + public R> getTaskTime(@RequestParam() Integer type) { + return R.ok(homeService.getTaskTime(type)); + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/FinishTaskVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/FinishTaskVo.java new file mode 100644 index 0000000..9250f81 --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/FinishTaskVo.java @@ -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; + +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java index b3dcef2..64ed374 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsTaskMainMapper.java @@ -26,6 +26,10 @@ public interface PsTaskMainMapper extends BaseMapper { }) Page queryTaskPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + Page queryInvoiceTaskPageList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + @DataPermission({ @DataColumn(key = "deptName", value = "appo.create_dept"), @DataColumn(key = "userName", value = "appo.executor") diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java index c95eca9..b3dc093 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java @@ -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 getTaskTime(Integer type); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java index 45a56e9..3b2ecf1 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java @@ -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 mapParam = this.getDate(type); + LocalDate startDate = (LocalDate)mapParam.get("startDate"); + LocalDate endDate = (LocalDate)mapParam.get("endDate"); + String date = (String)mapParam.get("date"); + + LambdaQueryWrapper wq = Wrappers.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 getTaskTime(Integer type){ + Map mapParam = this.getDate(type); + LocalDate startDate = (LocalDate)mapParam.get("startDate"); + LocalDate endDate = (LocalDate)mapParam.get("endDate"); + String date = (String)mapParam.get("date"); + //返回map + Map map = new HashMap<>(); + + //查范围内创建并且范围内完成的数据 + List> allList = taskMainMapper.selectMaps(Wrappers.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> appointList = taskAppointMapper.selectMaps(Wrappers.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 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; + } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index f890e4e..d772c3a 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -521,6 +521,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { if(task!=null){ appointList = taskAppointMapper.selectList(Wrappers.lambdaQuery() .eq(PsTaskAppoint::getContractCode, contractCode) + .ne(PsTaskAppoint::getAppointStatus,AppointStatusEnum.CANCEL.getCode()) .eq(PsTaskAppoint::getTaskId, task.getId())); } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index 3809ab7..922cd2c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -95,7 +95,12 @@ public class PsTaskServiceImpl implements IPsTaskService { */ public TableDataInfo queryPageList(PsTaskQueryBo bo, PageQuery pageQuery){ QueryWrapper lqw = buildQueryWrapper(bo); - Page page = baseMapper.queryTaskPageList(pageQuery.build(), lqw); + Page 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 list = appointMapper.selectList(Wrappers.lambdaQuery().eq(PsTaskAppoint::getTaskId, id).eq(PsTaskAppoint::getDelFlag,"0")); + List list = appointMapper.selectList(Wrappers.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->{ diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index 87e2caa..c7edaac 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -14,8 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + ${ew.getCustomSqlSegment} - +