/** * 打开设计信息。 * * @param funcId -- 功能ID * @param pageType -- 页面类型 * @param realPath -- 系统路径 * @return */ public String loadDesign(String funcId, String pageType, String realPath) { if (funcId == null || funcId.length() == 0) { setMessage(JsMessage.getValue("pagedesign.funidisnull")); return _returnFaild; } if (pageType == null || pageType.length() == 0) { setMessage(JsMessage.getValue("pagedesign.pagetypeisnull")); return _returnFaild; } PageParser parse = null; if (pageType.indexOf("grid") >= 0) { parse = new GridPageParser(); } else { parse = new FormPageParser(); } // 设置系统路径 parse.setRealPath(realPath); String ret = parse.parsePage(funcId, pageType); if (ret.equals(_returnFaild)) { setMessage(parse.getMessage()); return _returnFaild; } String page = parse.getReturnData(); // 返回给前台 setReturnData(page); return _returnSuccess; }
/** * 删除设计信息。 * * @param funcId -- 功能ID * @param pageType -- 页面类型 * @return */ public String deleteDesign(String funcId, String pageType) { if (funcId == null || funcId.length() == 0) { setMessage(JsMessage.getValue("pagedesign.funidisnull")); return _returnFaild; } if (pageType == null || pageType.length() == 0) { setMessage(JsMessage.getValue("pagedesign.pagetypeisnull")); return _returnFaild; } String sql = "delete from fun_design where fun_id = ? and page_type = ? "; DaoParam param = _dao.createParam(sql); param.addStringValue(funcId); param.addStringValue(pageType); param.setDsName(DefineName.DESIGN_NAME); boolean ret = _dao.update(param); if (!ret) { setMessage(JsMessage.getValue("pagedesign.dserror")); return _returnFaild; } return _returnSuccess; }
/** * 取配置信息,构建成JSON对象 * * @param userId -- 用户信息 * @return */ public String getPortalJson(String userId) { // 取用户所属角色的模板信息 List<Map<String, String>> lsTemp = queryTemplet(userId); if (lsTemp.isEmpty()) { // "构建首页失败,因为用户所属角色没有定义PORTAL模板!" setMessage(JsMessage.getValue("portalquery.notemp")); return _returnFaild; } // 构建PORTAL的JSON StringBuilder sbtemps = new StringBuilder(); for (int i = 0, n = lsTemp.size(); i < n; i++) { Map<String, String> mpTemp = lsTemp.get(i); try { String tempJson = templetJson(mpTemp); sbtemps.append(tempJson); sbtemps.append((i < n - 1) ? ",\n" : "\n"); } catch (BoException e) { _log.showError(e); setMessage(e.getMessage()); return _returnFaild; } } String portalJson = "{portalnum:" + lsTemp.size() + ", portals:[\n" + sbtemps.toString() + "]}"; _log.showDebug("---------portalJson=" + portalJson); setReturnData(portalJson); return _returnSuccess; }
/** * 取列内容的JSON * * @param templetId -- 模板ID * @param templetName -- 模板名称 * @return */ private String colItemsJson(String templetId, String templetName) throws BoException { // 取模板栏目 List<Map<String, String>> lsPort = queryPortlet(templetId); if (lsPort.isEmpty()) { // "构建首页失败,因为PORTAL模板【{0}】的栏目明细为空!" throw new BoException(JsMessage.getValue("portalquery.notempdet"), templetName); } StringBuilder sbitems = new StringBuilder(); for (int i = 0, n = lsPort.size(); i < n; i++) { Map<String, String> mpPort = lsPort.get(i); sbitems.append("\t\t{id:'" + mpPort.get("portlet_id") + "', "); sbitems.append("title:'" + mpPort.get("portlet_title") + "', "); sbitems.append("colno:'" + mpPort.get("col_no") + "', "); sbitems.append("iconCls:'" + mpPort.get("iconcls") + "', "); sbitems.append("height:'" + mpPort.get("height") + "', "); sbitems.append("collapse:'" + mpPort.get("collapse") + "', "); sbitems.append("typecode:'" + mpPort.get("type_code") + "', "); sbitems.append("objectid:'" + mpPort.get("object_id") + "'}"); sbitems.append((i < n - 1) ? ",\n" : "\n"); } return sbitems.toString(); }
/** * 解析模板文件主要方法 * * @param funcId * @return */ public String parsePage(String funcId, String pageType) { if (funcId == null || funcId.length() == 0) { // "错误参数:功能ID不能为!" _log.showWarn(JsMessage.getValue("pageparser.idnull")); return _returnFaild; } String page = PageTemplet.getInstance().getPage(pageType); if (page == null || page.length() == 0) { // "读取GRID模板文件失败!" _log.showWarn(JsMessage.getValue("pageparser.notemp")); return _returnFaild; } // 取页面设计信息 _designPage = readDesignPage(funcId, pageType); // 取功能定义信息 _funid = funcId; _funDefine = FunDefineDao.queryFun(funcId); // 取页面名称 String pageName = ""; if (pageType.indexOf("grid") >= 0) { pageName = _funDefine.get("grid_page"); } else { pageName = _funDefine.get("form_page"); } if (pageName.length() == 0) { setMessage(JsMessage.getValue("pageparser.nopage")); return _returnFaild; } // 取元素模板文件 _elementTpl = ElementTemplet.getInstance().getElementMap(pageType); // 解析页面中的参数 page = parseParam(page, _param_regex); // 解析控件元素 page = parseElement(page, _element_regex); // 解析信息返回前台 page = page.trim(); setReturnData(page); return _returnSuccess; }
/** * 解析标签中的名字,如<element:page/>取page的值 * * @param tag * @return */ private String tagName(String tag) { if (tag == null || tag.length() == 0) { // "错误参数:标签为空!" _log.showWarn(JsMessage.getValue("pageparser.tagnull")); return ""; } return tag.substring(tag.indexOf(":") + 1, tag.length() - 2); }
/** * 修改公告状态为“新” * * @param msgId * @return */ private void sendMsg(String msgId) throws BoException { String usql = "update plet_msg set msg_state = '1', send_date = ? where msg_id = ?"; DaoParam param = _dao.createParam(usql); param.addDateValue(DateUtil.getTodaySec()); param.addStringValue(msgId); boolean bu = _dao.update(param); if (!bu) { // "发布公告失败:修改公告状态为“新”失败!" throw new BoException(JsMessage.getValue("portlet.boarderror")); } }
/** * 保存设计信息。 * * @param funcId -- 功能ID * @param pageType -- 页面类型 * @param content -- 设计信息 * @return */ public String saveDesign(String funcId, String pageType, String content) { if (funcId == null || funcId.length() == 0) { setMessage(JsMessage.getValue("pagedesign.funidisnull")); return _returnFaild; } if (pageType == null || pageType.length() == 0) { setMessage(JsMessage.getValue("pagedesign.pagetypeisnull")); return _returnFaild; } boolean ret = false; if (hasDesign(funcId, pageType)) { ret = updateDesign(funcId, pageType, content); } else { ret = insertDesign(funcId, pageType, content); } if (!ret) { setMessage(JsMessage.getValue("pagedesign.sserror")); return _returnFaild; } return _returnSuccess; }
/** * 生成公告阅读记录 * * @param msgId -- 消息ID * @param userId -- 用户ID * @param userName -- 用户名 * @return */ public String readBoard(String msgId, String userId, String userName) { Map<String, String> mpRead = FactoryUtil.newMap(); mpRead.put("msg_id", msgId); mpRead.put("user_id", userId); mpRead.put("user_name", userName); mpRead.put("read_date", DateUtil.getTodaySec()); String readId = DmDao.insert("plet_read", mpRead); if (readId == null || readId.length() == 0) { // "生成公告阅读记录失败!" setMessage(JsMessage.getValue("portlet.createboarderror")); return _returnFaild; } return _returnSuccess; }
/** * 批量发布公告。 * * @param keyIds -- 消息数组ID * @return */ public String gridSendMsg(String[] keyIds) { if (keyIds == null || keyIds.length == 0) { // "发送消息ID为空!" setMessage(JsMessage.getValue("portlet.msgidisnull")); return _returnFaild; } // 发送消息 try { for (int i = 0, n = keyIds.length; i < n; i++) { sendMsg(keyIds[i]); } } catch (BoException e) { _log.showError(e); setMessage(e.getMessage()); return _returnFaild; } return _returnSuccess; }
/** * 填充数据到表单对象。 * * @param funId -- 报表所属功能ID * @param sheet -- 表格对象 * @param mpData -- 表单数据 * @param lsField -- 字段信息 * @param curPage -- 当前页数 * @param sumPage -- 总页数 * @return */ public static HSSFSheet fillForm( String funId, HSSFSheet sheet, Map<String, String> mpData, List<Map<String, String>> lsField, int curPage, int sumPage) { if (lsField == null || mpData == null) { return sheet; } if (lsField.isEmpty() || mpData.isEmpty()) { _log.showDebug("data is empty or field is null!"); return sheet; } // 单元格的值 String strValue = ""; for (int i = 0, n = lsField.size(); i < n; i++) { Map<String, String> mpField = lsField.get(i); String strStyle = mpField.get("format"); // 字段格式 String isOutZero = mpField.get("is_outzero"); // 0是否输出 if (isOutZero == null) isOutZero = "1"; String strColName = mpField.get("display"); // 字段名称 String strColCode = (mpField.get("col_code")).toLowerCase(); // 字段编码 String strColTag = mpField.get("combo_code"); // 标签 int[] posi = getPosition(mpField.get("col_pos")); if (posi.length != 2) { _log.showWarn(strColName + " [" + mpField.get("col_pos") + "] position is error!"); continue; } if (strColCode.equalsIgnoreCase("{CURUSERNAME}")) { // 当前用户 if (_mpUser != null) strValue = _mpUser.get("user_name"); } else if (strColCode.equalsIgnoreCase("{CURDATE}")) { // 当前日期 strValue = DateUtil.getToday(); } else if (strColCode.equalsIgnoreCase("{CURDEPTNAME}")) { // 当前部门 if (_mpUser != null) strValue = _mpUser.get("dept_name"); else strValue = ""; } else if (strColCode.equalsIgnoreCase("{CURPAGENUM}")) { // 当前所在页数 strValue = Integer.toString(curPage); } else if (strColCode.equalsIgnoreCase("{CURSUMPAGE}")) { // 当前共页数 strValue = Integer.toString(sumPage); } else { // 设置cell的显示值,如果是图片字段,则不用处理 if (!strStyle.equals("image")) { strValue = mpData.get(strColCode); strValue = (strValue != null) ? strValue : ""; strValue = (strValue.equalsIgnoreCase("null")) ? "" : strValue; // 取选项显示值 strValue = getComboTitle(strValue, strColTag); // 转换数据格式 strValue = convertValue(strValue, strStyle); if (isOutZero.equals("0")) strValue = getZeroOut(strValue, strStyle); } } // 获取指定的单元格 HSSFRow row = sheet.getRow(posi[0]); if (row == null) row = sheet.createRow(posi[0]); HSSFCell cell = row.getCell(posi[1]); if (cell == null) cell = row.createCell(posi[1]); // 填充单元格内容 if (!strStyle.equals("image")) { cell.setCellValue(strValue.trim()); } else { // 如果填充图片不成功能,则填写文字 if (!printCellImage(funId, strColCode, mpData, cell)) { cell.setCellValue(JsMessage.getValue("report.xlsutil.noimage")); } } } return sheet; }