新增一个个人周报添加界面

This commit is contained in:
chen 2024-07-29 17:04:05 +08:00
parent 8f5e6d7aca
commit 32ba4091f3
5 changed files with 163 additions and 7 deletions

View File

@ -380,6 +380,7 @@ public class Api {
public static final String PROJECT_WEEKLY = PROJECT_PREFIX + "/weekly"; public static final String PROJECT_WEEKLY = PROJECT_PREFIX + "/weekly";
public static final String PROJECT_WEEKLYBYID = PROJECT_PREFIX + "/weeklyById"; public static final String PROJECT_WEEKLYBYID = PROJECT_PREFIX + "/weeklyById";
public static final String PROJECT_WEEKLY_ADD = PROJECT_WEEKLY + "/add"; public static final String PROJECT_WEEKLY_ADD = PROJECT_WEEKLY + "/add";
public static final String PROJECT_WEEKLY_ADDList = PROJECT_WEEKLY + "/addList";
public static final String PROJECT_WEEKLY_BUDGET = PROJECT_PREFIX + "/weekly/budget"; public static final String PROJECT_WEEKLY_BUDGET = PROJECT_PREFIX + "/weekly/budget";
public static final String PROJECT_WEEKLY_BUDGET_ADD = PROJECT_WEEKLY_BUDGET + "/add"; public static final String PROJECT_WEEKLY_BUDGET_ADD = PROJECT_WEEKLY_BUDGET + "/add";
public static final String PROJECT_WEEKLY_BUDGET_DEL = PROJECT_WEEKLY_BUDGET + "/del"; public static final String PROJECT_WEEKLY_BUDGET_DEL = PROJECT_WEEKLY_BUDGET + "/del";

View File

@ -11,13 +11,8 @@ import com.xqopen.kehui.common.service.ISystemUserLoginService;
import com.xqopen.kehui.exception.ErrorCode; import com.xqopen.kehui.exception.ErrorCode;
import com.xqopen.kehui.exception.XQException; import com.xqopen.kehui.exception.XQException;
import com.xqopen.kehui.project.api.ProjectWeeklyApi; import com.xqopen.kehui.project.api.ProjectWeeklyApi;
import com.xqopen.kehui.project.dto.ProjectWeeklyAddReq; import com.xqopen.kehui.project.dto.*;
import com.xqopen.kehui.project.dto.ProjectWeeklyDto; import com.xqopen.kehui.project.entity.*;
import com.xqopen.kehui.project.dto.ProjectWeeklyFindReq;
import com.xqopen.kehui.project.dto.ProjectWeeklyListResp;
import com.xqopen.kehui.project.entity.ProjectBudgetImplement;
import com.xqopen.kehui.project.entity.ProjectInfo;
import com.xqopen.kehui.project.entity.ProjectWeekly;
import com.xqopen.kehui.project.service.IProjectBudgetImplementService; import com.xqopen.kehui.project.service.IProjectBudgetImplementService;
import com.xqopen.kehui.project.service.IProjectInfoService; import com.xqopen.kehui.project.service.IProjectInfoService;
import com.xqopen.kehui.project.service.IProjectWeeklyService; import com.xqopen.kehui.project.service.IProjectWeeklyService;
@ -251,4 +246,94 @@ public class ProjectWeeklyController implements ProjectWeeklyApi {
throw new XQException(ErrorCode.PROJECTINFO_PROJECTSTEP_EMPTY_ERROR, null); throw new XQException(ErrorCode.PROJECTINFO_PROJECTSTEP_EMPTY_ERROR, null);
} }
} }
/**
* 批量新增周报填报
*
* @param initDto
* @return
* @throws XQException
*/
@Override
@PostMapping(Api.PROJECT_WEEKLY_ADDList)
@Transactional
public String addWeek(@RequestHeader("userId") Long userId, @RequestBody ProjectWeeklyInitDto initDto) throws XQException {
try {
if (!ObjectUtils.isEmpty(initDto)){
List<ProjectWeeklyList> membersList = initDto.getMembersList();
ProjectInfoReq projectInfoReq = initDto.getProjectInfoReq();
// 根据编号,名称查询是否存在
for (ProjectWeeklyList list : membersList) {
String projectName = list.getProjectName();
String projectNo = list.getProjectNo();
EntityWrapper<ProjectInfo> wrapper = new EntityWrapper<>();
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("project_category", "init");
ProjectInfo project = projectInfoService.selectOne(wrapper);
if (ObjectUtils.isEmpty(project)) return ApiResponse.fillFail("你输入的项目编号/名称不存在!");
ProjectWeekly projectWeekly = new ProjectWeekly();
projectWeekly.setProjectId(String.valueOf(project.getId()));
//将项目专员和项目负责人id 存入Weekly中
JSONObject extInfo = project.getExt();
JSONArray projectManagerData = extInfo.getJSONArray("projectManagerData");
JSONArray projectAdmin = extInfo.getJSONArray("projectAdmin");
JSONObject ext = projectWeekly.getExt();
ext.put("projectManagerData",projectManagerData.getString(projectManagerData.toArray().length -1 ));
ext.put("projectAdmin",projectAdmin.getString(projectAdmin.toArray().length -1 ));
ext.put("draftManId",extInfo.getString("draftManId"));
//新增个人周报填报时判断相应的部门周报是否存在否则添加
EntityWrapper<ProjectWeekly> weeklyEntityWrapper = new EntityWrapper<>();
weeklyEntityWrapper.eq("is_deleted", "0");
weeklyEntityWrapper.eq("week", list.getWeek());
weeklyEntityWrapper.eq("weekly_type", "1");
weeklyEntityWrapper.eq("dept_id", projectInfoReq.getExt().getJSONArray("executeDepts").getString(0));
weeklyEntityWrapper.eq("project_id", projectWeekly.getProjectId());
ProjectWeekly weekly = projectWeeklyService.selectOne(weeklyEntityWrapper);
if (ObjectUtils.isEmpty(weekly)) {
weekly = new ProjectWeekly();
weekly.setWeeklyType("1");
weekly.setExt(projectWeekly.getExt());
weekly.setWeek(list.getWeek());
weekly.setProjectId(projectWeekly.getProjectId());
weekly.setDeptId(projectInfoReq.getExt().getJSONArray("executeDepts").getString(0));
weekly.setCreatedAt(new Timestamp(System.currentTimeMillis()));
projectWeeklyService.insert(weekly);
projectWeekly.setParentId(weekly.getId());
// 添加部门周报时判断项目类型 若为平台专项 则添加项目预算
if (project.getExt().get("openRange").equals(5)){
ProjectBudgetImplement budgetImplement = new ProjectBudgetImplement();
budgetImplement.setWeek(list.getWeek());
budgetImplement.setProjectId(projectWeekly.getProjectId());
budgetImplement.setBudget(project.getExt().get("budget").toString());
budgetImplement.setCreatedAt(new Timestamp(System.currentTimeMillis()));
budgetImplementService.insert(budgetImplement);
}
}else {
// 部门周报存在时,直接给个人周报加上parentId
projectWeekly.setParentId(weekly.getId());
}
// 添加个人周报
projectWeekly.setUserId(projectInfoReq.getExt().get("draftManId").toString());
projectWeekly.setThisWeek(list.getThisWeek());
projectWeekly.setNextWeek(list.getNextWeek());
projectWeekly.setCreatedBy(projectInfoReq.getExt().get("draftManId").toString());
projectWeekly.setCreatedAt(new Timestamp(System.currentTimeMillis()));
projectWeeklyService.insert(projectWeekly);
}
return ApiResponse.fillSuccess("新增成功!");
}
return ApiResponse.fillFail("操作失败");
} catch (Exception e) {
log.error("ProjectWeeklyController.add", e);
//批量新增出现异常被捕获时手动回滚事务保证数据库一致
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new XQException(ErrorCode.PROJECTINFO_EXCEPTION_ERROR, null);
}
}
} }

View File

@ -1,8 +1,10 @@
package com.xqopen.kehui.project.api; package com.xqopen.kehui.project.api;
import com.xqopen.kehui.exception.XQException; import com.xqopen.kehui.exception.XQException;
import com.xqopen.kehui.project.dto.ProjectInfoInitDto;
import com.xqopen.kehui.project.dto.ProjectWeeklyAddReq; import com.xqopen.kehui.project.dto.ProjectWeeklyAddReq;
import com.xqopen.kehui.project.dto.ProjectWeeklyFindReq; import com.xqopen.kehui.project.dto.ProjectWeeklyFindReq;
import com.xqopen.kehui.project.dto.ProjectWeeklyInitDto;
import com.xqopen.kehui.util.ApiResponse; import com.xqopen.kehui.util.ApiResponse;
import com.xqopen.kehui.util.Constants; import com.xqopen.kehui.util.Constants;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -25,4 +27,10 @@ public interface ProjectWeeklyApi {
}) })
String list(Long userId, ProjectWeeklyFindReq projectWeeklyFindReq) throws XQException; String list(Long userId, ProjectWeeklyFindReq projectWeeklyFindReq) 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 addWeek(Long userId, ProjectWeeklyInitDto initDto) throws XQException;
} }

View File

@ -0,0 +1,15 @@
package com.xqopen.kehui.project.dto;
import com.xqopen.kehui.project.entity.ProjectAssessmentIndicators;
import com.xqopen.kehui.project.entity.ProjectWeekly;
import com.xqopen.kehui.project.entity.ProjectWeeklyList;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class ProjectWeeklyInitDto {
ProjectInfoReq projectInfoReq;
List<ProjectWeeklyList> membersList;
}

View File

@ -0,0 +1,47 @@
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;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/***
* 周报填报
*/
@Data
@TableName("project_weekly")
public class ProjectWeeklyList extends Model<ProjectWeeklyList> {
private static final long serialVersionUID = 1L;
@TableId(value = "id_", type = IdType.AUTO)
private String id;
private String projectName;
private String projectNo;
@ApiModelProperty("工作量")
private String workload;
@ApiModelProperty("本周进展")
private String thisWeek;
@ApiModelProperty("下周计划")
private String nextWeek;
@ApiModelProperty("任务是否完成")
private String isComplete;
private String createdBy ;
private java.sql.Timestamp createdAt ;
private String updatedBy ;
private java.sql.Timestamp updatedAt ;
@TableField("ext_")
private JSONObject ext;
private String parentId;
private String week;
@Override
protected Serializable pkVal() {
return null;
}
}