zoukankan      html  css  js  c++  java
  • 工作流的大体流程

    要出现下面的图片效果:

    登录页

     <form action="appuser/serach.do" method="post">
    	     <table>
    	     		<tr>
    	     			<td>用户名</td>
    	     			<td><input type="text" name="username"/></td>
    	     		</tr>
    	     		
    	     		<tr>
    	     			<td>密码</td>
    	     			<td><input name="password" type="password"/></td>
    	     		</tr>
    	     		
    	     		<tr>
    	     			<td><input type="submit" value="登陆" /></td>
    	     			
    	     		</tr>
    	     
    	     
    	     
    	     
    	     
    	     </table>
    			
    	
    	
    	</form> 
    
    </body>
    

    流程显示页面

    <head>
    <%
    	String ctx = request.getContextPath();
    %>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>流程操作页</title>
    <script type="text/javascript" src="<%=ctx%>/js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="<%=ctx%>/js/flow.js"></script>
    </head>
    <body>
        <h3>欢迎登陆,${currentuser.realname }</h3>
        
        <h3>发起流程</h3>
        
        <table>
    		<tr>
    			<td>
    				<select id="fid">
    					<c:forEach items="${flist }" var="f">
    						<option value="${f.ids }">${f.fname }</option>
    					</c:forEach>
    				</select>
    			</td>
    		</tr>
    		<tr>
    			<td>
    				<textarea id="content"
    					style=" 300px; height: 100px; resize: none;"></textarea>
    			</td>
    		</tr>
    		<tr>
    			<td><input type="button" id="btn_stflow" value="发起流程" /></td>
    		</tr>
    	</table>
    
    	<h3>审批流程</h3>
    	<!-- 这一步的思想是,要把flowrun这个表和flowk运行表进行联合查询,谁登陆的谁就开始审批自己的流程-->
    	
    	<c:if test="${currentuser.username eq 'admin' }">  <!-- 只有超级管理员才可以进行流程的创建 -->
    	
    	<h3>创建流程</h3> 
    	<!-- 这一步需要做的是把新建的流程放进flow流程表里面,同时也要把流程放进flowtemp模板表里面 -->
    	<c:forEach items="${ulist }" var="list" >
    	    <input type="checkbox" class="uids" value="${list.ids }"/>${list.realname }
    	    
    	</c:forEach>
    	<br>
    	     流程名称:<input type="text" id="fname"/>
    	     <input type="button" id="btn_cfw" value="创建流程"/>
    	</c:if>
        
    
    </body>
    

    FlowController

    @Controller
    @RequestMapping("/flow")
    public class FlowController {
          @Autowired
          private FlowService flowService;
          
          @ResponseBody
          @RequestMapping("/createflow")
          public String  createFlow(String suids,String fname) {  //先添加流程表
    		  JSONObject jo = new JSONObject();
    		  boolean result = flowService.cretateFlow(suids, fname);
    		  jo.put("success", result);
        	  
        	  return jo.toJSONString();
        	  
          }
          
    }
    

     FlowkController

    @Controller
    @RequestMapping("/flowk")
    public class FlowkController {
    	   	@Autowired
    	   	private FlowkService flowService;
    	 
    	 @ResponseBody  //ajax提交的时候需要用到的注解
    	 @RequestMapping("/startflow")
    	 public String startFlow(HttpSession session,Integer fid,String content) {  //发起流程
    		 JSONObject jo = new JSONObject();
    		 Appuser ap = (Appuser) session.getAttribute("currentuser");
    		 System.out.println(fid);
    		 System.out.println(content);
    		 System.out.println(ap);
    		if(ap == null) {
    			  jo.put("success", false);
    			  return jo.toJSONString();
    		}
    		boolean flag = flowService.startFlow(ap, fid, content);
    		
    		 jo.put("success", flag);
    		 return jo.toJSONString();
    		   
    	 }
    }
    

    AppuserController

    @Controller    //Spring MVC 控制器
    //@SessionAttributes("infolist")  //将当前controller类中某一个Model类中的属性添加到session对象中
    @SessionAttributes("currentuser")
    @RequestMapping("/appuser")	
    public class AppuserController {  //注册
    
    
                @Autowired
    	private AppuserService appUserService;
    	
    	@Autowired
    	private FlowService flowService;
    
    
        //工作流的开始
    	@RequestMapping("/serach")
    	public String selectByid(Appuser ap,Model md) { 
    		//根据用户名和密码查询用来验证登陆的
    		if (ap != null) {
    			Appuser au = appUserService.selectName(ap);
    			md.addAttribute("currentuser",au);
    			if("admin".equals(au.getUsername())) { //只有超级管理员才可以查询用户表内容
    				List<Appuser> list = appUserService.selectAll(); //查询所有的用户表的内容
    				md.addAttribute("ulist", list);
    			}
    			List<Flow> list = flowService.selectAllflow(); //查找全部的流程
    			md.addAttribute("flist",list);
    		}else {
    			
    			return "fail";
    		}
    		return "page/flow/main";
    		  	
    	}
    	
    }
    

    flow.js

    $(function(){
    	
    	//发起流程
    	$("#btn_stflow").click(function(){
    		   var fid = $("#fid").val(); //获取的流程表主键
    		   var content = $("#content").val(); //获取的请假内容
    		   $.ajax({
    			   dataType:"json",
    				  type:"post",
    				  url:"/testssm/flowk/startflow.do",  //testssm是项目名
    				  data:{
    					  fid:fid,
    					  content:content
    				  },
    				  success:function(data){
    					  if (data.success) {
    						  alert("发起流程成功!");
    					}else{
    						alert("后台异常!");
    					}
    				  },
    				  error:function(){
    					   alert("出错了!");
    				  }
    		   });
    		   
    	});
    	 
    	//创建流程
    	$("#btn_cfw").click(function(){
    		  var fname = $("#fname").val();
    		  var suids = "";
    		  var uids = $(".uids:checked");  //用户表的主键被选中的话
    		  for (var i = 0; i < uids.length; i++) {
    			    suids += uids.eq(i).val();
    			   if (i != uids.length - 1) {
    				  suids += ",";
    			}
    		}
    		 
    		  $.ajax({
    			  dataType:"json",
    			  type:"post",
    			  url:"/testssm/flow/createflow.do",
    			  data:{
    				  fname:fname,
    				  suids:suids
    			  },
    			  success:function(data){
    				  if (data.success) {
    					  alert("创建流程成功!");
    				}else{
    					alert("后台异常!");
    				}
    			  },
    			  error:function(){
    				   alert("出错了!");
    			  }
    			  
    		  });
    	});
    });
    

    FlowkServiceImpl

    @Repository
    public class FlowkServiceImpl implements FlowkService {
    		@Autowired
    		private FlowkMapper  flowkMapper;
    		
    		@Autowired
    		private FlowrunMapper flowrunMapper;
    
    		@Override
    		public boolean startFlow(Appuser ap,Integer fid,String content) {
    			 	//添加流程主表flowk表的内容
    				Flowk fw = new Flowk();
    				fw.setTitle(content);  //前台文本域输入的内容
    				fw.setBeuser(ap.getIds()); //发起人,获取的是用户表里面的主键
    				fw.setCtime(new Date()); //直接用当前时间即可
    				fw.setFid(fid);  //获取的是流程表里面的主键
    				fw.setIsover(0);  //是否结束的话,设为0,为已结束
    				fw.setTowhere(1);  //下一步审批人先设为1
    				int re_fint = flowkMapper.insert(fw); 
    			
    				//添加流程运行表flowrun的内容
    				int i = flowrunMapper.insertrun(fw.getIds(),fid);
    				
    				//判断是否添加成功
    				if(re_fint > 0&& i > 0) {
    					  return true;
    				}
    				return false;
    		}
    

    FlowServiceImpl

    @Repository
    public class FlowServiceImpl implements FlowService {
             @Autowired
             private FlowMapper flowMapper;
             
             @Autowired
             private FlowtempMapper flowTempMapper;
    	@Override
    	public boolean cretateFlow(String suids, String fname) {  //创建流程
    		 //实例化流程表对象
    		Flow flow =  new Flow();
    		flow.setFname(fname);  //把前台传过来的名字设置好
    		//创建新的流程
    		int re_flow = flowMapper.insert(flow);
    		int fid = flow.getIds(); //获取流程表里面的主键
    		
    		//创建新流程对应的模板表
    		int re_flowtemp = 0;
    		String[] arr_suids = suids.split(","); //把主键分割成字符串数组
    		for(int i = 0; i < arr_suids.length; i++) {
    			  Flowtemp ft = new Flowtemp();
    			  ft.setFid(fid);//主键
    			  ft.setOrders(i+1); //序号
    			  ft.setTaialer(Integer.parseInt(arr_suids[i]));//设置的是审批人
    			  re_flowtemp += flowTempMapper.insert(ft);//为模板表添加数据
    		}
    		
    		//判断是否添加成功
    		if (re_flow > 0&& re_flowtemp > 0) {
    			     return true;
    		}
    		
    		return false;
    	}
    	@Override
    	public List<Flow> selectAllflow() { //查询全部流程
    		
    		return flowMapper.selectAllflow();
    	}
    
    }
    

    FlowMapper.xml

     <!-- 查询全部的流程 -->
      
      <select id="selectAllflow" resultMap="BaseResultMap">
      		select 
        <include refid="Base_Column_List" />
        from HAHA.FLOW
      </select>
      
      <!-- 为流程表添加数据 -->
      <insert id="insert" parameterType="com.hanqi.model.Flow"
      keyColumn="IDS" keyProperty="ids" useGeneratedKeys="true"><!-- 为了获取流程表里面的主键 -->
        insert into HAHA.FLOW (IDS, FNAME)
        values (sq_test.nextval, #{fname,jdbcType=VARCHAR})
      </insert>
    

    FlowrunMapper.xml

     <!-- 插入数据 -->
      <insert id="insertrun">
      		INSERT INTO flowrun (IDS, FWID, ORDERS, TRIALER)
      		SELECT sq_test.nextval 主键,#{param1} flowk表的主键,
    ft.orders 序号,ft.taialer 审批人 FROM flowtemp ft 
    WHERE ft.fid = #{param2}
      
      </insert>
    

     AppuserMapper.xml

     <!-- 根据用户名和密码查询,用来验证登陆 -->
      
      <select id="selectName" parameterType="com.hanqi.model.Appuser" resultMap="BaseResultMap">
      		select
      		<include refid="Base_Column_List" />
      		from appuser a
      		where a.username = #{username} and 
      		a.password = #{password}
      
      </select>
      
      <!-- 查询全部用户信息 -->
      
      <select id="selectAll" resultMap="BaseResultMap">
            select
      		<include refid="Base_Column_List" />
      		from appuser 
      
      </select>
    

     FlowkMapper.xml

     <!-- 插入数据 -->
      <insert id="insert" parameterType="com.hanqi.model.Flowk" useGeneratedKeys="true" 
      keyColumn="IDS" keyProperty="ids">  <!-- 获取添加的数据后里面的主键 -->
        insert into HAHA.FLOWK (IDS, CTIME, TITLE, 
          BEUSER, TOWHERE, ENDTIME, 
          ISOVER, FID)
        values (sq_test.nextval, #{ctime,jdbcType=TIMESTAMP}, #{title,jdbcType=VARCHAR}, 
          #{beuser,jdbcType=VARCHAR}, #{towhere,jdbcType=DECIMAL}, #{endtime,jdbcType=TIMESTAMP}, 
          #{isover,jdbcType=DECIMAL}, #{fid,jdbcType=DECIMAL})
      </insert>
    
  • 相关阅读:
    文件传输基础——Java IO流
    Oracle数据库之PL/SQL基础
    Oracle数据库之SQL基础(二)
    Oracle数据库之SQL基础(一)
    jQuery基础修炼圣典—DOM篇(二)jQuery遍历
    jQuery基础修炼圣典—DOM篇(一)
    Java静态代码分析工具——FindBugs插件的安装与使用
    javascript:void(0)和javascript:;的用法
    MySQL之数据类型与操作数据表
    Java数据库连接——JDBC调用存储过程,事务管理和高级应用
  • 原文地址:https://www.cnblogs.com/zuo72/p/8521466.html
Copyright © 2011-2022 走看看