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

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

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

实体:
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;
	}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鱼骨工作平台是专业的企业高效工作平台软件。软件主要针对的是企业工作交,形成企业群,部门群等。软件支持绩效考核、鱼骨CRM、、企业微信、移动考勤等功能,所有数据全平台共享。还支持移动端随身携带,信息即时处理。取代内部邮件,充分发挥团队的智慧和力量;随时随地写日报、周报、月报、季报,任务数据为基础参考;移动打卡、假期申请、出勤统计等辅助功能。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常企业工作交功能,真正做到简单全面实用。是用户实现企业工作交功能的好帮手。 鱼骨工作平台功能 -任务协作:每个员工的工作待办列表,方便快捷的任务多人协作。上级可以随时分派,查看和指导下属的工作,确保工作进度和质量。取代内部邮件,充分发挥团队的智慧和力量! -工作总结:随时随地写日报、周报、月报、季报,任务数据为基础参考。 -绩效考核:支持预设目标的kpi考核和无预设目标的考核流程,以任务为依据的量化考核更加客观公正。 -项目:协同甘特图,更好的管理项目进度,分派任务。 -鱼骨CRM:外勤签到,客户管理,扫名片,全员营销。 -财务审批:拍发票,方便的费用记账,流程设置,报销审批。 -移动考勤:移动打卡、假期申请、出勤统计。 -文档中心:公司文档、私人文档云端存储,随时随地调用。 -企业微信:适合工作沟通的消息已读未读功能,动态企业群,部门群。工作上的事用鱼骨,用鱼骨只谈工作上的事。 -多平台:支持电脑端及手机端。 使用鱼骨,将您企业的工作升级到执行力模式! 鱼骨工作平台 v1.5.8.8356 更新日志 1.修复部分Bug 鱼骨工作平台截图
JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(Online Coding->代码生成器->手工MERGE智能开发),可以帮助解决Java项目90%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 JEECG宗旨是:简单功能由代Online Coding配置出功能;复杂功能由代码生成器生成进行手工Merge;复杂流程业务采用表单自定义,业务流程使用工作实现、扩展出任务接口,供开发编写业务逻辑。实现流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。 JEECG功能特点: 1、采用SpringMVC+Hibernate+Minidao(类Mybatis)+Easyui(UI库)+Jquery+Boostrap+Ehcache+Redis+Ztree+Vue+Boostrap-table+ElementUI等基础架构 2、采用面向声明的开发模式,基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高8倍以上,可以将代码减少90%以上。 3、JEECGV4.0,经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度 4、支持多种浏览器:IE,火狐,Google等 5、支持数据库:Mysql,Oracle,Postgre,SqlServer等 6、基础权限:用户,角色,菜单权限,按钮权限,数据权限 7、智能报表集成:简易的图像报表工具和Excel导入导出 8、Web容器测试通过的有Jetty和Tomcat,Weblogic 9、亮点功能:分布式部署,云平台,移动平台开发,规则引擎 10、要求JDK1.6+ JEECG技术点总结: 技术点一:代码生成器SPA单页面应用快速生成,采用VUE+ElementUI打造酷炫效果 技术点二:新一代代码生成器更灵活的代码生成器工厂,可灵活自定义生成的代码文件名称、路径等;根据模板结构生成代码文件 技术点三:新一代代码生成器支持Vue+ElementUI风格,Bootstrap表单+EasyUI原生态列表风格,ElementUI表单+EasyUI原生态列表风格 技术点四:Dategrid标签多列表风格快速切换,给用户提供多种选择 技术点五:Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) 技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用 技术点七:UI快速开发库,针对WEBUI进行标准封装,页面统一采用UI标签实现功能:数据datagrid,表单校验,Popup,Tab等,实现JSP页面零JS,开发维护非常高效 技术点八:在线流程定义,采用开源Activiti流程引擎,实现在线画流程,自定义表单,表单挂接,业务转,流程监控,流程跟踪,流程委托等 技术点九:自定义表单,支持用户自定义表单布局,支持单表、列表、Select\Radio\Checkbox\PopUP\Date等特殊控件 技术点十:查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询) 技术点十一:移动平台支持,对Bootstrap(兼容Html5)进行标准封装 技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表) 技术点十三:数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段) 技术点十四:国际化(支持多语言,国际化的封装为多语言做了便捷支持) 技术点十五:多数据源(在线配置数据源,数据源工作类封装) 技术点十六:多种首页风格切换,支持自定义首页风格。(经典风格、Shortcut风格、ACEbootstrap风格、云桌面风格) 技术点十七:在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表) 技术点十八:简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能 技术点十九:移动OA,移动OA审批功能,采用H5技术,实现手机移动办公,无缝对接微信、钉钉、微信企业号、也可以做APP 技术点二十:移动图表,在线配置移动报表,采用H5技术,可以手机端查看 技术点二十一:插件开发,业务功能组件以插件方式集成平台,也可以单独部署发发布,有力支撑了SAAS云应用系统需求 技术点二十二:专业接口对接机制,统一采用restful接口方式,集成
授权方式: 开源软件 界面语言: 简体中文 文件大小: 45.6 MB 更新时间: 2020-08-12 资源类型: 国产软件 推荐等级: ★★★☆☆ 平台环境: JAVA 作者主页: 点击查看 演示地址: 点击查看 详细介绍 – [ JEECG快速开发平台 v4.0 ] JEECG (J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式(Online Coding->代码生成器->手工MERGE智能开发),可以帮助解决Java项目90%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 JEECG宗旨是:简单功能由代Online Coding配置出功能;复杂功能由代码生成器生成进行手工Merge;复杂流程业务采用表单自定义,业务流程使用工作实现、扩展出任务接口,供开发编写业务逻辑。实现流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。 JEECG功能特点 1、采用SpringMVC+Hibernate+Minidao(类Mybatis)+Easyui(UI库)+Jquery+Boostrap+Ehcache+Redis+Ztree+Vue+Boostrap-table+ElementUI等基础架构 2、采用面向声明的开发模式,基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高8倍以上,可以将代码减少90%以上。 3、JEECGV4.0,经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度 4、支持多种浏览器:IE,火狐,Google等 5、支持数据库:Mysql,Oracle,Postgre,SqlServer等 6、基础权限:用户,角色,菜单权限,按钮权限,数据权限 7、智能报表集成:简易的图像报表工具和Excel导入导出 8、Web容器测试通过的有Jetty和Tomcat,Weblogic 9、亮点功能:分布式部署,云平台,移动平台开发,规则引擎 10、要求JDK1.6+ JEECG技术点总结 技术点一:代码生成器SPA单页面应用快速生成,采用VUE+ElementUI打造酷炫效果 技术点二:新一代代码生成器更灵活的代码生成器工厂,可灵活自定义生成的代码文件名称、路径等;根据模板结构生成代码文件 技术点三:新一代代码生成器支持Vue+ElementUI风格,Bootstrap表单+EasyUI原生态列表风格,ElementUI表单+EasyUI原生态列表风格 技术点四:Dategrid标签多列表风格快速切换,给用户提供多种选择 技术点五:Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) 技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用 技术点七:UI快速开发库,针对WEBUI进行标准封装,页面统一采用UI标签实现功能:数据datagrid,表单校验,Popup,Tab等,实现JSP页面零JS,开发维护非常高效 技术点八:在线流程定义,采用开源Activiti流程引擎,实现在线画流程,自定义表单,表单挂接,业务转,流程监控,流程跟踪,流程委托等 技术点九:自定义表单,支持用户自定义表单布局,支持单表、列表、Select\\Radio\\Checkbox\\PopUP\\Date等特殊控件 技术点十:查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询) 技术点十一:移动平台支持,对Bootstrap(兼容Html5)进行标准封装 技术点十二:动态报表功能(用户输入一个sql,系统自动解析生成报表) 技术点十三:数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段) 技术点十四:国际化(支持多语言,国际化的封装为多语言做了便捷支持) 技术点十五:多数据源(在线配置数据源,数据源工作类封装) 技术点十六:多种首页风格切换,支持自定义首页风格。(经典风格、Shortcut风格、ACEbootstrap风格、云桌面风格) 技术点十七:在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表) 技术点十八:简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能 技术点十九:移动OA,移动OA审批功能,采用H5技术,实现手机移动办公,无缝对接微信、钉钉、微信企业号
协达P6是中国唯一一套符合“全程电子商务”协同管理应用要求的软件,通过六大Portal 门户整合信息化的核心应用,从而帮助用户构建智慧型组织,以加强团队建设和提升管理执行力。提供全面集成的信息化全程应用功能,包括:OA办公、BPM流程、KM知识、CRM客户、HR人事、PM项目、ERP资源计划。 协达软件获中国电子商务协会CECA软件评比“功能和性能双项第一”和“产品美誉度第一”,被认为是电子商务时代最佳的管理软件产品,被赛迪、新浪的机构和媒体广泛地评价为产品竞争力第一。由于国内多家知名上市软件公司采用协达产品和技术,和开创了国内流程型协同软件的应用先河,同时产品思想入编国家重点大学示范教材,协达成为国内协同软件的领军产品。 协达P6功能: 协达P6的6大Portal 的主要功能:桌面门户(Desktop portal )、信息门户(Information portal )、个人门户(My portal )、知识门户(Km portal )、办公门户( Office portal )、行政门户(Public portal); 协达P6流程管理的主要功能:事务审批、事务类型、图型工作流程监控、流程归档 协达P6的4大业务管理功能:客户管理、人事管理、项目管理、ERP管理 协达P6特点: 协达P6充分吸取了协达大量成熟用户的应用经验,提炼出最为普及的应用功能,在功能上具有以下五大特点: 1. 功能最实用 本软件从“实用”角度出发,总结提炼了普通用户在“组织行为管理”方面的协同应用需求,传承了协达SOA面向服务架构的软件思想,提供了最为“实用”的协同办公和协同商务、协同政务完整功能。 本软件立足“实用”提供的完整协同办公功能包括:门户桌面、信息中心、个人办公、文档管理、部门办公、办公用品管理、调查管理、知识管理、会议管理、车辆管理,以及“动态表单”和“图型工作功能,共分为“迷你、基础、精华、标准”四个协同办公应用包。 本软件的协同商务功能包括了应用最为广泛的客户管理、人事管理、项目管理三大部分,协同政务主要是公文处理、行政审批、信息门户等应用方案。 2. 操作最便捷 本软件将少数超大型集团用户,和个别特殊用户适用的功能,全部删减,以保证操作的畅与便捷。本软件的目标是:用户无须专业培训,会操作电脑即会操作本软件。 3. 结构最紧凑 本软件力图聚焦最常用的模块和最常用的功能,让用户用最低的成本、最快的速度,应用好最为普及的应用功能。在功能设计时避免功能的盲目扩散,以免造成用户应用中心偏离。 在协同办公上,软件功能紧紧围绕着“门户、流程、知识”三大核心,以加强组织成员执行工作的主观能动性和客观约束性。在协同商务上,软件功能围绕在WEB商务应用最普遍的“客户、人事、项目”三个部分。 4. 维护最简单 本软件采用了当今WEB程序上的应用最广、维护成本最低的“黄金搭配”:最为成熟的WEB开发语言ASP、装机量最大的SQL Server 数据库、应用最为广泛的MS 操作系统和IIS服务器。这一技术组合,也是当今装机量最高的WEB应用程序结构。成熟和行的技术,以及通用的运行支撑环境,使本软件的维护最为简单。 5. 性能最集成 本软件从服务端到客户端,全部采用统一的微软技术体系,不存在性能的集成和适配性问题,程序可直接启用微软的目录结构管理等操作系统功能。服务端的“操作系统、WEB服务器IIS、SQL Server数据库”三大网络服务支撑**台完美集成,与“IE浏览器、Office办公套件、CMD命令解释程序”等客户端操作程序连成一体,实现从技术到应用的无缝集成。 演示地址: http://www.ctop.cn/p6/demo 账号:admin 密码:111

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值