Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
3b997193bd
  1. 15
      xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java
  2. 18
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java
  3. 24
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  4. 53
      xm-core/src/main/java/com/xm/core/service/XmMenuService.java
  5. 52
      xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java
  6. 37
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java
  7. 17
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml
  8. 15
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml
  9. 15
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

15
xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java

@ -9,6 +9,7 @@ import com.mdp.qx.HasQx;
import com.mdp.safe.client.entity.User; import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils; import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmMenu; import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmProjectPhase;
import com.xm.core.entity.XmTask; import com.xm.core.entity.XmTask;
import com.xm.core.service.XmMenuService; import com.xm.core.service.XmMenuService;
import com.xm.core.service.XmTaskService; import com.xm.core.service.XmTaskService;
@ -24,6 +25,8 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* url编制采用rest风格,如对XM.xm_menu 项目菜单表的操作有增删改查,对应的url分别为:<br> * url编制采用rest风格,如对XM.xm_menu 项目菜单表的操作有增删改查,对应的url分别为:<br>
* 新增: xm/xmMenu/add <br> * 新增: xm/xmMenu/add <br>
@ -168,9 +171,7 @@ public class XmMenuController {
xmMenu.setMmUsername(user.getUsername()); xmMenu.setMmUsername(user.getUsername());
} }
xmMenuService.insert(xmMenu); xmMenuService.insert(xmMenu);
if(StringUtils.hasText(xmMenu.getPmenuId())){
this.xmMenuService.updateMenuChildrenCntByMenuId(xmMenu.getPmenuId());
}
m.put("data",xmMenu); m.put("data",xmMenu);
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -208,9 +209,6 @@ public class XmMenuController {
tips.setFailureMsg("存在"+childCount+"个子故事关联该故事,不允许删除"); tips.setFailureMsg("存在"+childCount+"个子故事关联该故事,不允许删除");
}else { }else {
xmMenuService.deleteByPk(xmMenu); xmMenuService.deleteByPk(xmMenu);
if(StringUtils.hasText(xmMenu.getPmenuId())){
this.xmMenuService.updateMenuChildrenCntByMenuId(xmMenu.getPmenuId());
}
} }
} }
}catch (BizException e) { }catch (BizException e) {
@ -305,7 +303,7 @@ public class XmMenuController {
} }
} }
if(canDelList.size()>0) { if(canDelList.size()>0) {
xmMenuService.batchDelete(canDelList);
xmMenuService.doBatchDelete(canDelList);
} }
String msg="成功删除"+canDelList.size()+"个故事信息"; String msg="成功删除"+canDelList.size()+"个故事信息";
if(hasTasksMenus.size()>0 ) { if(hasTasksMenus.size()>0 ) {
@ -336,8 +334,7 @@ public class XmMenuController {
try{ try{
if(xmMenus.size()>0) { if(xmMenus.size()>0) {
this.xmMenuService.batchInsert(xmMenus);
this.xmMenuService.doBatchInsert(xmMenus);
}else { }else {
tips.setFailureMsg("没有数据可以新增,请上送数据"); tips.setFailureMsg("没有数据可以新增,请上送数据");
} }

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

@ -10,6 +10,7 @@ import com.mdp.qx.HasQx;
import com.mdp.safe.client.entity.User; import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils; import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmProjectPhase; import com.xm.core.entity.XmProjectPhase;
import com.xm.core.entity.XmTask;
import com.xm.core.service.XmProjectGroupService; import com.xm.core.service.XmProjectGroupService;
import com.xm.core.service.XmProjectPhaseService; import com.xm.core.service.XmProjectPhaseService;
import com.xm.core.service.XmProjectService; import com.xm.core.service.XmProjectService;
@ -28,6 +29,8 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* url编制采用rest风格,如对XM.xm_project_phase 项目阶段模板的操作有增删改查,对应的url分别为:<br> * url编制采用rest风格,如对XM.xm_project_phase 项目阶段模板的操作有增删改查,对应的url分别为:<br>
* 新增: xm/xmProjectPhase/add <br> * 新增: xm/xmProjectPhase/add <br>
@ -230,9 +233,6 @@ public class XmProjectPhaseController {
Tips judgetTips=xmProjectPhaseService.judgetBudget(projectId, phaseBudgetCost,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,phaseBudgetNouserAt,excludePhaseIds); Tips judgetTips=xmProjectPhaseService.judgetBudget(projectId, phaseBudgetCost,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,phaseBudgetNouserAt,excludePhaseIds);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmProjectPhaseService.insert(xmProjectPhase); xmProjectPhaseService.insert(xmProjectPhase);
if(StringUtils.hasText(xmProjectPhase.getParentPhaseId())){
this.xmProjectPhaseService.updatePhaseChildrenCntByPhaseId(xmProjectPhase.getParentPhaseId());
}
xmRecordService.addXmPhaseRecord(projectId, xmProjectPhase.getId(), "项目-阶段计划-新增计划", "新增阶段计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); xmRecordService.addXmPhaseRecord(projectId, xmProjectPhase.getId(), "项目-阶段计划-新增计划", "新增阶段计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null);
m.put("data",xmProjectPhase); m.put("data",xmProjectPhase);
}else { }else {
@ -285,9 +285,7 @@ public class XmProjectPhaseController {
}else { }else {
xmProjectPhaseService.deleteByPk(xmProjectPhase); xmProjectPhaseService.deleteByPk(xmProjectPhase);
if(StringUtils.hasText(xmProjectPhase.getParentPhaseId())){
this.xmProjectPhaseService.updatePhaseChildrenCntByPhaseId(xmProjectPhase.getParentPhaseId());
}
xmRecordService.addXmPhaseRecord(xmProjectPhase.getProjectId(), xmProjectPhase.getId(), "项目-阶段计划-删除计划", "删除阶段计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); xmRecordService.addXmPhaseRecord(xmProjectPhase.getProjectId(), xmProjectPhase.getId(), "项目-阶段计划-删除计划", "删除阶段计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null);
} }
} }
@ -398,6 +396,7 @@ public class XmProjectPhaseController {
return m; return m;
} }
List<String> noQxUsernames=new ArrayList<>(); List<String> noQxUsernames=new ArrayList<>();
List<XmProjectPhase> delPhases=new ArrayList<>();
for (XmProjectPhase phase : xmProjectPhases) { for (XmProjectPhase phase : xmProjectPhases) {
boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,phase.getMngUserid(),user.getUserid()); boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,phase.getMngUserid(),user.getUserid());
if( !meIsPm && !meIsHisTeamHead ){ if( !meIsPm && !meIsHisTeamHead ){
@ -413,13 +412,16 @@ public class XmProjectPhaseController {
if(checkExistsChildren>0) { if(checkExistsChildren>0) {
hasChildList.add(phase.getPhaseName()); hasChildList.add(phase.getPhaseName());
}else { }else {
xmProjectPhaseService.deleteByPk(phase);
delPhases.add(phase);
delCount=delCount+1; delCount=delCount+1;
xmRecordService.addXmPhaseRecord(phase.getProjectId(), phase.getId(), "项目-阶段计划-删除计划", "删除阶段计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); xmRecordService.addXmPhaseRecord(phase.getProjectId(), phase.getId(), "项目-阶段计划-删除计划", "删除阶段计划"+phase.getPhaseName(),JSON.toJSONString(phase),null);
} }
} }
} }
if(delPhases.size()>0){
this.xmProjectPhaseService.doBatchDelete(delPhases);
}
String noQxTips=""; String noQxTips="";
if(noQxUsernames.size()>0){ if(noQxUsernames.size()>0){
noQxTips="您无权删除以下人员所负责的阶段计划【"+StringUtils.arrayToCommaDelimitedString(noQxUsernames.toArray())+"】"; noQxTips="您无权删除以下人员所负责的阶段计划【"+StringUtils.arrayToCommaDelimitedString(noQxUsernames.toArray())+"】";
@ -494,7 +496,7 @@ public class XmProjectPhaseController {
Tips judgetTips=xmProjectPhaseService.judgetBudget(projectId, phaseBudgetCost,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,phaseBudgetNouserAt,null); Tips judgetTips=xmProjectPhaseService.judgetBudget(projectId, phaseBudgetCost,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,phaseBudgetNouserAt,null);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmProjectPhaseService.batchInsert(xmProjectPhases);
xmProjectPhaseService.doBatchInsert(xmProjectPhases);
for (XmProjectPhase phase : xmProjectPhases) { for (XmProjectPhase phase : xmProjectPhases) {
xmRecordService.addXmPhaseRecord(phase.getProjectId(), phase.getId(), "项目-阶段计划-新增计划", "新增阶段计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); xmRecordService.addXmPhaseRecord(phase.getProjectId(), phase.getId(), "项目-阶段计划-新增计划", "新增阶段计划"+phase.getPhaseName(),JSON.toJSONString(phase),null);

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

@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* url编制采用rest风格,如对XM.xm_task xm_task的操作有增删改查,对应的url分别为:<br> * url编制采用rest风格,如对XM.xm_task xm_task的操作有增删改查,对应的url分别为:<br>
@ -306,9 +307,6 @@ public class XmTaskController {
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,null); Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,null);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmTaskVo = xmTaskService.addTask(xmTaskVo); xmTaskVo = xmTaskService.addTask(xmTaskVo);
if(StringUtils.hasText(xmTaskVo.getParentTaskid())){
xmTaskService.updateTaskChildrenCntByTaskId(xmTaskVo.getParentTaskid());
}
}else { }else {
tips=judgetTips; tips=judgetTips;
} }
@ -433,13 +431,8 @@ public class XmTaskController {
m.put("tips", tips); m.put("tips", tips);
return m; return m;
} }
if(StringUtils.hasText(xmTaskDb.getParentTaskid())){
xmTaskService.updateTaskChildrenCntByTaskId(xmTaskDb.getParentTaskid());
}
xmTaskService.deleteTask(xmTask); xmTaskService.deleteTask(xmTask);
if(StringUtils.hasText(xmTaskDb.getParentTaskid())){
xmTaskService.updateTaskChildrenCntByTaskId(xmTaskDb.getParentTaskid());
}
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
logger.error("",e); logger.error("",e);
@ -792,11 +785,17 @@ public class XmTaskController {
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds); Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
for (XmTask task : xmTasks) {
task.setChildrenCnt( Integer.valueOf(xmTasks.stream().filter(i->task.getId().equals(i.getParentTaskid())).count()+""));
}
xmTaskService.batchImportFromTemplate(xmTasks); xmTaskService.batchImportFromTemplate(xmTasks);
for (XmTask t : xmTasks) { for (XmTask t : xmTasks) {
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),JSON.toJSONString(t),null); xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),JSON.toJSONString(t),null);
} }
}else { }else {
tips=judgetTips; tips=judgetTips;
} }
@ -943,13 +942,18 @@ public class XmTaskController {
} }
List<String> noDelList=new ArrayList<>(); List<String> noDelList=new ArrayList<>();
List<XmTask> delTasks=new ArrayList<>();
allowTasks.forEach(t->{ allowTasks.forEach(t->{
try { try {
xmTaskService.deleteTask(t);
delTasks.add(t);
} catch (BizException e) { } catch (BizException e) {
noDelList.add(t.getName()); noDelList.add(t.getName());
} }
}); });
if(delTasks.size()>0){
this.xmTaskService.doBatchDelete(delTasks);
}
if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) { if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) {
tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray())); tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray()));
}if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) { }if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) {

53
xm-core/src/main/java/com/xm/core/service/XmMenuService.java

@ -5,10 +5,13 @@ import com.xm.core.entity.XmMenu;
import com.xm.core.vo.XmMenuVo; import com.xm.core.vo.XmMenuVo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br> * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br> * 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
@ -40,7 +43,9 @@ public class XmMenuService extends BaseService {
public void updateMenuChildrenCntByMenuId(String menuId){ public void updateMenuChildrenCntByMenuId(String menuId){
super.update("updateMenuChildrenCntByMenuId",menuId); super.update("updateMenuChildrenCntByMenuId",menuId);
} }
public void updateChildrenCntByIds(List<String> ids) {
super.update("updateChildrenCntByIds",ids);
}
@Transactional @Transactional
public void batchInsertOrUpdate(List<XmMenuVo> xmMenus) { public void batchInsertOrUpdate(List<XmMenuVo> xmMenus) {
List<XmMenuVo> addList=new ArrayList<>(); List<XmMenuVo> addList=new ArrayList<>();
@ -54,6 +59,12 @@ public class XmMenuService extends BaseService {
} }
if(addList.size()>0) { if(addList.size()>0) {
this.batchInsert(addList); this.batchInsert(addList);
List<XmMenu> list= addList.stream().filter(i->!addList.stream().filter(k->k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i-> StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getPmenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
} }
if(editList.size()>0) { if(editList.size()>0) {
this.batchUpdate(editList); this.batchUpdate(editList);
@ -68,5 +79,45 @@ public class XmMenuService extends BaseService {
return this.selectList("selectExistIterationMenus",map("menuIds",menuIds)); return this.selectList("selectExistIterationMenus",map("menuIds",menuIds));
} }
@Transactional
public int insert(XmMenu xmMenu) {
int i= super.insert(xmMenu);
if(StringUtils.hasText(xmMenu.getPmenuId())){
this.updateMenuChildrenCntByMenuId(xmMenu.getPmenuId());
}
return i;
}
@Transactional
public int updateByPk(XmMenu xmMenu) {
int i= super.updateByPk(xmMenu);
if(StringUtils.hasText(xmMenu.getPmenuId())){
this.updateMenuChildrenCntByMenuId(xmMenu.getPmenuId());
}
return i;
}
@Transactional
public void doBatchInsert(List<XmMenu> xmMenus) {
super.batchInsert(xmMenus);
List<XmMenu> list= xmMenus.stream().filter(i->!xmMenus.stream().filter(k->k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getPmenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
}
@Transactional
public void doBatchDelete(List<XmMenu> canDelList) {
super.batchDelete(canDelList);
List<XmMenu> list= canDelList.stream().filter(i->!canDelList.stream().filter(k->k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getPmenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
}
} }

52
xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java

@ -11,12 +11,15 @@ import com.xm.core.vo.XmProjectPhaseVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br> * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br> * 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
@ -58,6 +61,25 @@ public class XmProjectPhaseService extends BaseService {
} }
return tips; return tips;
} }
@Transactional
public int insert(XmProjectPhase parameter) {
int i= super.insert(parameter);
if(StringUtils.hasText(parameter.getParentPhaseId())){
this.updatePhaseChildrenCntByPhaseId(parameter.getParentPhaseId());
}
return i;
}
@Transactional
public int deleteByPk(XmProjectPhase parameter) {
int i= super.deleteByPk(parameter);
if(StringUtils.hasText(parameter.getParentPhaseId())){
this.updatePhaseChildrenCntByPhaseId(parameter.getParentPhaseId());
}
return i;
}
/** /**
* 判断新增预算是否超出项目总预算 * 判断新增预算是否超出项目总预算
* @param projectId * @param projectId
@ -121,6 +143,17 @@ public class XmProjectPhaseService extends BaseService {
} }
} }
@Transactional
public int[] doBatchDelete(List<XmProjectPhase> batchValues) {
int[] result= super.batchDelete(batchValues);
List<XmProjectPhase> list= batchValues.stream().filter(i->!batchValues.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i-> StringUtils.hasText(i.getParentPhaseId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentPhaseId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
return result;
}
public XmProjectPhase autoCalcWorkload(XmProjectPhase phase) { public XmProjectPhase autoCalcWorkload(XmProjectPhase phase) {
BigDecimal phaseBudgetHours=NumberUtil.getBigDecimal(phase.getPhaseBudgetHours(),BigDecimal.ZERO); BigDecimal phaseBudgetHours=NumberUtil.getBigDecimal(phase.getPhaseBudgetHours(),BigDecimal.ZERO);
@ -145,7 +178,9 @@ public class XmProjectPhaseService extends BaseService {
Long i= this.selectOne("checkExistsTask", phaseId); Long i= this.selectOne("checkExistsTask", phaseId);
return i; return i;
} }
public void updateChildrenCntByIds(List<String> ids) {
super.update("updateChildrenCntByIds",ids);
}
public void updatePhaseChildrenCntByPhaseId(String phaseId){ public void updatePhaseChildrenCntByPhaseId(String phaseId){
super.update("updatePhaseChildrenCntByPhaseId",phaseId); super.update("updatePhaseChildrenCntByPhaseId",phaseId);
@ -169,6 +204,11 @@ public class XmProjectPhaseService extends BaseService {
} }
if(addList.size()>0) { if(addList.size()>0) {
this.batchInsert(addList); this.batchInsert(addList);
List<XmProjectPhase> list= xmProjectPhases.stream().filter(i->!xmProjectPhases.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentPhaseId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
} }
if(editList.size()>0) { if(editList.size()>0) {
this.batchUpdate(editList); this.batchUpdate(editList);
@ -178,5 +218,15 @@ public class XmProjectPhaseService extends BaseService {
public void calcKeyPaths(String projectId) { public void calcKeyPaths(String projectId) {
} }
@Transactional
public void doBatchInsert(List<XmProjectPhase> xmProjectPhases) {
super.batchInsert(xmProjectPhases);
List<XmProjectPhase> list= xmProjectPhases.stream().filter(i->!xmProjectPhases.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList());
list=list.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())).collect(Collectors.toList());
if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getParentPhaseId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
}
}
} }

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

@ -21,6 +21,7 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Collectors;
/** /**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br> * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
@ -47,7 +48,16 @@ public class XmTaskService extends BaseService {
@Autowired @Autowired
XmTaskSkillService xmTaskSkillService; XmTaskSkillService xmTaskSkillService;
@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()));
}
return i2;
}
public Map<String,Object> selectTotalPhaseAndTaskBudgetCost(String projectPhaseId, List<String> excludeTaskIds){ public Map<String,Object> selectTotalPhaseAndTaskBudgetCost(String projectPhaseId, List<String> excludeTaskIds){
Map<String,Object> p=new HashMap<>(); Map<String,Object> p=new HashMap<>();
@ -57,9 +67,7 @@ public class XmTaskService extends BaseService {
} }
/** /**
* 判断新增预算是否超出项目总预算 * 判断新增预算是否超出项目总预算
* @param projectId
* @param addTaskBudgetCost * @param addTaskBudgetCost
* @param excludePhaseId
* @return * @return
*/ */
public Tips judgetBudget(String projectPhaseId,BigDecimal addTaskBudgetCost,BigDecimal addTaskBudgetInnerUserAt,BigDecimal addTaskBudgetOutUserAt,BigDecimal addTaskBudgetNouserAt,List<String> excludeTaskIds){ public Tips judgetBudget(String projectPhaseId,BigDecimal addTaskBudgetCost,BigDecimal addTaskBudgetInnerUserAt,BigDecimal addTaskBudgetOutUserAt,BigDecimal addTaskBudgetNouserAt,List<String> excludeTaskIds){
@ -155,6 +163,9 @@ public class XmTaskService extends BaseService {
BeanUtils.copyProperties(xmTaskVo,xmTask); BeanUtils.copyProperties(xmTaskVo,xmTask);
this.insert(xmTask); this.insert(xmTask);
if(StringUtils.hasText(xmTask.getParentTaskid())){
this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid());
}
//新增/更新附件 //新增/更新附件
//xmAttachmentService.insertOrUpdate(xmTaskVo.getId(),TYPE,xmTaskVo.getAttachment()); //xmAttachmentService.insertOrUpdate(xmTaskVo.getId(),TYPE,xmTaskVo.getAttachment());
@ -192,7 +203,9 @@ public class XmTaskService extends BaseService {
throw new BizException("有未结算的执行人,不允许删除该任务"); throw new BizException("有未结算的执行人,不允许删除该任务");
} }
this.deleteByPk(xmTask); this.deleteByPk(xmTask);
if(StringUtils.hasText(xmTask.getParentTaskid())){
this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid());
}
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-删除任务", "删除任务"+xmTask.getName()); xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-删除任务", "删除任务"+xmTask.getName());
} }
@ -383,6 +396,12 @@ public class XmTaskService extends BaseService {
xmTaskSkillService.batchInsert(xmTaskSkillList); xmTaskSkillService.batchInsert(xmTaskSkillList);
} }
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()));
}
} }
/** /**
@ -400,6 +419,12 @@ public class XmTaskService extends BaseService {
public void batchInsertOrUpdate(List<XmTask> insertXmTasks,List<XmTask> editXmTasks) { public void batchInsertOrUpdate(List<XmTask> insertXmTasks,List<XmTask> editXmTasks) {
if(insertXmTasks!=null && insertXmTasks.size()>0) { if(insertXmTasks!=null && insertXmTasks.size()>0) {
this.batchInsert(insertXmTasks); 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()));
}
} }
if(editXmTasks!=null && editXmTasks.size()>0) { if(editXmTasks!=null && editXmTasks.size()>0) {
this.batchUpdate(editXmTasks); this.batchUpdate(editXmTasks);
@ -410,6 +435,10 @@ public class XmTaskService extends BaseService {
return this.selectOne("shareTaskDetail",xmTask); return this.selectOne("shareTaskDetail",xmTask);
} }
public void updateChildrenCntByIds(List<String> ids) {
super.update("updateChildrenCntByIds",ids);
}
/** 请在此类添加自定义函数 */ /** 请在此类添加自定义函数 */
} }

17
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml

@ -65,6 +65,23 @@
WHERE WHERE
t.menu_id = #{menuId} t.menu_id = #{menuId}
</update> </update>
<update id="updateChildrenCntByIds" parameterType="List">
UPDATE xm_menu t
LEFT JOIN ( SELECT count( 1 ) AS children_cnt, tt.pmenu_id AS menu_id FROM xm_menu tt WHERE
(tt.pmenu_id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
group by tt.pmenu_id ) t2 ON t2.menu_id = t.menu_id
SET t.children_cnt = ifnull( t2.children_cnt, 0 )
WHERE (t.menu_id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</update>
<!--结束 自定义sql函数区域--> <!--结束 自定义sql函数区域-->

15
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml

@ -72,6 +72,21 @@
WHERE WHERE
t.id = #{id} t.id = #{id}
</update> </update>
<update id="updateChildrenCntByIds" parameterType="List">
UPDATE xm_project_phase t
LEFT JOIN ( SELECT count( 1 ) AS children_cnt, tt.parent_phase_id AS id FROM xm_project_phase tt WHERE
(tt.parent_phase_id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
group by tt.parent_phase_id ) t2 ON t2.id = t.id
SET t.children_cnt = ifnull( t2.children_cnt, 0 )
WHERE (t.id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</update>
<!--结束 自定义sql函数区域--> <!--结束 自定义sql函数区域-->

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

@ -86,6 +86,21 @@
t.id = #{id} t.id = #{id}
</update> </update>
<update id="updateChildrenCntByIds" parameterType="List">
UPDATE xm_task t
LEFT JOIN ( SELECT count( 1 ) AS children_cnt, tt.parent_taskid AS id FROM xm_task tt WHERE
(tt.parent_taskid) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
group by tt.parent_taskid ) t2 ON t2.id = t.id
SET t.children_cnt = ifnull( t2.children_cnt, 0 )
WHERE (t.id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</update>
<!-- 插入流程审批表数据 --> <!-- 插入流程审批表数据 -->
<insert id="insertProcessApprova" <insert id="insertProcessApprova"

Loading…
Cancel
Save