From 1bc6ab8282556f0a0659cbb5752b5d0566907d01 Mon Sep 17 00:00:00 2001 From: zty <1048209592@qq.com> Date: Sat, 6 Jul 2024 22:06:17 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=A1=B9=E7=9B=AE=E7=AB=8B=E9=A1=B9=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E7=9B=91=E6=8E=A7=E5=99=A8=EF=BC=8C=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=90=8E=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=91=A8=E6=8A=A5=E6=95=B0=E6=8D=AE=E6=94=B9=E4=B8=BA=E5=A4=9A?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=B7=BB=E5=8A=A0=202.=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=91=A8=E6=8A=A5=E5=A1=AB=E6=8A=A5=E5=AE=9E=E4=BD=93=E7=B1=BB?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E9=97=A8ID=203.=E5=91=A8=E6=8A=A5?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E8=BF=87id=E6=9F=A5=E8=AF=A2=E4=B8=AA=E4=BA=BA=E5=91=A8?= =?UTF-8?q?=E6=8A=A5=EF=BC=88=E6=9D=83=E9=99=90=E6=8C=87=E5=AE=9A=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9F=A5=E8=AF=A2=E6=89=80=E6=9C=89=E6=9C=AA=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=EF=BC=89=204.=E6=96=B0=E5=A2=9E=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AEid=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E7=BC=96=E8=BE=91=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BC=96=E5=8F=B7=E5=8F=8A=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E9=A1=B9=E7=9B=AE=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=EF=BC=8C=E5=B9=B6=E5=AF=B9=E8=BF=94=E5=9B=9E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=BF=9B=E8=A1=8C=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kehui/flows/util/ProjectInitListener.java | 46 ++++++++++--- .../action/ProjectWeeklyController.java | 64 ++++++++++++------- .../kehui/project/api/ProjectWeeklyApi.java | 2 +- .../kehui/project/entity/ProjectWeekly.java | 5 ++ 4 files changed, 83 insertions(+), 34 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 f38cf81..0e2cdcd 100644 --- a/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java +++ b/src/main/java/com/xqopen/kehui/flows/util/ProjectInitListener.java @@ -1,6 +1,10 @@ package com.xqopen.kehui.flows.util; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.xqopen.kehui.exception.ErrorCode; +import com.xqopen.kehui.exception.XQException; import com.xqopen.kehui.flows.service.IFlowsService; import com.xqopen.kehui.project.entity.ProjectInfo; import com.xqopen.kehui.project.entity.ProjectWeekly; @@ -11,8 +15,12 @@ import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.ExecutionListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; + +import java.sql.Timestamp; +import java.util.ArrayList; @Component("weekly") @Slf4j @@ -23,7 +31,9 @@ public class ProjectInitListener implements ExecutionListener { IFlowsService flowsService; @Autowired IProjectInfoService projectInfoService; + @Override + @Transactional public void notify(DelegateExecution execution) throws Exception { try { //流程结束后,新增部门周报填报 @@ -31,20 +41,36 @@ public class ProjectInitListener implements ExecutionListener { if ("end".equals(eventName)) { String businessKey = execution.getProcessBusinessKey(); EntityWrapper wrapper = new EntityWrapper<>(); - wrapper.eq("id_",Long.parseLong(businessKey)); + wrapper.eq("id_", Long.parseLong(businessKey)); ProjectInfo projectInfo = projectInfoService.selectOne(wrapper); - System.out.println(projectInfo); - if(!ObjectUtils.isEmpty(projectInfo)){ - if(!StringUtils.isEmpty(projectInfo.getProjectName())&& !StringUtils.isEmpty(projectInfo.getProjectNo())){ - ProjectWeekly projectWeekly = new ProjectWeekly(); - projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); - projectWeekly.setWeeklyType("1"); - projectWeeklyService.insert(projectWeekly); + if (!ObjectUtils.isEmpty(projectInfo)) { + JSONObject ext = projectInfo.getExt(); + 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); + }); + System.out.println(weeklyArrayList); + projectWeeklyService.insertBatch(weeklyArrayList); } +// if(!StringUtils.isEmpty(projectInfo.getProjectName())&& !StringUtils.isEmpty(projectInfo.getProjectNo())){ +// ProjectWeekly projectWeekly = new ProjectWeekly(); +// projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); +// projectWeekly.setWeeklyType("1"); +// projectWeeklyService.insert(projectWeekly); +// } } } - }catch (Exception e){ + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); log.error("ProjectInitListener.notify", e); + throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); } } } 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 fd0116d..c57910e 100644 --- a/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java +++ b/src/main/java/com/xqopen/kehui/project/action/ProjectWeeklyController.java @@ -48,10 +48,25 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { */ @Override @PostMapping(Api.PROJECT_WEEKLY_ADD) - public String add(@RequestBody ProjectWeeklyAddReq projectWeeklyAddReq) throws XQException { + public String add(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyAddReq projectWeeklyAddReq) throws XQException { try { if (!ObjectUtils.isEmpty(projectWeeklyAddReq)) { ProjectWeekly projectWeekly = projectWeeklyAddReq.getProjectWeekly(); + if (!ObjectUtils.isEmpty(projectWeekly)) verification(projectWeekly); //校验 + + //先通过编号、名称查到向目标id + ProjectInfo project = getProject(projectWeeklyAddReq, projectWeekly); + if (ObjectUtils.isEmpty(project)) return ApiResponse.fillFail("你输入的项目编号/名称不存在!"); + projectWeekly.setProjectId(String.valueOf(project.getId())); + +// 用是否带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("保存成功!"); + } + //将人事id转为账号id EntityWrapper userLoginEntityWrapper = new EntityWrapper<>(); userLoginEntityWrapper.eq("userinfo_id", Long.parseLong(projectWeekly.getUserId())); @@ -59,40 +74,43 @@ public class ProjectWeeklyController implements ProjectWeeklyApi { projectWeekly.setUserId(String.valueOf(systemUserLogin.getId())); projectWeekly.setCreatedBy(String.valueOf(systemUserLogin.getId())); projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); - - - if (!ObjectUtils.isEmpty(projectWeekly)) { - verification(projectWeekly); //校验 - } - if (!ObjectUtils.isEmpty(projectWeeklyAddReq.getExt())) { - JSONObject ext = projectWeeklyAddReq.getExt(); - EntityWrapper wrapper = new EntityWrapper<>(); - String projectNo = ext.get("projectNo").toString(); - 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("project_category", "init"); - ProjectInfo projectInfo = projectInfoService.selectOne(wrapper); - if (!ObjectUtils.isEmpty(projectInfo)) { //通过项目编号、名称查询项目表id - projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); - } - } - boolean b = projectWeeklyService.insert(projectWeekly); - return ApiResponse.fillSuccess("添加成功"); + if (projectWeeklyService.insert(projectWeekly)) return ApiResponse.fillSuccess("新增成功!"); } - return ApiResponse.fillFail(new String("添加失败")); + return ApiResponse.fillFail("操作失败"); } catch (Exception e) { log.error("ProjectWeeklyController.add", e); throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); } } + /** + * 关联项目表,判断项目是否真实存在 + * + * @param projectWeeklyAddReq + * @param projectWeekly + * @return + */ + private ProjectInfo getProject(ProjectWeeklyAddReq projectWeeklyAddReq, ProjectWeekly projectWeekly) { + JSONObject ext = projectWeeklyAddReq.getExt(); + if (!ObjectUtils.isEmpty(ext)) { + projectWeekly.setExt(ext); + EntityWrapper wrapper = new EntityWrapper<>(); + String projectNo = ext.get("projectNo").toString(); + 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("project_category", "init"); + return projectInfoService.selectOne(wrapper); + } + return null; + } + @Override @PostMapping(Api.PROJECT_WEEKLY) public String list(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyFindReq projectWeeklyFindReq) throws XQException { try { if (!ObjectUtils.isEmpty(projectWeeklyFindReq)) { - if(!ObjectUtils.isEmpty(userId)) projectWeeklyFindReq.setUserId(String.valueOf(userId)); + if (!ObjectUtils.isEmpty(userId)) projectWeeklyFindReq.setUserId(String.valueOf(userId)); if (projectWeeklyFindReq.getPageNo() == null || projectWeeklyFindReq.getPageNo() == 0) { projectWeeklyFindReq.setPageNo(1); } diff --git a/src/main/java/com/xqopen/kehui/project/api/ProjectWeeklyApi.java b/src/main/java/com/xqopen/kehui/project/api/ProjectWeeklyApi.java index dae5323..8320046 100644 --- a/src/main/java/com/xqopen/kehui/project/api/ProjectWeeklyApi.java +++ b/src/main/java/com/xqopen/kehui/project/api/ProjectWeeklyApi.java @@ -17,7 +17,7 @@ public interface ProjectWeeklyApi { @ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"), @ApiImplicitParam(name = "userId", value = "用户id", required = true, paramType = "header", dataType = "Long"), }) - String add(ProjectWeeklyAddReq projectWeeklyAddReq) throws XQException; + String add(Long userId,ProjectWeeklyAddReq projectWeeklyAddReq) throws XQException; @ApiOperation(value = "周报列表", notes = "周报列表", response = ApiResponse.class) @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"), 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 7a73b81..d949144 100644 --- a/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java +++ b/src/main/java/com/xqopen/kehui/project/entity/ProjectWeekly.java @@ -1,7 +1,9 @@ package com.xqopen.kehui.project.entity; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; @@ -21,6 +23,7 @@ public class ProjectWeekly extends Model { private String id; private String projectId; private String userId; + private String deptId; @ApiModelProperty("工作量") private String workload; @ApiModelProperty("本周进展") @@ -36,6 +39,8 @@ public class ProjectWeekly extends Model { private java.sql.Timestamp createdAt ; private String updatedBy ; private java.sql.Timestamp updatedAt ; + @TableField("ext_") + private JSONObject ext; @Override protected Serializable pkVal() {