人力资源excel导入

原创 2012年03月28日 22:09:51
package hr.file;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.* ;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.regex.Pattern;
import include.riyi_cookie.GetWorkflow;
import include.riyi_db.riyi_db_backup1;
import validata.ValidataNumber;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
/**
 * 人力资源档案登记Excel文件导入
 * @author 谭飞
 */
public class RegisterExcelLoad extends HttpServlet{
	private static final long serialVersionUID = 1L;
	
	@SuppressWarnings({"unchecked","deprecation"})
	public synchronized void service(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
		//预处理信息
		HttpSession session = request.getSession();
		ServletContext dbApplication = session.getServletContext();
		response.setContentType("text/html;charset=UTF-8");
		request.setCharacterEncoding("UTF-8");
		response.setHeader("Cache-Control", "no-cache");
        riyi_db_backup1 hr_db = new riyi_db_backup1(dbApplication);
    	ServletContext context=session.getServletContext();
		String path=context.getRealPath("/");
		String file_name=request.getParameter("file");//excel文件名
		String excel_path = path+"hr/excel_files/"+file_name;//excel完整路径
    	try{
    		if(hr_db.conn((String)session.getAttribute("unit_db_name"))){
				HSSFRow rowdown = null;//导出序列号的变量
				HSSFCell celldown = null; 
				String xml_path = "hr⊙人力资源";//hr⊙人力资源		
				String xml_path_name = xml_path.split("⊙")[0];
				ValidataNumber validata= new ValidataNumber();//数字验证
				include.operateXML.Reading mask = new include.operateXML.Reading("xml/" + xml_path_name + "/hr_file_excel.xml");
				Vector nicks = mask.getColumnAttributes("nick");//中文 名
				Vector names = mask.getColumnAttributes("name");//字段名
				Vector requireds = mask.getColumnAttributes("required");//是否为空配置
				Vector types = mask.getColumnAttributes("type");//字段类型配置(字符,数值等)
				Vector services= mask.getColumnAttributes("service");//字段类型配置(字符,数值等)
				List excel_index = new ArrayList();//列名,和相关配置信息集合
				int xinxi=0;//错误信息提示
				List err_list = new ArrayList();//记录导入数据错误信息集合
				String err_list1 = "";//字段错误信息集合
				List<Integer> hang = new ArrayList<Integer>();//错误数据集合,提供下载
				Date now = new Date();
				SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
				SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String datetime = formatter1.format(now);
				String time = formatter.format(now);
				int fai_count = 0;
			    int suc_count=0;
				
				//只能是数字和字母
				Pattern rq = Pattern.compile("^(\\d{4}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}(\\s\\d{2}:\\d{2}:\\d{2})?$");
				Pattern sz=Pattern.compile("^[0-9]*$");
				InputStream is = new FileInputStream(excel_path);
				Workbook rwb = Workbook.getWorkbook(is);
				Sheet rs = rwb.getSheet(0);//获得第一个工作表对象
				int rows = rs.getRows();// 得总记录数 excel总行数
				int cols = rs.getColumns();//工作表里的列
				for(int i=0;i<1;i++)//循环excel行
				{
					for(int j=0;j<cols;j++)//循环excel列
					{
						Cell ctemp = rs.getCell(j,i);//列前行后
						String str = ctemp.getContents().trim().replace(" ","");//得到单元格内容
						for(int p=0;p<nicks.size();p++){
							String nick=(String)nicks.elementAt(p);
							if(nick.equals(str))//如果excel和xml字段中文匹配成功
							{ //字段名◎y◎中文名◎字符类型
						        excel_index.add((String)names.elementAt(p)+"◎"+(String)requireds.elementAt(p)+"◎"+str+"◎"+(String)types.elementAt(p)+"◎"+(String)services.elementAt(p));//把待插入的字段名放入数组中
						        break;
							}
						}
					}
				}
				if(cols!=excel_index.size()){
					xinxi=1;
				}else{
					int human_name_flag=0;
					int chain_name1_flag=0;
					for(int i=1;i<2;i++){//循环excel行,从数据行开始
						for(int j=0;j<excel_index.size();j++){//循环excel
							String zdm=((String)excel_index.get(j)).split("◎")[0];//导入字段名,仅用于判断编码是自定义产生
							if(zdm.equals("human_name")){
								human_name_flag=1;						
							}
							if(zdm.equals("chain_name1")){
								chain_name1_flag=1;
							}
						}
					}
					if(human_name_flag==0){
						err_list1+="模版有误:Excel模版的“姓名”列不存在!Ж";			
					}
					if(chain_name1_flag==0){
						err_list1+="模版有误:Excel模版的“部门名称一级”列不存在!Ж";
					}
			if(human_name_flag==1&&chain_name1_flag==1){
			  for(int i=1;i<rows;i++)//循环excel行,从数据行开始
				{//定义各个字段名 
				    String human_ID = "";					//档案编号
				    String human_name = "";					//姓名
				    String chainName = "" ;					//部门名称串
				    String human_address = "";				//住址
				    String human_title_class = "";			//职称
				    String human_major_first_kind_name="";	//职位分类
				    String sex = "";						//性别
				    String human_major_second_kind_name="";	//职位名称
				    String human_tel = "";					//电话
				    String human_postcode = "";				//邮编
				    String idcard = "";						//身份证号码
				    String human_cellphone = "";			//手机
				    String human_email = "";				//EMAIL
				    double Status_base = 1;					//岗位基数
				    String salary_standard_name = "";		//薪酬标准
				    double salary_sum = 0;					//薪水
				    String due_tryout = "";					//正式/试用
				    String term = "0";						//试用期限
				    String nationality = "";				//国籍
				    String birthplace = "";					//身份证所在地
				    String birthday = time;					//出生日期
				    String race = "";						//民族
				    String religion = "";					//宗教信仰
				    String party = "";						//政治面貌
				    String SIN = "";						//社会保障号码
				    String educated_degree = "";			//学历
				    String educated_years = "";				//教育年限
				    String educated_major = "";				//学历专业
				    String QQ = "";							//QQ
				    String human_bank = "";					//开户行
				    String human_account = "";				//帐号
				    String register = (String)session.getAttribute("realeditorc");//当前登陆人
				    String register_ID = (String)session.getAttribute("human_IDD");//当前登陆人ID
				    String hobby = "";						//爱好
				    String speciality = "";					//特长
				    String health = "";						//健康状况
				    String marriage = "";					//婚姻状况
				    String Graduated_from_institutions = "";//毕业院校
				    String candidate_status = "";			//应聘岗位
				    String labor_contract = "";				//劳动合同是否签定
				    String contract_datea = time;			//劳动合同开始日期
				    String contract_dateb = time;			//劳动合同结束日期
				    String to_time = time;					//入职时间
				    String register_time = datetime;		//建档时间
				    String history_records = "";			//个人履历
				    String family_membership = "";			//家庭关系信息
				    String experience = "";					//教育经历
				    String remark = "";						//备注
					String temp_date="";
					boolean action=true;					//单条记录有无错误标记
					String sql = ""; 						//插入操作SQL语句
					int hzb=i;
					for(int j=0;j<excel_index.size();j++){//循环excel列
					    int zzb=j;
						Cell ctemp = rs.getCell(zzb,hzb);//当前坐标
						String str = new String((ctemp.getContents()).getBytes("UTF-8"), "UTF-8").replaceAll("'","").replaceAll("\\s*'|\t|\"|\r|\n|\\u005C","");//得到单元格内容并进行相应格式的转换
						String zdm=((String)excel_index.get(j)).split("◎")[0];//导入字段名,仅用于判断编码是自定义产生
						String iskong=((String)excel_index.get(j)).split("◎")[1];//导入字段是否允许为空标记,y为不允许,n为允许
						String chinese=((String)excel_index.get(j)).split("◎")[2];//导入字段中文名,用于出错提示
						String zflx=((String)excel_index.get(j)).split("◎")[3];//导入字段的字符类型,用于验证导入数据类型是否和数据库中类型匹配
						str=str.trim().replace("Ж","");
						str=str.trim().replace("⊙","");
						str=str.trim().replace("ж","");
						str=str.trim().replace("Ё","");
						if(iskong.equals("y"))//如果要验证空字符,就验证
						{
							if(str.equals("")||str==null)
							{
								err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”不能为空!");
								action=false;
								continue ;
							}
						}
						if(zflx.equals("数值"))//如果配置的是数值类型,就要验证单元格内容是否为数值
						{
							if(str.equals("")==false)
							{
								if(!validata.validata(str))//如果不为数值
								{
									err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”必须是数字!");
									action=false;
									continue ;
								}
							}else
							{
								str="0";
							}
						}
					   //导入的是日期类型
						if(zflx.equals("日期")){
							if(str.equals("")==false){//不为空,要进行日期验证
								str=str.replaceAll("\\ ","");
								temp_date=str.trim();
								temp_date=temp_date.replaceAll(" ","");
								//开始第一位是非数字
								 if(sz.matcher(temp_date.substring(0,1)).matches()==false||temp_date.length()>10){
									 err_list.add("第"+(i+1)+"行数据的“"+chinese+"”日期格式不对");
									 action=false;
									 continue ;
								}else
								 {
									String year="";
									String temp_year="";
									String end_date_time="";
									String day_temp="";
									String succ="";//最终年月日
									String succ_year="";
									String succ_month="";
									String succ_day="";
									String date[]=null;
									int b=0;//次数的标志
								for(int a=0;a<temp_date.length();a++){
									if(sz.matcher(temp_date.substring(a,a+1)).matches()==true){
								        temp_year+=temp_date.substring(a,a+1);
								    }else{
								    	year=temp_year+"-";
								    	++b;
								    	if(b==1){
								    		int c=year.length();
								    		if(c==3||c==5){
								    		 year=temp_year+"-";	
								    		}
								    	}
								    	end_date_time+=year;
								    	temp_year="";
								    	continue;
								    }
									int year_month_leng=end_date_time.length();
									int date_length=temp_date.length();
									day_temp=temp_date.substring(year_month_leng,date_length);
								   }
								    succ=end_date_time+day_temp;
								    date=succ.split("-");
									succ_year=date[0];
									succ_month=date[1];
									  if(date.length>2){
									    	succ_day=date[2];
									    }
									int succ_year_len=succ_year.length();
									int succ_month_len=succ_month.length();
									int succ_day_len=succ_day.length();
									
									//年(加19还是20)
									int temp1_year=0;
									if(succ_year_len==2){
										temp1_year=Integer.parseInt(succ_year);
										if(temp1_year>49){
											succ_year="19"+succ_year;
										}else{
											succ_year="20"+succ_year;
										}
									}else if(succ_year_len!=2&&succ_year_len!=4){
										err_list.add("第"+(i+1)+"行数据的“"+chinese+"”日期格式年不对");
										action=false;
										continue ;
									}
									if(succ_month_len==1){
										succ_month="0"+succ_month;
									}else if(succ_month_len!=2){
										err_list.add("第"+(i+1)+"行数据的“"+chinese+"”日期格式月不对");
										action=false;
										continue ;
									}
									if(succ_day_len==1){
										succ_day="0"+succ_day;
									}else if(succ_day_len!=2){
										err_list.add("第"+(i+1)+"行数据的“"+chinese+"”日期格式日不对");
										action=false;
										continue ;
									}
									succ=succ_year+"-"+succ_month+"-"+succ_day;
								    if(rq.matcher(succ).matches()==false){
										err_list.add("第"+(i+1)+"行数据的“"+chinese+"”日期格式不对");
										action=false;
										continue ;
									 }
								     str=succ;
								}  															
							}else{
								str = time;
							}
						}
						//相应字段进行验证
						if(zdm.equals("human_ID")){//档案编号
							human_ID=str;
							 if(str.equals("")==false){
								    String sql2="select human_ID from hr_file where "+zdm+" in('"+str+"')";
									ResultSet rs2=hr_db.executeQuery(sql2);
									int cz=0;
									if(rs2.next()){
										cz=1;
									}
									if(cz==1){   //存在
										err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”已经存在,请输入其它档案编号再导入(建议不填入,则系统自动生成)!");
										action=false;
									}
							    }
							}
							if(zdm.equals("human_name")){//姓名
								 if(str!=""){
								    human_name = str;
							    }else{
							    	err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”不能为空,请重新输入后再导入!");
									action=false;
							    }
							}
							for(int t = 1; t <= 10; t++ ){ //部门名称
								if(zdm.equals("chain_name1")){
									if(str.equals("")||str==null){
										action = false ;
									}
								}
								if(zdm.equals(("chain_name")+t)){
									chainName += (str + "Ж") ;
								}
							}
							if(zdm.equals("human_address")){//住址
								if(!str.equals("")){
									human_address = str ;
								}
							}
							if(zdm.equals("human_title_class")){//职称
								human_title_class = str ;
								if(!str.equals("")){
									String sql_htc = "select human_title_class from hr_config_public where human_title_class='"+human_title_class+"'";
									ResultSet rset_htc = hr_db.executeQuery(sql_htc);
									if(!rset_htc.next()){
										String sql_update = "insert into hr_config_public(human_title_class)values('"+human_title_class+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("human_major_first_kind_name")){//职位分类
								human_major_first_kind_name = str ;
								if(!human_major_first_kind_name.equals("")){
									String sql_hmfkn = "select human_major_first_kind_name from hr_config_public where human_major_first_kind_name='"+human_major_first_kind_name+"'";
									ResultSet rset_hmfkn = hr_db.executeQuery(sql_hmfkn);
									
									if(!rset_hmfkn.next()){
										String sql_update = "insert into hr_config_public(human_major_first_kind_name)values('"+human_major_first_kind_name+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("sex")){//性别
								if(!str.equals("")){
									if(str.equals("男") || str.equals("女")){
										sex = str ;
									}else{
										err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”格式不正确,请输入男或者女!");
										action = false;
									}
								}
							}
							if(zdm.equals("human_major_second_kind_name")){//职位名称
								human_major_second_kind_name = str ;
								if(!human_major_second_kind_name.equals("")){
									if(human_major_first_kind_name.equals("")){
										String sql_update = "insert into hr_config_public(human_major_second_kind_name)values('"+human_major_second_kind_name+"')";
										hr_db.executeUpdate(sql_update);
									}else{
										String sql_hmfkn1 = "select human_major_second_kind_name from hr_config_public where human_major_first_kind_name='"+human_major_first_kind_name+"'";
										ResultSet rset_hmfkn1 = hr_db.executeQuery(sql_hmfkn1);
										if(rset_hmfkn1.next()){
											if(rset_hmfkn1.getString("human_major_second_kind_name")==null){
												String sql_update = "update hr_config_public set human_major_second_kind_name='"+human_major_second_kind_name+"'" +
														"where human_major_first_kind_name='"+human_major_first_kind_name+"'";
												hr_db.executeUpdate(sql_update);
											}else{
												String str1 = rset_hmfkn1.getString("human_major_second_kind_name");
												String str2 = str1.replaceAll("Ж"," ");
												String[] arrayStr = str2.split(" ");
												boolean flag = true;
												for(int x = 0; x < arrayStr.length; x++){
													if(arrayStr[x].equals(human_major_second_kind_name)){
														flag = false;
													}
												}
												if(flag){
													String sql_update = "update hr_config_public set human_major_second_kind_name='"+str1+"Ж"+human_major_second_kind_name+"' where human_major_first_kind_name='"+human_major_first_kind_name+"'";								
													hr_db.executeUpdate(sql_update);
												}
											}
										}
										
									}
								}
							}
							if(zdm.equals("human_tel")){//电话
								if(!str.equals("")){
									human_tel = str ;
								}
							}
							if(zdm.equals("human_postcode")){//邮编
								if(!str.equals("")){
									human_postcode = str ; 
								}
							}
							if(zdm.equals("idcard")){//身份证号码
								if(!str.equals("")){//身份证的有效验证 
									IDCardInspect ic = new IDCardInspect();
									String str_IC = ic.checkIdcard(str) ;
									if(str_IC.equals("成功")){
										idcard = str ;
									}else{
										err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”"+ str_IC);
										action = false;
									}
								}
							}
							if(zdm.equals("human_cellphone")){//手机
								if(!str.equals("")){
									human_cellphone = str ;
								}
							}
							if(zdm.equals("human_email")){//EMAIL
								if(!str.equals("")){
									// EMAIL的有效验证
									Pattern DZ_YX = Pattern.compile("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+[.]([a-zA-Z0-9_-])+");
									if(DZ_YX.matcher(str).matches()){
										human_email = str ;
									}else{
										err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”格式不正确!");
										action = false;
									}
								} 
							}
							if(zdm.equals("Status_base")){//岗位基数
								if(!str.equals("")){ 
									//岗位基数的有效验证
									if(Double.parseDouble(str) >= 0){
										if(str.equals("0")) {
											str = "1" ;
										}
										Status_base = Double.parseDouble(str) ;
									}else{
										err_list.add("第"+(hzb+1)+"行数据的“"+chinese+"”不能小于0!") ;
										action = false;
									}
								}
							}
							if(zdm.equals("salary_standard_name")){//薪酬标准
								salary_standard_name = str ;
								if(!salary_standard_name.equals("")){
									String sql_ssn = "select salary_standard_name from hr_config_public where salary_standard_name='"+salary_standard_name+"'";
									ResultSet rset_ssn = hr_db.executeQuery(sql_ssn);
									if(!rset_ssn.next()){
										String sql_update = "insert into hr_config_public(salary_standard_name)values('"+salary_standard_name+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("salary_sum")){//薪水
								if(!str.equals("")){
									if(Float.parseFloat(str) < 0){
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”不能为负数");
										action = false ;
									}else{
										salary_sum = Float.parseFloat(str) ;
										salary_sum = Math.round(salary_sum*Math.pow(10,2))*Math.pow(10,-2);//四舍五入
										String sql_ss = "select salary_sum from hr_config_public where salary_sum='"+salary_sum+"'";
										ResultSet rset_ss = hr_db.executeQuery(sql_ss);
										if(!rset_ss.next()){
											String sql_update = "insert into hr_config_public(salary_sum)values('"+salary_sum+"')";
											hr_db.executeUpdate(sql_update);
										}
									}
								}
							}
							if(zdm.equals("due_tryout")){//正式/试用
								if(!str.equals("")){
									if(str.equals("正式")||str.equals("试用")){
										due_tryout = str ;
									}else{
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”输入不合法,只能输入正式或试用!");
										action = false;
									}
								}
							}
							if(zdm.equals("term")){//试用期限
								if(!str.equals("")){
									Pattern sy = Pattern.compile("^[0-9]*$") ;
									if(sy.matcher(str).matches()){
										if(Integer.parseInt(str)>=0){
											term = str ;
											String sql_n = "select term from hr_config_public where term='"+term+"'";
											ResultSet rset_n = hr_db.executeQuery(sql_n);
											if(!rset_n.next()){
												String sql_update = "insert into hr_config_public(term)values('"+term+"')";
												hr_db.executeUpdate(sql_update);
											}
										}else{
											err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”不能小于0");
											action = false;
										}
									}else{
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”只能为数字!");
										action = false;
									}
								}
							}
							if(zdm.equals("nationality")){//国籍
								nationality = str ;
								if(!nationality.equals("")){
									String sql_n = "select nationality from hr_config_public where nationality='"+nationality+"'";
									ResultSet rset_n = hr_db.executeQuery(sql_n);
									if(!rset_n.next()){
										String sql_update = "insert into hr_config_public(nationality)values('"+nationality+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("birthplace")){//身份证所在地
								if(!str.equals("")){
									birthplace = str ;
								}
							}
							if(zdm.equals("birthday")){//出生日期
								if(!str.equals("")){
									birthday = str ;
								}
							}
							if(zdm.equals("race")){//民族
								race = str ;
								if(!race.equals("")){
									String sql_r = "select race from hr_config_public where race='"+race+"'";
									ResultSet rset_r = hr_db.executeQuery(sql_r);
									if(!rset_r.next()){
										String sql_update = "insert into hr_config_public(race)values('"+race+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("religion")){//宗教信仰
								religion = str ;
								if(!religion.equals("")){
									String sql_re = "select religion from hr_config_public where religion='"+religion+"'";
									ResultSet rset_re = hr_db.executeQuery(sql_re);
									if(!rset_re.next()){
										String sql_update = "insert into hr_config_public(religion)values('"+religion+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("party")){//政治面貌
								party = str ;
								if(!party.equals("")){
									String sql_p = "select party from hr_config_public where party='"+party+"'";
									ResultSet rset_p = hr_db.executeQuery(sql_p);
									if(!rset_p.next()){
										String sql_update = "insert into hr_config_public(party)values('"+party+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("SIN")){//社会保障号码
								if(!str.equals("")){
									SIN = str ;
								}
							}
							if(zdm.equals("educated_degree")){//学历
								educated_degree = str ;
								if(!educated_degree.equals("")){
									String sql_ed = "select educated_degree from hr_config_public where educated_degree='"+educated_degree+"'";
									ResultSet rset_ed = hr_db.executeQuery(sql_ed);
									if(!rset_ed.next()){
										String sql_update = "insert into hr_config_public(educated_degree)values('"+educated_degree+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("educated_years")){//教育年限
								if(!str.equals("")){
									Pattern sy2 = Pattern.compile("^[0-9]*$") ;
									if(sy2.matcher(str).matches()){
										if(Integer.parseInt(str)>=0){
											educated_years = str ;
											String sql_ey = "select educated_years from hr_config_public where educated_years='"+educated_years+"'";
											ResultSet rset_ey = hr_db.executeQuery(sql_ey);
											if(!rset_ey.next()){
												String sql_update = "insert into hr_config_public(educated_years)values('"+educated_years+"')";
												hr_db.executeUpdate(sql_update);
											}
										}else{
											err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”不能小于0");
											action = false;
										}
									}else{
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”只能为整数");
										action = false;
									}
								}
							}
							if(zdm.equals("educated_major")){//学历专业
								educated_major = str ;
								if(!educated_major.equals("")){
									String sql_em = "select educated_major from hr_config_public where educated_major='"+educated_major+"'";
									ResultSet rset_em = hr_db.executeQuery(sql_em);
									if(!rset_em.next()){
										String sql_update = "insert into hr_config_public(educated_major)values('"+educated_major+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("QQ")){//QQ
								if(!str.equals("")){
									QQ = str ;
								}
							}
							if(zdm.equals("human_bank")){//开户行
								if(!str.equals("")){
									human_bank = str ;
								}
							}
							if(zdm.equals("human_account")){//帐号
								if(!str.equals("")){
									human_account = str ;
								}
							}
							if(zdm.equals("hobby")){//爱好
								hobby = str ;
								if(!hobby.equals("")){
									String sql_h = "select hobby from hr_config_public where hobby='"+hobby+"'";
									ResultSet rset_h = hr_db.executeQuery(sql_h);
									if(!rset_h.next()){
										String sql_update = "insert into hr_config_public(hobby)values('"+hobby+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("speciality")){//特长
								speciality = str ;
								if(!speciality.equals("")){
									String sql_s = "select speciality from hr_config_public where speciality='"+speciality+"'";
									ResultSet rset_s = hr_db.executeQuery(sql_s);
									if(!rset_s.next()){
										String sql_update = "insert into hr_config_public(speciality)values('"+speciality+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("health")){//健康状况
								health = str ;
								if(!health.equals("")){
									String sql_he = "select health from hr_config_public where health='"+health+"'";
									ResultSet rset_he = hr_db.executeQuery(sql_he);
									if(!rset_he.next()){
										String sql_update = "insert into hr_config_public(health)values('"+health+"')";
										hr_db.executeUpdate(sql_update);
									}
								}
							}
							if(zdm.equals("marriage")){//婚姻状况
								if(!str.equals("")){
									if(str.equals("已婚")||str.equals("未婚")){
										marriage = str ;
									}else{
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”只能为已婚或未婚");
										action = false;
									}
								}
							}
							if(zdm.equals("Graduated_from_institutions")){//毕业院校
								if(!str.equals("")){
									Graduated_from_institutions = str ;
								}
							}
							if(zdm.equals("candidate_status")){//应聘岗位
								if(!str.equals("")){
									candidate_status = str ;
								}
							}
							if(zdm.equals("labor_contract")){//劳动合同是否签定
								if(!str.equals("")){
									if(str.equals("是") || str.equals("否")){
										labor_contract = str ;
									}else{
										err_list.add("第" + (hzb + 1) + "行数据的“" + chinese + "”只能为是或否");
										action = false;
									}
								}
							}
							if(zdm.equals("contract_datea")){//劳动合同开始日期
								if(!str.equals("")){
			 						contract_datea = str ;
								}
							}
							if(zdm.equals("contract_dateb")){//劳动合同结束日期
								if(!str.equals("")){
									contract_dateb = str ;
								}
							}
							if(zdm.equals("to_time")){//入职时间
								if(!str.equals("")){
									to_time = str ;
								}
							}
							if(zdm.equals("register_time")){//建档时间
								if(!str.equals("")){
									register_time = str ;
								}else{
									register_time = datetime ;
								}
							}
							if(zdm.equals("history_records")){//个人履历
								if(!str.equals("")){
									history_records = str ;
								}
							}
							if(zdm.equals("family_membership")){//家庭关系信息
								if(!str.equals("")){
									family_membership = str ;
								}
							}
							if(zdm.equals("experience")){//教育经历
								if(!str.equals("")){
									experience = str ;
								}
							}
							if(zdm.equals("remark")){//备注
								if(!str.equals("")){
									remark = str ;
								}
							}
			    	//---------------------------------------------------------------------------			
				    }
					String chain_name = "" ; 
					String chain_id = "" ;
					String strcn = "" ;
					if(action){
						String[] cn = chainName.substring(0, chainName.lastIndexOf("Ж")).split("Ж") ;
						for(String s : cn){
							if(s.equals("")||s==null){
								break ;
							}
							strcn += (s + "Ж") ;
						}
					}
					if(!strcn.equals("")){
						strcn = strcn.substring(0, strcn.lastIndexOf("Ж")) ;
						///////////////////////////////////
						String value = strcn;
						String str="Ф";
							String[] all=value.split("Ж");
							String tempv=all[0];
							String chain_ID="001",chain_NAME="";
							int category_id=1,parent_category_id=0,temp_id=0;
							ResultSet rss=hr_db.executeQuery("select chain_id,category_id from hr_config_file_kind where id!=1 order by id");
							if(rss.last()){
								temp_id=rss.getInt("category_id");
							}
							String quy="select chain_id from hr_config_file_kind where chain_name='"+tempv+"'";
							rss=hr_db.executeQuery(quy);
							if(rss.next()){
								chain_ID=rss.getString("chain_id");
							}else{
								rss=hr_db.executeQuery("select chain_id from hr_config_file_kind where id!=1 and parent_category_id=0 order by id");
								if(rss.last()){
									String temp_chain_id=(rss.getString("chain_id")+1)+"";
									if(temp_chain_id.length()==1){
										chain_ID="00"+(rss.getString("chain_id")+1);
									}else if(temp_chain_id.length()==2){
										chain_ID="0"+(rss.getString("chain_id")+1);
									}else{
										chain_ID=""+(rss.getString("chain_id")+1);
									}
								}
								temp_id++;
								String sqll="insert into hr_config_file_kind(CATEGORY_ID,PARENT_CATEGORY_ID,CATEGORY_NAME,FILE_ID,FILE_NAME,CHAIN_ID,CHAIN_NAME)" +
											"values('"+temp_id+"','"+parent_category_id+"','"+chain_ID+" "+tempv+"','"+chain_ID+"','"+tempv+"','"+chain_ID+"','"+tempv+"')";
								hr_db.executeUpdate(sqll);
							}
							
							for(int j=0;j<all.length;j++){
								chain_NAME+=all[j]+"-";
								quy="select chain_id,category_id from hr_config_file_kind where chain_name='"+chain_NAME.substring(0,chain_NAME.length()-1)+"'";
								rss=hr_db.executeQuery(quy);
								if(rss.next()){
									chain_ID=rss.getString("chain_id");
									category_id=rss.getInt("category_id");
									parent_category_id=rss.getInt("category_id");
								}else{
									temp_id++;
									rss=hr_db.executeQuery("select category_id,substring(chain_ID,"+(chain_ID.length()+1)+") as chain_id from hr_config_file_kind where parent_category_id='"+category_id+"' order by id");
									if(rss.last()){
										chain_ID+=(rss.getString("chain_id")+1);
									}else{
										chain_ID+="1";
									}
									
									String sqll="insert into hr_config_file_kind(CATEGORY_ID,PARENT_CATEGORY_ID,CATEGORY_NAME,FILE_ID,FILE_NAME,CHAIN_ID,CHAIN_NAME)" +
												"values('"+temp_id+"','"+parent_category_id+"','"+chain_ID+" "+all[j]+"','"+chain_ID+"','"+all[j]+"','"+chain_ID+"','"+chain_NAME.substring(0,chain_NAME.length()-1)+"')";
									hr_db.executeUpdate(sqll);
									
									category_id=temp_id;
									parent_category_id=temp_id;
								}
							}
							str=chain_ID;
							chain_id =  str ;
						///////////////////////////////////
						chain_name = strcn.replaceAll("Ж", "-") ;
					}
				   if((human_ID.replaceAll(" ", "").trim()).equals("")){
					   //自动创建新的ID
					  hr_code cd=new hr_code();
					  ChineseLetter cl = new ChineseLetter() ;
					  String str = cl.getFirstLetter(human_name) ;
					  human_ID = cd.code((String)session.getAttribute("unit_db_name"), str) ;
				   }
				   if(birthday.equals(time) && (!idcard.equals(""))){ //如果出生日期为空则根据身份证号码自动获取
					   String y, m, d ;
					   if(idcard.length()==15){
						   y="19"+idcard.substring(6,8);
					       m=idcard.substring(8,10);
					       d=idcard.substring(10,12); 
					   }else{
						   y=idcard.substring(6,10);
					       m=idcard.substring(10,12);
					       d=idcard.substring(12,14);
					   }
					   birthday = y + "-" + m + "-" + d ;
				   }
					   //将EXCEL文件添加到人力资源档案表中
					   sql = "insert into hr_file(chain_id,chain_name,human_major_first_kind_name,human_major_second_kind_name,human_ID,human_name,human_address,human_title_class,human_bank,human_account,human_tel,QQ,human_postcode,salary_standard_name,salary_sum,educated_degree,educated_years,educated_major,register,register_ID,register_time,family_membership,history_records,remark,human_cellphone,idcard,SIN,religion,race,nationality,party,birthday,birthplace,sex,speciality,hobby,human_email,health,marriage,Graduated_from_institutions,candidate_status,to_time,experience,Status_base,due_tryout,term,labor_contract,contract_datea,contract_dateb,picture_code,ATTACHMENT_NAME,excel_tag) values ('"+chain_id+"','"+chain_name+"','"+human_major_first_kind_name+"','"+human_major_second_kind_name+"','"+human_ID+"','"+human_name+"','"+human_address+"','"+human_title_class+"','"+human_bank+"','"+human_account+"','"+human_tel+"','"+QQ+"','"+human_postcode+"','"+salary_standard_name+"','"+salary_sum+"','"+educated_degree+"','"+educated_years+"','"+educated_major+"','"+register+"','"+register_ID+"','"+register_time+"','"+family_membership+"','"+history_records+"','"+remark+"','"+human_cellphone+"','"+idcard+"','"+SIN+"','"+religion+"','"+race+"','"+nationality+"','"+party+"','"+birthday+"','"+birthplace+"','"+sex+"','"+speciality+"','"+hobby+"','"+human_email+"','"+health+"','"+marriage+"','"+Graduated_from_institutions+"','"+candidate_status+"','"+to_time+"','"+experience+"','"+Status_base+"','"+due_tryout+"','"+term+"','"+labor_contract+"','"+contract_datea+"','"+contract_dateb+"','','','1')" ;
					   if(action==true){//如果解析过程中没有错误,就执行插入
							hr_db.executeUpdate(sql);
							
							String sql1="update hr_config_file_kind set delete_tag='1' where file_id='"+chain_id+"'";
							hr_db.executeUpdate(sql1);//delete_tag为1说明机构被使用
							List rsList = GetWorkflow.getList(hr_db, "hr_config_workflow", "01");	
							if(rsList.size()==0){
								sql="update hr_file set check_tag='1' where human_ID='"+human_ID+"'";
								hr_db.executeUpdate(sql) ;
							}else{
								Iterator ite=rsList.iterator();
								while(ite.hasNext()){
								String[] elem =(String[])ite.next();
								sql = "insert into hr_workflow(config_id,object_ID,type_id,describe1,describe2,describe3) values ('"+elem[0]+"','"+human_ID+"','01','"+elem[1]+"','"+elem[2]+"','"+elem[3]+"')" ;
								hr_db.executeUpdate(sql);
								}
							}
							
							suc_count++;
						}else{
							fai_count++;//累加错误记录数
							hang.add(i);//添加错误数据
						}
					   hr_db.commit();//提交
				    }
			//***********************插入失败的数据处理*********************************************
				String outPutFile = path;
				outPutFile += "hr\\file\\excel\\"+"人力资源档案导入失败数据.xls";//导出文件存在于服务器上的位置
				HSSFWorkbook workbook1 = new HSSFWorkbook();//创建一个工作簿
				HSSFSheet sheetdown1 = workbook1.createSheet();//创建一个工作簿的实体
				workbook1.setSheetName(0,"人力资源档案");//设置第一个工作簿的名字
				rowdown = sheetdown1.createRow((short) 0);//创建行对象第一行
				for(int j=0;j<excel_index.size();j++){//循环excel列
					celldown = rowdown.createCell((short) j);//第1行第一个单元格
					celldown.setCellValue((String) excel_index.get(j).toString().split("◎")[2]);
				}
				int h = 1;
				for(int p : hang){
					rowdown = sheetdown1.createRow((short)h);//创建行对象第二行起
					for(int j=0;j<excel_index.size();j++){//循环excel列
						celldown = rowdown.createCell((short) j);//第二行第一个单元格
						String str  = rs.getCell(j,p).getContents().trim();//列前行后
						celldown.setCellValue(str);
					}
					h++;
				}
				FileOutputStream fOut = new FileOutputStream(outPutFile);
				// 把相应的Excel 工作簿存盘
				workbook1.write(fOut);
				fOut.flush();
				fOut.close();
				 }else{
					 fai_count = rows - 1 ; //如果字段有误或者无必须字段则显示所有记录导入失败
				 }
				}
			  try {   
					String outPutFile0 = path;
				    outPutFile0 += "hr\\file\\excel\\"+"人力资源档案错误信息.rtf";//导出文件存在于服务器上的位置
			        File file=new File(outPutFile0); 
			        if(file.isFile()){
			        	file.delete();
			        }
			    	FileOutputStream fOut0 = new FileOutputStream(file,true); //创建流对象,用于写入数据
			       if(err_list1!=""){
			    	 String[]  err_list11=err_list1.split("Ж");
			    	 for(int x=0;x<err_list11.length;x++){
							String aa=err_list11[x].replace("Ж","");
							aa=(x+1)+"."+aa;
							fOut0.write(aa.getBytes());
							fOut0.write("\n".getBytes());   
						 }
			       }else{
		    		for(int x=0;x<err_list.size();x++){
						String aa=(String)err_list.get(x);
						aa=(x+1)+"."+aa;
						fOut0.write(aa.getBytes());
						fOut0.write("\n".getBytes());   
					 }
			       } 
				fOut0.flush();
				fOut0.close();
	    	    } catch (FileNotFoundException e) {   
	                e.printStackTrace();   
	             } catch (IOException e) {   
	                e.printStackTrace();   
	             }	
				is.close();
				rwb.close();
			    session.setAttribute("err_list", err_list) ;
			    session.setAttribute("err_list1", err_list1.replaceAll("Ж", " ").trim()) ;
	    		if(hr_db.getK().indexOf("back⊙")!=-1){ //页面跳转处理
	    			hr_db.rollback();//回滚   失败
					response.sendRedirect("/erp/hr/file/register_hr_excel_import_result.jsp?suc_count="+0+"&fai_count="+fai_count+"&xinxi="+0 );
				}else{
					response.sendRedirect("/erp/hr/file/register_hr_excel_import_result.jsp?suc_count="+suc_count+"&fai_count="+fai_count+"&xinxi="+xinxi);
				}
    		}else{
    			response.sendRedirect("error_conn.htm");
    		}
      	} catch (Exception ex) {
			try {
				hr_db.rollback();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ex.printStackTrace();
		}
		finally
		{
			try {
				//删除服务器上面导入的文件
				File f = new File(excel_path) ;
				if(f.exists()){
					f.delete() ;
				}
				hr_db.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}


hr_file_excel.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 产品管理中,产品档案excel导入导出配置表  以下为使用到的参数解释         -->
<!-- required="y"为不为空验证           -->
<!-- type="数值" 表示内容必须为数字           -->
<!-- ================      =================           -->

<config>
<table nick="人力资源" name="hr">

	<!-- ////////////////////////////////////////主信息//////////////////////////////////////////////////////// -->
	
	<column nick="档案编号" name="human_ID" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(30)" id="1">
	</column>
	<column nick="姓名" name="human_name" type="字符" usedTag="s" required="y" validate="y" service="b" Ttype="varchar(60)" id="2">
	</column>
	<column nick="部门编号" name="chain_id">
	</column>
	<column nick="部门名称" name="chain_name">
	</column>
	<column nick="部门分类一级" name="chain_name1" type="字符" usedTag="s" required="y" validate="y" service="b" Ttype="varchar(20)" id="3">
	</column>
	<column nick="部门分类二级" name="chain_name2" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="4">
	</column>
	<column nick="部门分类三级" name="chain_name3" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="5">
	</column>
	<column nick="部门分类四级" name="chain_name4" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="6">
	</column>
	<column nick="部门分类五级" name="chain_name5" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="7">
	</column>
	<column nick="部门分类六级" name="chain_name6" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="8">
	</column>
	<column nick="部门分类七级" name="chain_name7" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="9">
	</column>
	<column nick="部门分类八级" name="chain_name8" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="10">
	</column>
	<column nick="部门分类九级" name="chain_name9" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="11">
	</column>
	<column nick="部门分类十级" name="chain_name10" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(20)" id="12">
	</column>
	<column nick="住址" name="human_address" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="13">
	</column>
	<column nick="职称" name="human_title_class" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="14">
	</column>
	<column nick="职位分类" name="human_major_first_kind_name" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="15">
	</column>
	<column nick="性别" name="sex" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(20)" id="16">
	</column>
	<column nick="职位名称" name="human_major_second_kind_name" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="17">
	</column>
	<column nick="电话" name="human_tel" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(60)" id="18">
	</column>
	<column nick="邮编" name="human_postcode" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(10)" id="19">
	</column>
	<column nick="身份证号码" name="idcard" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(30)" id="20">
	</column>
	<column nick="手机" name="human_cellphone" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="21">
	</column>
	<column nick="EMAIL" name="human_email" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(60)" id="22">
	</column>
	<column nick="岗位基数" name="Status_base" type="数值" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="23">
	</column>
	<column nick="薪酬标准" name="salary_standard_name" type="字符" usedTag="s" required="n" validate="n" service="t" Ttype="varchar(60)" id="24">
	</column>
	<column nick="薪水" name="salary_sum" type="数值" usedTag="s" required="n" validate="n" service="t" Ttype="double(15,2)" id="25">
	</column> 
	<column nick="正式/试用" name="due_tryout" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="26">
	</column>
	<column nick="试用期限" name="term" type="数值" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="27">
	</column>
	
	<!-- //////////////////////////////////////////////////////辅助信息//////////////////////////// -->
	
	<column nick="国籍" name="nationality" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="28">
	</column>
	<column nick="身份证所在地" name="birthplace" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="29">
	</column>
	<column nick="出生日期" name="birthday" type="日期" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="30">
	</column>
	<column nick="民族" name="race" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="31">
	</column>
	<column nick="宗教信仰" name="religion" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="32">
	</column>
	<column nick="政治面貌" name="party" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="33">
	</column>
	<column nick="社会保障号码" name="SIN" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(30)" id="34">
	</column>
	<column nick="学历" name="educated_degree" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="35">
	</column>
	<column nick="教育年限" name="educated_years" type="数值" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="36">
	</column>
	<column nick="学历专业" name="educated_major" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="37">
	</column>
	<column nick="QQ" name="QQ" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="38">
	</column>
	<column nick="开户行" name="human_bank" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="39">
	</column>
	<column nick="帐号" name="human_account" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(60)" id="40">
	</column>
	<column nick="登记人" name="register" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="varchar(60)" id="41">
	</column>
	<column nick="爱好" name="hobby" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="42">
	</column>
	<column nick="特长" name="speciality" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="43">
	</column>
	<column nick="健康状况" name="health" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="44">
	</column>
	<column nick="婚姻状况(未婚/已婚)" name="marriage" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="45">
	</column>
	<column nick="毕业院校" name="Graduated_from_institutions" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="46">
	</column>
	<column nick="应聘岗位" name="candidate_status" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="47">
	</column>
	<column nick="劳动合同是否签定" name="labor_contract" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="48">
	</column>
	<column nick="劳动合同开始日期" name="contract_datea" type="日期" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="49">
	</column>
	<column nick="劳动合同结束日期" name="contract_dateb" type="日期" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="50">
	</column>
	<column nick="入职时间" name="to_time" type="日期" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="51">
	</column>
	<column nick="建档时间" name="register_time" type="日期" usedTag="s" required="n" validate="n" service="b" Ttype="varchar(200)" id="52">
	</column>
	<column nick="个人履历" name="history_records" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="text" id="53">
	</column>
	<column nick="家庭关系信息" name="family_membership" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="text" id="54">
	</column>
	<column nick="教育经历" name="experience" type="字符" usedTag="s" required="n" validate="n" service="b" Ttype="text" id="55">
	</column>
	<column nick="备注" name="remark" type="字符" usedTag="s" required="n" validate="y" service="b" Ttype="text" id="56">
	</column>
</table>
</config>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

EXCEL人力资源素材与模板

  • 2014-03-07 11:20
  • 3.15MB
  • 下载

集团信息化之路 人力资源系统的漫长之路刚刚起步

说起人力资源的系统话就长了。在应用OA系统之初时,就在OA里面开发了一个人力资源系统,人力部门一直应用了有几年的时间,不过当时主要是以人员的档案信息相关的管理为主,其他的工资、考勤、培训、招聘等并没有...
  • upi2u
  • upi2u
  • 2015-09-14 13:54
  • 1969

集团信息化之路-我们集团的人力资源软件功能模块如何选定?

关于集团要上人力资源系统的事情,也是准备了好长时间了。之前也多次跟人力部门沟通过,也一块看了几家软件公司的产品,人力部门的同事呢也都站在各自工作的角度对这个软件提出了要求,当然谁都希望自己管理的那块能...
  • upi2u
  • upi2u
  • 2015-05-04 11:18
  • 1479

excel人力资源模板

  • 2010-11-25 19:30
  • 438KB
  • 下载

java Struts+Hibernate企业人力资源管理系统源代码下载

java Struts+Hibernate企业人力资源管理系统源代码下载 源代码下载地址:http://www.zuidaima.com/share/1778471692995584.htm
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)