From bf0ac05a8c65550566d469b205d1a0121f43ca93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Wed, 21 Apr 2021 01:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E8=B4=A3=E4=BB=BB=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ctrl/XmProjectPhaseController.java | 57 +++++++++++++++++-- .../com/xm/core/entity/XmProjectPhase.java | 41 +++++++++++-- .../xm/core/dao/XmProjectPhaseMapper.xml | 55 +++++++++++------- 3 files changed, 121 insertions(+), 32 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java index c9e433d1..b5e06b16 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java @@ -112,10 +112,59 @@ public class XmProjectPhaseController { m.put("tips", tips); return m; } - - - - + + + @HasQx(value = "xm_core_xmProjectPhase_setPhaseMngUser",name = "设置阶段计划负责人",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") + @RequestMapping(value="/setPhaseMngUser",method=RequestMethod.POST) + public Map setPhaseMngUser(@RequestBody XmProjectPhase xmProjectPhase) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功设置"); + try{ + if(StringUtils.isEmpty(xmProjectPhase.getId())) { + tips.setFailureMsg("阶段计划编号不能为空"); + m.put("tips", tips); + return m; + }else if(StringUtils.isEmpty(xmProjectPhase.getId())) { + tips.setFailureMsg("阶段计划编号不能为空"); + m.put("tips", tips); + return m; + }else{ + XmProjectPhase xmProjectPhaseQuery = new XmProjectPhase(xmProjectPhase.getId()); + if(xmProjectPhaseService.countByWhere(xmProjectPhaseQuery)>0){ + tips.setFailureMsg("编号重复,请修改编号再提交"); + m.put("tips", tips); + return m; + } + } + BigDecimal phaseBudgetCost=BigDecimal.ZERO; + String projectId=null; + BigDecimal zero=BigDecimal.ZERO; + projectId=xmProjectPhase.getProjectId(); + BigDecimal phaseBudgetInnerUserAt=NumberUtil.getBigDecimal(xmProjectPhase.getPhaseBudgetInnerUserAt(),zero); + BigDecimal phaseBudgetOutUserAt=NumberUtil.getBigDecimal(xmProjectPhase.getPhaseBudgetOutUserAt(),zero); + BigDecimal phaseBudgetNouserAt=NumberUtil.getBigDecimal(xmProjectPhase.getPhaseBudgetNouserAt(),zero); + phaseBudgetCost=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); + List excludePhaseIds=new ArrayList<>(); + excludePhaseIds.add(xmProjectPhase.getId()); + Tips judgetTips=xmProjectPhaseService.judgetBudget(projectId, phaseBudgetCost,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,phaseBudgetNouserAt,excludePhaseIds); + if(judgetTips.isOk()) { + xmProjectPhaseService.insert(xmProjectPhase); + xmRecordService.addXmPhaseRecord(projectId, xmProjectPhase.getId(), "项目-阶段计划-新增计划", "新增阶段计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); + m.put("data",xmProjectPhase); + }else { + tips=judgetTips; + } + }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_project_phase信息",notes="addXmProjectPhase,主键如果为空,后台自动生成") @ApiResponses({ @ApiResponse(code = 200,response=XmProjectPhase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") diff --git a/xm-core/src/main/java/com/xm/core/entity/XmProjectPhase.java b/xm-core/src/main/java/com/xm/core/entity/XmProjectPhase.java index ed5f8fed..2f51742a 100644 --- a/xm-core/src/main/java/com/xm/core/entity/XmProjectPhase.java +++ b/xm-core/src/main/java/com/xm/core/entity/XmProjectPhase.java @@ -1,17 +1,16 @@ -package com.xm.core.entity; +package com.xm.core.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; - -import java.math.BigDecimal; import java.util.Date; +import java.math.BigDecimal; /** - * 组织 com.qqkj 顶级模块 xm 大模块 core 小模块
+ * 组织 com 顶级模块 xm 大模块 core 小模块
* 实体 XmProjectPhase所有属性名:
- * id,phaseName,remark,parentPhaseId,branchId,projectId,beginDate,endDate,phaseBudgetHours,phaseBudgetStaffNu,ctime,phaseBudgetNouserAt,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,projectBaselineId,bizProcInstId,bizFlowState,phaseBudgetWorkload,phaseActWorkload,phaseActInnerUserWorkload,phaseActOutUserWorkload,taskType,planType,seqNo,phaseBudgetInnerUserWorkload,phaseBudgetOutUserWorkload,actNouserAt,actInnerUserAt,phaseBudgetInnerUserPrice,phaseBudgetOutUserPrice,phaseBudgetOutUserCnt,phaseBudgetInnerUserCnt,actRate,phaseStatus,actOutUserAt,taskCnt,finishTaskCnt,iterationCnt,calcTime,taskBudgetWorkload,taskBudgetAt;
+ * id,phaseName,remark,parentPhaseId,branchId,projectId,beginDate,endDate,phaseBudgetHours,phaseBudgetStaffNu,ctime,phaseBudgetNouserAt,phaseBudgetInnerUserAt,phaseBudgetOutUserAt,projectBaselineId,bizProcInstId,bizFlowState,phaseBudgetWorkload,phaseActWorkload,phaseActInnerUserWorkload,phaseActOutUserWorkload,taskType,planType,seqNo,phaseBudgetInnerUserWorkload,phaseBudgetOutUserWorkload,actNouserAt,actInnerUserAt,phaseBudgetInnerUserPrice,phaseBudgetOutUserPrice,phaseBudgetOutUserCnt,phaseBudgetInnerUserCnt,actRate,phaseStatus,actOutUserAt,taskCnt,finishTaskCnt,iterationCnt,calcTime,taskBudgetWorkload,taskBudgetAt,mngUserid,mngUsername;
* 表 XM.xm_project_phase 项目阶段模板的所有字段名:
- * id,phase_name,remark,parent_phase_id,branch_id,project_id,begin_date,end_date,phase_budget_hours,phase_budget_staff_nu,ctime,phase_budget_nouser_at,phase_budget_inner_user_at,phase_budget_out_user_at,project_baseline_id,biz_proc_inst_id,biz_flow_state,phase_budget_workload,phase_act_workload,phase_act_inner_user_workload,phase_act_out_user_workload,task_type,plan_type,seq_no,phase_budget_inner_user_workload,phase_budget_out_user_workload,act_nouser_at,act_inner_user_at,phase_budget_inner_user_price,phase_budget_out_user_price,phase_budget_out_user_cnt,phase_budget_inner_user_cnt,act_rate,phase_status,act_out_user_at,task_cnt,finish_task_cnt,iteration_cnt,calc_time,task_budget_workload,task_budget_at;
+ * id,phase_name,remark,parent_phase_id,branch_id,project_id,begin_date,end_date,phase_budget_hours,phase_budget_staff_nu,ctime,phase_budget_nouser_at,phase_budget_inner_user_at,phase_budget_out_user_at,project_baseline_id,biz_proc_inst_id,biz_flow_state,phase_budget_workload,phase_act_workload,phase_act_inner_user_workload,phase_act_out_user_workload,task_type,plan_type,seq_no,phase_budget_inner_user_workload,phase_budget_out_user_workload,act_nouser_at,act_inner_user_at,phase_budget_inner_user_price,phase_budget_out_user_price,phase_budget_out_user_cnt,phase_budget_inner_user_cnt,act_rate,phase_status,act_out_user_at,task_cnt,finish_task_cnt,iteration_cnt,calc_time,task_budget_workload,task_budget_at,mng_userid,mng_username;
* 当前主键(包括多主键):
* id;
*/ @@ -143,6 +142,12 @@ public class XmProjectPhase implements java.io.Serializable { @ApiModelProperty(notes="从任务汇总的预算金额",allowEmptyValue=true,example="",allowableValues="") BigDecimal taskBudgetAt; + + @ApiModelProperty(notes="管理者编号",allowEmptyValue=true,example="",allowableValues="") + String mngUserid; + + @ApiModelProperty(notes="管理者姓名",allowEmptyValue=true,example="",allowableValues="") + String mngUsername; /**阶段主键**/ public XmProjectPhase(String id) { @@ -399,6 +404,18 @@ public class XmProjectPhase implements java.io.Serializable { public void setTaskBudgetAt(BigDecimal taskBudgetAt) { this.taskBudgetAt = taskBudgetAt; } + /** + * 管理者编号 + **/ + public void setMngUserid(String mngUserid) { + this.mngUserid = mngUserid; + } + /** + * 管理者姓名 + **/ + public void setMngUsername(String mngUsername) { + this.mngUsername = mngUsername; + } /** * 阶段主键 @@ -646,5 +663,17 @@ public class XmProjectPhase implements java.io.Serializable { public BigDecimal getTaskBudgetAt() { return this.taskBudgetAt; } + /** + * 管理者编号 + **/ + public String getMngUserid() { + return this.mngUserid; + } + /** + * 管理者姓名 + **/ + public String getMngUsername() { + return this.mngUsername; + } } \ No newline at end of file diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml index 1e77c355..49e9e8ef 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml @@ -27,9 +27,9 @@ p.plan_out_user_cnt, p.plan_inner_user_cnt, p.plan_working_hours, - p.plan_total_cost + p.plan_total_cost FROM - XM.xm_project p + XM.xm_project p LEFT JOIN XM.xm_project_phase res ON p.id = res.project_id and res.id not in @@ -38,15 +38,15 @@ where p.id=#{projectId} - - + + - {call load_tasks_to_xm_project_phase(#{projectId,mode=IN})} + {call load_tasks_to_xm_project_phase(#{projectId,mode=IN})} - + @@ -99,19 +99,19 @@ - + insert into XM.xm_project_phase( ) values ( - #{id},#{phaseName},#{remark},#{parentPhaseId},#{branchId},#{projectId},#{beginDate},#{endDate},#{phaseBudgetHours},#{phaseBudgetStaffNu},#{ctime},#{phaseBudgetNouserAt},#{phaseBudgetInnerUserAt},#{phaseBudgetOutUserAt},#{projectBaselineId},#{bizProcInstId},#{bizFlowState},#{phaseBudgetWorkload},#{phaseActWorkload},#{phaseActInnerUserWorkload},#{phaseActOutUserWorkload},#{taskType},#{planType},#{seqNo},#{phaseBudgetInnerUserWorkload},#{phaseBudgetOutUserWorkload},#{actNouserAt},#{actInnerUserAt},#{phaseBudgetInnerUserPrice},#{phaseBudgetOutUserPrice},#{phaseBudgetOutUserCnt},#{phaseBudgetInnerUserCnt},#{actRate},#{phaseStatus},#{actOutUserAt},#{taskCnt},#{finishTaskCnt},#{iterationCnt},#{calcTime},#{taskBudgetWorkload},#{taskBudgetAt} + #{id},#{phaseName},#{remark},#{parentPhaseId},#{branchId},#{projectId},#{beginDate},#{endDate},#{phaseBudgetHours},#{phaseBudgetStaffNu},#{ctime},#{phaseBudgetNouserAt},#{phaseBudgetInnerUserAt},#{phaseBudgetOutUserAt},#{projectBaselineId},#{bizProcInstId},#{bizFlowState},#{phaseBudgetWorkload},#{phaseActWorkload},#{phaseActInnerUserWorkload},#{phaseActOutUserWorkload},#{taskType},#{planType},#{seqNo},#{phaseBudgetInnerUserWorkload},#{phaseBudgetOutUserWorkload},#{actNouserAt},#{actInnerUserAt},#{phaseBudgetInnerUserPrice},#{phaseBudgetOutUserPrice},#{phaseBudgetOutUserCnt},#{phaseBudgetInnerUserCnt},#{actRate},#{phaseStatus},#{actOutUserAt},#{taskCnt},#{finishTaskCnt},#{iterationCnt},#{calcTime},#{taskBudgetWorkload},#{taskBudgetAt},#{mngUserid},#{mngUsername} ) - delete from XM.xm_project_phase res + delete from XM.xm_project_phase - + 1=2 @@ -156,18 +156,21 @@ delete from XM.xm_project_phase - where id in - - #{item.id } - + where + (id) + in + + ( #{item.id} + ) + - id,phase_name,remark,parent_phase_id,branch_id,project_id,begin_date,end_date,phase_budget_hours,phase_budget_staff_nu,ctime,phase_budget_nouser_at,phase_budget_inner_user_at,phase_budget_out_user_at,project_baseline_id,biz_proc_inst_id,biz_flow_state,phase_budget_workload,phase_act_workload,phase_act_inner_user_workload,phase_act_out_user_workload,task_type,plan_type,seq_no,phase_budget_inner_user_workload,phase_budget_out_user_workload,act_nouser_at,act_inner_user_at,phase_budget_inner_user_price,phase_budget_out_user_price,phase_budget_out_user_cnt,phase_budget_inner_user_cnt,act_rate,phase_status,act_out_user_at,task_cnt,finish_task_cnt,iteration_cnt,calc_time,task_budget_workload,task_budget_at + id,phase_name,remark,parent_phase_id,branch_id,project_id,begin_date,end_date,phase_budget_hours,phase_budget_staff_nu,ctime,phase_budget_nouser_at,phase_budget_inner_user_at,phase_budget_out_user_at,project_baseline_id,biz_proc_inst_id,biz_flow_state,phase_budget_workload,phase_act_workload,phase_act_inner_user_workload,phase_act_out_user_workload,task_type,plan_type,seq_no,phase_budget_inner_user_workload,phase_budget_out_user_workload,act_nouser_at,act_inner_user_at,phase_budget_inner_user_price,phase_budget_out_user_price,phase_budget_out_user_cnt,phase_budget_inner_user_cnt,act_rate,phase_status,act_out_user_at,task_cnt,finish_task_cnt,iteration_cnt,calc_time,task_budget_workload,task_budget_at,mng_userid,mng_username - + and res.id = #{id} @@ -176,11 +179,11 @@ and res.parent_phase_id = #{parentPhaseId} and res.branch_id = #{branchId} and res.project_id = #{projectId} - and TO_CHAR(res.begin_date,'YYYY-MM-DD') = TO_CHAR(#{beginDate},'YYYY-MM-DD') - and TO_CHAR(res.end_date,'YYYY-MM-DD') = TO_CHAR(#{endDate},'YYYY-MM-DD') + and date_format(res.begin_date,'%Y-%m-%d') = date_format(#{beginDate},'%Y-%m-%d') + and date_format(res.end_date,'%Y-%m-%d') = date_format(#{endDate},'%Y-%m-%d') and res.phase_budget_hours = #{phaseBudgetHours} and res.phase_budget_staff_nu = #{phaseBudgetStaffNu} - and TO_CHAR(res.ctime,'YYYY-MM-DD') = TO_CHAR(#{ctime},'YYYY-MM-DD') + and date_format(res.ctime,'%Y-%m-%d') = date_format(#{ctime},'%Y-%m-%d') and res.phase_budget_nouser_at = #{phaseBudgetNouserAt} and res.phase_budget_inner_user_at = #{phaseBudgetInnerUserAt} and res.phase_budget_out_user_at = #{phaseBudgetOutUserAt} @@ -208,9 +211,11 @@ and res.task_cnt = #{taskCnt} and res.finish_task_cnt = #{finishTaskCnt} and res.iteration_cnt = #{iterationCnt} - and TO_CHAR(res.calc_time,'YYYY-MM-DD') = TO_CHAR(#{calcTime},'YYYY-MM-DD') + and date_format(res.calc_time,'%Y-%m-%d') = date_format(#{calcTime},'%Y-%m-%d') and res.task_budget_workload = #{taskBudgetWorkload} and res.task_budget_at = #{taskBudgetAt} + and res.mng_userid = #{mngUserid} + and res.mng_username = #{mngUsername} @@ -253,7 +258,9 @@ iteration_cnt = #{iterationCnt}, calc_time = #{calcTime}, task_budget_workload = #{taskBudgetWorkload}, - task_budget_at = #{taskBudgetAt} + task_budget_at = #{taskBudgetAt}, + mng_userid = #{mngUserid}, + mng_username = #{mngUsername} phase_name = #{phaseName}, @@ -296,6 +303,8 @@ calc_time = #{calcTime}, task_budget_workload = #{taskBudgetWorkload}, task_budget_at = #{taskBudgetAt}, + mng_userid = #{mngUserid}, + mng_username = #{mngUsername}, @@ -338,6 +347,8 @@ iteration_cnt = #{item.iterationCnt}, calc_time = #{item.calcTime}, task_budget_workload = #{item.taskBudgetWorkload}, - task_budget_at = #{item.taskBudgetAt} + task_budget_at = #{item.taskBudgetAt}, + mng_userid = #{item.mngUserid}, + mng_username = #{item.mngUsername} \ No newline at end of file