1.项目立项结束监控器,流程结束后增加部门周报数据改为多部门添加

2.项目周报填报实体类增加部门ID
3.周报填报查询增加通过id查询个人周报(权限指定角色查询所有未实现)
4.新增方法增加根据id判断编辑,新增通过项目编号及名称查找项目是否存在,并对返回信息进行提示
This commit is contained in:
zty 2024-07-06 22:06:17 +08:00
parent 5db6aa6e9d
commit 1bc6ab8282
4 changed files with 83 additions and 34 deletions

View File

@ -1,6 +1,10 @@
package com.xqopen.kehui.flows.util; package com.xqopen.kehui.flows.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper; 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.flows.service.IFlowsService;
import com.xqopen.kehui.project.entity.ProjectInfo; import com.xqopen.kehui.project.entity.ProjectInfo;
import com.xqopen.kehui.project.entity.ProjectWeekly; 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.activiti.engine.delegate.ExecutionListener;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; 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.ObjectUtils;
import org.springframework.util.StringUtils;
import java.sql.Timestamp;
import java.util.ArrayList;
@Component("weekly") @Component("weekly")
@Slf4j @Slf4j
@ -23,7 +31,9 @@ public class ProjectInitListener implements ExecutionListener {
IFlowsService flowsService; IFlowsService flowsService;
@Autowired @Autowired
IProjectInfoService projectInfoService; IProjectInfoService projectInfoService;
@Override @Override
@Transactional
public void notify(DelegateExecution execution) throws Exception { public void notify(DelegateExecution execution) throws Exception {
try { try {
//流程结束后新增部门周报填报 //流程结束后新增部门周报填报
@ -31,20 +41,36 @@ public class ProjectInitListener implements ExecutionListener {
if ("end".equals(eventName)) { if ("end".equals(eventName)) {
String businessKey = execution.getProcessBusinessKey(); String businessKey = execution.getProcessBusinessKey();
EntityWrapper<ProjectInfo> wrapper = new EntityWrapper<>(); EntityWrapper<ProjectInfo> wrapper = new EntityWrapper<>();
wrapper.eq("id_",Long.parseLong(businessKey)); wrapper.eq("id_", Long.parseLong(businessKey));
ProjectInfo projectInfo = projectInfoService.selectOne(wrapper); ProjectInfo projectInfo = projectInfoService.selectOne(wrapper);
System.out.println(projectInfo); if (!ObjectUtils.isEmpty(projectInfo)) {
if(!ObjectUtils.isEmpty(projectInfo)){ JSONObject ext = projectInfo.getExt();
if(!StringUtils.isEmpty(projectInfo.getProjectName())&& !StringUtils.isEmpty(projectInfo.getProjectNo())){ JSONArray depts= (JSONArray) ext.get("executeDepts");
ProjectWeekly projectWeekly = new ProjectWeekly(); ArrayList<ProjectWeekly> weeklyArrayList = new ArrayList<>();
projectWeekly.setProjectId(String.valueOf(projectInfo.getId())); if(!ObjectUtils.isEmpty(depts)){
projectWeekly.setWeeklyType("1"); depts.forEach(a -> {
projectWeeklyService.insert(projectWeekly); 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); log.error("ProjectInitListener.notify", e);
throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null);
} }
} }
} }

View File

@ -48,10 +48,25 @@ public class ProjectWeeklyController implements ProjectWeeklyApi {
*/ */
@Override @Override
@PostMapping(Api.PROJECT_WEEKLY_ADD) @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 { try {
if (!ObjectUtils.isEmpty(projectWeeklyAddReq)) { if (!ObjectUtils.isEmpty(projectWeeklyAddReq)) {
ProjectWeekly projectWeekly = projectWeeklyAddReq.getProjectWeekly(); 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 //将人事id转为账号id
EntityWrapper<SystemUserLogin> userLoginEntityWrapper = new EntityWrapper<>(); EntityWrapper<SystemUserLogin> userLoginEntityWrapper = new EntityWrapper<>();
userLoginEntityWrapper.eq("userinfo_id", Long.parseLong(projectWeekly.getUserId())); userLoginEntityWrapper.eq("userinfo_id", Long.parseLong(projectWeekly.getUserId()));
@ -59,40 +74,43 @@ public class ProjectWeeklyController implements ProjectWeeklyApi {
projectWeekly.setUserId(String.valueOf(systemUserLogin.getId())); projectWeekly.setUserId(String.valueOf(systemUserLogin.getId()));
projectWeekly.setCreatedBy(String.valueOf(systemUserLogin.getId())); projectWeekly.setCreatedBy(String.valueOf(systemUserLogin.getId()));
projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis())); projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis()));
if (projectWeeklyService.insert(projectWeekly)) return ApiResponse.fillSuccess("新增成功!");
if (!ObjectUtils.isEmpty(projectWeekly)) {
verification(projectWeekly); //校验
}
if (!ObjectUtils.isEmpty(projectWeeklyAddReq.getExt())) {
JSONObject ext = projectWeeklyAddReq.getExt();
EntityWrapper<ProjectInfo> 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("添加成功");
} }
return ApiResponse.fillFail(new String("添加失败")); return ApiResponse.fillFail("操作失败");
} catch (Exception e) { } catch (Exception e) {
log.error("ProjectWeeklyController.add", e); log.error("ProjectWeeklyController.add", e);
throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null); 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<ProjectInfo> 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 @Override
@PostMapping(Api.PROJECT_WEEKLY) @PostMapping(Api.PROJECT_WEEKLY)
public String list(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyFindReq projectWeeklyFindReq) throws XQException { public String list(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyFindReq projectWeeklyFindReq) throws XQException {
try { try {
if (!ObjectUtils.isEmpty(projectWeeklyFindReq)) { 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) { if (projectWeeklyFindReq.getPageNo() == null || projectWeeklyFindReq.getPageNo() == 0) {
projectWeeklyFindReq.setPageNo(1); projectWeeklyFindReq.setPageNo(1);
} }

View File

@ -17,7 +17,7 @@ public interface ProjectWeeklyApi {
@ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"), @ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"),
@ApiImplicitParam(name = "userId", value = "用户id", required = true, paramType = "header", dataType = "Long"), @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) @ApiOperation(value = "周报列表", notes = "周报列表", response = ApiResponse.class)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"), @ApiImplicitParam(name = "token", value = "登录标识符", required = true, paramType = "header", dataType = "String"),

View File

@ -1,7 +1,9 @@
package com.xqopen.kehui.project.entity; package com.xqopen.kehui.project.entity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.enums.IdType;
@ -21,6 +23,7 @@ public class ProjectWeekly extends Model<ProjectWeekly> {
private String id; private String id;
private String projectId; private String projectId;
private String userId; private String userId;
private String deptId;
@ApiModelProperty("工作量") @ApiModelProperty("工作量")
private String workload; private String workload;
@ApiModelProperty("本周进展") @ApiModelProperty("本周进展")
@ -36,6 +39,8 @@ public class ProjectWeekly extends Model<ProjectWeekly> {
private java.sql.Timestamp createdAt ; private java.sql.Timestamp createdAt ;
private String updatedBy ; private String updatedBy ;
private java.sql.Timestamp updatedAt ; private java.sql.Timestamp updatedAt ;
@TableField("ext_")
private JSONObject ext;
@Override @Override
protected Serializable pkVal() { protected Serializable pkVal() {