From f5f551a7d814fcf785f26809766563124ba8f356 Mon Sep 17 00:00:00 2001 From: zty <1048209592@qq.com> Date: Wed, 10 Jul 2024 14:54:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=91=A8=E6=8A=A5=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E5=A2=9E=E5=8A=A0=E7=88=B6=E4=BA=B2id=E3=80=81?= =?UTF-8?q?=E5=91=A8=E6=95=B0=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?add=E6=96=B9=E6=B3=95=E5=88=A4=E6=96=AD=E7=88=B6=E4=BA=B2?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E5=B9=B6=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kehui/flows/util/ProjectInitListener.java | 75 ++++++++++--------- .../action/ProjectWeeklyController.java | 51 ++++++++++--- .../kehui/project/entity/ProjectWeekly.java | 3 +- 3 files changed, 79 insertions(+), 50 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 75707a0..4a549de 100644 --- a/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java +++ b/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java @@ -38,6 +38,7 @@ public class ProjectInitListener implements ExecutionListener { ISystemUserLoginService systemUserLoginService; @Autowired ProjectQuarterlyEvaluationService projectQuarterlyEvaluationService; + @Override @Transactional public void notify(DelegateExecution execution) throws Exception { @@ -54,52 +55,52 @@ public class ProjectInitListener implements ExecutionListener { //研究开发类/自主研发类没有填报直接结项 String openRange = String.valueOf(ext.get("openRange")); - if("3".equals(openRange) || "7".equals(openRange)){ + if ("3".equals(openRange) || "7".equals(openRange)) { return; } //根据部门批量添加部门周报填报 - JSONArray depts = (JSONArray) ext.get("executeDepts"); +// JSONArray depts = (JSONArray) ext.get("executeDepts"); ArrayList weeklyArrayList = new ArrayList<>(); - if (!ObjectUtils.isEmpty(depts)) { - depts.forEach(a -> { - ProjectWeekly projectWeekly = new ProjectWeekly(); - projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); - projectWeekly.setWeeklyType("1"); - projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); - projectWeekly.setDeptId(a.toString()); - weeklyArrayList.add(projectWeekly); - }); +// if (!ObjectUtils.isEmpty(depts)) { +// depts.forEach(a -> { +// ProjectWeekly projectWeekly = new ProjectWeekly(); +// projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); +// projectWeekly.setWeeklyType("1"); +// projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); +// projectWeekly.setDeptId(a.toString()); +// weeklyArrayList.add(projectWeekly); +// }); - //添加项目专员/负责人假数据,方便周报填报页面查看所有(暂时) - String draftManId = String.valueOf(ext.get("draftManId")); - JSONArray projectManagerData = (JSONArray) ext.get("projectManagerData"); - String projectManager = String.valueOf(projectManagerData.get(1)); - ArrayList list = new ArrayList<>(); - list.add(draftManId); - if(!draftManId.equals(projectManager))list.add(projectManager);//避免角色是同一个人重复 - list.forEach(a -> { - ProjectWeekly projectWeekly = new ProjectWeekly(); - projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); - projectWeekly.setWeeklyType("1"); - projectWeekly.setDeptId(""); - projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); - projectWeekly.setIsDeleted("1"); - projectWeekly.setUserId(a); - projectWeekly.setCreatedBy(a); - weeklyArrayList.add(projectWeekly); - }); - projectWeeklyService.insertBatch(weeklyArrayList); + //添加项目专员/负责人假数据,方便周报填报页面查看所有(暂时) + String draftManId = String.valueOf(ext.get("draftManId")); + JSONArray projectManagerData = (JSONArray) ext.get("projectManagerData"); + String projectManager = String.valueOf(projectManagerData.get(1)); + ArrayList list = new ArrayList<>(); + list.add(draftManId); + if (!draftManId.equals(projectManager)) list.add(projectManager);//避免角色是同一个人重复 + list.forEach(a -> { + ProjectWeekly projectWeekly = new ProjectWeekly(); + projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); + projectWeekly.setWeeklyType("1"); + projectWeekly.setDeptId(""); + projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); + projectWeekly.setIsDeleted("1"); + projectWeekly.setUserId(a); + projectWeekly.setCreatedBy(a); + weeklyArrayList.add(projectWeekly); + }); + projectWeeklyService.insertBatch(weeklyArrayList); - //添加季度审核数据 - ProjectQuarterlyEvaluation quarterlyEvaluation = new ProjectQuarterlyEvaluation(); - quarterlyEvaluation.setCreatedBy(projectManager); - quarterlyEvaluation.setCreatedAt(new Timestamp(System.currentTimeMillis())); - quarterlyEvaluation.setProjectId(String.valueOf(projectInfo.getId())); - projectQuarterlyEvaluationService.insert(quarterlyEvaluation); - } + //添加季度审核数据 + ProjectQuarterlyEvaluation quarterlyEvaluation = new ProjectQuarterlyEvaluation(); + quarterlyEvaluation.setCreatedBy(projectManager); + quarterlyEvaluation.setCreatedAt(new Timestamp(System.currentTimeMillis())); + quarterlyEvaluation.setProjectId(String.valueOf(projectInfo.getId())); + projectQuarterlyEvaluationService.insert(quarterlyEvaluation); } } +// } } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); log.error("ProjectInitListener.notify", e); diff --git a/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java b/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java index fe3abe0..bd07051 100644 --- a/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java +++ b/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java @@ -21,6 +21,8 @@ import com.xqopen.kehui.project.service.IProjectWeeklyService; import com.xqopen.kehui.util.ApiResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -48,6 +50,7 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { */ @Override @PostMapping(Api.PROJECT_WEEKLY_ADD) + @Transactional public String add(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyAddReq projectWeeklyAddReq) throws XQException { try { if (!ObjectUtils.isEmpty(projectWeeklyAddReq)) { @@ -59,14 +62,32 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { if (ObjectUtils.isEmpty(project)) return ApiResponse.fillFail("你输入的项目编号/名称不存在!"); projectWeekly.setProjectId(String.valueOf(project.getId())); -// 用是否带id过来判断是编辑还是新增 + //用是否带id过来判断是编辑还是新增 if (!StringUtils.isEmpty(projectWeekly.getId())) { projectWeekly.setUpdatedBy(String.valueOf(userId)); projectWeekly.setUpdatedAt(new Timestamp(System.currentTimeMillis())); - projectWeekly.setProjectId(String.valueOf(project.getId())); if (projectWeeklyService.updateById(projectWeekly)) return ApiResponse.fillSuccess("保存成功!"); } + //新增个人周报填报时,判断相应的部门周报是否存在,否则添加 + EntityWrapper weeklyEntityWrapper = new EntityWrapper<>(); + weeklyEntityWrapper.eq("is_deleted", "0"); + weeklyEntityWrapper.eq("week", projectWeekly.getWeek()); + weeklyEntityWrapper.eq("weekly_type", "1"); + weeklyEntityWrapper.eq("dept_id", projectWeekly.getDeptId()); + weeklyEntityWrapper.eq("project_id", projectWeekly.getProjectId()); + ProjectWeekly weekly = projectWeeklyService.selectOne(weeklyEntityWrapper); + if (ObjectUtils.isEmpty(weekly)) { + weekly = new ProjectWeekly(); + weekly.setWeeklyType("1"); + weekly.setWeek(projectWeekly.getWeek()); + weekly.setProjectId(projectWeekly.getProjectId()); + weekly.setDeptId(projectWeekly.getDeptId()); + weekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); + projectWeeklyService.insert(weekly); + + projectWeekly.setParentId(weekly.getId()); + } //将人事id转为账号id EntityWrapper userLoginEntityWrapper = new EntityWrapper<>(); userLoginEntityWrapper.eq("userinfo_id", Long.parseLong(projectWeekly.getUserId())); @@ -79,6 +100,8 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { return ApiResponse.fillFail("操作失败"); } catch (Exception e) { log.error("ProjectWeeklyController.add", e); + //批量新增出现异常被捕获时,手动回滚事务,保证数据库一致 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); } } @@ -99,7 +122,7 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { String projectName = ext.get("projectName").toString(); if (!StringUtils.isEmpty(projectNo)) wrapper.eq("project_no", projectNo); if (!StringUtils.isEmpty(projectName)) wrapper.eq("project_name", projectName); - wrapper.eq("is_deleted",false); + wrapper.eq("is_deleted", false); wrapper.eq("project_category", "init"); return projectInfoService.selectOne(wrapper); } @@ -123,28 +146,32 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { projectWeekly.setIsDeleted("0"); projectWeekly.setUserId(String.valueOf(userId)); projectWeekly.setWeeklyType("0"); - if(!StringUtils.isEmpty(projectWeeklyFindReq.getId()!=null))projectWeekly.setId(projectWeeklyFindReq.getId()); - if(!StringUtils.isEmpty(projectWeeklyFindReq.getDeptId()!=null))projectWeekly.setDeptId(projectWeeklyFindReq.getDeptId()); + if (!StringUtils.isEmpty(projectWeeklyFindReq.getId() != null)) + projectWeekly.setId(projectWeeklyFindReq.getId()); + if (!StringUtils.isEmpty(projectWeeklyFindReq.getDeptId() != null)) + projectWeekly.setDeptId(projectWeeklyFindReq.getDeptId()); List list = projectWeeklyService.getList(page, projectWeekly); //判断当前账号是否是项目专员/负责人 //因为json里面存的是人事id,通过账号找不到,先把账号id转为人事id EntityWrapper userLoginEntityWrapper = new EntityWrapper<>(); - userLoginEntityWrapper.eq("id_",userId); + userLoginEntityWrapper.eq("id_", userId); SystemUserLogin systemUserLogin = systemUserLoginService.selectOne(userLoginEntityWrapper); EntityWrapper weeklyEntityWrapper = new EntityWrapper<>(); - weeklyEntityWrapper.eq("user_id",String.valueOf(systemUserLogin.getUserinfoId())); - weeklyEntityWrapper.eq("weekly_type","1"); - weeklyEntityWrapper.eq("dept_id",""); - weeklyEntityWrapper.eq("is_deleted","1"); + weeklyEntityWrapper.eq("user_id", String.valueOf(systemUserLogin.getUserinfoId())); + weeklyEntityWrapper.eq("weekly_type", "1"); + weeklyEntityWrapper.eq("dept_id", ""); + weeklyEntityWrapper.eq("is_deleted", "1"); ProjectWeekly weekly = projectWeeklyService.selectOne(weeklyEntityWrapper); if (!ObjectUtils.isEmpty(weekly)) {//如果查到确实是项目专员/负责人,通过项目ID拿到所有人的专项填报 ProjectWeekly projectWeekly1 = new ProjectWeekly(); projectWeekly1.setIsDeleted("0"); projectWeekly1.setWeeklyType("0"); projectWeekly1.setProjectId(weekly.getProjectId()); - if(!StringUtils.isEmpty(projectWeeklyFindReq.getId()!=null))projectWeekly1.setId(projectWeeklyFindReq.getId()); - if(!StringUtils.isEmpty(projectWeeklyFindReq.getDeptId()!=null))projectWeekly.setDeptId(projectWeeklyFindReq.getDeptId()); + if (!StringUtils.isEmpty(projectWeeklyFindReq.getId() != null)) + projectWeekly1.setId(projectWeeklyFindReq.getId()); + if (!StringUtils.isEmpty(projectWeeklyFindReq.getDeptId() != null)) + projectWeekly.setDeptId(projectWeeklyFindReq.getDeptId()); list.addAll(projectWeeklyService.getList(page, projectWeekly1)); } diff --git a/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java b/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java index d949144..545f7e0 100644 --- a/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java +++ b/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java @@ -41,7 +41,8 @@ public class ProjectWeekly extends Model { private java.sql.Timestamp updatedAt ; @TableField("ext_") private JSONObject ext; - + private String parentId; + private String week; @Override protected Serializable pkVal() { return null;