package com.cabletech.business.wplan.plan.action; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.cabletech.baseinfo.base.BaseUtil; import com.cabletech.baseinfo.business.entity.UserInfo; import com.cabletech.baseinfo.excel.ExportUtil; import com.cabletech.baseinfo.excel.WorkBookData; import com.cabletech.business.wplan.plan.model.Patrolinfo; import com.cabletech.business.wplan.plan.service.PatrolinfoExecuteService; import com.cabletech.common.base.SysConstant; import com.cabletech.common.util.Page; /** * 巡检计划执行Action * * @author zhaobi * */ @Action("/patrolinfoExecuteAction") @Results({ @Result(name = "show_executeschedule_list", location = "/wplan/plan/patrolinfo_executeschedule_list.jsp"), @Result(name = "lostdetail", location = "/wplan/plan/patrolinfo_lostresource_list.jsp"), @Result(name = "overdetail", location = "/wplan/plan/patrolinfo_overresource_list.jsp"), @Result(name = "rfiddetail", location = "/wplan/plan/patrolinfo_rfid_list.jsp"), @Result(name = "itemdetail", location = "/wplan/plan/patrolinfo_itemdetail_list.jsp"), @Result(name = "show_executeresult_list", location = "/wplan/plan/patrolinfo_executeresult_list.jsp") }) public class PatrolinfoExecuteAction extends PatrolinfoBaseAction<Patrolinfo, String> { /** * */ private static final long serialVersionUID = 1L; /** * 执行情况列表名称 */ private static final String SHOW_EXECUTESCHEDULE_LIST = "show_executeschedule_list"; /** * 执行结果列表名称 */ private static final String SHOW_EXECUTERESULT_LIST = "show_executeresult_list"; /** * 未巡检明细 */ private static final String SHOW_LOST_DETAIL_LIST = "lostdetail"; /** * 已巡检明细 */ private static final String SHOW_OVER_DETAIL_LIST = "overdetail"; /** * RFID明细 */ private static final String SHOW_RFID_DETAIL_LIST = "rfiddetail"; /** * 巡检表明细 */ private static final String SHOW_ITEM_DETAIL_LIST = "itemdetail"; /** * 巡检计划信息 */ private Patrolinfo patrolinfo = new Patrolinfo(); /** * 巡检执行信息服务 */ @Resource(name = "patrolinfoExecuteServiceImpl") private PatrolinfoExecuteService patrolinfoExecuteService; @Override public Patrolinfo getModel() { return patrolinfo; } @Override protected void prepareViewModel() throws Exception { if (null == patrolinfo) { patrolinfo = new Patrolinfo(); } } @Override protected void prepareSaveModel() throws Exception { // TODO Auto-generated method stub } /** * 显示执行计划情况页面 * * @return * @throws Exception */ @SuppressWarnings("unchecked") public String showExecuteScheduleList() { try { prepareViewModel(); String businesstype = this.getRequest().getParameter("type"); this.getRequest().setAttribute("businesstype", businesstype); return SHOW_EXECUTESCHEDULE_LIST; } catch (Exception e) { logger.error("执行综合查询异常:" + e.getMessage()); return ERROR; } } /** * 显示执行计划情况列表 * * @throws Exception */ public void queryshowschedule() throws Exception { prepareViewModel(); UserInfo userinfo = this.getUser(); String businesstype = this.getRequest().getParameter("type"); patrolinfo.setPlanstate(SysConstant.PASSED_STATE); if (!StringUtils.isNotBlank(patrolinfo.getRegionid())) { patrolinfo.setRegionid(userinfo.getRegionId()); } if (!StringUtils.isNotBlank(patrolinfo.getContractorid())) { if (userinfo.isContractor()) { patrolinfo.setContractorid(userinfo.getOrgId()); } } patrolinfo.setBusinesstype(businesstype); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getAllPatrolScheduleInfo(patrolinfo, page); super.setExcelParameter(page); convertObjToJson(page); } /** * 显示执行计划结果页面 * * @return * @throws Exception */ @SuppressWarnings("unchecked") public String showExecuteResultList() { try { String businesstype = this.getRequest().getParameter("type"); this.getRequest().setAttribute("businesstype", businesstype); return SHOW_EXECUTERESULT_LIST; } catch (Exception e) { logger.error("执行计划结果异常:" + e.getMessage()); return ERROR; } } /** * 执行计划结果列表 */ public void queryshowresult() { String businesstype = this.getRequest().getParameter("type"); patrolinfo.setPlanstate(SysConstant.PASSED_STATE); UserInfo userinfo = this.getUser(); if (!StringUtils.isNotBlank(patrolinfo.getRegionid())) { patrolinfo.setRegionid(userinfo.getRegionId()); } if (!StringUtils.isNotBlank(patrolinfo.getContractorid())) { if (userinfo.isContractor()) { patrolinfo.setContractorid(userinfo.getOrgId()); } } patrolinfo.setBusinesstype(businesstype); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService .getAllPatrolResultInfo(patrolinfo, page); super.setExcelParameter(page); convertObjToJson(page); } /** * 未巡检明细页面 * * @return * @throws Exception */ public String lostdetail() { String planid = this.getRequest().getParameter("id"); try { super.getRequest().setAttribute("planid", planid); return SHOW_LOST_DETAIL_LIST; } catch (Exception e) { logger.error("执行未巡检明细页面异常:" + e.getMessage()); return ERROR; } } /** * 未巡检明细LIST */ public void querylostdetail() { String planid = this.getRequest().getParameter("id"); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getAllLostDetail(planid, page); super.getRequest().setAttribute("page", page); convertObjToJson(page); } /** * 已巡检明细页面 * * @return * @throws Exception */ public String overdetail() { String planid = this.getRequest().getParameter("id"); try { super.getRequest().setAttribute("planid", planid); return SHOW_OVER_DETAIL_LIST; } catch (Exception e) { logger.error("执行已巡检明细页面异常:" + e.getMessage()); return ERROR; } } /** * 已巡检明细LIST */ public void queryoverdetail() { String planid = this.getRequest().getParameter("id"); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getAllOverDetail(planid, page); super.setExcelParameter(page); convertObjToJson(page); } /** * RFID明细Action * * @return * @throws Exception */ public String rfiddetail() { // 巡检结果ID; String rid = this.getRequest().getParameter("id"); try { Map<String, Object> map = patrolinfoExecuteService .getPatrolResourceDetail(rid); super.getRequest().setAttribute("rfidMap", map); return SHOW_RFID_DETAIL_LIST; } catch (Exception e) { logger.error("执行已巡检明细页面异常:" + e.getMessage()); return ERROR; } } /** * 已完成RFID巡检列表 */ public void rfidover() { // 巡检结果ID; String rid = this.getRequest().getParameter("id"); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getOverRFIDDetail(rid, page); convertObjToJson(page); } /** * 未完成RFID巡检列表 */ public void rfidlost() { // 巡检结果ID; String rid = this.getRequest().getParameter("id"); String resourceid = this.getRequest().getParameter("rid"); String rtype = this.getRequest().getParameter("rtype"); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getLostRFIDDetail(rid, resourceid, rtype, page); convertObjToJson(page); } /** * 巡检表明细Action * * @return */ public String patrolitemdetail() { // 巡检结果ID; String rid = this.getRequest().getParameter("id"); try { Map<String, Object> map = patrolinfoExecuteService .getPatrolResourceDetail(rid); super.getRequest().setAttribute("patrolinfoMap", map); Map<String, Object> emap = patrolinfoExecuteService .getExceptionItemCount(rid); super.getRequest().setAttribute("exceptionMap", emap); return SHOW_ITEM_DETAIL_LIST; } catch (Exception e) { logger.error("执行已巡检明细页面异常:" + e.getMessage()); return ERROR; } } /** * 巡检表明细 导出 * * 后期优化 * * @return */ public void patrolitemdetailexport() { String rid = this.getRequest().getParameter("id"); String[] ids = BaseUtil.compart(rid, ","); try { WorkBookData workBookData = new WorkBookData(); workBookData.setCommonData(new HashMap()); String palanName="计划执行结果列表.xls"; for(String sid:ids){ Map<String, Object> emap = patrolinfoExecuteService.getExceptionItemCount(sid); Map<String, Object> patrolinfo = patrolinfoExecuteService.getPatrolResourceDetail(sid); palanName = (String)patrolinfo.get("PLAN_NAME")+".xls"; patrolinfo.put("EXCEPTIONCOUNT", emap.get("EXCEPTIONCOUNT")); String sheetName = (String)patrolinfo.get("RESOURCE_NAME"); String id = (String)patrolinfo.get("ID"); List itemDetails = patrolinfoExecuteService.getItemDetailForExport(id); Map recode = new HashMap(); recode.put("ls", itemDetails); recode.put("info", patrolinfo); workBookData.addSheet(sheetName, recode); } BaseUtil.setResponseHeader(this.getRequest(), this.getResponse(), palanName); OutputStream output = getResponse().getOutputStream(); String templateName = SysConstant.EXCEL_DOWNLOAD_TEMPLATES_PACKAGE_PATH+"/patrolinfo_execute_template.xls"; String templateFile = getClass().getResource(templateName).getPath(); InputStream is = new BufferedInputStream(new FileInputStream(templateFile)); workBookData.setRes(is); workBookData.setDest(output); ExportUtil.multiSheet(workBookData); } catch (Exception e) { logger.error("导出执行已巡检明细异常:" + e.getMessage()); } } /** * 巡检项明细List */ public void itemdetaillist() { // 巡检结果ID; String rid = this.getRequest().getParameter("id"); Page<Map<String, Object>> page = this.initPage(); page = patrolinfoExecuteService.getItemDetail(rid, page); super.setExcelParameter(page); convertObjToJson(page); } }