package com.xjj.supervise.instance.util; import jxl.write.*; import jxl.write.biff.RowsExceededException; import jxl.Workbook; import jxl.read.biff.BiffException; import javax.servlet.http.HttpServletRequest; import javax.naming.NamingException; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.ArrayList; import java.sql.Timestamp; import java.sql.SQLException; import com.xjj.sf.util.SfxzspClient; import com.xjj.sf.util.TreeItem; import com.xjj.sf.util.SfUtil; import com.xjj.sf.item.service.SpIntanceItemService; import com.xjj.sf.item.dao.ServiceItemAndInstDataDao; import com.xjj.sf.item.util.IntanceItemUtil; import com.xjj.sf.ouser.dao.SpUserDao; import com.xjj.sf.ouser.model.SpUserModel; import com.xjj.sf.xbase.platform.spring.SpringContext; import com.xjj.util.SfConstants; import com.xjj.supervise.instance.model.IntanceModel; import com.xjj.supervise.instance.service.InstanceProcessService; import com.xjj.oa.util.OaUtil; /** * Created by IntelliJ IDEA. * User: Administrator_xusg * Date: 2008-7-29 * Time: 14:26:52 * DESP: * To change this template use File | Settings | File Templates. */ public class InstanceEducelist { public static boolean educef = false; private static InstanceEducelist instance; static{ instance = new InstanceEducelist(); } public static InstanceEducelist getInstance(){ if(instance == null) instance = new InstanceEducelist(); return instance; } public synchronized String createJxl(HttpServletRequest request){ educef = false; SpIntanceItemService iService = (SpIntanceItemService) SpringContext.getBean("spIntanceItemService"); InstanceProcessService instanceProcessService = (InstanceProcessService)SpringContext.getBean("instanceProcessService"); ServiceItemAndInstDataDao itemInstDaoImpl = (ServiceItemAndInstDataDao)SpringContext.getBean("itemInstDaoImpl"); SpUserDao spUserImpl = (SpUserDao)SpringContext.getBean("spUserImpl"); String resourcePath = request.getSession().getServletContext().getRealPath(File.separator+"jxlt"+File.separator+"intancelistt.xlt"); String targetPath = resourcePath.substring(0,resourcePath.lastIndexOf(File.separator)); targetPath += (File.separator+"xls"+File.separator+System.currentTimeMillis()+".xls"); File sourceF = new File(resourcePath); File targetF = new File(targetPath); if(targetF.exists()) targetF.delete(); //条件开始 String orgId = "0"; SfxzspClient client = new SfxzspClient(); List orglist = client.getAllDepartMentInfo(SfConstants.getString("GROUPID")); //所有单位 for(int i=0;i<orglist.size();i++){ TreeItem orgIds = (TreeItem)orglist.get(i); orgId = orgIds.getId(); break; } String toOrgId = ""; if(request.getParameter("toOrgId")!=null){ toOrgId = request.getParameter("toOrgId"); orgId = toOrgId; }else toOrgId = orgId; List orgItemlist = new ArrayList(); try { orgItemlist = itemInstDaoImpl.getItemlistByOrgId(new Integer(orgId),null,null); //取出第一个单位的事项 } catch (Exception e) { e.printStackTrace(); } IntanceModel imodel = new IntanceModel(); if(!orgId.equals("0")&&orgId.length()>0) imodel.setOrgId(Integer.parseInt(orgId)); String search_name = request.getParameter("search_name"); String search_instNumber = request.getParameter("search_instNumber"); String itemId = request.getParameter("itemId"); String state = request.getParameter("state") ; String search_userName = request.getParameter("search_userName"); String search_declarer = request.getParameter("search_declarer"); String declareTime = request.getParameter("declareTime"); String endtime = request.getParameter("endtime"); String search_all = request.getParameter("search_all"); if(search_name!=null&&search_name.length()>0){ search_name = search_name.trim(); try { search_name = new String(search_name.getBytes(),"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } imodel.setName(search_name); } if(search_instNumber!=null&&search_instNumber.length()>0) imodel.setInstNumber(search_instNumber); //事项编号 if(itemId!=null&&itemId.length()>0&&!itemId.equals("0")) imodel.setServiceId(itemId); //事项ID if(state!=null&&state.length()>0&&!state.equals("0")) imodel.setState(Integer.parseInt(state)); //状态 else imodel.setBy1("1,2,4,6,8,9,11,20,21"); if(search_userName!=null&&search_userName.length()>0){ search_userName = search_userName.trim(); try { search_userName = new String(search_userName.getBytes(),"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } imodel.setUserName(search_userName); } if(search_declarer!=null&&search_declarer.length()>0) imodel.setDeclarer(search_declarer); if(declareTime!=null&&declareTime.length()>0){ String st = declareTime+" 00:00"; imodel.setDeclareTime(SfUtil.stringToTimestamp(st,null)); } if(endtime!=null&&endtime.length()>0){ String et = endtime+" 23:58"; imodel.setDeclareEndTime(SfUtil.stringToTimestamp(et,null)); } if(search_all!=null&&search_all.length()>0){ search_all = search_all.trim(); try { search_all = new String(search_all.getBytes(),"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } imodel.setBy6(search_all); } //条件完成 Workbook handExcel = null; try { handExcel = Workbook.getWorkbook(sourceF); WritableWorkbook educeExcel = Workbook.createWorkbook(targetF,handExcel); WritableSheet targetExcelSheet = educeExcel.getSheet(0); //标题头 String title = "省人民政府政务服务中心办件情况表"; jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,20, WritableFont.BOLD,false); WritableCellFormat MainCellFormat = new WritableCellFormat(wf); MainCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式 MainCellFormat.setAlignment(jxl.format.Alignment.CENTRE); MainCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); MainCellFormat.setWrap(true); Label label = new Label(0,0,title,MainCellFormat); targetExcelSheet.addCell(label); setTimeLabelFormat(1,imodel,targetExcelSheet,label); //设置时间 imodel.setWillDate(SfUtil.getDateFormat(new Timestamp(System.currentTimeMillis()),2)); List datalist = iService.getDataListByModel(imodel,-1,-1,null); //写入过程数据 int position = 3; for(int i=0;i<datalist.size();i++){ IntanceModel model = (IntanceModel)datalist.get(i); model.setProcessModel(instanceProcessService.getInstanceProcesslistByIntanceIdState(model.getId(),imodel.getState())); model.setInstNumber(model.getInstNumber()==null||model.getInstNumber().equals("null")?"":model.getInstNumber()); //model.setStateName(IntanceItemUtil.getIntance().getStateImageByTime(model,1)); model.setBy1(IntanceItemUtil.getIntance().showStateName(model.getState())); //model.setBy2(IntanceItemUtil.getIntance().getImageText(model.getStateName())); SpUserModel sumodel = spUserImpl.getSpUserModelByCardId(model.getDeclarer());//机构代码取用户类型 model.setBy7(sumodel==null?"":(sumodel.getCardType().equals("1")?"身份证":"机构代码")); model.setBy8(sumodel==null?"":sumodel.getCardId()==null?"":sumodel.getCardId()); model.setBy9((i+1)+""); setDataLabelFormat(position,model,targetExcelSheet,label); model.setUserIdName(OaUtil.getUserNameById(model.getUserId())); position++; } educeExcel.write(); //写入Excel对象 educeExcel.close(); handExcel.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } return targetPath; } /** * 设定表格格式 * @param position * @param targetExcelSheet * @param label * @throws IOException * @throws BiffException * @throws jxl.write.WriteException */ private void setDataLabelFormat(int position,IntanceModel model,WritableSheet targetExcelSheet,Label label) throws IOException,BiffException, WriteException { label = new Label(0,position,model.getBy9()); targetExcelSheet.addCell(label); label = new Label(1,position,model.getDeclarerName()); targetExcelSheet.addCell(label); label = new Label(2,position,model.getName()); targetExcelSheet.addCell(label); label = new Label(3,position,model.getBy5()); targetExcelSheet.addCell(label); label = new Label(4,position,model.getDeclareTime()==null?"":SfUtil.getDateFormat(model.getDeclareTime(),2)); targetExcelSheet.addCell(label); label = new Label(5,position,model.getUserName()); targetExcelSheet.addCell(label); label = new Label(6,position,model.getUserPhone()); targetExcelSheet.addCell(label); label = new Label(7,position,model.getBy7()); targetExcelSheet.addCell(label); label = new Label(8,position,model.getBy8()); targetExcelSheet.addCell(label); label = new Label(9,position,""); targetExcelSheet.addCell(label); WritableCellFormat BodyCellFormat = new WritableCellFormat(); BodyCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式 BodyCellFormat.setAlignment(jxl.format.Alignment.CENTRE); BodyCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); BodyCellFormat.setWrap(true); targetExcelSheet.getWritableCell(0,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(1,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(2,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(3,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(4,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(5,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(6,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(7,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(8,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(9,position).setCellFormat(BodyCellFormat); } private void setTimeLabelFormat(int position,IntanceModel model,WritableSheet targetExcelSheet,Label label) throws IOException,BiffException, WriteException { String startTime = model.getDeclareTime()==null?"":SfUtil.getDateFormat(model.getDeclareTime(),2); String endTime = model.getDeclareEndTime()==null?"":SfUtil.getDateFormat(model.getDeclareEndTime(),2); label = new Label(1,position,startTime); targetExcelSheet.addCell(label); label = new Label(3,position,endTime); targetExcelSheet.addCell(label); WritableCellFormat BodyCellFormat = new WritableCellFormat(); BodyCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式 BodyCellFormat.setAlignment(jxl.format.Alignment.CENTRE); BodyCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); BodyCellFormat.setWrap(true); targetExcelSheet.getWritableCell(1,position).setCellFormat(BodyCellFormat); targetExcelSheet.getWritableCell(3,position).setCellFormat(BodyCellFormat); } }