diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java index 6039a7fd..66593b82 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java @@ -273,6 +273,7 @@ public class XmMenuController { } xmMenuService.parentIdPathsCalcBeforeSave(xmMenu); xmMenu.setStatus("0"); + xmMenu.setChildrenCnt(0); xmMenuService.insert(xmMenu); xmRecordService.addXmMenuRecord(xmMenu.getProductId(),xmMenu.getMenuId(),"新增产品需求","新增需求"+xmMenu.getMenuName()); m.put("data",xmMenu); @@ -305,9 +306,15 @@ public class XmMenuController { if(taskCount>0) { tips.setFailureMsg("存在"+taskCount+"个任务关联该需求,不允许删除"); }else { - xmMenu=this.xmMenuService.selectOneObject(xmMenu); + List ids=new ArrayList<>(); + ids.add(xmMenu.getMenuId()); + List xmMenus=this.xmMenuService.selectListByIdsWithsChildrenCnt(ids); + if(xmMenus==null || xmMenus.size()==0){ + return ResponseHelper.failed("data-0","数据不存在"); + } + xmMenu=xmMenus.get(0); if(xmMenu.getChildrenCnt()!=null && xmMenu.getChildrenCnt()>0){ - return ResponseHelper.failed("hadChild","该需求池有子需求,不能删除"); + return ResponseHelper.failed("hadChild","该需求有子需求,不能删除"); } if(!groupService.calcCanOpMenus(xmMenu)){ return ResponseHelper.failed("noqx","您无权删除此需求。"); @@ -440,7 +447,7 @@ public class XmMenuController { List noExists=new ArrayList<>(); List hasChildMenus=new ArrayList<>(); List canDelList=new ArrayList<>(); - List xmMenusDb=this.xmMenuService.selectListByIds(xmMenus.stream().map(i->i.getMenuId()).collect(Collectors.toList())); + List xmMenusDb=this.xmMenuService.selectListByIdsWithsChildrenCnt(xmMenus.stream().map(i->i.getMenuId()).collect(Collectors.toList())); for (XmMenu xmMenu : xmMenusDb) { boolean canDel=this.xmMenuService.checkCanDelAllChild(xmMenu,xmMenusDb); if(canDel){ diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java index ffd37787..d143b9ed 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java @@ -6,6 +6,7 @@ import com.mdp.audit.log.client.annotation.AuditLog; import com.mdp.audit.log.client.annotation.OperType; import com.mdp.core.entity.Tips; import com.mdp.core.err.BizException; +import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.NumberUtil; import com.mdp.core.utils.RequestUtils; import com.mdp.core.utils.ResponseHelper; @@ -279,6 +280,55 @@ public class XmTaskController { return m; } + /***/ + @ApiOperation( value = "根据主键批量修改修改任务中的某些字段信息",notes="editXmMenu") + @ApiResponses({ + @ApiResponse(code = 200,response=XmMenu.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @HasQx(value = "xm_core_xmTask_editSomeFields",name = "批量修改修改任务中的某些字段",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields(@RequestBody Map xmTaskMap) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + List ids= (List) xmTaskMap.get("ids"); + + if(ids==null || ids.size()==0){ + ResponseHelper.failed("ids-0","ids不能为空"); + } + XmTask xmTask= BaseUtils.fromMap(xmTaskMap,XmTask.class); + List xmTasksDb=xmTaskService.selectListByIds(ids); + if(xmTasksDb==null ||xmTasksDb.size()==0){ + ResponseHelper.failed("tasks-0","该任务已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + if(can.size()<=0){ + //return ResponseHelper.failed("noqx","您无权修改选中的任务。"); + } + Set fields=new HashSet<>(); + fields.add("childrenCnt"); + fields.add("ntype"); + fields.add("pidPaths"); + for (String fieldName : xmTaskMap.keySet()) { + if(fields.contains(fieldName)){ + return ResponseHelper.failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + xmTaskService.editSomeFields(xmTaskMap); + xmRecordService.addXmTaskRecord(xmTask.getProjectId(),xmTask.getId(),"修改项目任务","修改任务"+xmTask.getMenuName(),"", JSON.toJSONString(xmTask)); + + //m.put("data",xmMenu); + }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 = "查询任务的信息详情,免登录",notes="taskDetail,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}") @ApiResponses({ diff --git a/xm-core/src/main/java/com/xm/core/entity/XmQuestion.java b/xm-core/src/main/java/com/xm/core/entity/XmQuestion.java index 904ec7ba..9942a61d 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmQuestion.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmQuestion.java @@ -8,9 +8,9 @@ import java.math.BigDecimal; /** * 组织 com 顶级模块 xm 大模块 core 小模块
* 实体 XmQuestion所有属性名:
- * id,name,projectId,projectName,caseId,caseName,endTime,askUserid,askUsername,handlerUserid,handlerUsername,priority,solution,description,createUserid,createUsername,createTime,bugStatus,bizProcInstId,bizFlowState,menuId,menuName,budgetWorkload,budgetCost,actWorkload,actCost,expectResult,opStep,currResult,refRequire,bugSeverity,bugType,tagIds,tagNames,urls,ltime,qtype,iterationId,iterationName,caseExecId,remarks,productId,repRate,verNum,vpath,pverNum,bugReason,rate;
+ * id,name,projectId,projectName,caseId,caseName,endTime,askUserid,askUsername,handlerUserid,handlerUsername,priority,solution,description,createUserid,createUsername,createTime,bugStatus,bizProcInstId,bizFlowState,menuId,menuName,budgetWorkload,budgetCost,actWorkload,actCost,expectResult,opStep,currResult,refRequire,bugSeverity,bugType,tagIds,tagNames,urls,ltime,qtype,caseExecId,remarks,productId,repRate,verNum,vpath,pverNum,bugReason,rate;
* 表 xm_question xm_question的所有字段名:
- * id,name,project_id,project_name,case_id,case_name,end_time,ask_userid,ask_username,handler_userid,handler_username,priority,solution,description,create_userid,create_username,create_time,bug_status,biz_proc_inst_id,biz_flow_state,menu_id,menu_name,budget_workload,budget_cost,act_workload,act_cost,expect_result,op_step,curr_result,ref_require,bug_severity,bug_type,tag_ids,tag_names,urls,ltime,qtype,iteration_id,iteration_name,case_exec_id,remarks,product_id,rep_rate,ver_num,vpath,pver_num,bug_reason,rate;
+ * id,name,project_id,project_name,case_id,case_name,end_time,ask_userid,ask_username,handler_userid,handler_username,priority,solution,description,create_userid,create_username,create_time,bug_status,biz_proc_inst_id,biz_flow_state,menu_id,menu_name,budget_workload,budget_cost,act_workload,act_cost,expect_result,op_step,curr_result,ref_require,bug_severity,bug_type,tag_ids,tag_names,urls,ltime,qtype,case_exec_id,remarks,product_id,rep_rate,ver_num,vpath,pver_num,bug_reason,rate;
* 当前主键(包括多主键):
* id;
*/ @@ -128,15 +128,9 @@ public class XmQuestion implements java.io.Serializable { @ApiModelProperty(notes="最后更新时间",allowEmptyValue=true,example="",allowableValues="") Date ltime; - @ApiModelProperty(notes="问题类型risk-风险、bug-功能问题、consult-普通咨询、",allowEmptyValue=true,example="",allowableValues="") + @ApiModelProperty(notes="问题类型2-风险、1-功能问题、3-普通咨询、(暂时不用这个字段了)",allowEmptyValue=true,example="",allowableValues="") String qtype; - @ApiModelProperty(notes="迭代编号",allowEmptyValue=true,example="",allowableValues="") - String iterationId; - - @ApiModelProperty(notes="迭代名称",allowEmptyValue=true,example="",allowableValues="") - String iterationName; - @ApiModelProperty(notes="关联的案例执行编号",allowEmptyValue=true,example="",allowableValues="") String caseExecId; @@ -390,23 +384,11 @@ public class XmQuestion implements java.io.Serializable { this.ltime = ltime; } /** - * 问题类型risk-风险、bug-功能问题、consult-普通咨询、 + * 问题类型2-风险、1-功能问题、3-普通咨询、(暂时不用这个字段了) **/ public void setQtype(String qtype) { this.qtype = qtype; } - /** - * 迭代编号 - **/ - public void setIterationId(String iterationId) { - this.iterationId = iterationId; - } - /** - * 迭代名称 - **/ - public void setIterationName(String iterationName) { - this.iterationName = iterationName; - } /** * 关联的案例执行编号 **/ @@ -679,23 +661,11 @@ public class XmQuestion implements java.io.Serializable { return this.ltime; } /** - * 问题类型risk-风险、bug-功能问题、consult-普通咨询、 + * 问题类型2-风险、1-功能问题、3-普通咨询、(暂时不用这个字段了) **/ public String getQtype() { return this.qtype; } - /** - * 迭代编号 - **/ - public String getIterationId() { - return this.iterationId; - } - /** - * 迭代名称 - **/ - public String getIterationName() { - return this.iterationName; - } /** * 关联的案例执行编号 **/ diff --git a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java index b888a2cc..ef8dd0c1 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java @@ -305,5 +305,9 @@ public class XmMenuService extends BaseService { public void editSomeFields(Map xmMenuMap) { super.update("editSomeFields",xmMenuMap); } + + public List selectListByIdsWithsChildrenCnt(List ids) { + return super.selectList("selectListByIdsWithsChildrenCnt",ids); + } } diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java index 250f66cc..8a07e633 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java @@ -721,5 +721,9 @@ public class XmTaskService extends BaseService { public void updateActCostAndActWorkloadAfterSettle(String taskId,String toTaskState) { super.update("updateActCostAndActWorkloadAfterSettle",map("id",taskId,"taskState",toTaskState)); } + + public void editSomeFields(Map xmTaskMap) { + super.update("editSomeFields",xmTaskMap); + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml index 7baed9c3..9fabd758 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml @@ -184,6 +184,15 @@ #{item} + + + diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmQuestionMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmQuestionMapper.xml index f92ffbfa..5e3dc733 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmQuestionMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmQuestionMapper.xml @@ -31,6 +31,8 @@ and res.name like #{key} and res.status != 'resolved' + + and exists (select 1 from xm_menu m where m.iteration_id=#{linkIterationId} and m.menu_id=res.menu_id) ) values ( - #{id},#{name},#{projectId},#{projectName},#{caseId},#{caseName},#{endTime},#{askUserid},#{askUsername},#{handlerUserid},#{handlerUsername},#{priority},#{solution},#{description},#{createUserid},#{createUsername},#{createTime},#{bugStatus},#{bizProcInstId},#{bizFlowState},#{menuId},#{menuName},#{budgetWorkload},#{budgetCost},#{actWorkload},#{actCost},#{expectResult},#{opStep},#{currResult},#{refRequire},#{bugSeverity},#{bugType},#{tagIds},#{tagNames},#{urls},#{ltime},#{qtype},#{iterationId},#{iterationName},#{caseExecId},#{remarks},#{productId},#{repRate},#{verNum},#{vpath},#{pverNum},#{bugReason},#{rate} + #{id},#{name},#{projectId},#{projectName},#{caseId},#{caseName},#{endTime},#{askUserid},#{askUsername},#{handlerUserid},#{handlerUsername},#{priority},#{solution},#{description},#{createUserid},#{createUsername},#{createTime},#{bugStatus},#{bizProcInstId},#{bizFlowState},#{menuId},#{menuName},#{budgetWorkload},#{budgetCost},#{actWorkload},#{actCost},#{expectResult},#{opStep},#{currResult},#{refRequire},#{bugSeverity},#{bugType},#{tagIds},#{tagNames},#{urls},#{ltime},#{qtype},#{caseExecId},#{remarks},#{productId},#{repRate},#{verNum},#{vpath},#{pverNum},#{bugReason},#{rate} ) @@ -201,7 +203,7 @@ - id,name,project_id,project_name,case_id,case_name,end_time,ask_userid,ask_username,handler_userid,handler_username,priority,solution,description,create_userid,create_username,create_time,bug_status,biz_proc_inst_id,biz_flow_state,menu_id,menu_name,budget_workload,budget_cost,act_workload,act_cost,expect_result,op_step,curr_result,ref_require,bug_severity,bug_type,tag_ids,tag_names,urls,ltime,qtype,iteration_id,iteration_name,case_exec_id,remarks,product_id,rep_rate,ver_num,vpath,pver_num,bug_reason,rate + id,name,project_id,project_name,case_id,case_name,end_time,ask_userid,ask_username,handler_userid,handler_username,priority,solution,description,create_userid,create_username,create_time,bug_status,biz_proc_inst_id,biz_flow_state,menu_id,menu_name,budget_workload,budget_cost,act_workload,act_cost,expect_result,op_step,curr_result,ref_require,bug_severity,bug_type,tag_ids,tag_names,urls,ltime,qtype,case_exec_id,remarks,product_id,rep_rate,ver_num,vpath,pver_num,bug_reason,rate @@ -243,8 +245,6 @@ and res.urls = #{urls} and date_format(res.ltime,'%Y-%m-%d') = date_format(#{ltime},'%Y-%m-%d') and res.qtype = #{qtype} - and res.iteration_id = #{iterationId} - and res.iteration_name = #{iterationName} and res.case_exec_id = #{caseExecId} and res.remarks = #{remarks} and res.product_id = #{productId} @@ -293,8 +293,6 @@ urls = #{urls}, ltime = #{ltime}, qtype = #{qtype}, - iteration_id = #{iterationId}, - iteration_name = #{iterationName}, case_exec_id = #{caseExecId}, remarks = #{remarks}, product_id = #{productId}, @@ -342,8 +340,6 @@ urls = #{urls}, ltime = #{ltime}, qtype = #{qtype}, - iteration_id = #{iterationId}, - iteration_name = #{iterationName}, case_exec_id = #{caseExecId}, remarks = #{remarks}, product_id = #{productId}, @@ -392,8 +388,6 @@ urls = #{item.urls}, ltime = #{item.ltime}, qtype = #{item.qtype}, - iteration_id = #{item.iterationId}, - iteration_name = #{item.iterationName}, case_exec_id = #{item.caseExecId}, remarks = #{item.remarks}, product_id = #{item.productId}, diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml index 3f6f7b24..b67c598b 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml @@ -355,6 +355,17 @@ res.task_state=ifnull(#{taskState},res.task_state) where id=#{id} + + + update xm_task + + + + where id in + + #{item} + +