diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemanDmanageController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemanDmanageController.java index 3bbe147..5458def 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemanDmanageController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemanDmanageController.java @@ -78,4 +78,10 @@ public class DemanDmanageController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping({"/queryHomeUiData"}) + @Log("首页需求查询") + public ResponseEntity homeQuery(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(demanDmanageService.homeQuery(whereJson),HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemandTaskController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemandTaskController.java index 6fe6a76..3fba19d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemandTaskController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/controller/DemandTaskController.java @@ -90,4 +90,11 @@ public class DemandTaskController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/confirmTask") + @Log("完成任务") + public ResponseEntity confrimTask(@RequestBody DemandTask dao) { + demandTaskService.confirmTask(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/enums/NeedTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/enums/NeedTypeEnum.java index 8125df7..dcaf69b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/enums/NeedTypeEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/enums/NeedTypeEnum.java @@ -10,15 +10,15 @@ import lombok.Getter; @AllArgsConstructor public enum NeedTypeEnum { /** - * 生成 + * 项目 */ ITEM("1", "项目"), /** - * 开发中 + * 研发 */ DEVELOP("2", "研发"), /** - * 完成 + * 其他 */ OTHER("3", "其他"), /** diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/sch/AutoUpdateTaskDate.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/sch/AutoUpdateTaskDate.java index 1704316..5d57bf2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/sch/AutoUpdateTaskDate.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/sch/AutoUpdateTaskDate.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; import java.util.List; @Slf4j -@Component +@Component("autoUpdateTaskDate") @RequiredArgsConstructor public class AutoUpdateTaskDate { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/DemanDmanageService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/DemanDmanageService.java index b7079be..bed791b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/DemanDmanageService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/DemanDmanageService.java @@ -84,4 +84,35 @@ public interface DemanDmanageService extends IService { * @param id: 需求id */ void updateStatus(String id); + + /** + * 首页查询 + * @param whereJson: 入参 + * @return JSONObject :{ + * userInfo:{ + * // 用户信息 + * userName:用户名称, + * confirmTaskPer: 已完成任务百分比, + * // 剩余工作 + * item: 项目, + * develop: 研发, + * other: 其他, + * // 我的贡献 + * createItem: 创建项目, + * confirmItem: 完成项目, + * submitFile: 提交文档, + * createTask: 创建任务, + * confirmTask: 完成任务, + * // 单个项目贡献度(只有入参有值的时候才会查询) + * oneConfirmTask: 完成任务, + * oneUnConfirmTask: 未完成任务, + * oneTotalTask: 任务数, + * }, + * + * tableItemData:[{id,projectName,itemConfirmPer,onlineDate}],本月上线项目 + * tableTaskData:[{任务实体类}],未完成任务列表 + * tableItemNumData:[projectName,allTaskNum,ConfirmTaskNum,UnConfirmTaskNum]未完成项目统计 + * } + */ + JSONObject homeQuery(JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.java index 63ed66e..f23110c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.java @@ -1,8 +1,12 @@ package org.nl.work.service.demandmanage.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.nl.work.service.demandmanage.dao.DemanDmanage; +import java.util.List; + /** *

* Mapper 接口 @@ -13,4 +17,18 @@ import org.nl.work.service.demandmanage.dao.DemanDmanage; */ public interface DemanDmanageMapper extends BaseMapper { + /** + * 根据此人员查询参与的项目 + * @param userId:人员id + * @return List + */ + List getItemUser(String userId); + + /** + * 根据此人员查询查询本月上线项目 + * @param query:查询条件 + * @return List + */ + List getOnlineItem(@Param("query") JSONObject query); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.xml index 979e9f3..9511bd8 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/dao/mapper/DemanDmanageMapper.xml @@ -2,4 +2,44 @@ + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/impl/DemanDmanageServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/impl/DemanDmanageServiceImpl.java index 9d9a6bf..b772acc 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/impl/DemanDmanageServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandmanage/impl/DemanDmanageServiceImpl.java @@ -1,6 +1,8 @@ package org.nl.work.service.demandmanage.impl; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -226,6 +228,200 @@ public class DemanDmanageServiceImpl extends ServiceImpl tableItemData = queryOnlineItem(); + result.put("tableItemData",tableItemData); + // 3.查询未完成任务列表 + List tableTaskData = queryUnConfirmTask(); + result.put("tableTaskData",tableTaskData); + // 4.查询未完成项目统计 + List tableItemNumData = queryUnConfirmItem(); + result.put("tableItemNumData",tableItemNumData); + return result; + } + + /** + * 首页查询: + * 查询个人信息/个人贡献/单个个人项目贡献 + * @param whereJson 入参:如果有值则查询【单个个人项目贡献】 + * @return JSONObject + */ + private JSONObject queryUserInfo(JSONObject whereJson) { + JSONObject userInfo = new JSONObject(); + // 1.查询个人信息 + userInfo.put("userName", SecurityUtils.getCurrentNickName()); + + // 已完成任务百分比: 已完成任务数 / 总任务数 + List allTaskList = demandTaskService.list( + new QueryWrapper().lambda() + .eq(DemandTask::getDevelopId, SecurityUtils.getCurrentUserId()) + ); + if (ObjectUtil.isEmpty(allTaskList)) { + userInfo.put("confirmTaskPer",100); + } else { + // 已完成任务数 + long confirmTaskNum = allTaskList + .stream() + .filter(row -> row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())).count(); + double confirmTaskPer = NumberUtil.div(confirmTaskNum, allTaskList.size()); + userInfo.put("confirmTaskPer",NumberUtil.round(NumberUtil.mul(confirmTaskPer, 100), 1)); + } + // 剩余工作 + List itemUserList = this.baseMapper.getItemUser(SecurityUtils.getCurrentUserId()); + // 项目 + userInfo.put("item",itemUserList.stream() + .filter(row -> row.getString("demandType").equals(NeedTypeEnum.ITEM.getValue())) + .count()); + // 研发 + userInfo.put("develop",itemUserList.stream() + .filter(row -> row.getString("demandType").equals(NeedTypeEnum.DEVELOP.getValue())) + .count()); + // 其他 + userInfo.put("other",itemUserList.stream() + .filter(row -> row.getString("demandType").equals(NeedTypeEnum.OTHER.getValue())) + .count()); + + // 2.查询我的贡献 + // 创建项目 + userInfo.put("createItem", this.baseMapper.selectList( + new QueryWrapper().lambda() + .eq(DemanDmanage::getCreateId,SecurityUtils.getCurrentUserId()) + ).size()); + // 完成项目 + userInfo.put("confirmItem", this.baseMapper.selectList( + new QueryWrapper().lambda() + .eq(DemanDmanage::getConfirmId,SecurityUtils.getCurrentUserId()) + ).size()); + // 提交文档 + userInfo.put("submitFile", iToolLocalStorageService.list( + new QueryWrapper().lambda() + .eq(ToolLocalStorage::getCreate_id, SecurityUtils.getCurrentUserId()) + ).size()); + // 创建任务 + userInfo.put("createTask", allTaskList.size()); + // 完成任务 + userInfo.put("confirmTask", allTaskList.stream() + .filter(row -> row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())).count()); + + // 3.单个项目贡献度(只有入参有值的时候才会查询) + if (ObjectUtil.isNotEmpty(whereJson.getString("id"))) { + List oneItemTaskList = allTaskList.stream() + .filter(row -> row.getDemandId().equals(whereJson.getString("id"))) + .collect(Collectors.toList()); + // 已完成任务 + userInfo.put("oneConfirmTask", oneItemTaskList.stream() + .filter(row -> row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())).count()); + // 未完成任务 + userInfo.put("oneUnConfirmTask", oneItemTaskList.stream() + .filter(row -> !row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())).count()); + // 总任务数 + userInfo.put("oneTotalTask", oneItemTaskList.size()); + } + return userInfo; + } + + /** + * 首页查询: + * 查询本月上线项目 + * @return List + */ + private List queryOnlineItem() { + // 查询本月需上线的项目 + JSONObject param = new JSONObject(); + param.put("userId", SecurityUtils.getCurrentUserId()); + Date date = DateUtil.parse(DateUtil.today()); + param.put("startDate", DateUtil.beginOfMonth(date).toString().substring(0,10)); + param.put("endDate", DateUtil.endOfMonth(date).toString().substring(0,10)); + List onlineItemList = this.baseMapper.getOnlineItem(param); + + // 查询所有任务 + List queryId = onlineItemList.stream() + .map(row -> row.getString("id")) + .collect(Collectors.toList()); + List taskList = new ArrayList<>(); + + if (ObjectUtil.isNotEmpty(queryId)) { + taskList = demandTaskService.list( + new QueryWrapper().lambda() + .in(DemandTask::getDemandId, queryId) + ); + } + + // 计算完成度:完成任务 / 总任务数 + for (JSONObject json : onlineItemList) { + // 当前项目总任务集合 + List itemTskList = taskList.stream() + .filter(row -> row.getDemandId().equals(json.getString("id"))) + .collect(Collectors.toList()); + // 当前项目已完成任务数 + long confirmTskNum = itemTskList.stream() + .filter(row -> row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())).count(); + + double div = NumberUtil.div(confirmTskNum, itemTskList.size()); + json.put("itemConfirmPer", NumberUtil.round(NumberUtil.mul(div,100), 1)); + } + return onlineItemList; + } + + /** + * 首页查询: + * 未完成任务列表 + * @return List + */ + private List queryUnConfirmTask() { + return demandTaskService.list( + new QueryWrapper().lambda() + .eq(DemandTask::getDevelopId, SecurityUtils.getCurrentUserId()) + .ne(DemandTask::getTaskStatus, NeedStatusEnum.CONFIRM.getValue()) + ); + } + + /** + * 首页查询: + * 未完成项目统计 + * @return List + */ + private List queryUnConfirmItem() { + // 查询人员未完成项目 + List itemUserList = this.baseMapper.getItemUser(SecurityUtils.getCurrentUserId()); + // 查询未完成项目对应的任务 + List queryId = itemUserList.stream() + .map(row -> row.getString("demandId")) + .collect(Collectors.toList()); + + List taskList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(queryId)) { + taskList = demandTaskService.list( + new QueryWrapper().lambda() + .in(DemandTask::getDemandId, queryId) + ); + } + + for (JSONObject json : itemUserList) { + // 总任务 + List allTsk = taskList.stream() + .filter(row -> row.getDemandId().equals(json.getString("demandId"))) + .collect(Collectors.toList()); + json.put("allTaskNum",allTsk.size()); + + // 已完成 + long count = allTsk.stream() + .filter(row -> row.getTaskStatus().equals(NeedStatusEnum.CONFIRM.getValue())) + .count(); + json.put("ConfirmTaskNum",count); + + // 未完成 + json.put("UnConfirmTaskNum",NumberUtil.sub(allTsk.size(),count)); + } + return itemUserList; + } + /** * 新增修改时校验需求是否重复 * @param dao: 需求实体类 @@ -241,6 +437,5 @@ public class DemanDmanageServiceImpl extends ServiceImpl { * @param dao 任务实体类 */ void startTask(DemandTask dao); + + /** + * 完成任务 + * @param dao 任务实体类 + */ + void confirmTask(DemandTask dao); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/dao/mapper/DemandTaskService.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/dao/mapper/DemandTaskService.xml index a616171..4bfba61 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/dao/mapper/DemandTaskService.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/dao/mapper/DemandTaskService.xml @@ -47,6 +47,7 @@ 1 = 1 and roles.role_id = '1873638956067852288' + and a.user_id != '1' diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/impl/DemandTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/impl/DemandTaskServiceImpl.java index 1a24c28..9d138d0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/impl/DemandTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/work/service/demandtask/impl/DemandTaskServiceImpl.java @@ -162,4 +162,23 @@ public class DemandTaskServiceImpl extends ServiceImpl

- {{ '刘先源, 上午好!' }} + {{ uiResultData.userInfo.userName + ', 辛苦了!' }}
@@ -28,13 +28,13 @@
- +
-
+
@@ -56,13 +56,13 @@
- {{ '00' }} + {{ formatNum(uiResultData.userInfo.item ) }} - {{ '01' }} + {{ formatNum(uiResultData.userInfo.develop ) }} - {{ '12' }} + {{ formatNum(uiResultData.userInfo.other ) }}
@@ -79,7 +79,7 @@
- - - @@ -108,16 +105,16 @@
- - - - + + + +
@@ -136,16 +133,17 @@
- - + + @@ -174,13 +172,13 @@
- {{ '01' }} + {{ formatNum(uiResultData.userInfo.oneConfirmTask ) }} - {{ '01' }} + {{ formatNum(uiResultData.userInfo.oneUnConfirmTask ) }} - {{ '11' }} + {{ formatNum(uiResultData.userInfo.oneTotalTask ) }}
@@ -206,13 +204,13 @@
- {{ '01' }} + {{ formatNum(uiResultData.userInfo.createItem ) }} - {{ '01' }} + {{ formatNum(uiResultData.userInfo.confirmItem ) }} - {{ '11' }} + {{ formatNum(uiResultData.userInfo.submitFile ) }}
@@ -225,10 +223,10 @@
- {{ '01' }} + {{ formatNum(uiResultData.userInfo.createTask ) }} - {{ '01' }} + {{ formatNum(uiResultData.userInfo.confirmTask ) }}
@@ -240,43 +238,26 @@