ATTEN:张经理
phone:13696432490
QQ:9618195
ADD:重庆市渝北区栖霞路18号金贸时代7-24
本文由重庆佰鼎科技有限公司提供,重点介绍了oa签到相关内容。重庆佰鼎科技有限公司专业提供中国燃气oa,通达oa怎么,奉贤oa等多项产品服务。公司的产品服务被广泛应用于其专属行业,市场覆盖率高,售后保障良好,质量高,价格低。
oa签到学习主题:OA系统学习目标:
掌握web开发项目实战,熟练使用web开发基础技术考勤管理-签到-前台代码实现jQuery代码,页面初始化绑定事件,怎么实现?
给签到按钮添加id,然后使用jQuery中的click事件给签到按钮绑定一个 单击事件,在单击事件中使用ajax实现页面局部刷新动作。考勤管理-签到-全部功能实现简述签到功能的逻辑?
给签到按钮添加id,然后使用jQuery中的click事件给签到按钮绑定一个单击事件,
在ajax中给url属性绑定一个servlet,在servlet中调用service层,
在service层调用dao层进行业务逻辑判断是否已经签到,如果已经签到,返回数据给servlet,
servlet将已经签到不能重复签到返回给ajax,如果没有签到,则在service层调用dao层,在dao层中进行数据添加,
数据添加成功则表示签到成功,添加失败则表示签到失败。最后使用success中的function函数进行数据回显。ajax实现的步骤?
$("#signin").click(function(){
//发送ajax请求
$.ajax({
url:"duty?method=signin",
type:"post",
dataType:"text",
success:function(data){
if(data == 0){
$("#result").html("签到失败");
}else if(data == 1){
$("#result").html("签到成功");
}else{
$("#result").html("已经签到,不能重复签到");
}
}
});
});
签退-全部功能实现简述签退逻辑。
给签退按钮添加id,然后使用jQuery给签退按钮绑定一个单击事件,在ajax中使用url属性绑定servlet,
在servlet中调用service层,在service层进行业务逻辑操作,判断是否已经签到,如果没有签到则显示没有签到,不能进行签退,
如果已经签到,则调用dao层,在dao层中进行数据库操作,实则就是进行数据库的修改操作。
然后将结果返回给servlet,servlet再将数据回显给ajax。Ajax使用success属性中的function函数进行数据回显。通过Ajax获取查询条件之部门列表进入考勤管理页面之后,如何加载所属部门下拉列表?
使用ajax进行servlet的调用,将部门信息返回给ajax,然后使用eval方法将json格式的数据转成object格式,
然后进行遍历,使用html()方法将数据填充到指定的位置。点击查询后,显示所有签到信息,如何利用ajax实现,简述过程?
在jsp页面中发起ajax请求,在servlet中进行处理servlet调用service层,service层调用dao层,
在dao层中进行条件查询,如果不输入条件,默认为查询所有。最后将结果返回给servlet,servlet将结果推送给ajax,
ajax使用function方法进行接收并进行处理,然后将其展示处理。考勤管理-使用Ajax查询考勤信息
按照条件查询,可以有两种方式,第一种:点击查询按钮之后,请求后台servlet,然后从servlet中跳转到考勤管理页面,还有一种方式:利用ajax查询,请问这两种方式哪一种比较好?优点是什么呢?
使用ajax方式比较好,因为ajax是局部刷新,而从servlet中跳转到指定页面是全部刷新,
每刷新一次都会刷新整个页面,会导致数据重复提交。而ajax仅仅是刷新局部页面,不会导致数据的重复提交。
使用Ajax查询考勤信息2如何拼接考勤信息列表字符串?
var str = "";
for(var i=0;i str += ' ' ''+ ' ' ' ' ' ' ' ''+ ';'+ '+'+arr[i].emp.empId+' '+'+arr[i].emp.realName+' '+'+arr[i].emp.dept.deptname+' '+'+arr[i].dtDate+' '+'+arr[i].signinTime+' '+'+arr[i].signoutTime+' '+
}
考勤管理-使用Ajax查询考勤信息3如何在后台sql中进行条件的拼接?
StringBuilder sql = new StringBuilder("select dt.*,e.deptno,e.realname,d.deptname"oa签到
+ " from duty dt"
+ " join employee e"
+ " on dt.empid=e.empid"
+ " join dept d"
+ " on e.deptno=d.deptno where 1=1 ");
if(empId != null & !"".equals(empId)){
sql.append(" and dt.empId='"+empId+"'");
}
if(deptno != 0){
sql.append(" and e.deptno="+deptno);
}
if(dtDate != null){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String sdtDate = df.format(dtDate);
sql.append(" and to_char(dtDate,'yyyy-mm-dd')>='"+sdtDate+"'");
}
考勤管理-使用POI导出考勤数据到xls1POI干嘛的?
POI是"Point of Information"的缩写,可以翻译成"信息点",
每个POI包含四方面信息,名称、类别、经度纬度、附近的酒店饭店商铺等信息。
poi就是批量的操作文件或数据的导入以及导出。POI和JXL的区别?
POI
优点:
效率高
支持公式,宏,一些企业应用上会非常实用
能够修饰单元格属性
支持字体、数字、日期操作
缺点:不成熟,代码不能跨平台,
jxl
优点:
Jxl对中文支持非常好,操作简单,方法看名知意。
Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写
支持Excel 95-2000的所有版本
生成Excel 2000标准格式
支持字体、数字、日期操作
能够修饰单元格属性
支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
缺点:效率低,图片支持不完善,对格式的支持不如POI强大
考勤管理-使用POI导出考勤数据到xls2如何使用POI,简述步骤?
使用POI首先导入poi-3.9-20121203.jar包。然后在servlet中实现POI导出Excel代码,
在jsp页面中给绑定按钮添加单击事件,在单击事件中使用ajax发起请求。将请求与servlet进行绑定。如何将后台查到的考勤数据,弄到前台客户端下载为excel,代码如何实现呢?
使用ajax请求,给导出按钮绑定单击事件,当点击导入按钮时,则触发后台的业务逻辑处理与数据库操作,将查询到的结果以Excel的形式下载到客户端。
$("#btn2").click(function(){
//获取三个查询条件的值
var empId = $("#empId").val();
var deptno = $("#deptno").val();
var dtDate = $("#dtDate").val();
//访问指定的servlet,不使用ajax(ajax是是回调函数处理结果的,导出XLS是直接返回流,也不能使用请求转发和重定向)
location.href="duty?method=exportXls&empId="+empId+"&deptno="+deptno+"&dtDate="+dtDate;
});
public void exportXls(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取三个查询条件
String empId = req.getParameter("empId");
String sdeptno = req.getParameter("deptno");
int deptno = 0;
try {
deptno = Integer.parseInt(sdeptno);
} catch (Exception e) {
e.printStackTrace();
}
String sdtDate = req.getParameter("dtDate");
java.sql.Date dtDate = null;
try {
dtDate = java.sql.Date.valueOf(sdtDate);
} catch (Exception e) {
e.printStackTrace();
}
//调用业务层对象
DutyService dutyService = new DutyServiceImpl();
List
//调用流对象创建Excel
createExcel(dutyList,resp);
}
private static void createExcel(List
// 创建一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个工作表
HSSFSheet sheet = workbook.createSheet("考勤信息表");
CellRangeAddress region = new CellRangeAddress(0, // first row
0, // last row
0, // first column
5 // last column
);
sheet.addMergedRegion(region);
HSSFRow hssfRow = sheet.createRow(0);
HSSFCell headCell = hssfRow.createCell(0);
headCell.setCellValue("尚学堂考勤信息");
// 设置单元格格式居中
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headCell.setCellStyle(cellStyle);
// 添加表头行
hssfRow = sheet.createRow(1);
// 添加表头内容
headCell = hssfRow.createCell(0);
headCell.setCellValue("用户名");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(1);
headCell.setCellValue("真实姓名");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(2);
headCell.setCellValue("所属部门");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(3);
headCell.setCellValue("出勤日期");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(4);
headCell.setCellValue("签到时间");
headCell.setCellStyle(cellStyle);
headCell = hssfRow.createCell(5);
headCell.setCellValue("签退时间");
headCell.setCellStyle(cellStyle);
// 添加数据内容
for (int i = 0; i < list.size(); i++) {
hssfRow = sheet.createRow((int) i + 2);
Duty duty = list.get(i);
// 创建单元格,并设置值
HSSFCell cell = hssfRow.createCell(0);
cell.setCellValue(duty.getEmp().getEmpId());
cell.setCellStyle(cellStyle);
cell = hssfRow.createCell(1);
cell.setCellValue(duty.getEmp().getRealName());
cell.setCellStyle(cellStyle);
cell = hssfRow.createCell(2);
cell.setCellValue(duty.getEmp().getDept().getDeptname());
cell.setCellStyle(cellStyle);
cell = hssfRow.createCell(3);
cell.setCellValue(duty.getDtDate());
cell.setCellStyle(cellStyle);
cell = hssfRow.createCell(4);
cell.setCellValue(duty.getSigninTime());
cell.setCellStyle(cellStyle);
cell = hssfRow.createCell(5);
cell.setCellValue(duty.getSignoutTime());
cell.setCellStyle(cellStyle);
}
// 保存Excel文件
try {
resp.setContentType("application/vnd.ms-excel"); //以XLS形式存储
resp.setHeader("Content-disposition", "attachment; fileName=duty.xls"); //以附件形式下载,文件名为duty.xls
//OutputStream outputStream = new FileOutputStream("D:/duty.xls"); //存储到服务器端
ServletOutputStream outputStream = resp.getOutputStream(); //存储到客户端
workbook.write(outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
简述给出的OperateExcelUtil.java的功能含义?
OperateExcelUtil.java中封装了导入Excel以及导出Excel功能,可以依据此类中的方法进行模仿修改为自己的方法,实现数据的导入导出格式为Excel。报销管理-理解数据库表和创建实体类简述系统中表之间的关系:
报销单包含多个明细,报销单明细所属于报销单。报销管理-添加报销单-视图层
在完成视图层操作中,有哪些注意事项?
报销人、审核人已经确定,不需要输入
报销时间、报销总金额不需要输入在页面中,如何利用jQuery完成添加报销项操作?
function addExpenseItem(id){
//获取上级标签
var table = $(id);
//创建当前标签
var content = $('
'
'
'
'
//加入上级标签
table.append(content);
$(".select1").uedSelect({
width : 345
});
}
在页面中,如何利用jQuery完成添加图片操作?
function addPhoto(){
//获取上传图片li
var li = $("#uploadphoto");
//console.info(li);
//准备添加的dom对象
var content=$(""+
"");
//加入到指定位置
li.append(content);
}
报销管理-添加报销单-控制层页面中假如添加了多个报销项,那么在控制层接收数据的思路是什么呢?怎么接收数据呢?
将各个报销项的数据封装到一个实体中,然后将所有的报销项添加到一个list集合中,将集合中的数据封装到总的报销单中。为什么在数据库中有状态码字段,这个字段的作用是什么?缺少这个字段可以吗?
用来表示报销单的审核状态,不可以缺少,如果缺少了,则无法确定报销单的审核状态,在实际公司中容易导致资金出现问题。
ATTEN:张经理
phone:13696432490
QQ:9618195
ADD:重庆市渝北区栖霞路18号金贸时代7-24