savesurvey.jsp 9.98 KB
<%@ page language="java" contentType="application/json;charset=UTF-8" %>
<%@ page import="weaver.general.*"%>
<%@ page import="weaver.systeminfo.setting.HrmUserSettingComInfo" %>
<%@ page import="weaver.hrm.*,weaver.conn.*,org.json.*,java.math.*,java.text.*"%>
<%@ page import="java.sql.Timestamp"%>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.*" %>
<jsp:useBean id="RecordSetTrans" class="weaver.conn.RecordSetTrans" scope="page" />
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="rs2" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="rsBelong" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="VotingManager" class="weaver.voting.VotingManager" scope="page" />	
<%
User user = HrmUserVarify.getUser (request , response) ;
if(user == null)  return ;
out.clearBuffer();

char flag=Util.getSeparator();
int userid=user.getUID();
request.setCharacterEncoding("UTF-8");

//调查id
String votingid=request.getParameter("votingid");

//用户不一致,防止session覆盖
String formUserid = Util.null2String(request.getParameter("formUserid"));
if(!formUserid.equals(Util.null2String(userid))){
	out.println("{\"success\":\"-3\"}");
    return;
}


SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
//操作日期
String opdate=format.format(new Date());
format=new SimpleDateFormat("HH:mm:ss");
//操作时间
String optime=format.format(new Date());

String sql="";
List<String>  sqls=new ArrayList<String>();

//是否匿名操作
String annony=Util.null2String(request.getParameter("useranony"));
if("".equals(annony)){
	annony="0";	
}


HrmUserSettingComInfo userSetting=new HrmUserSettingComInfo();
String belongtoshow = userSetting.getBelongtoshowByUserId(userid+""); 
String belongtoids = user.getBelongtoids();
String account_type = user.getAccount_type();

//获取主次账号
String votingshareids=""+user.getUID();
if(belongtoshow.equals("1") && account_type.equals("0") && !belongtoids.equals("")){
	votingshareids +=","+belongtoids;	
}


//获取参与人
Set hasPollRightUserSet=VotingManager.getHasPollRightUserSet(votingid);

//获取参与范围内的主次账号及权限
String realUserids="";
boolean hasPollRight=false;
String[] votingshareidsArr=votingshareids.split(",");
for(int i=0; i<votingshareidsArr.length; i++){
	if(hasPollRightUserSet.contains(votingshareidsArr[i])){
		hasPollRight=true;
		realUserids += ","+votingshareidsArr[i];
	}
}
if (!hasPollRight) {
	response.sendRedirect("/notice/noright.jsp");
	return;
}


//检查是否已经参与投票
realUserids = Util.TrimComma(realUserids);
List<String> listC = new ArrayList<String>();
rs.executeQuery("select distinct resourceid from votingremark where votingid=" + votingid + " and resourceid in (" + realUserids + ")");
while(rs.next()){
	String resourceidC = rs.getString("resourceid");
	listC.add(resourceidC);
}

//参与人范围的主次账号全部参与了投票
if(listC.size() == realUserids.split(",").length){
	//该用户已参与过投票
    out.println("{\"success\":\"-1\"}");
    return;
}

//当前账号已参与,获取第一个次账号
String useridC = userid+"";
if(listC.contains(userid+"")){
	String[] realUseridsArr = realUserids.split(",");
	useridC = realUseridsArr[0].equals(userid+"") ? realUseridsArr[1]:realUseridsArr[0];
}

//表单有什么就保存什么,不在和临时表比对,避免数据错乱
/*
rs.executeQuery("select r.*,q.questiontype from VotingResourceTemp r,VotingQuestion q where r.questionid=q.id and r.votingid=" + votingid + " and r.resourceid=" + user.getUID());
Map<String,List<Map<String,String>>> dataMap = new HashMap<String,List<Map<String,String>>>();
while(rs.next()){
	int questiontype = rs.getInt("questiontype");
	
	List<Map<String,String>> q_options = null;
	if(dataMap.get(rs.getString("questionid")) == null){
		q_options = new ArrayList<Map<String,String>>();
		dataMap.put(rs.getString("questionid"),q_options);
	}else{
		q_options = dataMap.get(rs.getString("questionid"));
	}
	
	Map<String,String> q_option = new HashMap<String,String>();
	q_options.add(q_option);
	if(questiontype == 0){
		q_option.put("optionid",Util.getIntValue(rs.getString("optionid"),-100) + "");
	}else if(questiontype == 1){
		q_option.put("optionid",rs.getString("optionid"));
	}else{
		q_option.put("optionid","-100");
	}
	
}
*/

Enumeration  paramnames=request.getParameterNames();
String paramname;
String paramitems[];
String questionid;
String questionchild;
String[] questionvalues;
String othername;
String othervalue;
while(paramnames.hasMoreElements()){
	paramname=(String)paramnames.nextElement();
	if(paramname.indexOf("q_")==0){
    	paramitems=paramname.split("_");
	    //选择题
    	if(paramitems.length==2){	 
    		//问题id
    		questionid=paramitems[1]; 	
    		//如果是多选
    		if(questionid.indexOf("[]")>=0){
    			questionid=questionid.substring(0,questionid.indexOf("[]"));
    		}
    		questionvalues=request.getParameterValues(paramname);
    		for(String optionid:questionvalues){
    			 //其它选项
    			 if("-100".equals(optionid)){
    				 othername="qother_"+questionid;
    				 othervalue=Util.null2String(request.getParameter(othername));
				 	 othervalue = othervalue.replace("'","''");
    				 sql="insert into VotingResourceRemark(votingid,questionid,resourceid,useranony,otherinput,operatedate,operatetime) values('"+votingid+"','"+questionid+"','"+useridC+"','"+annony+"','"+othervalue+"','"+opdate+"','"+optime+"')";
    	    	 }else{
    	    		 sql="insert into VotingResource(votingid,questionid,optionid,resourceid,operatedate,operatetime) values('"+votingid+"','"+questionid+"','"+optionid+"','"+useridC+"','"+opdate+"','"+optime+"')";
    			 }
	    		 sqls.add(sql);
    		}
    	//组合选择	
	    }else if(paramitems.length==3){
	    	questionid=paramitems[1];
	    	questionchild=paramitems[2];
	    	//如果是多选
    		if(questionchild.indexOf("[]")>=0){
    			questionchild=questionchild.substring(0,questionchild.indexOf("[]"));
    		}
	    	questionvalues=request.getParameterValues(paramname);
    		for(String optionid:questionvalues){
	    		sql="insert into VotingResource(votingid,questionid,optionid,resourceid,operatedate,operatetime) values('"+votingid+"','"+questionid+"','"+questionchild+"_"+optionid+"','"+useridC+"','"+opdate+"','"+optime+"')";
	    		sqls.add(sql);
    		}
	    }
	}
}


sql="insert into VotingRemark(votingid,resourceid,useranony,operatedate,operatetime) values('"+votingid+"','"+useridC+"','"+annony+"','"+opdate+"','"+optime+"')";
sqls.add(sql);

/*
sql = "insert into VotingResource(votingid,questionid,optionid,resourceid,operatedate,operatetime) " +
	" select votingid,questionid,optionid,"+useridC+",operatedate,operatetime from VotingResourceTemp " +
	" where votingid=" + votingid + " and resourceid=" + userid + " and optionid is not null and optionid!='-100'";
sqls.add(sql);

sql = "insert into VotingResourceRemark(votingid,questionid,resourceid,useranony,otherinput,operatedate,operatetime) " +
	" select votingid,questionid,"+useridC+",'" + annony + "',remark,operatedate,operatetime from VotingResourceTemp " +
	" where votingid=" + votingid + " and resourceid=" + userid + " and (optionid is null or optionid='-100')";
sqls.add(sql);
*/

try{
	for(String sqlitem:sqls){
		
		rs2.executeUpdate(sqlitem);
	}
	
	Thread.sleep(1000l);
	
	/*
	rs.executeQuery("select count(1) num from VotingResourceTemp where votingid=" + votingid + " and resourceid=" + user.getUID());
	rs.next();
	int totalNum = rs.getInt(1);
	
	if(totalNum > 0){
		Thread.sleep(500l);
		for(int i = 0 ;i < 5;i++){
			rs.executeQuery("select sum(num) num from(" +
					"select count(1) num from VotingResource where votingid=" + votingid + " and resourceid=" + useridC +
					" union select count(1) num from VotingResourceRemark where votingid=" + votingid + " and resourceid=" + useridC +
					") t");
			int totalNum2 = 0;
			if(rs.next()){
				totalNum2 = rs.getInt(1);
			}
			if(totalNum2 > 0){
				break;	
			}
			Thread.sleep(1000l);
		}
	}
	*/

	//插入次账号
    if(belongtoshow.equals("1") && account_type.equals("0") && !realUserids.equals("")){
		String[] belongtoidarr = Util.TokenizerString2(realUserids, ",");
		rsBelong.executeQuery("select resourceid from VotingRemark where votingid="+ votingid + " and resourceid in("+realUserids+")");
		Map<String,String> doUserSet = new HashMap<String,String>();
		while(rsBelong.next()){
			doUserSet.put(rsBelong.getString("resourceid"),"1");
		}
		
		for(int i=0;i<belongtoidarr.length;i++){
			if(doUserSet.get(belongtoidarr[i]) == null){
				rsBelong.executeUpdate(" insert into VotingRemark(votingid,resourceid,useranony,remark,operatedate,operatetime) select      votingid,"+belongtoidarr[i]+",useranony,remark,operatedate,operatetime from VotingRemark where resourceid="+useridC+" and votingid="+votingid+" and operatetime ='"+optime+"' and operatedate='"+opdate+"'");
		    	rsBelong.executeUpdate(" insert into VotingResource(votingid,questionid,optionid,resourceid,operatedate,operatetime) select   votingid,questionid,optionid,'"+belongtoidarr[i]+"',operatedate,operatetime from VotingResource where resourceid="+useridC+" and votingid="+votingid);
		    	rsBelong.executeUpdate(" insert into VotingResourceRemark (votingid,questionid,resourceid,useranony,otherinput,operatedate,operatetime) select votingid,questionid,'"+belongtoidarr[i]+"',useranony,otherinput,operatedate,operatetime from VotingResourceRemark where resourceid="+useridC+" and votingid="+votingid);
			}
		}
		
		/*
		if(!hasPollRightUserSet.contains(useridC)){
			rsBelong.executeUpdate("delete from VotingRemark where resourceid ="+useridC+" and votingid=" + votingid);
		    rsBelong.executeUpdate("delete from VotingResource where resourceid ="+useridC+" and votingid=" + votingid);
		    rsBelong.executeUpdate("delete from VotingResourceRemark where resourceid ="+useridC+" and votingid=" + votingid);
		}
		*/
	}
	
	//清理临时表
	rs.executeUpdate("delete from VotingResourceTemp where resourceid ="+userid+" and votingid=" + votingid);
	out.println("{\"success\":\"1\"}");
}catch(Exception e){
	out.println("{\"success\":\"0\"}");
}



%>