Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
e7023d6cd4
  1. 18
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  2. 73
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java
  3. 53
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

18
xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java

@ -635,8 +635,7 @@ public class XmTaskController {
excludeTaskIds.add(xmTaskVo.getId());
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds);
if(judgetTips.isOk()) {
xmTaskService.updateTask(xmTaskVo);
xmTaskService.sumParents(xmTaskDb);
xmTaskService.updateTask(xmTaskVo,xmTaskDb);
if(!StringUtils.isEmpty(xmTaskVo.getExecutorUserid())) {
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTaskVo.getProjectId(), xmTaskVo.getExecutorUserid());
if(groups!=null && groups.size()>0) {
@ -698,7 +697,7 @@ public class XmTaskController {
return m;
}
}
xmTaskService.updateTime(xmTask);
xmTaskService.updateTime(xmTask,xmTaskDb);
m.put("data",xmTask);
}catch (BizException e) {
tips=e.getTips();
@ -748,12 +747,11 @@ public class XmTaskController {
return m;
}
}
xmTaskService.updateProgress(xmTask);
xmTaskService.sumParents(xmTaskDb);
if(!StringUtils.isEmpty(xmTask.getExecutorUserid())) {
xmTaskService.updateProgress(xmTask,xmTaskDb);
if(!StringUtils.isEmpty(xmTaskDb.getExecutorUserid())) {
if(pgroups!=null && pgroups.size()>0) {
for (XmProjectGroupVo g : pgroups) {
xmPushMsgService.pushGroupMsg(user.getBranchId(), g.getId(), user.getUserid(), user.getUsername(), user.getUsername()+"将任务【"+xmTask.getName()+"】进度更新为"+xmTask.getRate()+"%");
xmPushMsgService.pushGroupMsg(user.getBranchId(), g.getId(), user.getUserid(), user.getUsername(), user.getUsername()+"将任务【"+xmTaskDb.getName()+"】进度更新为"+xmTask.getRate()+"%");
}
}
}
@ -835,6 +833,8 @@ public class XmTaskController {
g.setExecutorUserid(user.getUserid());
g.setExecutorUsername(user.getUsername());
g.setCbranchId(user.getBranchId());
g.setExeUserids(null);
g.setExeUsernames(null);
g.setCdeptid(user.getDeptid());
if("1".equals(g.getTaskOut())) {
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero));
@ -853,10 +853,6 @@ public class XmTaskController {
xmTaskService.parentIdPathsCalcBeforeSave(xmTasks);
xmTaskService.batchImportFromTemplate(xmTasks);
for (XmTask t : xmTasks) {
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),JSON.toJSONString(t),null);

73
xm-core/src/main/java/com/xm/core/service/XmTaskService.java

@ -52,11 +52,7 @@ public class XmTaskService extends BaseService {
@Transactional
public int[] doBatchDelete(List<XmTask> batchValues) {
int[] i2= super.batchDelete(batchValues);
List<XmTask> list= batchValues.stream().filter(i->!batchValues.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentTaskid()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
this.batchSumParents(batchValues);
return i2;
}
@ -163,9 +159,8 @@ public class XmTaskService extends BaseService {
XmTask xmTask = new XmTask();
BeanUtils.copyProperties(xmTaskVo,xmTask);
this.insert(xmTask);
if(StringUtils.hasText(xmTask.getParentTaskid())){
this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid());
this.sumParents(xmTask);
}
//新增/更新附件
//xmAttachmentService.insertOrUpdate(xmTaskVo.getId(),TYPE,xmTaskVo.getAttachment());
@ -181,15 +176,6 @@ public class XmTaskService extends BaseService {
return xmTaskVo;
}
/**
* 检查该任务是否有子任务有不允许删除
* @param taskId
* @return
*/
public boolean checkExistsChildren(String taskId) {
Long i=this.selectOne("checkExistsChildren", taskId);
return i>0;
}
/**
* 有执行人有子任务都不允许删除
* @param xmTask
@ -198,17 +184,11 @@ public class XmTaskService extends BaseService {
public void deleteTask(XmTask xmTask) {
this.deleteByPk(xmTask);
if(StringUtils.hasText(xmTask.getParentTaskid())){
this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid());
}
this.sumParents(xmTask);
}
private Long checkExistsExecuser(String taskId) {
Long i= this.selectOne("checkExistsExecuser", taskId);
return i;
}
@Transactional
public void updateTask(XmTaskVo xmTaskVo) {
public void updateTask(XmTaskVo xmTaskVo,XmTask xmTaskDb) {
XmTask xmTask = new XmTask();
BeanUtils.copyProperties(xmTaskVo,xmTask);
xmTask.setSortLevel(xmTaskVo.getSortLevel());
@ -216,11 +196,14 @@ public class XmTaskService extends BaseService {
xmTask.setMilestone("0");
}
this.updateSomeFieldByPk(xmTask);
if(StringUtils.hasText(xmTaskDb.getParentTaskid())){
this.sumParents(xmTaskDb);
}
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-更新任务基础信息", "更新任务"+xmTask.getName(),JSONObject.toJSONString(xmTask),null);
}
@Transactional
public void updateTime(XmTask xmTask) {
public void updateTime(XmTask xmTask,XmTask xmTaskDb) {
//XmTask oldValue = this.selectOneObject(new XmTask(xmTask.getId()));
XmTask xmTask2=new XmTask();
xmTask2.setId(xmTask.getId());
@ -229,7 +212,9 @@ public class XmTaskService extends BaseService {
xmTask2.setActStartTime(xmTask.getActStartTime());
xmTask2.setActEndTime(xmTask.getActEndTime());
this.updateSomeFieldByPk(xmTask);
if(StringUtils.hasText(xmTaskDb.getParentTaskid())){
this.sumParents(xmTaskDb);
}
//更新父任务的进度
//updateParentProgress(xmTask.getParentTaskid());
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-计划", "更新任务计划开始时间为"+
@ -237,13 +222,16 @@ public class XmTaskService extends BaseService {
"实际开始时间:"+DateUtils.format(xmTask.getActStartTime(),"yyyy-MM-dd")+",实际结束时间为"+DateUtils.format(xmTask.getActEndTime(),"yyyy-MM-dd"));
}
@Transactional
public void updateProgress(XmTask xmTask) {
public void updateProgress(XmTask xmTask,XmTask xmTaskDb) {
//XmTask oldValue = this.selectOneObject(new XmTask(xmTask.getId()));
XmTask xmTask2=new XmTask();
xmTask2.setId(xmTask.getId());
xmTask2.setRate(xmTask.getRate());
this.updateSomeFieldByPk(xmTask);
if(StringUtils.hasText(xmTaskDb.getParentTaskid())){
this.sumParents(xmTaskDb);
}
//更新父任务的进度
//updateParentProgress(xmTask.getParentTaskid());
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-进度", "更新任务进度为"+xmTask2.getRate());
@ -359,11 +347,7 @@ public class XmTaskService extends BaseService {
@Transactional
public void batchImportFromTemplate(List<XmTask> xmTasks) {
this.batchInsert(xmTasks);
List<XmTask> list= xmTasks.stream().filter(i->!xmTasks.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentTaskid()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
this.batchSumParents(xmTasks);
}
@ -380,17 +364,17 @@ public class XmTaskService extends BaseService {
@Transactional
public void batchInsertOrUpdate(List<XmTask> insertXmTasks,List<XmTask> editXmTasks) {
List<XmTask> all=new ArrayList<>();
if(insertXmTasks!=null && insertXmTasks.size()>0) {
this.batchInsert(insertXmTasks);
List<XmTask> list= insertXmTasks.stream().filter(i->!insertXmTasks.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentTaskid()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
all.addAll(insertXmTasks);
}
if(editXmTasks!=null && editXmTasks.size()>0) {
this.batchUpdate(editXmTasks);
all.addAll(editXmTasks);
}
if(all.size()>0){
this.batchSumParents(all);
}
}
@ -579,12 +563,21 @@ public class XmTaskService extends BaseService {
Set<String> set=list.get(i);
set.add(pidPathss[i]);
}
if(list.size()<=0){
return;
}
Set<String> allSet=new HashSet<>();
for (int i = list.size() - 1; i >= 0; i--) {
allSet.addAll(list.get(i));
Set<String> set=list.get(i);
if(set.size()>0){
List<String> ids=set.stream().filter(k->!allSet.contains(k)).collect(Collectors.toList());
if(ids.size()>0){
allSet.addAll(ids.stream().collect(Collectors.toSet()));
super.update("batchSumParents", ids);
}
if(allSet.size()>0){
super.update("sumParents",allSet.stream().collect(Collectors.toList()));
}
}

53
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

@ -181,13 +181,56 @@
#{item}
</foreach>
</select>
<!-- 适合没有交叉的,没用父子关系的一批任务的更新 -->
<update id="batchSumParents" parameterType="List">
UPDATE xm_task res
LEFT JOIN (
SELECT
t.parent_taskid,
count(1) as children_cnt,
sum( ifnull( t.budget_cost, 0 ) ) AS budget_cost,
sum( ifnull( t.budget_workload, 0 ) ) AS budget_workload,
sum( ifnull( t.act_cost, 0 ) ) AS act_cost,
sum( ifnull( t.act_workload, 0 ) ) AS act_workload,
sum( ifnull( t.budget_workload, 0 ) * ifnull( t.rate, 0 ) ) / sum( ifnull( t.budget_workload, 0.00001 ) ) AS rate,
min( t.start_time ) AS start_time,
max( t.end_time ) AS end_time,
min( t.act_start_time ) AS act_start_time,
max( t.act_end_time ) AS act_end_time
FROM
xm_task t
WHERE
t.parent_taskid in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
group by t.parent_taskid
) t2 ON t2.parent_taskid = res.id
SET res.budget_cost = t2.budget_cost,
res.budget_workload = t2.budget_workload,
res.act_cost = t2.act_cost,
res.act_workload = t2.act_workload,
res.rate = t2.rate,
res.start_time = t2.start_time,
res.end_time = t2.end_time,
res.act_start_time = t2.act_start_time,
res.act_end_time = t2.act_end_time,
res.children_cnt = ifnull( t2.children_cnt, 0 )
WHERE
res.id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
and res.ntype='1'
</update>
<!-- 适合父子关系的一批任务的更新 -->
<update id="sumParents" parameterType="List">
<foreach collection="list" item="item" index="index" separator=";" >
<foreach collection="list" item="item" index="index" open="" separator=";" close="" >
UPDATE xm_task res
LEFT JOIN (
SELECT
t.parent_taskid,
count(1) as children_cnt,
sum( ifnull( t.budget_cost, 0 ) ) AS budget_cost,
sum( ifnull( t.budget_workload, 0 ) ) AS budget_workload,
sum( ifnull( t.act_cost, 0 ) ) AS act_cost,
@ -210,9 +253,11 @@
res.start_time = t2.start_time,
res.end_time = t2.end_time,
res.act_start_time = t2.act_start_time,
res.act_end_time = t2.act_end_time
res.act_end_time = t2.act_end_time ,
res.children_cnt = ifnull( t2.children_cnt, 0 )
WHERE
res.id = #{item} and res.ntype='1'
res.id = #{item}
and res.ntype='1'
</foreach>
</update>
<!--结束 自定义sql函数区域-->

Loading…
Cancel
Save