Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
789d166bcf
  1. 2
      xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java
  2. 5
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java
  3. 1
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  4. 15
      xm-core/src/main/java/com/xm/core/service/XmMenuService.java
  5. 107
      xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java
  6. 110
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java

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

@ -335,6 +335,7 @@ public class XmMenuController {
try{ try{
if(xmMenus.size()>0) { if(xmMenus.size()>0) {
this.xmMenuService.parentIdPathsCalcBeforeSave(xmMenus); this.xmMenuService.parentIdPathsCalcBeforeSave(xmMenus);
this.xmMenuService.doBatchInsert(xmMenus); this.xmMenuService.doBatchInsert(xmMenus);
}else { }else {
@ -360,6 +361,7 @@ public class XmMenuController {
try{ try{
if(xmMenus.size()>0) { if(xmMenus.size()>0) {
this.xmMenuService.parentIdPathsCalcBeforeSave(xmMenus.stream().map(i->(XmMenu)i).collect(Collectors.toList()));
this.xmMenuService.batchInsertOrUpdate(xmMenus); this.xmMenuService.batchInsertOrUpdate(xmMenus);
}else { }else {

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

@ -232,7 +232,8 @@ public class XmProjectPhaseController {
excludePhaseIds.add(xmProjectPhase.getId()); excludePhaseIds.add(xmProjectPhase.getId());
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.parentIdPathsCalcBeforeSave(xmProjectPhase);
xmProjectPhaseService.insert(xmProjectPhase);
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 {
@ -496,6 +497,8 @@ 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.parentIdPathsCalcBeforeSave(xmProjectPhases);
xmProjectPhaseService.doBatchInsert(xmProjectPhases); xmProjectPhaseService.doBatchInsert(xmProjectPhases);
for (XmProjectPhase phase : xmProjectPhases) { for (XmProjectPhase phase : xmProjectPhases) {

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

@ -789,6 +789,7 @@ public class XmTaskController {
task.setChildrenCnt( Integer.valueOf(xmTasks.stream().filter(i->task.getId().equals(i.getParentTaskid())).count()+"")); task.setChildrenCnt( Integer.valueOf(xmTasks.stream().filter(i->task.getId().equals(i.getParentTaskid())).count()+""));
} }
xmTaskService.parentIdPathsCalcBeforeSave(xmTasks);
xmTaskService.batchImportFromTemplate(xmTasks); xmTaskService.batchImportFromTemplate(xmTasks);
for (XmTask t : xmTasks) { for (XmTask t : xmTasks) {

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

@ -3,6 +3,7 @@ package com.xm.core.service;
import com.mdp.core.entity.Tips; import com.mdp.core.entity.Tips;
import com.mdp.core.service.BaseService; import com.mdp.core.service.BaseService;
import com.xm.core.entity.XmMenu; import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmTask;
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;
@ -57,10 +58,9 @@ public class XmMenuService extends BaseService {
} }
} }
if(addList.size()>0) { if(addList.size()>0) {
List<XmMenu> adds=this.parentIdPathsCalcBeforeSave(addList.stream().map(i->(XmMenu)i).collect(Collectors.toList()));
this.batchInsert(adds);
this.batchInsert(addList);
List<XmMenu> list= adds.stream().filter(i->!adds.stream().filter(k->k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList());
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()); list=list.stream().filter(i-> StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList());
if(list.size()>0){ if(list.size()>0){
this.updateChildrenCntByIds(list.stream().map(i->i.getPmenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); this.updateChildrenCntByIds(list.stream().map(i->i.getPmenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
@ -116,6 +116,11 @@ public class XmMenuService extends BaseService {
node.setPidPaths(idPath+node.getMenuId()+","); node.setPidPaths(idPath+node.getMenuId()+",");
} }
} }
for (XmMenu node : nodes) {
String idPaths=node.getPidPaths();
String[] idpss=idPaths.split(",");
node.setLvl(idpss.length-1);
}
return nodes; return nodes;
} }
@ -131,6 +136,10 @@ public class XmMenuService extends BaseService {
idPath=idPath+parentList.get(i).getMenuId()+","; idPath=idPath+parentList.get(i).getMenuId()+",";
} }
currNode.setPidPaths(idPath+currNode.getMenuId()+","); currNode.setPidPaths(idPath+currNode.getMenuId()+",");
String idPaths=currNode.getPidPaths();
String[] idpss=idPaths.split(",");
currNode.setLvl(idpss.length-1);
} }
return tips; return tips;
} }

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

@ -6,6 +6,7 @@ import com.mdp.core.utils.NumberUtil;
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.XmProjectPhase;
import com.xm.core.vo.XmProjectGroupVo; import com.xm.core.vo.XmProjectGroupVo;
import com.xm.core.vo.XmProjectPhaseVo; import com.xm.core.vo.XmProjectPhaseVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -228,5 +229,111 @@ public class XmProjectPhaseService extends BaseService {
this.updateChildrenCntByIds(list.stream().map(i->i.getParentPhaseId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); this.updateChildrenCntByIds(list.stream().map(i->i.getParentPhaseId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()));
} }
} }
public List<XmProjectPhase> parentIdPathsCalcBeforeSave(List<XmProjectPhase> nodes) {
List<XmProjectPhase> noExistsList=nodes.stream().filter(i->!nodes.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList());
noExistsList=noExistsList.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())).collect(Collectors.toList());
Map<String,String> hadCalcMap=new HashMap<>();
for (XmProjectPhase node : noExistsList) {
if(hadCalcMap.containsKey(node.getParentPhaseId())){
String idPaths=hadCalcMap.get(node.getParentPhaseId());
node.setPidPaths(idPaths+node.getId()+",");
}else{
this.parentIdPathsCalcBeforeSave(node);
String idPaths=node.getPidPaths();
idPaths=idPaths.substring(0,idPaths.length()-node.getId().length()-1);
hadCalcMap.put(node.getParentPhaseId(),idPaths);
}
}
for (XmProjectPhase node : nodes) {
if(!StringUtils.hasText(node.getParentPhaseId())){
node.setPidPaths("0,");
continue;
}
if(hadCalcMap.containsKey(node.getParentPhaseId())){
String idPaths=hadCalcMap.get(node.getParentPhaseId());
node.setPidPaths(idPaths+node.getId()+",");
}else{
List<XmProjectPhase> pnodeList=this.getParentList(node,nodes);
XmProjectPhase topParent=pnodeList.get(pnodeList.size()-1);
String idPath="0,";
if(hadCalcMap.containsKey(topParent.getParentPhaseId())){
idPath=hadCalcMap.get(topParent.getParentPhaseId());
}
for (int i = pnodeList.size() - 1; i >= 0; i--) {
idPath=idPath+pnodeList.get(i).getId()+",";
}
node.setPidPaths(idPath+node.getId()+",");
}
}
for (XmProjectPhase node : nodes) {
String idPaths=node.getPidPaths();
String[] idpss=idPaths.split(",");
node.setLvl(idpss.length-1);
}
return nodes;
}
public static void main(String[] args) {
String idpaths="0,1,2,3,";
String[] idpss=idpaths.split(",");
int lvl=idpss.length;
}
public Tips parentIdPathsCalcBeforeSave(XmProjectPhase currNode) {
Tips tips = new Tips("成功");
if (!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())) {
currNode.setPidPaths("0," + currNode.getId() + ",");
return tips;
} else {
List<XmProjectPhase> parentList=this.getParentList(currNode);
String idPath="0,";
for (int i = parentList.size() - 1; i >= 0; i--) {
idPath=idPath+parentList.get(i).getId()+",";
}
currNode.setPidPaths(idPath+currNode.getId()+",");
String idPaths=currNode.getPidPaths();
String[] idpss=idPaths.split(",");
currNode.setLvl(idpss.length-1);
}
return tips;
}
private List<XmProjectPhase> getParentList(XmProjectPhase currNode){
List<XmProjectPhase> parentList=new ArrayList<>();
XmProjectPhase current=currNode;
while (true){
if(!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())){
return parentList;
}
XmProjectPhase query=new XmProjectPhase();
query.setId(current.getParentPhaseId());
current=this.selectOneObject(query);
if(current==null){
return parentList;
}
parentList.add(current);
}
}
private List<XmProjectPhase> getParentList(XmProjectPhase currNode,List<XmProjectPhase> nodes){
List<XmProjectPhase> parentList=new ArrayList<>();
XmProjectPhase current=currNode;
while (true){
if(!StringUtils.hasText(currNode.getParentPhaseId()) || "0".equals(currNode.getParentPhaseId())){
return parentList;
}
XmProjectPhase query=new XmProjectPhase();
query.setId(current.getParentPhaseId());
current=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst().get();
if(current==null){
return parentList;
}
parentList.add(current);
}
}
} }

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

@ -9,6 +9,7 @@ import com.mdp.core.utils.DateUtils;
import com.mdp.core.utils.NumberUtil; import com.mdp.core.utils.NumberUtil;
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.XmTask; import com.xm.core.entity.XmTask;
import com.xm.core.entity.XmTaskSkill; import com.xm.core.entity.XmTaskSkill;
import com.xm.core.vo.XmTaskVo; import com.xm.core.vo.XmTaskVo;
@ -158,7 +159,7 @@ public class XmTaskService extends BaseService {
if(StringUtils.isEmpty(xmTaskVo.getMilestone())){ if(StringUtils.isEmpty(xmTaskVo.getMilestone())){
xmTaskVo.setMilestone("0"); xmTaskVo.setMilestone("0");
} }
this.parentIdPathsCalcBeforeSave(xmTaskVo);
XmTask xmTask = new XmTask(); XmTask xmTask = new XmTask();
BeanUtils.copyProperties(xmTaskVo,xmTask); BeanUtils.copyProperties(xmTaskVo,xmTask);
this.insert(xmTask); this.insert(xmTask);
@ -364,7 +365,6 @@ public class XmTaskService extends BaseService {
} }
@Transactional @Transactional
public void batchImportFromTemplate(List<XmTask> xmTasks) { public void batchImportFromTemplate(List<XmTask> xmTasks) {
this.batchInsert(xmTasks); this.batchInsert(xmTasks);
List<XmTaskSkill> xmTaskSkillList=new ArrayList<>(); List<XmTaskSkill> xmTaskSkillList=new ArrayList<>();
xmTasks.forEach(new Consumer<XmTask>() { xmTasks.forEach(new Consumer<XmTask>() {
@ -439,6 +439,110 @@ public class XmTaskService extends BaseService {
super.update("updateChildrenCntByIds",ids); super.update("updateChildrenCntByIds",ids);
} }
/** 请在此类添加自定义函数 */
public List<XmTask> parentIdPathsCalcBeforeSave(List<XmTask> nodes) {
List<XmTask> noExistsList=nodes.stream().filter(i->!nodes.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList());
noExistsList=noExistsList.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList());
Map<String,String> hadCalcMap=new HashMap<>();
for (XmTask node : noExistsList) {
if(hadCalcMap.containsKey(node.getParentTaskid())){
String idPaths=hadCalcMap.get(node.getParentTaskid());
node.setPidPaths(idPaths+node.getId()+",");
}else{
this.parentIdPathsCalcBeforeSave(node);
String idPaths=node.getPidPaths();
idPaths=idPaths.substring(0,idPaths.length()-node.getId().length()-1);
hadCalcMap.put(node.getParentTaskid(),idPaths);
}
}
for (XmTask node : nodes) {
if(!StringUtils.hasText(node.getParentTaskid())){
node.setPidPaths("0,");
continue;
}
if(hadCalcMap.containsKey(node.getParentTaskid())){
String idPaths=hadCalcMap.get(node.getParentTaskid());
node.setPidPaths(idPaths+node.getId()+",");
}else{
List<XmTask> pnodeList=this.getParentList(node,nodes);
XmTask topParent=pnodeList.get(pnodeList.size()-1);
String idPath="0,";
if(hadCalcMap.containsKey(topParent.getParentTaskid())){
idPath=hadCalcMap.get(topParent.getParentTaskid());
}
for (int i = pnodeList.size() - 1; i >= 0; i--) {
idPath=idPath+pnodeList.get(i).getId()+",";
}
node.setPidPaths(idPath+node.getId()+",");
}
}
for (XmTask node : nodes) {
String idPaths=node.getPidPaths();
String[] idpss=idPaths.split(",");
node.setLvl(idpss.length-1);
}
return nodes;
}
public static void main(String[] args) {
String idpaths="0,1,2,3,";
String[] idpss=idpaths.split(",");
int lvl=idpss.length;
}
public Tips parentIdPathsCalcBeforeSave(XmTask currNode) {
Tips tips = new Tips("成功");
if (!StringUtils.hasText(currNode.getParentTaskid()) || "0".equals(currNode.getParentTaskid())) {
currNode.setPidPaths("0," + currNode.getId() + ",");
return tips;
} else {
List<XmTask> parentList=this.getParentList(currNode);
String idPath="0,";
for (int i = parentList.size() - 1; i >= 0; i--) {
idPath=idPath+parentList.get(i).getId()+",";
}
currNode.setPidPaths(idPath+currNode.getId()+",");
String idPaths=currNode.getPidPaths();
String[] idpss=idPaths.split(",");
currNode.setLvl(idpss.length-1);
}
return tips;
}
private List<XmTask> getParentList(XmTask currNode){
List<XmTask> parentList=new ArrayList<>();
XmTask current=currNode;
while (true){
if(!StringUtils.hasText(currNode.getParentTaskid()) || "0".equals(currNode.getParentTaskid())){
return parentList;
}
XmTask query=new XmTask();
query.setId(current.getParentTaskid());
current=this.selectOneObject(query);
if(current==null){
return parentList;
}
parentList.add(current);
}
}
private List<XmTask> getParentList(XmTask currNode,List<XmTask> nodes){
List<XmTask> parentList=new ArrayList<>();
XmTask current=currNode;
while (true){
if(!StringUtils.hasText(currNode.getParentTaskid()) || "0".equals(currNode.getParentTaskid())){
return parentList;
}
XmTask query=new XmTask();
query.setId(current.getParentTaskid());
current=nodes.stream().filter(i->i.getId().equals(query.getId())).findFirst().get();
if(current==null){
return parentList;
}
parentList.add(current);
}
}
} }
Loading…
Cancel
Save