add:首页、任务、需求
This commit is contained in:
@@ -78,4 +78,10 @@ public class DemanDmanageController {
|
|||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping({"/queryHomeUiData"})
|
||||||
|
@Log("首页需求查询")
|
||||||
|
public ResponseEntity<Object> homeQuery(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(demanDmanageService.homeQuery(whereJson),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,4 +90,11 @@ public class DemandTaskController {
|
|||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/confirmTask")
|
||||||
|
@Log("完成任务")
|
||||||
|
public ResponseEntity<Object> confrimTask(@RequestBody DemandTask dao) {
|
||||||
|
demandTaskService.confirmTask(dao);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,15 +10,15 @@ import lombok.Getter;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum NeedTypeEnum {
|
public enum NeedTypeEnum {
|
||||||
/**
|
/**
|
||||||
* 生成
|
* 项目
|
||||||
*/
|
*/
|
||||||
ITEM("1", "项目"),
|
ITEM("1", "项目"),
|
||||||
/**
|
/**
|
||||||
* 开发中
|
* 研发
|
||||||
*/
|
*/
|
||||||
DEVELOP("2", "研发"),
|
DEVELOP("2", "研发"),
|
||||||
/**
|
/**
|
||||||
* 完成
|
* 其他
|
||||||
*/
|
*/
|
||||||
OTHER("3", "其他"),
|
OTHER("3", "其他"),
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component("autoUpdateTaskDate")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class AutoUpdateTaskDate {
|
public class AutoUpdateTaskDate {
|
||||||
|
|
||||||
|
|||||||
@@ -84,4 +84,35 @@ public interface DemanDmanageService extends IService<DemanDmanage> {
|
|||||||
* @param id: 需求id
|
* @param id: 需求id
|
||||||
*/
|
*/
|
||||||
void updateStatus(String 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
package org.nl.work.service.demandmanage.dao.mapper;
|
package org.nl.work.service.demandmanage.dao.mapper;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.nl.work.service.demandmanage.dao.DemanDmanage;
|
import org.nl.work.service.demandmanage.dao.DemanDmanage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Mapper 接口
|
* Mapper 接口
|
||||||
@@ -13,4 +17,18 @@ import org.nl.work.service.demandmanage.dao.DemanDmanage;
|
|||||||
*/
|
*/
|
||||||
public interface DemanDmanageMapper extends BaseMapper<DemanDmanage> {
|
public interface DemanDmanageMapper extends BaseMapper<DemanDmanage> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据此人员查询参与的项目
|
||||||
|
* @param userId:人员id
|
||||||
|
* @return List<JSONObject>
|
||||||
|
*/
|
||||||
|
List<JSONObject> getItemUser(String userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据此人员查询查询本月上线项目
|
||||||
|
* @param query:查询条件
|
||||||
|
* @return List<JSONObject>
|
||||||
|
*/
|
||||||
|
List<JSONObject> getOnlineItem(@Param("query") JSONObject query);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,44 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.nl.work.service.demandmanage.dao.mapper.DemanDmanageMapper">
|
<mapper namespace="org.nl.work.service.demandmanage.dao.mapper.DemanDmanageMapper">
|
||||||
|
|
||||||
|
<select id="getItemUser" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
SELECT
|
||||||
|
task.demandId,
|
||||||
|
MAX(deman.demandType) AS demandType,
|
||||||
|
MAX(deman.projectName) AS projectName
|
||||||
|
FROM
|
||||||
|
nl_demandtask task
|
||||||
|
INNER JOIN nl_demandmanage deman ON task.demandId = deman.id
|
||||||
|
<where>
|
||||||
|
deman.developStatus != '3'
|
||||||
|
<if test="userId != null and userId != ''">
|
||||||
|
and task.developId = #{userId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
group by task.demandId
|
||||||
|
</where>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getOnlineItem" resultType="com.alibaba.fastjson.JSONObject">
|
||||||
|
SELECT
|
||||||
|
task.demandId AS id,
|
||||||
|
MAX(deman.projectName) AS projectName,
|
||||||
|
MAX(deman.onlineDate) AS onlineDate
|
||||||
|
FROM
|
||||||
|
nl_demandtask task
|
||||||
|
INNER JOIN nl_demandmanage deman ON task.demandId = deman.id
|
||||||
|
<where>
|
||||||
|
(deman.onlineDate >= #{query.startDate} AND
|
||||||
|
#{query.endDate} >= deman.onlineDate)
|
||||||
|
|
||||||
|
<if test="query.userId != null and query.userId != ''">
|
||||||
|
AND task.developId = #{query.userId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
group by task.demandId
|
||||||
|
</where>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package org.nl.work.service.demandmanage.impl;
|
package org.nl.work.service.demandmanage.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -226,6 +228,200 @@ public class DemanDmanageServiceImpl extends ServiceImpl<DemanDmanageMapper, Dem
|
|||||||
this.baseMapper.updateById(demanDmanageDao);
|
this.baseMapper.updateById(demanDmanageDao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject homeQuery(JSONObject whereJson) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
// 1.查询个人信息/个人贡献/单个个人项目贡献
|
||||||
|
JSONObject userInfo = queryUserInfo(whereJson);
|
||||||
|
result.put("userInfo",userInfo);
|
||||||
|
// 2.查询本月上线项目
|
||||||
|
List<JSONObject> tableItemData = queryOnlineItem();
|
||||||
|
result.put("tableItemData",tableItemData);
|
||||||
|
// 3.查询未完成任务列表
|
||||||
|
List<DemandTask> tableTaskData = queryUnConfirmTask();
|
||||||
|
result.put("tableTaskData",tableTaskData);
|
||||||
|
// 4.查询未完成项目统计
|
||||||
|
List<JSONObject> 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<DemandTask> allTaskList = demandTaskService.list(
|
||||||
|
new QueryWrapper<DemandTask>().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<JSONObject> 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<DemanDmanage>().lambda()
|
||||||
|
.eq(DemanDmanage::getCreateId,SecurityUtils.getCurrentUserId())
|
||||||
|
).size());
|
||||||
|
// 完成项目
|
||||||
|
userInfo.put("confirmItem", this.baseMapper.selectList(
|
||||||
|
new QueryWrapper<DemanDmanage>().lambda()
|
||||||
|
.eq(DemanDmanage::getConfirmId,SecurityUtils.getCurrentUserId())
|
||||||
|
).size());
|
||||||
|
// 提交文档
|
||||||
|
userInfo.put("submitFile", iToolLocalStorageService.list(
|
||||||
|
new QueryWrapper<ToolLocalStorage>().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<DemandTask> 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<JSONObject>
|
||||||
|
*/
|
||||||
|
private List<JSONObject> 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<JSONObject> onlineItemList = this.baseMapper.getOnlineItem(param);
|
||||||
|
|
||||||
|
// 查询所有任务
|
||||||
|
List<String> queryId = onlineItemList.stream()
|
||||||
|
.map(row -> row.getString("id"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<DemandTask> taskList = new ArrayList<>();
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(queryId)) {
|
||||||
|
taskList = demandTaskService.list(
|
||||||
|
new QueryWrapper<DemandTask>().lambda()
|
||||||
|
.in(DemandTask::getDemandId, queryId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算完成度:完成任务 / 总任务数
|
||||||
|
for (JSONObject json : onlineItemList) {
|
||||||
|
// 当前项目总任务集合
|
||||||
|
List<DemandTask> 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<DemandTask>
|
||||||
|
*/
|
||||||
|
private List<DemandTask> queryUnConfirmTask() {
|
||||||
|
return demandTaskService.list(
|
||||||
|
new QueryWrapper<DemandTask>().lambda()
|
||||||
|
.eq(DemandTask::getDevelopId, SecurityUtils.getCurrentUserId())
|
||||||
|
.ne(DemandTask::getTaskStatus, NeedStatusEnum.CONFIRM.getValue())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页查询:
|
||||||
|
* 未完成项目统计
|
||||||
|
* @return List<JSONObject>
|
||||||
|
*/
|
||||||
|
private List<JSONObject> queryUnConfirmItem() {
|
||||||
|
// 查询人员未完成项目
|
||||||
|
List<JSONObject> itemUserList = this.baseMapper.getItemUser(SecurityUtils.getCurrentUserId());
|
||||||
|
// 查询未完成项目对应的任务
|
||||||
|
List<String> queryId = itemUserList.stream()
|
||||||
|
.map(row -> row.getString("demandId"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<DemandTask> taskList = new ArrayList<>();
|
||||||
|
if (ObjectUtil.isNotEmpty(queryId)) {
|
||||||
|
taskList = demandTaskService.list(
|
||||||
|
new QueryWrapper<DemandTask>().lambda()
|
||||||
|
.in(DemandTask::getDemandId, queryId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (JSONObject json : itemUserList) {
|
||||||
|
// 总任务
|
||||||
|
List<DemandTask> 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: 需求实体类
|
* @param dao: 需求实体类
|
||||||
@@ -241,6 +437,5 @@ public class DemanDmanageServiceImpl extends ServiceImpl<DemanDmanageMapper, Dem
|
|||||||
if (ObjectUtil.isNotEmpty(collect)) {
|
if (ObjectUtil.isNotEmpty(collect)) {
|
||||||
throw new BadRequestException("当前项目编码【"+dao.getProjectCode()+"】存在相同版本的需求!");
|
throw new BadRequestException("当前项目编码【"+dao.getProjectCode()+"】存在相同版本的需求!");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,4 +92,10 @@ public interface DemandTaskService extends IService<DemandTask> {
|
|||||||
* @param dao 任务实体类
|
* @param dao 任务实体类
|
||||||
*/
|
*/
|
||||||
void startTask(DemandTask dao);
|
void startTask(DemandTask dao);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 完成任务
|
||||||
|
* @param dao 任务实体类
|
||||||
|
*/
|
||||||
|
void confirmTask(DemandTask dao);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
<where>
|
<where>
|
||||||
1 = 1
|
1 = 1
|
||||||
and roles.role_id = '1873638956067852288'
|
and roles.role_id = '1873638956067852288'
|
||||||
|
and a.user_id != '1'
|
||||||
</where>
|
</where>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -162,4 +162,23 @@ public class DemandTaskServiceImpl extends ServiceImpl<DemandTaskMapper, DemandT
|
|||||||
dao.setTaskStatus(NeedStatusEnum.DEVELOPING.getValue());
|
dao.setTaskStatus(NeedStatusEnum.DEVELOPING.getValue());
|
||||||
this.baseMapper.updateById(dao);
|
this.baseMapper.updateById(dao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void confirmTask(DemandTask dao) {
|
||||||
|
// 计算消耗时间:当前时间 - 开始时间
|
||||||
|
DateTime nowDate = DateUtil.parse(DateUtil.now());
|
||||||
|
DateTime startDate = DateUtil.parse(dao.getStartDate());
|
||||||
|
long useDate = DateUtil.between(nowDate, startDate, DateUnit.HOUR);
|
||||||
|
// 计算剩余时间:预计完成时间 -消耗时间
|
||||||
|
String surplusDate = NumberUtil.sub(dao.getPlanDate(), String.valueOf(useDate)).toString();
|
||||||
|
|
||||||
|
dao.setUseDate(String.valueOf(useDate));
|
||||||
|
dao.setSurplusDate(surplusDate);
|
||||||
|
dao.setTaskStatus(NeedStatusEnum.CONFIRM.getValue());
|
||||||
|
dao.setConfirmId(SecurityUtils.getCurrentUserId());
|
||||||
|
dao.setConfirmName(SecurityUtils.getCurrentNickName());
|
||||||
|
dao.setConfirmDate(DateUtil.now());
|
||||||
|
this.updateById(dao);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 17px">
|
<div style="color: #666; padding-top: 17px">
|
||||||
<span style="font-size: 15px;font-weight: bold">
|
<span style="font-size: 15px;font-weight: bold">
|
||||||
{{ '刘先源, 上午好!' }}
|
{{ uiResultData.userInfo.userName + ', 辛苦了!' }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 23px">
|
<div style="color: #666; padding-top: 23px">
|
||||||
@@ -28,13 +28,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="padding-top: 13px; width: 175px">
|
<div style="padding-top: 13px; width: 175px">
|
||||||
<span>
|
<span>
|
||||||
<el-progress :text-inside="true" :width="50" :stroke-width="20" :percentage="70"/>
|
<el-progress :text-inside="true" :width="50" :stroke-width="20" :percentage="uiResultData.userInfo.confirmTaskPer" />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- 虚线 -->
|
<!-- 虚线 -->
|
||||||
<el-col :span="2">
|
<el-col :span="2">
|
||||||
<div class="vertical-dashed-line" style="width: 0px;height: 130px;border-left: 2px dashed #c4c4c4"></div>
|
<div class="vertical-dashed-line" style="width: 0px;height: 130px;border-left: 2px dashed #c4c4c4" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- 剩余工作统计 -->
|
<!-- 剩余工作统计 -->
|
||||||
<el-col :span="14">
|
<el-col :span="14">
|
||||||
@@ -56,13 +56,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 20px">
|
<div style="color: #666; padding-top: 20px">
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 7px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 7px">
|
||||||
{{ '00' }}
|
{{ formatNum(uiResultData.userInfo.item ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 100px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 100px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.develop ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 97px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 97px">
|
||||||
{{ '12' }}
|
{{ formatNum(uiResultData.userInfo.other ) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<div class="t_btn2">
|
<div class="t_btn2">
|
||||||
<el-table
|
<el-table
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="tableTaskData"
|
:data="uiResultData.tableTaskData"
|
||||||
:border="false"
|
:border="false"
|
||||||
:stripe="true"
|
:stripe="true"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -87,9 +87,6 @@
|
|||||||
>
|
>
|
||||||
<el-table-column show-overflow-tooltip prop="taskCode" label="任务编码" />
|
<el-table-column show-overflow-tooltip prop="taskCode" label="任务编码" />
|
||||||
<el-table-column show-overflow-tooltip prop="taskName" label="任务描述" />
|
<el-table-column show-overflow-tooltip prop="taskName" label="任务描述" />
|
||||||
<el-table-column show-overflow-tooltip prop="demandVersion" label="需求版本" />
|
|
||||||
<el-table-column show-overflow-tooltip prop="projectName" label="项目名称" />
|
|
||||||
<el-table-column show-overflow-tooltip prop="projectCode" label="项目编码" />
|
|
||||||
<el-table-column show-overflow-tooltip prop="planDate" label="预计完成时间" width="120px" />
|
<el-table-column show-overflow-tooltip prop="planDate" label="预计完成时间" width="120px" />
|
||||||
<el-table-column show-overflow-tooltip prop="useDate" label="消耗时间" />
|
<el-table-column show-overflow-tooltip prop="useDate" label="消耗时间" />
|
||||||
<el-table-column show-overflow-tooltip prop="surplusDate" label="剩余时间" />
|
<el-table-column show-overflow-tooltip prop="surplusDate" label="剩余时间" />
|
||||||
@@ -108,16 +105,16 @@
|
|||||||
<div class="t_btn2">
|
<div class="t_btn2">
|
||||||
<el-table
|
<el-table
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="tableItemNumData"
|
:data="uiResultData.tableItemNumData"
|
||||||
:border="false"
|
:border="false"
|
||||||
:stripe="true"
|
:stripe="true"
|
||||||
size="mini"
|
size="mini"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
>
|
>
|
||||||
<el-table-column show-overflow-tooltip prop="itemName" label="项目名称" />
|
<el-table-column show-overflow-tooltip prop="projectName" label="项目名称" />
|
||||||
<el-table-column show-overflow-tooltip prop="totalTask" label="总任务数" />
|
<el-table-column show-overflow-tooltip prop="allTaskNum" label="总任务数" />
|
||||||
<el-table-column show-overflow-tooltip prop="confirmTaskNum" label="已完成数" />
|
<el-table-column show-overflow-tooltip prop="ConfirmTaskNum" label="已完成数" />
|
||||||
<el-table-column show-overflow-tooltip prop="overTaskNum" label="剩余任务数" />
|
<el-table-column show-overflow-tooltip prop="UnConfirmTaskNum" label="剩余任务数" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -136,16 +133,17 @@
|
|||||||
<div class="t_btn2">
|
<div class="t_btn2">
|
||||||
<el-table
|
<el-table
|
||||||
ref="table"
|
ref="table"
|
||||||
:data="tableItemData"
|
:data="uiResultData.tableItemData"
|
||||||
:border="false"
|
:border="false"
|
||||||
:stripe="true"
|
:stripe="true"
|
||||||
size="mini"
|
size="mini"
|
||||||
|
@row-click="rowClick"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
>
|
>
|
||||||
<el-table-column show-overflow-tooltip prop="itemName" label="项目名称" />
|
<el-table-column show-overflow-tooltip prop="projectName" label="项目名称" />
|
||||||
<el-table-column show-overflow-tooltip prop="itemRate" label="项目完成进度">
|
<el-table-column show-overflow-tooltip prop="itemConfirmPer" label="项目完成进度">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress :color="customColorMethod" :text-inside="true" :stroke-width="15" :percentage="scope.row.itemRate"/>
|
<el-progress :color="customColorMethod" :text-inside="true" :stroke-width="15" :percentage="scope.row.itemConfirmPer" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column show-overflow-tooltip prop="onlineDate" label="上线时间" />
|
<el-table-column show-overflow-tooltip prop="onlineDate" label="上线时间" />
|
||||||
@@ -174,13 +172,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 34px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 34px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.oneConfirmTask ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 100px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 100px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.oneUnConfirmTask ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 85px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 85px">
|
||||||
{{ '11' }}
|
{{ formatNum(uiResultData.userInfo.oneTotalTask ) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -206,13 +204,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 20px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 20px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.createItem ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 80px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 80px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.confirmItem ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 85px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 85px">
|
||||||
{{ '11' }}
|
{{ formatNum(uiResultData.userInfo.submitFile ) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 30px; padding-left: 20px">
|
<div style="color: #666; padding-top: 30px; padding-left: 20px">
|
||||||
@@ -225,10 +223,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
<div style="color: #666; padding-top: 20px; padding-left: 20px">
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 20px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 20px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.createTask ) }}
|
||||||
</span>
|
</span>
|
||||||
<span style="font-size: 20px;font-weight: bold;padding-left: 80px">
|
<span style="font-size: 20px;font-weight: bold;padding-left: 80px">
|
||||||
{{ '01' }}
|
{{ formatNum(uiResultData.userInfo.confirmTask ) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -240,43 +238,26 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { initData } from '@/api/data'
|
import { queryHomeUiData } from '@/views/nlsystem/demandmanage/demandmanage'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ServerMonitor',
|
name: 'ServerMonitor',
|
||||||
components: {},
|
components: {},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
currentDate: '',
|
currentDate: '',
|
||||||
tableTaskData: [
|
uiResultData: null,
|
||||||
{ 'taskCode': '120', 'taskName': '开能开发agv', 'demandVersion': 'V1.0.0.1', 'projectName': '上海开能', 'projectCode': 'H1110', 'overDate': '2025-01-23' },
|
|
||||||
{ 'taskCode': '120', 'taskName': '开能开发agv', 'demandVersion': 'V1.0.0.1', 'projectName': '上海开能', 'projectCode': 'H1110', 'overDate': '2025-01-23' },
|
|
||||||
{ 'taskCode': '120', 'taskName': '开能开发agv', 'demandVersion': 'V1.0.0.1', 'projectName': '上海开能', 'projectCode': 'H1110', 'overDate': '2025-01-23' },
|
|
||||||
{ 'taskCode': '120', 'taskName': '开能开发agv', 'demandVersion': 'V1.0.0.1', 'projectName': '上海开能', 'projectCode': 'H1110', 'overDate': '2025-01-23' },
|
|
||||||
{ 'taskCode': '120', 'taskName': '开能开发agv', 'demandVersion': 'V1.0.0.1', 'projectName': '上海开能', 'projectCode': 'H1110', 'overDate': '2025-01-23' }
|
|
||||||
],
|
|
||||||
tableItemData: [
|
|
||||||
{ 'itemName': '上海开能项目', 'itemRate': 10, 'onlineDate': '2025-01-01' },
|
|
||||||
{ 'itemName': '上海开能项目', 'itemRate': 67, 'onlineDate': '2025-01-01' },
|
|
||||||
{ 'itemName': '上海开能项目', 'itemRate': 32, 'onlineDate': '2025-01-01' },
|
|
||||||
{ 'itemName': '上海开能项目', 'itemRate': 80, 'onlineDate': '2025-01-01' }
|
|
||||||
],
|
|
||||||
tableItemNumData: [
|
|
||||||
{ 'itemName': '上海开能项目', 'totalTask': '10', 'confirmTaskNum': '2', 'overTaskNum': '8' },
|
|
||||||
{ 'itemName': '上海开能项目', 'totalTask': '10', 'confirmTaskNum': '2', 'overTaskNum': '8' },
|
|
||||||
{ 'itemName': '上海开能项目', 'totalTask': '10', 'confirmTaskNum': '2', 'overTaskNum': '8' },
|
|
||||||
{ 'itemName': '上海开能项目', 'totalTask': '10', 'confirmTaskNum': '2', 'overTaskNum': '8' }
|
|
||||||
],
|
|
||||||
monitor: null
|
monitor: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.currentDate = this.getCurrentDate()
|
|
||||||
this.init()
|
this.init()
|
||||||
this.monitor = window.setInterval(() => {
|
this.currentDate = this.getCurrentDate()
|
||||||
|
/* this.monitor = window.setInterval(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.init()
|
this.init()
|
||||||
}, 2)
|
}, 2)
|
||||||
}, 3500)
|
}, 3500)*/
|
||||||
},
|
},
|
||||||
destroyed() {
|
destroyed() {
|
||||||
clearInterval(this.monitor)
|
clearInterval(this.monitor)
|
||||||
@@ -301,6 +282,31 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
init() {
|
init() {
|
||||||
|
queryHomeUiData({}).then(res => {
|
||||||
|
this.uiResultData = res
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 格式化数字
|
||||||
|
formatNum(num) {
|
||||||
|
if (num === undefined) {
|
||||||
|
return '00'
|
||||||
|
}
|
||||||
|
num = num.toString()
|
||||||
|
if (num === '' || num === '0') {
|
||||||
|
return '00'
|
||||||
|
}
|
||||||
|
if (num.length < 2) {
|
||||||
|
return '0' + num
|
||||||
|
} else {
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 本月上线项目点击时间
|
||||||
|
rowClick(row) {
|
||||||
|
debugger
|
||||||
|
queryHomeUiData({ 'id': row.id }).then(res => {
|
||||||
|
this.uiResultData = res
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,4 +40,12 @@ export function queryUiData(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function queryHomeUiData(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/demandManage/queryHomeUiData',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default { add, edit, del, confirm, queryUiData }
|
export default { add, edit, del, confirm, queryUiData }
|
||||||
|
|||||||
@@ -64,4 +64,12 @@ export function startTask(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { add, edit, del, queryUser, relevancyDemand, getUser, confirmUser, startTask }
|
export function confirmTask(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/demandTask/confirmTask',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default { add, edit, del, queryUser, relevancyDemand, getUser, confirmUser, startTask, confirmTask }
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
icon="el-icon-check"
|
icon="el-icon-check"
|
||||||
size="mini"
|
size="mini"
|
||||||
:disabled="crud.selections.length !== 1"
|
:disabled="crud.selections.length !== 1"
|
||||||
@click="confirm"
|
@click="confirmTask"
|
||||||
>
|
>
|
||||||
完成
|
完成
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -283,6 +283,14 @@ export default {
|
|||||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
// 完成任务
|
||||||
|
confirmTask() {
|
||||||
|
const data = this.$refs.table.selection[0]
|
||||||
|
crudDemanTask.confirmTask(data).then(res => {
|
||||||
|
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.crud.toQuery()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user