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;
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<ProjectInfo> 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<ProjectWeekly> 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);
}
}
}

View File

@ -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<SystemUserLogin> 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<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("添加成功");
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<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
@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);
}

View File

@ -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"),

View File

@ -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<ProjectWeekly> {
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<ProjectWeekly> {
private java.sql.Timestamp createdAt ;
private String updatedBy ;
private java.sql.Timestamp updatedAt ;
@TableField("ext_")
private JSONObject ext;
@Override
protected Serializable pkVal() {