Browse Source

任务相关进行权限优化

master
qqkj 5 years ago
parent
commit
1a62c9e33a
  1. 479
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  2. 64
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java
  3. 62
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java
  4. 9
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

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

@ -123,11 +123,28 @@ public class XmTaskController {
public Map<String,Object> addTask(@RequestBody XmTaskVo xmTaskVo) { public Map<String,Object> addTask(@RequestBody XmTaskVo xmTaskVo) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据"); Tips tips=new Tips("成功新增一条数据");
try{
try{
User user=LoginUtils.getCurrentUserInfo();
xmTaskVo.setCreateUserid(user.getUserid());
xmTaskVo.setCreateUsername(user.getUsername());
xmTaskVo.setExecutorUserid(user.getUserid());
xmTaskVo.setExecutorUsername(user.getUsername());
xmTaskVo.setCreateTime(new Date()); xmTaskVo.setCreateTime(new Date());
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTaskVo.getProjectId());
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid());
if(!isHead){
tips.setFailureMsg("您无权新建任务!项目经理、组长可以新建任务。");
m.put("tips", tips);
return m;
}
xmTaskVo.setRate(BigDecimal.ZERO); xmTaskVo.setRate(BigDecimal.ZERO);
if(xmTaskVo.getMilestone() == ""){
if( !StringUtils.hasText(xmTaskVo.getMilestone()) ){
xmTaskVo.setMilestone("0"); xmTaskVo.setMilestone("0");
} }
String projectPhaseId=xmTaskVo.getProjectPhaseId(); String projectPhaseId=xmTaskVo.getProjectPhaseId();
@ -217,66 +234,6 @@ public class XmTaskController {
return m; return m;
} }
@ApiOperation( value = "新增一条xm_task信息",notes="addXmTask,主键如果为空,后台自动生成")
@ApiResponses({
@ApiResponse(code = 200,response=XmTask.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@HasQx(value = "xm_core_xmTask_add",name = "新增任务",categoryId = "admin-xm",categoryName = "管理端-项目管理系统")
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmTask(@RequestBody XmTask xmTask) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
if(StringUtils.isEmpty(xmTask.getId())) {
xmTask.setId(xmTaskService.createKey("id"));
}else{
XmTask xmTaskQuery = new XmTask(xmTask.getId());
if(xmTaskService.countByWhere(xmTaskQuery)>0){
tips.setFailureMsg("编号重复,请修改编号再提交");
m.put("tips", tips);
return m;
}
}
xmTask.setCreateTime(new Date());
xmTask.setRate(BigDecimal.ZERO);
if(xmTask.getMilestone() == ""){
xmTask.setMilestone("0");
}
String projectPhaseId=xmTask.getProjectPhaseId();
BigDecimal zero=BigDecimal.ZERO;
BigDecimal taskBudgetCost=BigDecimal.ZERO;
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO;
List<String> excludePhaseIds=new ArrayList<>();
if("1".equals(xmTask.getTaskOut())) {
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTask.getBudgetCost(),zero));
}else {
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTask.getBudgetCost(),zero));
}
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt);
excludePhaseIds.add(xmTask.getId());
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds);
if(judgetTips.isOk()) {
xmTaskService.insert(xmTask);
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-新增任务", "新增任务"+xmTask.getName(),JSON.toJSONString(xmTask),null);
}else {
tips=judgetTips;
}
m.put("data",xmTask);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
@ApiOperation( value = "删除一条xm_task信息",notes="delXmTask,仅需要上传主键字段") @ApiOperation( value = "删除一条xm_task信息",notes="delXmTask,仅需要上传主键字段")
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
@ -287,6 +244,36 @@ public class XmTaskController {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据"); Tips tips=new Tips("成功删除一条数据");
try{ try{
User user=LoginUtils.getCurrentUserInfo();
if(!StringUtils.hasText(xmTask.getProjectId())){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
if(!StringUtils.hasText(xmTask.getId())){
tips.setFailureMsg("任务编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTask.getProjectId());
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid());
if(!isHead){
tips.setFailureMsg("您无权删除该任务!项目经理、组长可以删除任务。");
m.put("tips", tips);
return m;
}
XmTask xmTaskDb=this.xmTaskService.selectOneObject(xmTask);
if(xmTaskDb==null){
tips.setFailureMsg("该任务不存在");
m.put("tips", tips);
return m;
}
xmTaskService.deleteTask(xmTask); xmTaskService.deleteTask(xmTask);
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -308,27 +295,55 @@ public class XmTaskController {
public Map<String,Object> editXmTask(@RequestBody XmTaskVo xmTaskVo) { public Map<String,Object> editXmTask(@RequestBody XmTaskVo xmTaskVo) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据"); Tips tips=new Tips("成功更新一条数据");
try{
try{
User user=LoginUtils.getCurrentUserInfo();
if(!StringUtils.hasText(xmTaskVo.getProjectId())){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
if(!StringUtils.hasText(xmTaskVo.getId())){
tips.setFailureMsg("任务编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTaskVo.getProjectId());
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
XmTask xmTaskDb=this.xmTaskService.selectOneObject(xmTaskVo);
if(xmTaskDb==null){
tips.setFailureMsg("该任务不存在");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,xmTaskDb.getCreateUserid(),user.getUserid());
if(!isHead){
tips.setFailureMsg("您无权修改该任务基础信息!项目经理、组长可以修改任务的基础信息。");
m.put("tips", tips);
return m;
}
BigDecimal taskBudgetCost=BigDecimal.ZERO; BigDecimal taskBudgetCost=BigDecimal.ZERO;
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; BigDecimal taskBudgetNouserAt=BigDecimal.ZERO;
String projectPhaseId=null; String projectPhaseId=null;
BigDecimal zero=BigDecimal.ZERO; BigDecimal zero=BigDecimal.ZERO;
List<String> excludePhaseIds=new ArrayList<>();
List<String> excludeTaskIds=new ArrayList<>();
projectPhaseId=xmTaskVo.getProjectPhaseId(); projectPhaseId=xmTaskVo.getProjectPhaseId();
if("1".equals(xmTaskVo.getTaskOut())) { if("1".equals(xmTaskVo.getTaskOut())) {
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero));
}else { }else {
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero));
} }
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt);
excludePhaseIds.add(xmTaskVo.getId());
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds);
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt);
excludeTaskIds.add(xmTaskVo.getId());
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmTaskService.updateTask(xmTaskVo); xmTaskService.updateTask(xmTaskVo);
if(!StringUtils.isEmpty(xmTaskVo.getExecutorUserid())) { if(!StringUtils.isEmpty(xmTaskVo.getExecutorUserid())) {
User user=LoginUtils.getCurrentUserInfo();
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTaskVo.getProjectId(), xmTaskVo.getExecutorUserid()); List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTaskVo.getProjectId(), xmTaskVo.getExecutorUserid());
if(groups!=null && groups.size()>0) { if(groups!=null && groups.size()>0) {
for (XmProjectGroupVo g : groups) { for (XmProjectGroupVo g : groups) {
@ -362,12 +377,38 @@ public class XmTaskController {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据"); Tips tips=new Tips("成功更新一条数据");
try{ try{
User user=LoginUtils.getCurrentUserInfo();
if(!StringUtils.hasText(xmTask.getProjectId())){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
if(!StringUtils.hasText(xmTask.getId())){
tips.setFailureMsg("任务编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTask.getProjectId());
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
XmTask xmTaskDb=xmTaskService.selectOneObject(xmTask);
boolean isHead=groupService.checkUserIsHead(pgroups,xmTaskDb.getCreateUserid(),user.getUserid());
if(!isHead){
boolean isCreateUser=user.getUserid().equals(xmTaskDb.getCreateUserid());
boolean isExecUser=user.getUserid().equals(xmTaskDb.getExecutorUserid());
if( !isCreateUser && !isExecUser ){
tips.setFailureMsg("您无权修改该任务的进度!只有任务执行人、任务负责人、组长、项目经理可以修改任务的进度。");
m.put("tips", tips);
return m;
}
}
xmTaskService.updateProgress(xmTask); xmTaskService.updateProgress(xmTask);
if(!StringUtils.isEmpty(xmTask.getExecutorUserid())) { if(!StringUtils.isEmpty(xmTask.getExecutorUserid())) {
User user=LoginUtils.getCurrentUserInfo();
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTask.getProjectId(), xmTask.getExecutorUserid());
if(groups!=null && groups.size()>0) {
for (XmProjectGroupVo g : groups) {
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()+"将任务【"+xmTask.getName()+"】进度更新为"+xmTask.getRate()+"%");
} }
} }
@ -394,28 +435,71 @@ public class XmTaskController {
public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmTask> xmTasks) { public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmTask> xmTasks) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据"); Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据");
try{
try{
User user=LoginUtils.getCurrentUserInfo();
BigDecimal taskBudgetCost=BigDecimal.ZERO; BigDecimal taskBudgetCost=BigDecimal.ZERO;
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; BigDecimal taskBudgetNouserAt=BigDecimal.ZERO;
String projectPhaseId=null;
if(xmTasks==null || xmTasks.size()==0){
tips.setFailureMsg("任务列表不能为空");
m.put("tips", tips);
return m;
}
XmTask xmTask=xmTasks.get(0);
String projectPhaseId=xmTask.getProjectPhaseId();
String projectId=xmTask.getProjectId();
if( !StringUtils.hasText(projectId) ){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
if( !StringUtils.hasText(projectPhaseId) ){
tips.setFailureMsg("阶段计划编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid());
if(!isHead){
tips.setFailureMsg("您无权批量导入任务!项目经理、组长可以批量导入任务。");
m.put("tips", tips);
return m;
}
BigDecimal zero=BigDecimal.ZERO; BigDecimal zero=BigDecimal.ZERO;
List<String> excludePhaseIds=new ArrayList<>();
List<String> excludeTaskIds=new ArrayList<>();
for (XmTask g : xmTasks) { for (XmTask g : xmTasks) {
projectPhaseId=g.getProjectPhaseId();
if(!projectPhaseId.equals(g.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个阶段计划下批量导入任务");
m.put("tips", tips);
return m;
}
if(!projectId.equals(g.getProjectId())){
tips.setFailureMsg("只能在同一个项目下批量导入任务");
m.put("tips", tips);
return m;
}
g.setCreateUserid(user.getUserid());
g.setCreateUsername(user.getUsername());
g.setExecutorUserid(user.getUserid());
g.setExecutorUsername(user.getUsername());
if("1".equals(g.getTaskOut())) { if("1".equals(g.getTaskOut())) {
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero));
}else { }else {
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero));
}
excludePhaseIds.add(g.getId());
}
excludeTaskIds.add(g.getId());
} }
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt);
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds);
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmTaskService.batchImportFromTemplate(xmTasks); xmTaskService.batchImportFromTemplate(xmTasks);
for (XmTask t : xmTasks) { for (XmTask t : xmTasks) {
@ -440,18 +524,71 @@ public class XmTaskController {
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
}) })
@HasQx(value = "xm_core_xmTask_batchRelTasksWithMenu",name = "从故事导入任务",categoryId = "admin-xm",categoryName = "管理端-项目管理系统")
@HasQx(value = "xm_core_xmTask_batchRelTasksWithMenu",name = "批量将任务与一个用户故事关联",categoryId = "admin-xm",categoryName = "管理端-项目管理系统")
@RequestMapping(value="/batchRelTasksWithMenu",method=RequestMethod.POST) @RequestMapping(value="/batchRelTasksWithMenu",method=RequestMethod.POST)
public Map<String,Object> batchRelTasksWithMenu(@RequestBody List<XmTask> xmTasks) { public Map<String,Object> batchRelTasksWithMenu(@RequestBody List<XmTask> xmTasks) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据");
try{
xmTaskService.batchRelTasksWithMenu(xmTasks);
for (XmTask t : xmTasks) {
Tips tips=new Tips("成功"+xmTasks.size()+"条任务数据与用户故事关联");
try{
User user=LoginUtils.getCurrentUserInfo();
if(xmTasks==null || xmTasks.size()==0){
tips.setFailureMsg("任务列表不能为空");
m.put("tips", tips);
return m;
}
XmTask xmTask=xmTasks.get(0);
String projectId=xmTask.getProjectId();
if( !StringUtils.hasText(projectId) ){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
List<XmTask> allowTasks=new ArrayList<>();
List<XmTask> noAllowTasks=new ArrayList<>();
Map<String,XmTask> xmTaskDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks);
for (XmTask task : xmTaskDbMap.values()) {
if( !projectId.equals(task.getProjectId()) ){
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
boolean isMyCreate=user.getUserid().equals(task.getCreateUserid());
if(isMyCreate){
allowTasks.add(task);
}else{
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid());
if(!isHead){
noAllowTasks.add(task);
}else {
allowTasks.add(task);
}
}
}
if(allowTasks.size()>0){
xmTaskService.batchRelTasksWithMenu(allowTasks);
for (XmTask t : allowTasks) {
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量更新任务", "将任务"+t.getName()+"与故事【"+t.getMenuId()+"-"+t.getMenuName()+"】关联",JSON.toJSONString(t),null); xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量更新任务", "将任务"+t.getName()+"与故事【"+t.getMenuId()+"-"+t.getMenuName()+"】关联",JSON.toJSONString(t),null);
}
}
if(noAllowTasks.size()>0){
tips.setOkMsg(allowTasks.size()+"个任务成功关联用户故事,另外有"+noAllowTasks.size()+"个任务无权操作,只有任务负责人、项目经理、组长可以批量将任务与用户故事进行关联");
}
}else{
if(noAllowTasks.size()>0){
tips.setFailureMsg(allowTasks.size()+"个任务成功关联用户故事,另外有"+noAllowTasks.size()+"个任务无权操作,只有任务负责人、项目经理、组长可以批量将任务与用户故事进行关联");
}
}
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -474,21 +611,60 @@ public class XmTaskController {
public Map<String,Object> batchDelXmTask(@RequestBody List<XmTask> xmTasks) { public Map<String,Object> batchDelXmTask(@RequestBody List<XmTask> xmTasks) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmTasks.size()+"条数据"); Tips tips=new Tips("成功删除"+xmTasks.size()+"条数据");
try{
try{
User user=LoginUtils.getCurrentUserInfo();
if(xmTasks==null || xmTasks.size()==0){
tips.setFailureMsg("任务列表不能为空");
m.put("tips", tips);
return m;
}
XmTask xmTask=xmTasks.get(0);
String projectId=xmTask.getProjectId();
if( !StringUtils.hasText(projectId) ){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
List<XmTask> allowTasks=new ArrayList<>();
List<XmTask> noAllowTasks=new ArrayList<>();
Map<String,XmTask> xmTaskMap=this.xmTaskService.selectTasksMapByTasks(xmTasks);
for (XmTask task : xmTaskMap.values()) {
if( !projectId.equals(task.getProjectId()) ){
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid());
if(!isHead){
noAllowTasks.add(task);
}else {
allowTasks.add(task);
}
}
List<String> noDelList=new ArrayList<>(); List<String> noDelList=new ArrayList<>();
xmTasks.forEach(t->{
allowTasks.forEach(t->{
try { try {
xmTaskService.deleteTask(t); xmTaskService.deleteTask(t);
} catch (BizException e) { } catch (BizException e) {
noDelList.add(t.getName()); noDelList.add(t.getName());
} }
}); });
if(noDelList.size()>0 && xmTasks.size()>noDelList.size()) {
tips.setOkMsg("成功删除"+(xmTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray()));
}if(noDelList.size()>0 && xmTasks.size()==noDelList.size()) {
if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) {
tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray()));
}if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) {
tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务"); tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务");
}else { }else {
tips.setOkMsg("成功删除"+xmTasks.size()+"条任务");
tips.setOkMsg("成功删除"+allowTasks.size()+"条任务");
} }
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -509,34 +685,125 @@ public class XmTaskController {
}) })
@HasQx(value = "xm_core_xmTask_batchSaveBudget",name = "批量修改任务预算",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") @HasQx(value = "xm_core_xmTask_batchSaveBudget",name = "批量修改任务预算",categoryId = "admin-xm",categoryName = "管理端-项目管理系统")
@RequestMapping(value="/batchSaveBudget",method=RequestMethod.POST) @RequestMapping(value="/batchSaveBudget",method=RequestMethod.POST)
public Map<String,Object> batchSaveBudget(@RequestBody List<XmTaskVo> xmTasks) {
public Map<String,Object> batchSaveBudget(@RequestBody List<XmTask> xmTasks) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功修改"+xmTasks.size()+"条数据"); Tips tips=new Tips("成功修改"+xmTasks.size()+"条数据");
try{
try{
User user=LoginUtils.getCurrentUserInfo();
if(xmTasks==null || xmTasks.size()==0){
tips.setFailureMsg("任务列表不能为空");
m.put("tips", tips);
return m;
}
XmTask xmTask=xmTasks.get(0);
String projectId=xmTask.getProjectId();
String projectPhaseId=xmTask.getProjectPhaseId();
if( !StringUtils.hasText(projectId) ){
tips.setFailureMsg("项目编号不能为空");
m.put("tips", tips);
return m;
}
if( !StringUtils.hasText(projectPhaseId) ){
tips.setFailureMsg("阶段计划编号不能为空");
m.put("tips", tips);
return m;
}
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
m.put("tips", tips);
return m;
}
Map<String,XmTask> allowTasksDbMap=new HashMap<>();
Map<String,XmTask> noAllowTasksDbMap=new HashMap<>();
Map<String,XmTask> xmTaskDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks);
Map<String,XmTask> frontParamsTaskMap=new HashMap<>();
List<XmTask> insertTasks=new ArrayList<>();
List<XmTask> updateTasks=new ArrayList<>();
for (XmTask task : xmTasks) {
if( !projectId.equals(task.getProjectId()) ){
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
if(!projectPhaseId.equals(task.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个阶段计划下批量修改任务");
m.put("tips", tips);
return m;
}
frontParamsTaskMap.put(task.getId(),task);
if(xmTaskDbMap.containsKey(task.getId())){
updateTasks.add(task);
}else {
task.setCreateUsername(user.getUsername());
task.setCreateUserid(user.getUserid());
task.setExecutorUserid(user.getUserid());
task.setExecutorUsername(user.getUsername());
task.setCreateTime(new Date());
insertTasks.add(task);
}
}
for (XmTask task : xmTaskDbMap.values()) {
if( !projectId.equals(task.getProjectId()) ){
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
if(!projectPhaseId.equals(task.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个阶段计划下批量修改任务");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid());
if(!isHead){
noAllowTasksDbMap.put(task.getId(),task);
}else {
allowTasksDbMap.put(task.getId(),task);
}
}
BigDecimal taskBudgetCost=BigDecimal.ZERO; BigDecimal taskBudgetCost=BigDecimal.ZERO;
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO;
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; BigDecimal taskBudgetNouserAt=BigDecimal.ZERO;
String projectPhaseId=null;
BigDecimal zero=BigDecimal.ZERO; BigDecimal zero=BigDecimal.ZERO;
List<String> excludePhaseIds=new ArrayList<>();
List<String> excludeTaskIds=new ArrayList<>();
for (XmTask g : xmTasks) { for (XmTask g : xmTasks) {
projectPhaseId=g.getProjectPhaseId();
if(noAllowTasksDbMap.containsKey(g.getId())){
continue;
}
if("1".equals(g.getTaskOut())) { if("1".equals(g.getTaskOut())) {
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero));
}else { }else {
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero));
} }
excludePhaseIds.add(g.getId());
excludeTaskIds.add(g.getId());
} }
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt);
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds);
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds);
if(judgetTips.isOk()) { if(judgetTips.isOk()) {
xmTaskService.batchInsertOrUpdate(xmTasks);
for (XmTask t : xmTasks) {
//过滤掉我没有权限的
List<XmTask> canUpdateTasks=new ArrayList<>();
List<XmTask> canInsertTasks=new ArrayList<>();
for (XmTask task : updateTasks) {
if(allowTasksDbMap.containsKey(task.getId())){
canUpdateTasks.add(task);
}
}
xmTaskService.batchInsertOrUpdate(insertTasks,canUpdateTasks);
for (XmTask t : canUpdateTasks) {
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null); xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null);
}
for (XmTask t : canInsertTasks) {
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null);
} }
}else { }else {
tips=judgetTips; tips=judgetTips;

64
xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java

@ -13,6 +13,7 @@ import com.xm.core.entity.XmTaskExecuser;
import com.xm.core.service.XmProjectGroupService; import com.xm.core.service.XmProjectGroupService;
import com.xm.core.service.XmProjectGroupUserService; import com.xm.core.service.XmProjectGroupUserService;
import com.xm.core.service.XmTaskExecuserService; import com.xm.core.service.XmTaskExecuserService;
import com.xm.core.service.XmTaskService;
import com.xm.core.vo.XmProjectGroupVo; import com.xm.core.vo.XmProjectGroupVo;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -46,6 +47,9 @@ public class XmTaskExecuserController {
@Autowired @Autowired
private XmTaskExecuserService xmTaskExecuserService; private XmTaskExecuserService xmTaskExecuserService;
@Autowired
private XmTaskService xmTaskService;
@Autowired @Autowired
XmProjectGroupUserService xmProjectGroupUserService; XmProjectGroupUserService xmProjectGroupUserService;
@ -106,14 +110,16 @@ public class XmTaskExecuserController {
Tips tips=new Tips("成功新增一条数据"); Tips tips=new Tips("成功新增一条数据");
try{ try{
String projectId=xmTaskExecuser.getProjectId(); String projectId=xmTaskExecuser.getProjectId();
User user=LoginUtils.getCurrentUserInfo();
if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
User user=LoginUtils.getCurrentUserInfo();
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) {
if(user.getUserid().equals(xmTaskExecuser.getUserid())){
tips.setFailureMsg(user.getUsername()+"不是组长,无权进行新增任务执行人、候选人等操作");
}else {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权进行新增任务执行人、候选人等操作");
} }
}
}
if(tips.isOk()) { if(tips.isOk()) {
xmTaskExecuserService.addExecuser(xmTaskExecuser); xmTaskExecuserService.addExecuser(xmTaskExecuser);
@ -146,7 +152,7 @@ public class XmTaskExecuserController {
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
List<String> noAllowUsers=new ArrayList<>(); List<String> noAllowUsers=new ArrayList<>();
List<XmTaskExecuser> allowUsers=new ArrayList<>(); List<XmTaskExecuser> allowUsers=new ArrayList<>();
List<String> allowUserNames=new ArrayList<>();
for (XmTaskExecuser xmTaskExecuser : xmTaskExecusers) { for (XmTaskExecuser xmTaskExecuser : xmTaskExecusers) {
if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
@ -156,17 +162,27 @@ public class XmTaskExecuserController {
continue; continue;
}else { }else {
allowUsers.add(xmTaskExecuser); allowUsers.add(xmTaskExecuser);
allowUserNames.add(xmTaskExecuser.getUsername());
} }
}else { }else {
allowUsers.add(xmTaskExecuser); allowUsers.add(xmTaskExecuser);
allowUserNames.add(xmTaskExecuser.getUsername());
} }
} }
if(allowUsers.size()>0) { if(allowUsers.size()>0) {
xmTaskExecuserService.batchLeave(allowUsers);
xmTaskExecuserService.batchLeave(allowUsers);
if(noAllowUsers.size()>0){
String usernamestr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、");
String allowUserNamesStr=StringUtils.arrayToDelimitedString(allowUserNames.toArray(), "、");
tips.setOkMsg("成功将【"+allowUserNamesStr+"】请离任务,另外您不是【"+usernamestr+"】的组长,不允许将其请离任务");
}else{
String allowUserNamesStr=StringUtils.arrayToDelimitedString(allowUserNames.toArray(), "、");
tips.setOkMsg("成功将【"+allowUserNamesStr+"】请离任务");
}
}else { }else {
String usernamestr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、"); String usernamestr=StringUtils.arrayToDelimitedString(noAllowUsers.toArray(), "、");
tips.setFailureMsg("你不是【"+usernamestr+"】的组长,不允许变更");
tips.setFailureMsg("成功将0个人请离任务,您不是【"+usernamestr+"】的组长,不允许将其请离任务");
} }
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -196,7 +212,12 @@ public class XmTaskExecuserController {
User user=LoginUtils.getCurrentUserInfo(); User user=LoginUtils.getCurrentUserInfo();
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
if(user.getUserid().equals(xmTaskExecuser.getUserid())){
tips.setFailureMsg("组长可以把候选人变更为任务执行人,"+user.getUsername()+"不是组长,无权变更");
}else {
tips.setFailureMsg("组长可以把候选人变更为任务执行人,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权变更");
}
} }
if(tips.isOk()) { if(tips.isOk()) {
@ -208,7 +229,7 @@ public class XmTaskExecuserController {
xmTaskExecuserService.becomeExecute(xmTaskExecuser); xmTaskExecuserService.becomeExecute(xmTaskExecuser);
} }
if(!exists) { if(!exists) {
tips.setFailureMsg("变更不成功,原因:候选人不在项目组中,请先加入项目团队中。");
tips.setFailureMsg("变更不成功,原因:候选人不在项目组中,请先将候选人加入项目团队中。");
}else { }else {
tips.setOkMsg("变更成功"); tips.setOkMsg("变更成功");
} }
@ -246,7 +267,7 @@ public class XmTaskExecuserController {
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
tips.setFailureMsg("自己或者组长可以提交任务到测试,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权提交");
} }
} }
@ -280,9 +301,9 @@ public class XmTaskExecuserController {
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
if(user.getUserid().equals(xmTaskExecuser.getUserid())) { if(user.getUserid().equals(xmTaskExecuser.getUserid())) {
tips.setFailureMsg(user.getUsername()+"不是组长,无权修改");
tips.setFailureMsg("组长可以提交该任务的测试结果,"+user.getUsername()+"不是组长,无权提交");
}else { }else {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
tips.setFailureMsg("组长可以提交该任务的测试结果,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权提交");
} }
} }
@ -318,9 +339,9 @@ public class XmTaskExecuserController {
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
if(user.getUserid().equals(xmTaskExecuser.getUserid())) { if(user.getUserid().equals(xmTaskExecuser.getUserid())) {
tips.setFailureMsg(user.getUsername()+"不是组长,无权修改");
tips.setFailureMsg("组长可以提交该任务的测试结果,"+user.getUsername()+"不是组长,无权修改");
}else { }else {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
tips.setFailureMsg("组长可以提交该任务的测试结果,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权提交");
} }
} }
@ -377,10 +398,9 @@ public class XmTaskExecuserController {
User user=LoginUtils.getCurrentUserInfo(); User user=LoginUtils.getCurrentUserInfo();
if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
tips.setFailureMsg("自己或者组长可以修改任务的报价信息,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
} }
} }
if(tips.isOk()) { if(tips.isOk()) {
@ -389,7 +409,7 @@ public class XmTaskExecuserController {
xmTaskExecuserService.quotePrice(xmTaskExecuser); xmTaskExecuserService.quotePrice(xmTaskExecuser);
m.put("data",xmTaskExecuser); m.put("data",xmTaskExecuser);
}else { }else {
tips.setFailureMsg("只有候选状态时可以修改报价信息");
tips.setFailureMsg("只有任务处于候选状态时可以修改报价信息");
} }
@ -421,7 +441,7 @@ public class XmTaskExecuserController {
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权修改");
tips.setFailureMsg("自己申请成为该任务候选人或者组长邀请您成为任务候选人,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权操作");
} }
} }
if(tips.isOk()) { if(tips.isOk()) {
@ -458,7 +478,7 @@ public class XmTaskExecuserController {
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); boolean isHead= groupService.checkUserIsHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid());
if(!isHead ) { if(!isHead ) {
tips.setFailureMsg(user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权删除");
tips.setFailureMsg("只有自己或者组长可以删除任务执行人,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权删除");
} }
} }
if(tips.isOk()) { if(tips.isOk()) {

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

@ -123,7 +123,7 @@ public class XmTaskService extends BaseService {
List<Map<String,Object>> mapList = this.selectListMapByWhere(xmTask);//所有数据 List<Map<String,Object>> mapList = this.selectListMapByWhere(xmTask);//所有数据
return mapList; return mapList;
} }
@Transactional
public XmTaskVo addTask(XmTaskVo xmTaskVo){ public XmTaskVo addTask(XmTaskVo xmTaskVo){
Tips tips = new Tips(); Tips tips = new Tips();
if(StringUtils.isEmpty(xmTaskVo.getId())) { if(StringUtils.isEmpty(xmTaskVo.getId())) {
@ -177,6 +177,7 @@ public class XmTaskService extends BaseService {
* 有执行人有子任务都不允许删除 * 有执行人有子任务都不允许删除
* @param xmTask * @param xmTask
*/ */
@Transactional
public void deleteTask(XmTask xmTask) { public void deleteTask(XmTask xmTask) {
if(checkExistsChildren(xmTask.getId())) { if(checkExistsChildren(xmTask.getId())) {
throw new BizException("有子任务,不允许删除"); throw new BizException("有子任务,不允许删除");
@ -193,6 +194,7 @@ public class XmTaskService extends BaseService {
Long i= this.selectOne("checkExistsExecuser", taskId); Long i= this.selectOne("checkExistsExecuser", taskId);
return i; return i;
} }
@Transactional
public void updateTask(XmTaskVo xmTaskVo) { public void updateTask(XmTaskVo xmTaskVo) {
XmTask xmTask = new XmTask(); XmTask xmTask = new XmTask();
BeanUtils.copyProperties(xmTaskVo,xmTask); BeanUtils.copyProperties(xmTaskVo,xmTask);
@ -203,7 +205,7 @@ public class XmTaskService extends BaseService {
this.updateSomeFieldByPk(xmTask); this.updateSomeFieldByPk(xmTask);
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-更新任务基础信息", "更新任务"+xmTask.getName(),JSONObject.toJSONString(xmTask),null); xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-更新任务基础信息", "更新任务"+xmTask.getName(),JSONObject.toJSONString(xmTask),null);
} }
@Transactional
public void updateProgress(XmTask xmTask) { public void updateProgress(XmTask xmTask) {
//XmTask oldValue = this.selectOneObject(new XmTask(xmTask.getId())); //XmTask oldValue = this.selectOneObject(new XmTask(xmTask.getId()));
XmTask xmTask2=new XmTask(); XmTask xmTask2=new XmTask();
@ -215,7 +217,28 @@ public class XmTaskService extends BaseService {
//updateParentProgress(xmTask.getParentTaskid()); //updateParentProgress(xmTask.getParentTaskid());
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-进度", "更新任务进度为"+xmTask2.getRate()); xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-进度", "更新任务进度为"+xmTask2.getRate());
} }
public Map<String,XmTask> selectTasksMapByTasks(List<XmTask> xmTasks){
List<String> ids=new ArrayList<>();
for (XmTask xmTask : xmTasks) {
ids.add(xmTask.getId());
}
List<XmTask> tasks= this.selectTaskListByIds(ids);
Map<String,XmTask> map=new HashMap<>();
for (XmTask task : tasks) {
map.put(task.getId(),task);
}
return map;
}
public List<XmTask> selectTaskListByTasks(List<XmTask> xmTasks){
List<String> ids=new ArrayList<>();
for (XmTask xmTask : xmTasks) {
ids.add(xmTask.getId());
}
return this.selectTaskListByIds(ids);
}
public List<XmTask> selectTaskListByIds(List<String> ids){
return super.selectList("selectTaskListByIds",map("ids",ids));
}
/** /**
@ -236,6 +259,7 @@ public class XmTaskService extends BaseService {
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey} * @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交 * @return 如果tips.isOk==false将影响流程提交
**/ **/
@Transactional
public void processApprova(Map<String, Object> flowVars) { public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName"); String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree"); String agree=(String) flowVars.get("agree");
@ -287,12 +311,12 @@ public class XmTaskService extends BaseService {
} }
} }
} }
@Transactional
private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) { private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) {
this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars); this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars);
} }
@Transactional
public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) { public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) {
flowVars.put("flowState", flowState); flowVars.put("flowState", flowState);
flowVars.put("bizFlowState", flowState); flowVars.put("bizFlowState", flowState);
@ -301,8 +325,9 @@ public class XmTaskService extends BaseService {
} }
this.update("updateProcessApprova", flowVars); this.update("updateProcessApprova", flowVars);
} }
@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>() {
@ -329,7 +354,10 @@ public class XmTaskService extends BaseService {
} }
} }
}); });
xmTaskSkillService.batchInsert(xmTaskSkillList);
if(xmTaskSkillList.size()>0){
xmTaskSkillService.batchInsert(xmTaskSkillList);
}
} }
@ -337,6 +365,7 @@ public class XmTaskService extends BaseService {
* 批量更新任务的故事为新的故事或者更新为空 * 批量更新任务的故事为新的故事或者更新为空
* @param xmTasks * @param xmTasks
*/ */
@Transactional
public void batchRelTasksWithMenu(List<XmTask> xmTasks) { public void batchRelTasksWithMenu(List<XmTask> xmTasks) {
for (XmTask xmTask : xmTasks) { for (XmTask xmTask : xmTasks) {
this.update("relTaskWithMenu", xmTask); this.update("relTaskWithMenu", xmTask);
@ -344,21 +373,12 @@ public class XmTaskService extends BaseService {
} }
@Transactional @Transactional
public void batchInsertOrUpdate(List<XmTaskVo> xmTasks) {
List<XmTaskVo> addList=new ArrayList<>();
List<XmTaskVo> editList=new ArrayList<>();
for (XmTaskVo vo : xmTasks) {
if("addSub".equals(vo.getOpType())||"add".equals(vo.getOpType())) {
addList.add(vo);
}else {
editList.add(vo);
}
}
if(addList.size()>0) {
this.batchInsert(addList);
public void batchInsertOrUpdate(List<XmTask> insertXmTasks,List<XmTask> editXmTasks) {
if(insertXmTasks!=null && insertXmTasks.size()>0) {
this.batchInsert(insertXmTasks);
} }
if(editList.size()>0) {
this.batchUpdate(editList);
if(editXmTasks!=null && editXmTasks.size()>0) {
this.batchUpdate(editXmTasks);
} }
} }

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

@ -91,6 +91,15 @@
</if> </if>
</select> </select>
<!-- 通过条件查询获取数据列表 不分页 返回 list<Object> -->
<select id="selectTaskListByIds" parameterType="HashMap" resultType="com.xm.core.entity.XmTask">
select * from XM.xm_task res
where res.id in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</select>
<!--结束 自定义sql函数区域--> <!--结束 自定义sql函数区域-->

Loading…
Cancel
Save