1.员工信息管理jsp
1 <%@ page language="java" pageEncoding="UTF-8"%>2 7
2.员工信息管理js gridPanel表格
1 /** 2 * @author sux 3 * @time 2011-1-15 4 * @desc 5 * 注意各个TabPanel中的id都不要相同,若有相同则造成显示异常 6 */ 7 Ext.namespace("hrmsys.employee"); 8 9 empInfoGridPanel = Ext.extend(Ext.grid.GridPanel,{ 10 id:'empInfo', 11 constructor:function(){ 12 Ext.QuickTips.init(); 13 14 empInfoStore = new Ext.data.JsonStore({ 15 url:'emp_list.action', 16 root:'root', 17 totalProperty:'totalProperty', 18 fields:['empId','empName','empSex', 19 {name:'department',convert:function(v){return v.deptName}}, 20 {name:'job',convert:function(v){return v.jobName}}] 21 }); 22 //多选按钮 23 var sm = new Ext.grid.CheckboxSelectionModel(); 24 var number = new Ext.grid.RowNumberer(); 25 26 empInfoGridPanel.superclass.constructor.call(this,{ 27 viewConfig:{ 28 forceFit: true 29 }, 30 width:Ext.getCmp('mainTab').getActiveTab().getInnerWidth(), 31 height:Ext.getCmp('mainTab').getActiveTab().getInnerHeight(), 32 /**表格高度自适应 document.body.clientHeight浏览器页面高度 start**/ 33 monitorResize:true, 34 doLayout:function(){ 35 this.setWidth(document.body.clientWidth-205); 36 this.setHeight(document.body.clientHeight-140); 37 Ext.grid.GridPanel.prototype.doLayout.call(this); 38 }, 39 sm:sm, 40 columns:[ 41 number,sm, 42 { 43 header: '员工工号', 44 dataIndex: 'empId', 45 align: 'center' 46 },{ 47 header: '员工姓名', 48 dataIndex: 'empName', 49 align: 'center' 50 },{ 51 header: '员工性别', 52 dataIndex: 'empSex', 53 align: 'center', 54 renderer: function(value){ 55 if(value == 1) return "男"; 56 else return "女"; 57 } 58 },{ 59 header: '部门名称', 60 dataIndex: 'department', 61 align: 'center' 62 },{ 63 header: '职位', 64 dataIndex: 'job', 65 align: 'center' 66 }], 67 store:empInfoStore, 68 //添加遮罩 69 loadMask:{msg:'数据正在加载中,请稍后!'}, 70 71 tbar:new Ext.Toolbar({ 72 bodyStyle: 'padding-left: 5px;', 73 //depart.js中定义了depart 74 items:['部门:',new depart("员工"),' 条目:',{ 75 // Ext xtype : "combo" 下拉选择框 76 xtype:'combo', 77 mode:'local',//加载本地数据,必须加入 78 store:new Ext.data.SimpleStore({ 79 fields:['name','value'], 80 data: [["","无"],['empId','工号'],['empName','姓名']] 81 }), 82 //下拉框中显示的值 83 displayField:'value', 84 //是隐藏的一个值 85 valueField:'name', 86 id:'emp_condition', 87 width:50, 88 autoLoad:true, 89 listWidth:50, 90 //是否可编辑 91 editable:false, 92 /*默认值 为query,当输入框有值时下拉列表将根据该值只显示过滤后的列表数据,可设置为all,不执行过滤*/ 93 triggerAction:'all' 94 },' 内容:',{ 95 xtype:'textfield', 96 id:'emp_conditionValue', 97 width:80, 98 listeners:{ 99 specialkey:function(field, e){//添加回车事件100 if(e.getKey()==Ext.EventObject.ENTER){101 // Ext.getCmp('empInfo').viewJob;102 }103 }104 }105 },{106 text: '添加',107 handler: this.empAddFn108 },{109 text: '修改',110 handler: this.empUpdateFn111 },{112 text: '详情',113 handler: this.empDetailFn114 }]115 }),116 117 bbar:new PagingToolbar(empInfoStore,20)118 });119 120 empInfoStore.load({121 params:{122 deptId:"",123 start:0,124 limit:20125 }126 });127 },128 //查询129 viewJob:function(){130 var deptValue = Ext.getCmp('deptValue员工').getValue();131 var condition = Ext.getCmp('emp_condition').getValue();132 var conditionValue = Ext.getCmp('emp_conditionValue').getValue();133 134 empInfoStore.load({135 params: {136 deptId: deptValue,137 condition: condition,138 conditionValue: conditionValue,139 start: 0,140 limit: 20141 }142 }); 143 },144 empDelFn: function(){145 gridDel('empInfo','empId', 'emp_delete.action');146 },147 //添加员工信息148 empAddFn: function(){149 var empUpdateWin = new EmpUpdateWin();150 empUpdateWin.show();151 },152 //修改员工信息153 empUpdateFn: function(){154 var empUpdateWin = new EmpUpdateWin();155 empUpdateWin.title = '职员信息修改';156 157 var selectionModel = Ext.getCmp('empInfo').getSelectionModel();158 var record = selectionModel.getSelections();159 160 if(record.length!=1){161 Ext.Msg.alert('提示','请选择一个');162 return;163 }164 165 var empId = record[0].get('empId');166 Ext.getCmp('empForm').getForm().load({167 method: 'post',168 url: 'emp_intoUpdate.action',169 params: {170 empId: empId171 },172 success: function(form, action){173 var obj = Ext.util.JSON.decode(action.response.responseText);174 Ext.getCmp("deptValue所在部门").setRawValue(obj[0].department.deptName);175 Ext.getCmp("jobValue职位").setRawValue(obj[0].job.jobName);176 }177 })178 empUpdateWin.show();179 },180 empDetailFn: function(){181 var empDetailWin = new EmpDetailWin();182 var selectionModel = Ext.getCmp('empInfo').getSelectionModel();183 var record = selectionModel.getSelections();184 if(record.length != 1){185 Ext.Msg.alert('提示','请选择一个');186 return;187 }188 var empId = record[0].get('empId');189 Ext.getCmp('empDetailId').getForm().load({190 url: 'emp_intoUpdate.action',191 method: 'post',192 params: {193 empId: empId194 }195 })196 empDetailWin.show();197 }198 });
3。添加员工信息弹窗
4.添加员工窗口页面js
1 EmpUpdateWin = Ext.extend(Ext.Window,{ 2 id:'empUpdateWinId', 3 constructor:function(){ 4 //添加职员信息 5 var empForm = new addEmpForm(); 6 7 EmpUpdateWin.superclass.constructor.call(this, { 8 model:true, 9 width: 825,10 items: [empForm]11 });12 }13 });
5.
1 /** 2 * 添加职员Form 3 * @author sux 4 * @param {Object} width 5 * @memberOf {TypeName} 6 */ 7 addEmpForm = Ext.extend(Ext.form.FormPanel,{ 8 id:'empForm', 9 //url: 'emp_save.action', 10 //构造方法中的width参数为TabPanel的宽度 11 constructor:function(width){ 12 width = (width-750)/2; 13 Ext.QuickTips.init(); 14 var deptObject = new DepartJob("所在部门","emp.department.deptId"); //实例化部门 15 jobObject = new Job("职位","emp.job.jobId",deptObject); //实例化职位 16 17 jobObject.on('expand', function(comboBox){ 18 var deptId = Ext.getCmp("deptValue所在部门").getValue(); 19 this.getStore().load({ 20 params: { 21 deptId: deptId 22 } 23 }) 24 }); 25 26 var reader = new Ext.data.JsonReader({},[{ 27 name: 'emp.empId', mapping: 'empId' 28 },{//json时间格式转为ext,time为json中显示的一部分 29 name: 'emp.empBirth', mapping: 'empBirth.time', dateFormat : 'time', type: 'date' 30 },{ 31 name: 'emp.empSex', mapping: 'empSex' 32 },{ 33 name: 'emp.empPost', mapping: 'empPost' 34 },{ 35 name: 'emp.empBank', mapping: 'empBank' 36 },{ 37 name: 'emp.empNationality', mapping: 'empNationality' 38 },{ 39 name: 'emp.empSchool', mapping: 'empSchool' 40 },{ 41 name: 'emp.empName', mapping: 'empName' 42 },{ 43 name: 'emp.empTelephone', mapping: 'empTelephone' 44 },{ 45 name: 'emp.empEmail', mapping: 'empEmail' 46 },{ 47 name: 'emp.empMobilephone', mapping: 'empMobilephone' 48 },{ 49 name: 'emp.empIdcard', mapping: 'empIdcard' 50 },{ 51 name: 'emp.empAccount', mapping: 'empAccount' 52 },{ 53 name: 'emp.empOrigin', mapping: 'empOrigin' 54 },{ 55 name: 'emp.empEducation', mapping: 'empEducation' 56 },{ 57 name: 'emp.empPhoto', mapping: 'empPhoto', convert: function(v){if(v != '')Ext.get('emp_photo').dom.src=v;} 58 },{ 59 name: 'emp.empNation', mapping: 'empNation' 60 },{ 61 name: 'emp.empProfession', mapping: 'empProfession' 62 },{ 63 name: 'emp.empAddress', mapping: 'empAddress' 64 },{ 65 name: 'emp.department.deptId', mapping: 'department.deptId' 66 },{ 67 name: 'emp.job.jobId', mapping: 'job.jobId' 68 }]) 69 addEmpForm.superclass.constructor.call(this,{ 70 //var windowWidth = window.screen.availWidth;获取屏幕宽度 71 //bodyStyle: 'margin-left:'+width+'px;', //将下面的panel显示在中间 72 frame: true, 73 reader: reader, 74 items:[{ 75 width:768, 76 html: '' 77 },{ 78 //可以用fieldset来进行内部分组 79 xtype:'fieldset', 80 title: '个人信息', 81 defaults:{ 82 bodyStyle: 'padding-right: 30px;' 83 }, 84 width:768, 85 layout:'table',//表格布局 86 labelAlign: 'right', 87 labelWidth: 60, 88 frame: true, 89 layoutConfig: {//3列 90 columns: 3 91 }, 92 items:[{ 93 layout:'form', 94 //columnWidth: .33, // column列布局 95 defaults:{ 96 xtype: 'textfield', 97 width: 150 98 }, 99 items:[{100 fieldLabel: '工号',101 name: 'emp.empId',102 allowBlank: false,103 msgTarget: 'side',104 blankText: '工号不能为空',105 emptyText: '不能为空',106 id: 'empAddId',107 listeners: {'blur':hrmsys.util.common.empId}108 },{109 xtype: 'datefield',110 fieldLabel: '出生日期',111 name: 'emp.empBirth',112 format: 'Y-m-d',113 allowBlank: false,114 editable: false,115 msgTarget: 'side',116 blankText: '出生日期不能为空',117 emptyText: '不能为空'118 },{119 xtype: 'numberfield', //只能为数字120 fieldLabel: 'QQ',121 //emptyText: '只能为数字',122 name: 'emp.empQq'123 },{124 fieldLabel: '性别',125 xtype: 'panel',126 layout: 'column',127 bodyStyle: 'padding:0px 0px 10px 30px;',128 items:[{129 columnWidth: .5,130 xtype: 'radio',131 boxLabel: '男',132 checked: true,133 inputValue: 1, //此处特别注意inputValue134 name: 'emp.empSex'135 },{136 columnWidth: .5,137 xtype: 'radio',138 boxLabel: '女',139 inputValue: 0,140 name: 'emp.empSex' 141 }]142 },{143 xtype: 'numberfield',144 fieldLabel: '邮编',145 allowBlank: false,146 msgTarget: 'side',147 blankText: '邮编不能为空',148 emptyText: '只能为数字',149 regex: /^[1-9]\d{5}$/,150 regexText: '邮编格式不正确',151 name: 'emp.empPost'152 },{153 fieldLabel: '开户银行',154 allowBlank: false,155 msgTarget: 'side',156 blankText: '开户银行不能为空',157 emptyText: '不能为空',158 name: 'emp.empBank'159 },{160 fieldLabel: '国籍',161 allowBlank: false,162 msgTarget: 'side',163 blankText: '国籍不能为空',164 emptyText: '不能为空',165 name: 'emp.empNationality'166 },{167 fieldLabel: '毕业学校',168 allowBlank: false,169 msgTarget: 'side',170 blankText: '毕业学校不能为空',171 emptyText: '不能为空',172 name: 'emp.empSchool'173 }]174 },{175 layout: 'form',176 //columnWidth: .33,177 defaults: {178 xtype: 'textfield',179 width: 150180 },181 items: [{182 fieldLabel: '姓名',183 allowBlank: false,184 msgTarget: 'side',185 blankText: '用户名不能为空',186 emptyText: '不能为空',187 name: 'emp.empName'188 },{189 fieldLabel: '电话',190 name: 'emp.empTelephone',191 msgTarget: 'side',192 regex: /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/,193 regexText: '电话格式不正确'194 },{195 fieldLabel: 'e-mail',196 emptyText: '不能为空',197 allowBlank: false,198 blankText: '邮箱不能为空',199 vtype: 'email', //自带的邮箱校验200 msgTarget: 'side',201 vtypeText: '请输入正确的邮箱格式',202 name: 'emp.empEmail'203 },{204 fieldLabel: '手机',205 allowBlank: false,206 msgTarget: 'side',207 blankText: '手机号不能为空',208 emptyText: '不能为空',209 name: 'emp.empMobilephone',210 regex: /(^0?[1][358][0-9]{9}$)/,211 regexText: '手机格式不正确' 212 },{213 fieldLabel: '身份证',214 allowBlank: false,215 msgTarget: 'side',216 blankText: '身份证号不能为空',217 regex: /^(\d{14}|\d{17})(\d|[xX])$/,218 regexText: '身份证格式不正确',219 emptyText: '不能为空',220 name: 'emp.empIdcard'221 },{222 xtype: 'numberfield',223 fieldLabel: '开户账号',224 allowBlank: false,225 msgTarget: 'side',226 blankText: '账号不能为空',227 emptyText: '只能为数字',228 name: 'emp.empAccount'229 },{230 fieldLabel: '籍贯',231 allowBlank: false,232 msgTarget: 'side',233 blankText: '籍贯不能为空',234 emptyText: '不能为空',235 name: 'emp.empOrigin'236 },{237 fieldLabel: '学历',238 allowBlank: false,239 msgTarget: 'side',240 blankText: '学历不能为空',241 emptyText: '不能为空',242 name: 'emp.empEducation'243 }]244 },{ 245 //rowspan: 5,246 layout: 'form',247 defaults: {248 xtype: 'textfield',249 width: 150250 },251 items: [{252 xtype: 'textfield', //注意此处为textfield, inputType: 'image'253 fieldLabel: '照片',254 inputType: 'image',255 width: 130,256 height: 125,257 id: 'emp_photo',258 autoCreate : {259 tag : "input",260 type : "image",261 src : "img/default.gif",262 name: 'emp.empPhoto'263 //autocomplete: "off"264 }265 },{266 style: 'margin-left: 110px;',267 xtype: 'button',268 width: 50,269 text: '上传照片',270 handler: upload271 },{272 xtype: 'textfield',273 fieldLabel: '民族',274 allowBlank: false,275 msgTarget: 'side',276 blankText: '民族不能为空',277 emptyText: '不能为空',278 name: 'emp.empNation'279 },{280 xtype: 'textfield',281 fieldLabel: '专业',282 allowBlank: false,283 msgTarget: 'side',284 blankText: '专业不能为空',285 emptyText: '不能为空',286 name: 'emp.empProfession'287 }]288 },{289 colspan: 3,290 layout: 'form',291 items: [{292 xtype: 'textfield',293 fieldLabel: '地址',294 width: 640,295 allowBlank: false,296 msgTarget: 'side',297 blankText: '地址不能为空',298 emptyText: '不能为空',299 name: 'emp.empAddress'300 }]301 }]302 },{303 xtype: 'fieldset',304 title: '部门',305 width: 768,306 layout: 'column',307 defaultType: 'textfield',308 defaults: {309 labelWidth: 60,310 labelAlign: 'right'311 },312 items: [{313 columnWidth: .32,314 layout: 'form',315 xtype: 'panel',316 items: [deptObject]317 },{318 columnWidth: .32,319 layout: 'form',320 xtype: 'panel',321 items: [jobObject]322 }]323 },{324 xtype: 'panel',325 width: 750,326 buttonAlign: 'center',327 buttons: [{328 text: '保存',329 handler: function(){330 if(!Ext.getCmp('empForm').getForm().isValid()){331 return;332 }333 Ext.getCmp('empForm').getForm().submit({334 url: 'emp_save.action',335 method: 'post',336 waitTitle: '提示',337 waitMsg: '正在保存数据...',338 success: saveSuccess,339 failure: saveFailure,340 scope: this,341 params: {empPhoto: Ext.get('emp_photo').dom.src}342 });343 }344 },{345 text: '关闭',346 handler: function(){347 //Ext.getCmp('empForm').getForm().reset();348 //Ext.get('emp_photo').dom.src = 'img/default.gif';349 Ext.getCmp('empUpdateWinId').destroy();350 }351 }]352 }]353 });354 }355 });356 357 358 //上传窗体显示359 upload = function(){360 uploadWin = new UploadWin();//实例化上传窗体361 uploadWin.show();//显示窗体362 }363 364 //保存成功操作365 //保存成功操作366 saveSuccess = function(form, action){367 Ext.Msg.confirm('提示', action.result.msg, function(button, text){368 Ext.getCmp('empForm').getForm().reset();369 Ext.get('emp_photo').dom.src = 'img/default.gif';370 if(button == "yes"){371 Ext.getCmp('empUpdateWinId').destroy();//销毁窗体372 Ext.getCmp("empInfo").getStore().load({373 params: {374 deptId: "",375 start: 0,376 limit: 20377 }378 });379 }380 });381 };382 //保存失败操作383 saveFailure = function(form, action){384 Ext.Msg.alert('提示','连接失败');385 } 员工信息
7. 上传文件
1 /** 2 * @author sux 3 * @date 2011-1-30 4 * @desc 上传窗体 5 */ 6 UploadWin = Ext.extend(Ext.Window,{ 7 id: 'upLoad', 8 uploadPanel: null, 9 constructor: function(){ 10 this.uploadPanel = new Ext.form.FormPanel({11 fileUpload:true,允许上传12 baseCls: 'x-plain',//作用在面板元素上的CSS样式类 (默认为 'x-panel')13 layout: 'form',14 labelWidth: 60,15 id: 'uploadformPanel',16 items: [{17 xtype: 'fileuploadfield',//引入插件18 //inputType: 'file',19 fieldLabel: '上传照片',20 //allowBlank: false,21 id: 'photo',22 name: 'upload',23 buttonText: '选择'24 }]25 });26 27 //调用父类构造方法28 UploadWin.superclass.constructor.call(this,{29 title: '上传照片',30 modal: true,31 width: 300,32 height: 130,33 plain: true,34 bodyStyle: 'padding: 15px;',35 items:[this.uploadPanel],36 buttonAlign: 'center',37 buttons:[{38 text: '确定',39 handler: function(){40 Ext.getCmp('uploadformPanel').getForm().submit({41 url: 'emp_upload.action',42 method: 'post',43 waitTitle: '提示',44 waitMsg: '正在上传,请稍后...',45 success: uploadSuccess,46 failure: uploadFailure,47 scope: this48 });49 }50 },{51 text: '取消',52 handler: function(){53 Ext.getCmp('uploadformPanel').getForm().reset();54 Ext.get('emp_photo').dom.src = 'img/default.gif';55 uploadWin.destroy();56 }57 }]58 })59 }60 });61 uploadSuccess = function(form,action){62 //console.log('success');63 Ext.getCmp('uploadformPanel').getForm().reset();64 uploadWin.destroy();65 Ext.Msg.alert('提示',action.result.msg,function(){66 Ext.getCmp('emp_photo').getEl().dom.src = action.result.path;67 });68 }69 uploadFailure = function(form,action){70 //console.log('failure');71 Ext.Msg.alert('提示', '连接失败');72 };
id为photo为上传路径
8.
1 package com.hrmsys.action; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.PrintWriter; 6 import java.io.UnsupportedEncodingException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import javax.servlet.http.HttpServletResponse; 11 12 import org.apache.struts2.ServletActionContext; 13 14 import com.hrmsys.bean.EmployeeBean; 15 import com.hrmsys.model.Employee; 16 import com.hrmsys.model.User; 17 import com.hrmsys.service.EmpService; 18 import com.hrmsys.service.JobChangeService; 19 import com.hrmsys.util.ConditionValidate; 20 import com.hrmsys.util.CurrentDate; 21 import com.hrmsys.util.FileExport; 22 import com.hrmsys.util.SequenceBuilder; 23 import com.opensymphony.xwork2.ActionContext; 24 25 public class EmpAction extends BaseAction{ 26 private EmpService empService; 27 private Employee emp; 28 private ListempBeans; 29 private JobChangeService jobChangeService; 30 /** 31 * 由于dept和job常用,故单独成一js文件 32 * 但在与struts整合时不便将属性名绑定到name, 33 * 故此单独定义deptId和jobId属性 34 */ 35 private String deptId = null; 36 private String jobId = null; 37 private String empPhoto = null; 38 /** 39 * 配置文件中的参数会通过setter方法注入 40 * rePath获取savePath的值 41 */ 42 private String rePath = null; 43 /** 44 * 查询条目 45 */ 46 private String condition; 47 /** 48 * 查询内容 49 */ 50 private String conditionValue; 51 /** 52 * 保存的路径 53 */ 54 private String savePath; 55 /** 56 * 上传的文件内容 57 */ 58 private File upload; 59 /** 60 * 保存的文件名 61 */ 62 private String uploadFileName; 63 /** 64 * 上传的文件种类 65 */ 66 private String uploadContentType; 67 private String empId; 68 private String ids; 69 private String start; 70 private String limit; 71 72 /************方法**********************************************/ 73 /** 74 * 清单 75 */ 76 public void list(){ 77 String json = null; 78 json = empService.getByHQL(deptId, condition, conditionValue, start, limit); 79 this.setStart(null); 80 this.setLimit(null); 81 this.out(json); 82 } 83 /** 84 * 保存员工信息 85 */ 86 public void save(){ 87 log.info("save start...."); 88 log.info(this.getEmpPhoto()); 89 String msg = "保存失败"; 90 HttpServletResponse response = this.getResponse(); 91 User user = (User)ActionContext.getContext().getSession().get("user"); 92 emp.setEmpPhoto(this.getEmpPhoto()); 93 emp.setEmpAddDate(CurrentDate.getDate()); 94 emp.setEmpAddPerson(user.getUserName()); 95 msg = empService.save(emp); 96 this.out("{success: true, msg: '"+msg+"'}"); 97 } 98 /** 99 * 员工头像上传100 */101 public void upload(){102 log.info("upload start...");103 log.info("uploadFileName="+this.getUploadFileName());104 //重命名105 String fileName = SequenceBuilder.getSequence()+this.getUploadFileName().substring(this.getUploadFileName().indexOf(".")); 106 String msg = empService.uploadPhoto(this.getSavePath()+"\\"+fileName, this.getUpload());107 this.out("{success: true, msg: '"+msg+"', path: '"+this.rePath+"/"+fileName+"'}");108 }109 /**110 * 根据工号判断是否存在此员工111 */112 public void isExist(){113 String empName = empService.isExistByEmpId(empId);114 this.out(empName);115 }116 117 public void unique(){118 String emp = empService.unique(empId);119 this.out(emp);120 }121 122 public void delete(){123 String filePath = ServletActionContext.getRequest().getRealPath(savePath);124 String msg = empService.delete(ids, filePath);125 this.out("{success: true, msg: '"+msg+"'}");126 }127 128 public void intoUpdate(){129 String empJson = empService.listByEmpId(empId);130 this.out(empJson);131 }132 /**133 * 详细员工pdf报表预览134 */135 public String detailPdfReport(){136 empBeans = empService.getEmpList(empId);137 return "detailPdf";138 }139 public String simplePdfReport(){140 empBeans = empService.getEmpList(empId);141 return "simplePdf";142 }143 /**144 * 导出详细报表pdf145 */146 public void detailPdfExport(){147 empService.pdfExport(empId, this.getResponse(),"员工详细信息.pdf","detailEmp.jasper");148 }149 /**150 * 导出员工简单信息pdf151 */152 public void simplePdfExport(){153 empService.pdfExport(empId, this.getResponse(),"员工简单信息.pdf", "simpleEmp.jasper");154 }155 /**156 * 导出员工简单信息Excel157 */158 public void detailXlsExport(){159 empService.xlsExport(this.getResponse(), "员工信息.xls");160 }161 /*********getter and setter ***********/162 public EmpService getEmpService() {163 return empService;164 }165 166 public void setEmpService(EmpService empService) {167 this.empService = empService;168 }169 170 public String getDeptId() {171 return deptId;172 }173 174 public void setDeptId(String deptId) {175 this.deptId = deptId;176 }177 178 public String getCondition() {179 return condition;180 }181 182 public void setCondition(String condition) {183 this.condition = condition;184 }185 186 public String getConditionValue() {187 return conditionValue;188 }189 190 public void setConditionValue(String conditionValue) {191 this.conditionValue = conditionValue;192 }193 194 public Employee getEmp() {195 return emp;196 }197 198 public void setEmp(Employee emp) {199 this.emp = emp;200 }201 public String getJobId() {202 return jobId;203 }204 public void setJobId(String jobId) {205 this.jobId = jobId;206 }207 public String getSavePath() {208 //struts.xml中配置savePath参数,且获取文件夹的真实地址209 return ServletActionContext.getRequest().getRealPath(savePath);210 }211 public void setSavePath(String savePath) {212 this.rePath = savePath;213 this.savePath = savePath;214 }215 public File getUpload() {216 return upload;217 }218 public void setUpload(File upload) {219 this.upload = upload;220 }221 public String getUploadFileName() {222 return uploadFileName;223 }224 public void setUploadFileName(String uploadFileName) {225 this.uploadFileName = uploadFileName;226 }227 public String getUploadContentType() {228 return uploadContentType;229 }230 public void setUploadContentType(String uploadContentType) {231 this.uploadContentType = uploadContentType;232 }233 public String getEmpPhoto() {234 return empPhoto;235 }236 public void setEmpPhoto(String empPhoto) {237 this.empPhoto = empPhoto;238 }239 public JobChangeService getJobChangeService() {240 return jobChangeService;241 }242 public void setJobChangeService(JobChangeService jobChangeService) {243 this.jobChangeService = jobChangeService;244 }245 public String getEmpId() {246 return empId;247 }248 public void setEmpId(String empId) {249 this.empId = empId;250 }251 public String getIds() {252 return ids;253 }254 public void setIds(String ids) {255 this.ids = ids;256 }257 public List getEmpBeans() {258 return empBeans;259 }260 public void setEmpBeans(List empBeans) {261 this.empBeans = empBeans;262 }263 public String getStart() {264 return start;265 }266 public void setStart(String start) {267 this.start = start;268 }269 public String getLimit() {270 return limit;271 }272 public void setLimit(String limit) {273 this.limit = limit;274 }275 276 }
9.
1 package com.hrmsys.service.impl; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.util.ArrayList; 9 import java.util.List; 10 11 import javax.servlet.http.HttpServletResponse; 12 13 import net.sf.json.JSONArray; 14 15 import com.hrmsys.bean.EmployeeBean; 16 import com.hrmsys.bean.PageBean; 17 import com.hrmsys.dao.EmployeeDAO; 18 import com.hrmsys.enums.StaticValue; 19 import com.hrmsys.model.Department; 20 import com.hrmsys.model.Employee; 21 import com.hrmsys.service.EmpService; 22 import com.hrmsys.util.ConditionValidate; 23 import com.hrmsys.util.FileExport; 24 25 public class EmpServiceImpl implements EmpService { 26 27 private EmployeeDAO empDAO; 28 29 @Override 30 public int findNumByDept(Department dept) { 31 Listemps = empDAO.findByDept(dept); 32 if (emps != null) 33 return emps.size(); 34 return 0; 35 } 36 37 public EmployeeDAO getEmpDAO() { 38 return empDAO; 39 } 40 41 public void setEmpDAO(EmployeeDAO empDAO) { 42 this.empDAO = empDAO; 43 } 44 45 @Override 46 public String getAll(String start, String limit) { 47 List emps = empDAO.findAll(Integer.parseInt(start), Integer.parseInt(limit)); 48 String json = null; 49 if (emps.size() != 0) { 50 json = JSONArray.fromObject(emps).toString(); 51 } 52 int totalProperty = empDAO.findTotal(Employee.class); 53 return "{totalProperty:"+totalProperty+",root:"+json+"}"; 54 } 55 56 @Override 57 public String findByDeptId(String deptId) { 58 Department dept = new Department(); 59 dept.setDeptId(deptId); 60 List emps = empDAO.findByDept(dept); 61 String json = JSONArray.fromObject(emps).toString(); 62 return json; 63 } 64 65 @Override 66 public String getByHQL(String deptId, String condition, 67 String conditionValue, String start, String limit) { 68 69 PageBean pageBean = empDAO.findByHQL(deptId, condition, 70 conditionValue, Integer.parseInt(start), Integer.parseInt(limit)); 71 String json = JSONArray.fromObject(pageBean.getRoot()).toString(); 72 return "{totalProperty:"+pageBean.getTotalProperty()+",root:"+json+"}"; 73 } 74 75 @Override 76 public String save(Employee emp) { 77 if (empDAO.saveOrUpdate(emp)) { 78 return StaticValue.SAVE_SUCCESS; 79 } 80 return StaticValue.SAVE_FAILURE; 81 } 82 83 @Override 84 public String uploadPhoto(String savePath, File upload) { 85 boolean flag = true; 86 String msg = null; 87 try { 88 FileOutputStream fos = new FileOutputStream(savePath); 89 FileInputStream fis = new FileInputStream(upload); 90 byte[] buffer = new byte[1024]; 91 int len = 0; 92 while ((len = fis.read(buffer)) > 0) { 93 fos.write(buffer, 0, len); 94 } 95 } catch (FileNotFoundException e) { 96 flag = false; 97 e.printStackTrace(); 98 } catch (IOException e) { 99 flag = false;100 e.printStackTrace();101 } finally {102 if (flag) {103 msg = StaticValue.UPLOAD_SUCCESS;104 } else {105 msg = StaticValue.UPLOAD_FAILURE;106 }107 }108 return msg;109 }110 111 @Override112 public String isExistByEmpId(String empId) {113 Employee emp = empDAO.findByEmpId(empId);114 if(null != emp){115 return emp.getEmpName();116 }117 return "";118 }119 120 @Override121 public String unique(String empId) {122 Employee emp = empDAO.findByEmpId(empId);123 if(null != emp){124 return JSONArray.fromObject(emp).toString();125 }126 return "";127 }128 129 @Override130 public String delete(String ids, String filePath) {131 String[] empIds = ids.split(",");132 for(String empId : empIds){133 Employee emp = empDAO.findByEmpId(empId);134 String urlPath = emp.getEmpPhoto();135 if(urlPath.indexOf("default.gif") < 0){ //默认图片不删除 136 int position = urlPath.lastIndexOf("/");137 File file=new File(filePath +"\\"+ urlPath.substring(position, urlPath.length()));138 if(file.exists() && file.isFile())139 file.delete();140 }141 }142 if(empDAO.deleteByEmpId(empIds)){143 return StaticValue.DELETE_SUCCESS;144 }145 return StaticValue.DELETE_FAILURE;146 }147 148 @Override149 public String listByEmpId(String empId) {150 Employee emp = empDAO.findByEmpId(empId);151 return JSONArray.fromObject(emp).toString();152 } 153 154 public List packageEmp(List emps) {155 List empBeans = new ArrayList ();156 for(Employee emp : emps){157 EmployeeBean empBean = new EmployeeBean();158 empBean.setEmpAccount(emp.getEmpAccount());159 empBean.setEmpAddress(emp.getEmpAddress());160 empBean.setEmpBank(emp.getEmpBank());161 empBean.setEmpBirth(emp.getEmpBirth());162 empBean.setEmpEducation(emp.getEmpEducation());163 empBean.setEmpEmail(emp.getEmpEmail());164 empBean.setEmpId(emp.getEmpId());165 empBean.setEmpIdcard(emp.getEmpIdcard());166 empBean.setEmpMobilephone(emp.getEmpMobilephone());167 empBean.setEmpName(emp.getEmpName());168 empBean.setEmpNation(emp.getEmpNation());169 empBean.setEmpNationality(emp.getEmpNation());170 empBean.setEmpOrigin(emp.getEmpOrigin());171 empBean.setEmpPhoto(emp.getEmpPhoto());172 empBean.setEmpPost(emp.getEmpPost());173 empBean.setEmpProfession(emp.getEmpProfession());174 empBean.setEmpQq(emp.getEmpQq());175 empBean.setEmpSchool(emp.getEmpSchool());176 if(emp.getEmpSex() == 1){177 empBean.setEmpSex("男");178 }else{179 empBean.setEmpSex("女");180 }181 empBean.setEmpTelephone(emp.getEmpTelephone());182 empBean.setJob(emp.getJob().getJobName());183 empBean.setDept(emp.getDepartment().getDeptName());184 empBeans.add(empBean);185 }186 187 return empBeans;188 }189 190 @Override191 public void pdfExport(String empId, HttpServletResponse response, String filename, String jasper) {192 Employee emp = null;193 List emps = new ArrayList ();194 if(!"all".equals(empId) && ConditionValidate.isEmpty(empId)){195 emp = empDAO.findByEmpId(empId);196 emps.add(emp);197 }else{198 emps = empDAO.findAll(Employee.class);199 }200 List empBeans = packageEmp(emps);201 FileExport fileExport = new FileExport();202 fileExport.exportPDF(empBeans, filename,jasper, response);203 204 }205 206 @Override207 public List getEmpList(String empId) {208 List emps = new ArrayList ();209 Employee emp = empDAO.findByEmpId(empId);210 emps.add(emp);211 return this.packageEmp(emps);212 }213 214 @Override215 public void xlsExport(HttpServletResponse response, String filename) {216 List emps = empDAO.findAll(Employee.class);217 List empBeans = this.packageEmp(emps);218 FileExport fileExport = new FileExport();219 fileExport.exportXls(empBeans, filename, response);220 }221 222 }