1.员工信息管理jsp
1 <%@ page language="java" pageEncoding="UTF-8"%>
2 <script type="text/javascript">
3 var empGrid = new empInfoGridPanel();
4 tabId = Ext.getCmp('mainTab').getActiveTab().id.split('_')[1];
5 juage(tabId,"emp",empGrid,"emp");
6 </script>
7 <div id="emp"></div>
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.empAddFn
108 },{
109 text: '修改',
110 handler: this.empUpdateFn
111 },{
112 text: '详情',
113 handler: this.empDetailFn
114 }]
115 }),
116
117 bbar:new PagingToolbar(empInfoStore,20)
118 });
119
120 empInfoStore.load({
121 params:{
122 deptId:"",
123 start:0,
124 limit:20
125 }
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: 20
141 }
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: empId
171 },
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: empId
194 }
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: '<center><h1>员工信息</h1></center><br/>'
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, //此处特别注意inputValue
134 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: 150
180 },
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: 150
250 },
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: upload
271 },{
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: 20
377 }
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: this
48 });
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 List<EmployeeBean> empBeans;
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 * 导出详细报表pdf
145 */
146 public void detailPdfExport(){
147 empService.pdfExport(empId, this.getResponse(),"员工详细信息.pdf","detailEmp.jasper");
148 }
149 /**
150 * 导出员工简单信息pdf
151 */
152 public void simplePdfExport(){
153 empService.pdfExport(empId, this.getResponse(),"员工简单信息.pdf", "simpleEmp.jasper");
154 }
155 /**
156 * 导出员工简单信息Excel
157 */
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<EmployeeBean> getEmpBeans() {
258 return empBeans;
259 }
260 public void setEmpBeans(List<EmployeeBean> 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 List<Employee> emps = 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<Employee> 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<Employee> 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 @Override
112 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 @Override
121 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 @Override
130 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 @Override
149 public String listByEmpId(String empId) {
150 Employee emp = empDAO.findByEmpId(empId);
151 return JSONArray.fromObject(emp).toString();
152 }
153
154 public List<EmployeeBean> packageEmp(List<Employee> emps) {
155 List<EmployeeBean> empBeans = new ArrayList<EmployeeBean>();
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 @Override
191 public void pdfExport(String empId, HttpServletResponse response, String filename, String jasper) {
192 Employee emp = null;
193 List<Employee> emps = new ArrayList<Employee>();
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<EmployeeBean> empBeans = packageEmp(emps);
201 FileExport fileExport = new FileExport();
202 fileExport.exportPDF(empBeans, filename,jasper, response);
203
204 }
205
206 @Override
207 public List<EmployeeBean> getEmpList(String empId) {
208 List<Employee> emps = new ArrayList<Employee>();
209 Employee emp = empDAO.findByEmpId(empId);
210 emps.add(emp);
211 return this.packageEmp(emps);
212 }
213
214 @Override
215 public void xlsExport(HttpServletResponse response, String filename) {
216 List<Employee> emps = empDAO.findAll(Employee.class);
217 List<EmployeeBean> empBeans = this.packageEmp(emps);
218 FileExport fileExport = new FileExport();
219 fileExport.exportXls(empBeans, filename, response);
220 }
221
222 }