From b3c1e569ba4a8f79cebcc6c2eab0926e6db3e61f Mon Sep 17 00:00:00 2001 From: zty <1048209592@qq.com> Date: Fri, 26 Jul 2024 14:31:26 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AD=A3=E5=BA=A6=E5=AE=A1=E6=A0=B8=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=202.=E7=BB=93=E9=A1=B9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0=E5=80=92=E5=BA=8F=203.?= =?UTF-8?q?=E7=AB=8B=E9=A1=B9=E6=96=B0=E5=A2=9E=E6=97=B6=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E9=A1=B9=E7=9B=AE=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=BB=93=E9=A1=B9=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E6=96=B9=E6=B3=95(=E4=B8=BA=E6=B5=8B=E8=AF=95)=204.?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=AB=8B=E9=A1=B9=E7=BB=93=E6=9D=9F=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=99=A8=E5=8E=BB=E6=8E=89=E5=AD=A3=E5=BA=A6=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kehui/flows/util/ProjectInitListener.java | 8 +- .../kehui/mapper/xml/ProjectInfoDao.xml | 4 +- ...ProjectAssessmentIndicatorsController.java | 5 +- .../project/action/ProjectInitComtroller.java | 186 +++++++++++++++++- .../kehui/project/api/ProjectInitApi.java | 6 + 5 files changed, 197 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java b/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java index 58cf31a..44f6974 100644 --- a/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java +++ b/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java @@ -112,9 +112,9 @@ public class ProjectInitListener implements ExecutionListener { }); projectWeeklyService.insertBatch(weeklyArrayList); - //平台专项类/目标责任类才有季度考核 + //平台专项类/目标责任类才有季度考核(已删除) //添加季度审核数据 - if ("5".equals(openRange) || "6".equals(openRange)) { +// if ("5".equals(openRange) || "6".equals(openRange)) { ProjectQuarterlyEvaluation quarterlyEvaluation = new ProjectQuarterlyEvaluation(); quarterlyEvaluation.setCreatedBy(projectManager); JSONArray projectAdmin = (JSONArray) ext.get("projectAdmin"); @@ -142,7 +142,7 @@ public class ProjectInitListener implements ExecutionListener { projectQuarterlyEvaluationService.insert(quarterlyEvaluation); //添加季度审核的状态 JSONObject infoExt = projectInfo.getExt(); - infoExt.put("taskName","季度审核");//任务节点 + infoExt.put("taskName","结项填报");//任务节点 // infoExt.put("executor",executor); infoExt.put("executor",executor); // infoExt.put("executor",getSystemUserLogin(projectManager).getId());//当前委托人 @@ -165,7 +165,7 @@ public class ProjectInitListener implements ExecutionListener { } } if(!StringUtils.isEmpty(projectInfo.getId()))projectInfoService.updateById(projectInfo); - } +// } } } } diff --git a/src/main/java/com/xqopen/kehui/mapper/xml/ProjectInfoDao.xml b/src/main/java/com/xqopen/kehui/mapper/xml/ProjectInfoDao.xml index aaf7a46..92051f5 100644 --- a/src/main/java/com/xqopen/kehui/mapper/xml/ProjectInfoDao.xml +++ b/src/main/java/com/xqopen/kehui/mapper/xml/ProjectInfoDao.xml @@ -172,12 +172,12 @@ LEFT JOIN personal_member pm on ui.userinfo_id=pm.id_ WHERE pi.is_deleted=false and pi.ext_->>'taskName' !='结项完成' - and pi.created_by=#{projectInfo.createdBy} + and pi.created_by=#{projectInfo.createdBy} or pi.ext_ ->> 'endExecutor' =CAST(#{projectInfo.createdBy} AS varchar) and pi.id_=#{projectInfo.id} - order by pi.created_at desc +-- order by pi.created_at desc diff --git a/src/main/java/com/xqopen/kehui/project/action/ProjectAssessmentIndicatorsController.java b/src/main/java/com/xqopen/kehui/project/action/ProjectAssessmentIndicatorsController.java index 4367230..51cca79 100644 --- a/src/main/java/com/xqopen/kehui/project/action/ProjectAssessmentIndicatorsController.java +++ b/src/main/java/com/xqopen/kehui/project/action/ProjectAssessmentIndicatorsController.java @@ -191,6 +191,9 @@ public class ProjectAssessmentIndicatorsController implements ProjectAssessmentI if (!ObjectUtils.isEmpty(ext)) { String taskName = String.valueOf(ext.get("taskName"));//节点名称 String examine = String.valueOf(map.get("examine"));//通过or驳回 + if(StringUtils.isEmpty(examine)){ + return ApiResponse.fillFail("无法判断是提交还是驳回"); + } boolean isOffice = (boolean) map.get("isOffice");//项目负责人是否是办公室部门的 Integer businessNumber = 0;//查看是第几个部门主任评级了 if (!ObjectUtils.isEmpty(ext.get("businessNumber"))) { @@ -344,7 +347,7 @@ public class ProjectAssessmentIndicatorsController implements ProjectAssessmentI log.error("ProjectAssessmentIndicatorsController.getBusinessByUserInfoId", e); throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); } - return ApiResponse.fillFail(); + return ApiResponse.fillFail(null); } /** diff --git a/src/main/java/com/xqopen/kehui/project/action/ProjectInitComtroller.java b/src/main/java/com/xqopen/kehui/project/action/ProjectInitComtroller.java index 5505b7b..32b7f53 100644 --- a/src/main/java/com/xqopen/kehui/project/action/ProjectInitComtroller.java +++ b/src/main/java/com/xqopen/kehui/project/action/ProjectInitComtroller.java @@ -1,5 +1,6 @@ package com.xqopen.kehui.project.action; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.support.spring.FastJsonJsonView; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -125,16 +126,81 @@ public class ProjectInitComtroller implements ProjectInitApi { public String addInit(@RequestHeader("userId") Long userId, @RequestBody ProjectInfoInitDto initDto) throws XQException { ProjectInfoReq infoReq = initDto.getProjectInfoReq(); try { + //判断项目名是否重复 ProjectInfo info = new JacksonUtil().setAddEntity(userId, infoReq, ProjectInfo.class); EntityWrapper wrapper = new EntityWrapper<>(); wrapper.eq("project_name", info.getProjectName()); - wrapper.eq("project_no", info.getProjectNo()); wrapper.eq("project_category", "init"); wrapper.eq("is_deleted", false); List infos = projectInfoService.selectList(wrapper); if (!ObjectUtils.isEmpty(infos)) { - return ApiResponse.fillFail("项目名称/编号已存在!"); + return ApiResponse.fillFail("项目名称已存在!"); } + //自送生成项目编号 + JSONObject infoExt = info.getExt();//拿到当前的ext + //年份 + Calendar cal = Calendar.getInstance(); // 获取当前时间的Calendar实例 + int year = cal.get(Calendar.YEAR); // 获取年份 + //部门编码 + //项目编号:年份-部门-类别-序号 + StringBuffer buffer = new StringBuffer(); + buffer.append(year).append("-"); + ArrayList signedDepts= (ArrayList) infoExt.get("signedDepts");//获取立项部门 + String orgId= String.valueOf(signedDepts.get(0));//获取立项Id//根据项目名称拼接 + switch (orgId){ + case "1215549953418465281": + buffer.append("BGS");//办公室 + break; + case "939036815719927809": + buffer.append("GHB");//战略规划部 + break; + case "1496282215842058241": + buffer.append("CPB");//服务产品部 + break; + case "1215550126769049601": + buffer.append("SCB");//市场发展部 + break; + case "1215550163188191233": + buffer.append("PTB");//平台建设部 + break; + } + //项目类别 + buffer.append("-"); + String openRange = String.valueOf(infoExt.get("openRange")); + switch (openRange){ + case "1": + buffer.append("TT"); + break; + case "2": + buffer.append("SC"); + break; + case "3": + buffer.append("RD"); + break; + case "4": + buffer.append("CK"); + break; + case "5": + buffer.append("ZX"); + break; + case "6": + buffer.append("ZR"); + break; + case "7": + buffer.append("ZY"); + break; + default: + buffer.append("TPT");//临时 + break; + } + //序号 + EntityWrapper infoEntityWrapper = new EntityWrapper<>(); + infoEntityWrapper.eq(ProjectInfo.IS_DELETED,false); + infoEntityWrapper.like(ProjectInfo.PROJECT_NO,buffer.toString()); + int count = infoService.selectCount(infoEntityWrapper); //条数 + count++; + buffer.append("-").append(String.format("%03d", count)); //生成编号 + info.setProjectNo(buffer.toString()); infoService.insert(info); //批量新增项目考核季度表 if (!ObjectUtils.isEmpty(initDto)) { @@ -354,9 +420,9 @@ public class ProjectInitComtroller implements ProjectInitApi { */ @Override @PostMapping(Api.PROJECT_INIT_CONCLUSION_UPDATE) - public String conclusionUpdate(@RequestHeader Long userId, @RequestBody Map map) throws XQException { + public String conclusionUpdate(@RequestHeader Long userId, @RequestBody Map map) throws XQException { try { - if(ObjectUtils.isEmpty(map.get("projectId"))){ + if (ObjectUtils.isEmpty(map.get("projectId"))) { return ApiResponse.fillFail("获取项目id失败"); } Long projectId = Long.parseLong(String.valueOf(map.get("projectId"))); @@ -369,7 +435,7 @@ public class ProjectInitComtroller implements ProjectInitApi { String execution = String.valueOf(map.get("execution")); if (!StringUtils.isEmpty(execution)) { ext.put("execution", execution); - ext.put("conclusionFile",map.get("conclusionFile")); + ext.put("conclusionFile", map.get("conclusionFile")); if (infoService.updateById(projectInfo)) { return ApiResponse.fillSuccess("操作成功!"); } @@ -382,4 +448,114 @@ public class ProjectInitComtroller implements ProjectInitApi { } return ApiResponse.fillFail("错误请联系管理员"); } + + @Override + public String examine(@RequestHeader Long userId, @RequestBody Map map) throws XQException { + try { + if (!ObjectUtils.isEmpty(map.get("id"))) { + Long id = Long.parseLong(String.valueOf(map.get("id")));//项目di + EntityWrapper infoEntityWrapper = new EntityWrapper<>(); + infoEntityWrapper.eq(ProjectInfo.IS_DELETED, false); + infoEntityWrapper.eq(ProjectInfo.ID_, id); + ProjectInfo projectInfo = infoService.selectOne(infoEntityWrapper); + if (!ObjectUtils.isEmpty(projectInfo)) { + JSONObject ext = projectInfo.getExt(); + String taskName = String.valueOf(ext.get("taskName")); + String examine = String.valueOf(map.get("examine"));//通过or驳回 + String opinion = String.valueOf(map.get("opinion")); + if (!StringUtils.isEmpty(examine)) { + return ApiResponse.fillFail("无法判断是提交还是驳回"); + } + switch (taskName) { + case "结项填报": + if ("1".equals(examine)) { + return ApiResponse.fillFail("结项填报无法驳回!"); + } else if ("0".equals(examine)) { + JSONArray projectManagerData = (JSONArray) ext.get("projectManagerData"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(projectManagerData.get(1)))); + map.put("taskName", "项目负责人审核"); + } + break; + case "项目负责人审核": + map.put("projectManagerOpinion",opinion); + if ("1".equals(examine)) { + JSONArray draftManId = (JSONArray) ext.get("draftManId"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(draftManId.get(1)))); + map.put("taskName", "结项填报"); + } else if ("0".equals(examine)) { + JSONArray projectAdmin = (JSONArray) ext.get("projectAdmin"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(projectAdmin.get(1)))); + map.put("taskName", "项目管理员审核"); + } + break; + case "项目管理员审核": + if ("1".equals(examine)) { + JSONArray projectManagerData = (JSONArray) ext.get("projectManagerData"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(projectManagerData.get(1)))); + map.put("taskName", "项目负责人审核"); + } else if ("0".equals(examine)) { + JSONArray branchLeaders = (JSONArray) ext.get("branchLeaders"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(branchLeaders.get(1)))); + map.put("taskName", "分管领导审核"); + } + break; + case "分管领导审核": + if ("1".equals(examine)) { + JSONArray projectAdmin = (JSONArray) ext.get("projectAdmin"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(projectAdmin.get(1)))); + map.put("taskName", "项目管理员审核"); + } else if ("0".equals(examine)) { + JSONArray MainLeader = (JSONArray) ext.get("MainLeader"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(MainLeader.get(1)))); + map.put("taskName", "主要领导批准"); + } + break; + case "主要领导批准": + if ("1".equals(examine)) { + map.put("endExecutor", " "); + map.put("taskName", "结项完成"); + } else if ("0".equals(examine)) { + JSONArray projectAdmin = (JSONArray) ext.get("projectAdmin"); + map.put("endExecutor", getSystemUserLogin(String.valueOf(projectAdmin.get(1)))); + map.put("taskName", "分管领导审核"); + } + break; + } + if (examine(map, projectInfo)) {//调用审核方法 + return ApiResponse.fillSuccess("操作成功!"); + } else { + return ApiResponse.fillFail("操作失败!"); + } + } + return ApiResponse.fillFail("获取流程进度失败!"); + } + } catch (Exception e) { + log.error("ProjectInitController.examine", e); + throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); + } + return ApiResponse.fillFail("操作失败!"); + } + + /** + * 审核方法体 + * + * @param map + * @param projectInfo + * @return + */ + private boolean examine(Map map, ProjectInfo projectInfo) { + if (!ObjectUtils.isEmpty(projectInfo)) { + JSONObject ext = projectInfo.getExt(); + if (!ObjectUtils.isEmpty(ext)) { + if (!ObjectUtils.isEmpty(map)) { + String taskName = String.valueOf(map.get("taskName")); + ext.put("taskName", taskName); + ext.put("endExecutor", map.get("endExecutor")); + return infoService.updateById(projectInfo); + } + } + } + return false; + } + } diff --git a/src/main/java/com/xqopen/kehui/project/api/ProjectInitApi.java b/src/main/java/com/xqopen/kehui/project/api/ProjectInitApi.java index 9dca8c1..7a132ac 100644 --- a/src/main/java/com/xqopen/kehui/project/api/ProjectInitApi.java +++ b/src/main/java/com/xqopen/kehui/project/api/ProjectInitApi.java @@ -48,4 +48,10 @@ public interface ProjectInitApi { @ApiImplicitParam(name = "userId", value = "用户id", required = true, paramType = "header", dataType = "Long"), }) String conclusionUpdate(Long userId, Map map)throws XQException; + @ApiOperation(value = "结项审核", notes = "结项审核", response = ApiResponse.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"), + @ApiImplicitParam(name = "userId", value = "用户id", required = true, paramType = "header", dataType = "Long"), + }) + String examine(Long userId, Map map) throws XQException; }