总结之单表简单实现流程审批功能

简单流程审批需求:项目流程化有开始于结束、有若干个办理节点、每个节点可以有待办和已办。

审批实体设计
主要:流程状态、启动状态、审核状态、
有这三要素可以轻松查询审核人、待办、已办、流程当前节点、办理人等信息。

实体:
public class PerformanceTargetsAudit {
	
	/**
	 * 未审核
	 */
	public static final int AUDIT_STATUS_0 = 0;
	/**
	 * 审核通过
	 */
	public static final int AUDIT_STATUS_1 = 1;
	/**
	 * 审核不通过
	 */
	public static final int AUDIT_STATUS_2 = 2;
	/**
	 * 退回企业修改
	 */
	public static final int AUDIT_STATUS_3 = 3;
	
	public static final Map<Integer, String>  AUDIT_STATUS_MAP = new LinkedHashMap<Integer, String>(){
		{
			put( AUDIT_STATUS_0, "未审核");
			put( AUDIT_STATUS_1, "通过");
			put( AUDIT_STATUS_2, "不通过");
			put( AUDIT_STATUS_3, "退回企业修改");
		}
	};
	/**
	 * 0未提交
	 */
	public static final int STATUS_0 = 0;
	/**
	 * 1节点一
	 */
	public static final int STATUS_1 = 1;
	/**
	 * 2节点二
	 */
	public static final int STATUS_2 = 2;
	/**
	 * 3节点三
	 */
	public static final int STATUS_3 = 3;
	/**
	 * 4节点四
	 */
	public static final int STATUS_4 = 4;
	public static final Map<Integer, String> STATUS_MAP = new LinkedHashMap<Integer, String>(){
		{
			put(STATUS_0, "未提交");
			put(STATUS_1, "节点一");
			put(STATUS_2, "节点二");
			put(STATUS_3, "节点三");
			put(STATUS_4, "节点四");
		}
	};
	/**
	 * 未启动
	 */
	public static final int RUN_STATUS_0 = 0;
	/**
	 * 启动中
	 */
	public static final int RUN_STATUS_1 = 1;
	/**
	 * 已结束
	 */
	public static final int RUN_STATUS_2 = 2;
	
	
	public static final Map<Integer, String>  RUN_STATUS_MAP = new LinkedHashMap<Integer, String>(){
		{
			put( RUN_STATUS_0, "未启动");
			put( RUN_STATUS_1, "启动中");
			put( RUN_STATUS_2, "已结束");
		}
	};
	private String id;
	/**
	 * 项目id
	 */
	private String projectId;
	
	/**
	 * 部门id
	 */
	private String departmentId;
	/**
	 * 创建人id
	 */
	
	private String createUserId;
	/**
	 * 创建时间
	 */
	private Date createTime;
	/**
	 * 待办人id
	 */
	private String handleId;
	/**
	 * 状态 (0未审核,1节点一。。。。)
	 */
	private int  status;
	/**
	 * 启动状态(0未启动,1启动中,2结束)
	 */
	private int runStatus;
	/**
	 * 审核状态(0未审核,1通过,2不通过,3退回)
	 */
	private int auditStatus;

功能编码:

生成流程
加入审批表(用户id或者部门id)

//节点一
						List<User> userList = iUserService.findUsersByDepartment(firstAuditDeptId);
						List<PerformanceTargetsAudit> proformanceTargetsAudits = new ArrayList<>();
						//加入审核表
						for(User user: userList) {
							PerformanceTargetsAudit proformanceTargetsAudit = new PerformanceTargetsAudit();
							proformanceTargetsAudit.setId(UuidUtil.uuidStr());
							proformanceTargetsAudit.setCreateTime(new Date());
							proformanceTargetsAudit.setProjectId(projectId);
							proformanceTargetsAudit.setHandleId(user.getId());
							proformanceTargetsAudit.setDepartmentId(firstAuditDeptId);
							proformanceTargetsAudit.setCreateUserId(mainReport.getFillOrgId());
							proformanceTargetsAudit.setRunStatus(PerformanceTargetsAudit.RUN_STATUS_1);
							proformanceTargetsAudit.setStatus(PerformanceTargetsAudit.STATUS_1);
							proformanceTargetsAudit.setTemp1(PerformanceTargetsAudit.AUDIT_STATUS_0);
							proformanceTargetsAudits.add(proformanceTargetsAudit);
						}
						iPerformanceTargetsAuditService.save(proformanceTargetsAudits);

审批
public ResultJson saveReport(String id,Integer auditStatus,Integer status, HttpServletRequest request, HttpServletResponse response) throws IOException {
		ResultJson resultJson = new ResultJson();
		try {
			User currentUser = (User) this.getCurrentUser(request, response);
			if(CollectionUtil.isNotEmpty(currentUser)) {
				PerformanceTargetsMainReport mainReport  = iPerformanceTargetsMainReportService.findPerformanceTargetsMainReport(id);
				if(auditStatus != mainReport.getAuditStatus()) {//当前审核结点和页面数据中审核节点是否一致
					resultJson.setSuccess(false);
					resultJson.setMsg("已经被审核,请刷新页面!");
					return resultJson;
				}
				switch (status) {
				case 1://通过
					//int auditStatus = mainReport.getAuditStatus();
					//保存审核结果
					List<PerformanceTargetsAudit> performanceTargetsAudits = iPerformanceTargetsAuditService.findPerformanceTargetsAuditsByHandle(id, currentUser.getId());
					if(performanceTargetsAudits.size() > 0) {
						PerformanceTargetsAudit performanceTargetsAudit = performanceTargetsAudits.get(0);
						performanceTargetsAudit.setTemp1(status);
						performanceTargetsAudit.setCreateTime(new Date());
						iPerformanceTargetsAuditService.update(performanceTargetsAudits);
					}else {
						resultJson.setSuccess(false);
						resultJson.setMsg("你没有对这条数据审核的权限!");
						return resultJson;
					}
					//当前办理节点结束
					List<PerformanceTargetsAudit> performanceTargetsAudits2 = iPerformanceTargetsAuditService.findPerformanceTargetsAuditsByPerformanceAndRunStatus(id);
					List<PerformanceTargetsAudit> performanceTargetsAudits3 = new ArrayList<>();
					for(PerformanceTargetsAudit performanceTargetsAudit: performanceTargetsAudits2) {
						performanceTargetsAudit.setRunStatus(PerformanceTargetsAudit.RUN_STATUS_2);//结束
						performanceTargetsAudits3.add(performanceTargetsAudit);			
					}
					iPerformanceTargetsAuditService.update(performanceTargetsAudits3);
					//修改成下一个办理节点
					if(auditStatus != PerformanceTargetsAudit.STATUS_4) {//结束
						List<PerformanceTargetsAudit> performanceTargetsAudits4 = iPerformanceTargetsAuditService.findPerformanceTargetsAuditsByStatus(id, auditStatus+1);
						List<PerformanceTargetsAudit> performanceTargetsAudits5 = new ArrayList<>();
						for(PerformanceTargetsAudit performanceTargetsAudit: performanceTargetsAudits4) {
							performanceTargetsAudit.setRunStatus(PerformanceTargetsAudit.RUN_STATUS_1);//启动
							performanceTargetsAudits5.add(performanceTargetsAudit);
						}
						iPerformanceTargetsAuditService.update(performanceTargetsAudits5);
					}
					mainReport.setAuditStatus(auditStatus+1);
					break;
				case 2://退回
					//保存审核结果
					List<PerformanceTargetsAudit> performanceTargetsAudits6 = iPerformanceTargetsAuditService.findPerformanceTargetsAuditsByHandle(id, currentUser.getId());
					if(performanceTargetsAudits6.size() > 0) {
						PerformanceTargetsAudit performanceTargetsAudit = performanceTargetsAudits6.get(0);
						performanceTargetsAudit.setTemp1(status);
						performanceTargetsAudit.setCreateTime(new Date());
						iPerformanceTargetsAuditService.update(performanceTargetsAudits6);
					}
					//更改为重新填报
					mainReport.setAuditStatus(PerformanceTargetsMainReport.STATUS_6);
					mainReport.setReportStatus("0");
					
					//所以审核节点结束
					List<PerformanceTargetsAudit> performanceTargetsAudits7 = iPerformanceTargetsAuditService.findPerformanceTargetsAuditsByPerformance(id);
					List<PerformanceTargetsAudit> performanceTargetsAudits8 = new ArrayList<>();
					for(PerformanceTargetsAudit performanceTargetsAudit: performanceTargetsAudits7) {
						performanceTargetsAudit.setRunStatus(PerformanceTargetsAudit.RUN_STATUS_2);//结束
						performanceTargetsAudits8.add(performanceTargetsAudit);
					}
					iPerformanceTargetsAuditService.update(performanceTargetsAudits8);
					break;
				default:
					break;
				}
				iPerformanceTargetsMainReportService.update(mainReport);
			}
			
		} catch (Exception e) {
			resultJson.setSuccess(false);
			resultJson.setMsg("提交失败,请联系管理员!");
			e.printStackTrace();
		}
		resultJson.setMsg("提交成功!");
		return resultJson;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值