package com.yc.service.panel.v2; import com.google.gson.JsonArray; import com.yc.action.grid.GridUtils; import com.yc.exception.ApplicationException; import com.yc.service.build.type.v2.BaseBean; import com.yc.service.build.type.v2.BaseImpl; import com.yc.service.commons.GformIfc; import com.yc.service.excel.ExcelIfc; import com.yc.service.grid.GridServiceIfc; import com.yc.service.impl.DBHelper; import com.yc.service.panel.*; import com.yc.service.panel.assist.AssistIfc; import com.yc.service.panel.inv.EmptyConn; import com.yc.utils.FileUtil; import com.yc.utils.SessionKey; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import java.io.File; import java.sql.SQLException; import java.util.*; import java.util.regex.Pattern; /** * @author pengbei */ @Service("PanelServiceV2") public class PanelServiceImpl implements PanelServiceIfc { @Autowired SystemSettingsDao systemSettingsBo; @Autowired TypeControlDao typeControlDao; @Autowired private GformFilterIfc filterIfc; @Autowired private SqlDBHelperIfc sqlDBHelperIfc; @Autowired private AssistIfc assistIfc; @Autowired private GfieldApprovedButtonIfc gButtonIfc; @Autowired ExcelIfc excelIfc; @Autowired GridServiceIfc gridServiceIfc; @Autowired private GformIfc gformIfc; // class 样式 // end @Override public String getPannelTalbe(int formId, int formType) throws Exception { //TODO 有可能有问题 PanelBean panelBean = new PanelBean(); return setTable(hasTiaoJian(formType, panelBean), formId, panelBean.pHelper); } /** * */ @Override public Map getPanelHtml(int formId, int formType, String[] templeteFile, Map gformInfo) throws Exception { BaseBean base = (BaseBean) gformInfo.get(BaseImpl.BEAN_INFO); List> staList = assistIfc.getStatusByFormId(formId); Map map = new HashMap(); StringBuffer htmlBuffer = new StringBuffer(); StringBuffer infoJsBuffer = new StringBuffer(); PanelBean panelBean = new PanelBean(); PanelParmHelper pHelper = panelBean.pHelper; if (formType == 1) panelBean.panel11 = false; if (formType == 2) panelBean.shorten = true; if(formType==77||formType==496||formType==498||formType==16){ panelBean.indexPan=base.getIndexPan();} if(formType==496||formType==498||formType==16) {panelBean.isPrimaryPan=base.isPrimaryPan();} if(formType==20){ panelBean.shorten=base.isShorten(); panelBean.indexPan=base.getIndexPan(); panelBean.panel11=base.isPanel11(); panelBean.notPan=base.isNotPan(); panelBean.setNotPan(panelBean.notPan); panelBean.pHelper.primary=panelBean.indexPan; } setValueAll(formId, formType, pHelper, panelBean); typeControlDao.setFunLoadList(null, true, panelBean); typeControlDao.setFunList("", true, panelBean); panelBean.setButtonList(gButtonIfc.getButton(formId)); // 查询该面板是否有按钮 pHelper.URI = base.getURI(); // 物理路径 pHelper.realPath = File.separator + "app" + File.separator + base.getDataBaseId() + File.separator + base.getVersionId() + File.separator + base.getLanguage() + File.separator + base.getFormID() + File.separator; pHelper.maps = new HashMap>();// 保存字段Id,即数据库中的列,不让其暴露 pHelper.mapHids = new HashMap>(); pHelper.intvalueMap = new HashMap(); pHelper.html_Col = new StringBuffer(); pHelper.panelAudit = new JsonArray(); pHelper.jsList = systemSettingsBo.getJs(formId); List> openDocs = sqlDBHelperIfc.getHashMapObj( "set nocount on ; select execproc,o.formtype as otype,m.formtype as mtype from _sysOpenDoc o inner join _sysMenu m on (o.formid=m.formid) where o.formid=" + formId + " and o.formtype=" + formType + " order by seqn ;"); panelBean.openDoc = "set nocount on ; "; for (Map openMap : openDocs) { panelBean.openDoc += "exec " + DBHelper.getValue(openMap, "execproc").replaceAll(";", ",") + ";"; } if (templeteFile.length == 3) {// 判断是否跳过子面板审核代码。 pHelper.panelbol = (templeteFile[2] == null ? true : false); } String moBan = templeteFile[0];// 模板集合:数组[0]:面板2模板(panel.jsp),在查询中窗体如9类型为查询面板模板(panelSearch.jsp);数组[1]:默认为模板(panelHead.jsp),查询窗口为固定模板(topPanType9.jsp) switch (formType) { case 9:// 9类型面板 case 15: case 17: case 499: case 497: List> gfList = filterIfc.getOrdByline(formId); List> queryList = systemSettingsBo.getQuery(formId, 1); panelBean.setQueryList(queryList); int so = 0; if (gfList != null && gfList.size() > 0) {// 这里处理重新生成筛选面板 so = 1;// 针对面板中"搜索"按钮的处理,有自定义筛选则不显示原来的查询按钮 by danaus 2014-6-5 moBan = moBan.replaceAll("@panelHtml@", filterDollarStr(getJspPanSift(formId, gfList, infoJsBuffer, panelBean).toString()));// 表格上,无表格下设置 } else { moBan = templeteFile[2];// } map.put("sous", so + ""); break; default: panelBean.isLandscape = (gformInfo != null && gformInfo.get("panellabellayout") != null && gformInfo.get("panellabellayout").toString().equals("2")) ? false : true; if (!panelBean.isLandscape) { pHelper.miaoShuTdWidth = 200; pHelper.kongJianTdWidth = 200; pHelper.kongHei = pHelper.rowHei * 2 - 7; pHelper.kongJianAndMiaoShu = pHelper.kongJianTdWidth; } pHelper.excelContext = ""; pHelper.excelField = ""; pHelper.excelLoca = ""; pHelper.excelTitles = ""; pHelper.panJs43 = ""; if (formType != 1) {//不是1类型窗体进入生成面板 String panelUp = filterDollarStr(getPanel(formId, infoJsBuffer, false, panelBean).toString());// 获取格线之上的面板控件值 String panelDow = filterDollarStr(getPanel(formId, infoJsBuffer, true, panelBean).toString());// 获取格线之下的面板控件值 panelUp = ((panelBean.notPan || formType == 16) ? "" : getPar(pHelper)) + getJspPanSession(formId, pHelper.maps, pHelper) + panelUp;// 16是496设置的类型,(字段的格式设置) moBan = moBan.replaceAll("@panelHtml@", panelUp);// 表格上(多数是生成面板需要的控件) moBan = moBan.replaceAll("@panelDownHtml@", panelDow);// 表格下 } else { moBan = moBan.replaceAll("@panelHtml@", "");// 表格上(多数是生成面板需要的控件) moBan = moBan.replaceAll("@panelDownHtml@", "");// 表格下 } moBan = moBan.replaceFirst("@wherePan496@", (formType == 16) ? "wherePan496" : "wherePan");// 替换 // moBan+=getTypeIni(); // 生成取消确认代码 by danaus 2014-5-29 Map canel = this.gformIfc.getGformInfo( "CancelBtnProcName,CancelBtnExpression,CancelBtnEditStatus,CancelBtnName,RevokeBtnProcName,RevokeBtnExpression,RevokeBtnEditStatus", formId); String cancelBtnExpression=GridUtils.prossRowSetDataType_StringByReplaceBlank(canel ,"CancelBtnExpression"); moBan = moBan .replaceAll("@canceldocstatus@", canel.get("CancelBtnEditStatus") == null ? "" : (String) canel.get("CancelBtnEditStatus")) .replaceAll("@iscanel@", canel.get("CancelBtnProcName") == null || "".equals(canel.get("CancelBtnProcName")) ? "0" : "1") .replaceAll("@CancelBtnName@", canel.get("CancelBtnName") == null || "".equals(canel.get("CancelBtnName")) ? "取消确认" : (String) canel.get("CancelBtnName")) .replaceAll("@sqlException@",cancelBtnExpression); // String procName=(String)canel.get("CancelBtnProcName"); // 撤回功能 String revokeBtnExpression=GridUtils.prossRowSetDataType_StringByReplaceBlank(canel ,"RevokeBtnExpression"); moBan = moBan .replaceAll("@RevokeBtnEditStatus@", canel.get("RevokeBtnEditStatus") == null ? "" : (String) canel.get("RevokeBtnEditStatus")) .replaceAll("@isrevoke@", canel.get("RevokeBtnProcName") == null || "".equals(canel.get("RevokeBtnProcName")) ? "0" : "1") .replaceAll("@RevokeBtnExpression@",revokeBtnExpression); // ----end // 把需要导出的写到excel String filename = "/panel_data"; if (formType == 2) { filename = "/data";// 是为了作为格线数据来处理 } if (pHelper.excelContext.length() > 0) { try { FileUtil.writeFile((formType == 2 ? gformInfo.get("formname") + "-" : "") + pHelper.excelContext + "-" + pHelper.tableIs + "-" + pHelper.excelField + "-" + pHelper.excelLoca + "-" + pHelper.excelTitles, pHelper.URI + pHelper.realPath + "/" + formType + filename);// 写到文件里面 pHelper.isto = true; } catch (DataAccessException e) { throw new ApplicationException(e.getMessage()); } } moBan = moBan.replace("@autoOpen@", !GridUtils.prossRowSetDataType_Boolean(gformInfo, "autoOpen") ? ",' !1=2'" : ""); moBan = moBan.replace("@pansetInv@", (formType == 1 ? "" : getTypeIni(pHelper)));// 付必要初始值,调用topPanInv.txt(1类型窗体不生成这个文件) moBan = moBan.replace("@panelScript@", getJspPanScript(formId, "", panelBean)); // added by johns wang,2017-10-31 moBan = moBan.replace("@uploadEditStatusMap@", getUploadEditStatusMap(pHelper)); break; } if (";38;238;".indexOf(";" + formType + ";") != -1) { map.put("panel238", "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" " + " pageEncoding=\"UTF-8\"%>238"); } moBan += "@addscript@"; moBan = outRepl(moBan, panelBean);// 替换面板里面设置的特殊替换信息。 moBan = moBan.replaceAll("@formId@", String.valueOf(formId)).replaceAll("@formType@", String.valueOf(formType)); infoJsBuffer = new StringBuffer(DBHelper.replaceBr(infoJsBuffer.toString())); htmlBuffer.append(" panMain[panIndex].panInfo={"); htmlBuffer.append(infoJsBuffer.length() > 0 ? infoJsBuffer.delete(infoJsBuffer.length() - 1, infoJsBuffer.length()) : infoJsBuffer); htmlBuffer.append("};"); htmlBuffer.append("\r\n panMain[panIndex].html_Col=["); htmlBuffer.append(pHelper.html_Col.length() > 0 ? pHelper.html_Col.delete(pHelper.html_Col.length() - 1, pHelper.html_Col.length()) : pHelper.html_Col); htmlBuffer.append("];"); htmlBuffer.append("\r\n panMain[panIndex].panelAuditValue=<%=jsonOldPanel%>;"); htmlBuffer.append("\r\n panMain[panIndex].auditFiled=" + pHelper.panelAudit + ";");// 审计字段 htmlBuffer.append("\r\n panMain[panIndex].panelTitle=\"\";");// 动态描述用到 htmlBuffer.append("\r\n panMain[panIndex].select="+GridUtils.toJson(panelBean.selectMap)+";");// 动态描述用到 htmlBuffer.append("\r\n if(typeof liewidth !='undefined'){liewidth=" + pHelper.liewidth + ";}");// 动态描述用到 pHelper.liemut = 0; pHelper.liewidth = 0; String sqlparam = pHelper.sqlBuffer != null ? pHelper.sqlBuffer.toString() : ""; htmlBuffer.append("\r\n panMain[panIndex].sqlParam=" + getJsList(DBHelper.getStrRepInfo(sqlparam, "&"))); if (staList.size() > 0) {// 没有设置的不要显示此变量(stas) htmlBuffer.append("\r\n panMain[panIndex].stas={}"); for (Map mapSta : staList) { htmlBuffer.append("\r\n panMain[panIndex].stas['" + DBHelper.getValue(mapSta, "interValue") + "']='" + DBHelper.getValue(mapSta, "dictvalue") + "';"); } } base.setOverlapText(panelBean.overlapText);//设置面板控件出现重叠的提示信息 xin 2020-12-4 09:56:18 moBan = moBan.replaceAll("@panInfo@", htmlBuffer.toString()); map.put("panHTML", moBan); map.put("panelControl", templeteFile[1].replaceAll("@MapPut@", sqlparam)); map.put("zhu", pHelper.tableIs); return map; } private String getUploadEditStatusMap(PanelParmHelper pHelper) { Map> mapList = getMaps(pHelper); String rtn = ""; // <% Map uploadEditStatusMap = new // HashMap() ; for (String panId : mapList.keySet()) { if (mapList.get(panId).get("type") != null && (mapList.get(panId).get("type").equals("9") || mapList.get(panId).get("type").equals("19") || mapList.get(panId).get("type").equals("40"))) { rtn += panId + ":'" + (mapList.get(panId).get("headflag") == null ? 0 : mapList.get(panId).get("headflag")) + ";pb#" + (mapList.get(panId).get("editstatus") == null ? "" : mapList.get(panId).get("editstatus")) + "',"; } } rtn = " panMain[panIndex].picState={" + ("".equals(rtn) ? "" : (rtn.substring(0, rtn.length() - 1))) + "};"; return rtn; } /** * 把list集合写成页面js集合 * * @param parmList * @return */ private String getJsList(List parmList) { StringBuffer re_ = new StringBuffer(); re_.append("["); if (parmList.size() > 0) { for (int i = 0; i < parmList.size(); i++) { re_.append("'").append(parmList.get(i)).append("',"); } re_.deleteCharAt(re_.length() - 1); } re_.append("]");// 默认 return re_.toString(); } /** * 处理初始值信息 * * @param formId 功能号 * @param formType 功能类型 * @throws Exception */ private void setValueAll(int formId, int formType, PanelParmHelper pHelper, PanelBean panelBean) throws Exception { pHelper.setMoren(); pHelper.sqlBuffer = new StringBuffer(); pHelper.pan11 = panelBean.panel11; pHelper.formTypePan = formType; pHelper.formIdPan = formId; pHelper.initialValue.formid = formId; if (panelBean.isPrimaryPan) { panelBean.tabindexIs = 0; } pHelper.primary = 0; pHelper.idNo = 0; pHelper.eConn = new EmptyConn();// 清空关联 pHelper.jsList = systemSettingsBo.getJs(formId); if (panelBean.shorten) { pHelper.miaoShuTdWidth -= 20; pHelper.kongJianTdWidth -= 15; pHelper.kongJianAndMiaoShu = pHelper.kongJianTdWidth + pHelper.miaoShuTdWidth; } setTable(hasTiaoJian(formType, panelBean), pHelper); systemSettingsBo.setPanelHelper(pHelper); try { boolean bol = (pHelper.tableIs.indexOf(".do") != -1 ? false : true); if (bol) { pHelper.verificationMap = systemSettingsBo.getVerification(pHelper.tableIs); } } catch (SQLException e) { e.printStackTrace(); } //typeControlDao.setVerificationMap(pHelper.verificationMap);-- panelBean.pHelper = pHelper; panelBean.initialValue = pHelper.initialValue; panelBean.id = pHelper.id; panelBean.setKeyBack(setKeyBack(pHelper.formTypePan)); panelBean.setToKeBack(setKeyBackBytoKeBack(pHelper.formTypePan)); } private boolean setKeyBack(int formType) {// 要不要回车触发 switch (formType) { case 5: case 8: case 9: case 17: case 16: case 18: case 19: case 38: return false; default: return true; } } private boolean setKeyBackBytoKeBack(int formType) { switch (formType) { case 301: case 20: return true; default: return false; } } public List> getMacAll(String table) throws SQLException { String sql = "set nocount on ; select fieldiD,initvalue from " + table;// MASTERCODE List> list = sqlDBHelperIfc.getHashMapObj(sql); List> list1 = new ArrayList>(); for (int i = 0; i < list.size(); i++) { if (DBHelper.getValue(list.get(i), "initvalue").toUpperCase().equals("MASTERCODE")) { list1.add(list.get(i)); } } return list1; } /** * 替换一些信息 * * @param moBan * @return */ private String outRepl(String moBan, PanelBean panelBean) { PanelParmHelper pHelper = panelBean.pHelper; moBan = moBan.replaceAll("@index@", String.valueOf(panelBean.indexPan)); moBan = moBan.replaceAll("@maxCols@", String.valueOf(pHelper.colsWidth)); moBan = moBan.replaceAll("@openDoc@", panelBean.openDoc); moBan = moBan.replaceAll("@doc@", (panelBean.isDoc ? "false" : "true")); moBan = moBan.replaceAll("@maoshuF@", (panelBean.isLandscape ? "float: left;text-align:right;" : "text-align:left;")); moBan = moBan.replaceAll("@rowHei@", String.valueOf(pHelper.kongHei)); moBan = moBan.replaceAll("@kongJian@", String.valueOf(pHelper.kongJianAndMiaoShu + 20)); moBan = moBan.replaceAll("@miaoShuo@", String.valueOf(pHelper.miaoShuTdWidth)); moBan = moBan.replaceAll("@zhu@", pHelper.tableIs); moBan = moBan.replaceAll("@minxi@", pHelper.tableIs2); moBan = moBan.replaceAll("@isPrimaryPan@", (panelBean.isPrimaryPan ? "1" : "0")); String linkJs = pHelper.linkJsDate + pHelper.linkJsFu; if (pHelper.jsList != null && pHelper.jsList.size() > 0) { String jsDin = ""; String jsDiao = ""; for (int i = 0; i < pHelper.jsList.size(); i++) { if ("1".equals(DBHelper.getValue(pHelper.jsList.get(i), "eventType"))) { jsDin += filterDollarStr(DBHelper.getValue(pHelper.jsList.get(i), "jsContent")); } else { jsDiao += filterDollarStr(DBHelper.getValue(pHelper.jsList.get(i), "jsContent")); } } moBan = moBan.replaceAll("@addscript@", jsDiao); moBan = moBan.replaceAll("@linkscript@", jsDin + linkJs); } moBan = moBan.replaceAll("@pan43Type@", pHelper.panJs43);// 43控件 moBan = moBan.replaceAll("@linkscript@", linkJs); moBan = moBan.replaceAll("@addscript@", ""); String stringTiPan1 = ""; String strTi = ""; String tiStr = ""; HashMap map = null; String sql = "select predocstatus from gform where formid=" + pHelper.formIdPan; List> listS = sqlDBHelperIfc.getHashMap(sql); if (listS != null && listS.size() > 0) { map = listS.get(0); } tiStr = "out.print(\" getStatu(panMain[panIndex].statueis,'" + map.get("predocstatus") + "'," + pHelper.formTypePan + ");\");"; switch (pHelper.formTypePan) { case 9:// 9类型面板 case 15: case 17: // stringTiPan1 = "where += \" and // (\"+getqx('<%=session.getAttribute(\"@usercode\")%>','<%=session.getAttribute(\"@department\")%>','<%=session.getAttribute(\"@rolename\")%>')+\")\";"; // %号在前台要编程@~这里没有处理 暂时不用了 stringTiPan1 = "where += \" and // <%=DBHelper.getQx(session) // %>\";";//前面这个变量@department是否用,不确定,则统一进入这个方法,需要改统一该一个地方 stringTiPan1 = "where += \" and (\"+getqx('<%=session.getAttribute(\"" + SessionKey.USERCODE + "\")%>','<%=session.getAttribute(\"" + SessionKey.CCCODE + "\")%>','<%=session.getAttribute(\"" + SessionKey.ROLE_NAME + "\")%>')+\")\";"; // stringTiPan1=stringTiPan1.replaceAll("%","@~"); break; case 5:// 后添除16窗体的权限 case 16: case 498: case 497: case 8: strTi = "panMain[panIndex].isReadTo('\"+session.getAttribute(\"" + SessionKey.USERCODE + "\")+\"','\"+session.getAttribute(\"" + SessionKey.ROLE_NAME + "\")+\"','\"+session.getAttribute(\"" + SessionKey.DEPARTMENT + "\")+\";\"+session.getAttribute(\"" + SessionKey.CCCODE + "\")+\"');"; tiStr += "\r\n out.print(\"\\\\r\\\\n " + strTi + "\");"; break; default: tiStr = ""; break; } moBan = moBan.replaceAll("@formtypedocstatus@", tiStr); moBan = moBan.replaceAll("@Add@", stringTiPan1); Map> mapList = getMaps(pHelper); moBan = moBan.replaceAll("@selectColAll@", getSqlCol(mapList, pHelper)); return moBan; } /** * 替换文本中$符号 * * @param str 含有$符号的字符串 * @return 返回替换后的字符串 */ public static String filterDollarStr(String str) { String sReturn = ""; if (!str.trim().equals("")) { if (str.indexOf('$', 0) > -1) { while (str.length() > 0) { if (str.indexOf('$', 0) > -1) { sReturn += str.subSequence(0, str.indexOf('$', 0)); sReturn += "\\$"; str = str.substring(str.indexOf('$', 0) + 1, str.length()); } else { sReturn += str; str = ""; } } } else { sReturn = str; } } return sReturn; } /** * 获得面板显示 * * @param formId 功能号 * @param infoJsBuffer 功能号组装的js集合信息 * @param downGride 获得是否表格下面板 * @return 返回显示代码 */ @Deprecated private StringBuffer getPanel(int formId, StringBuffer infoJsBuffer, boolean downGride, PanelBean panelBean) throws Exception { //PanelParmHelper pHelper = panelBean.pHelper; StringBuffer htmlBuffer = new StringBuffer(); // panelBean.control38height=0; if (downGride) { if (panelBean.isPrimaryPan) { htmlBuffer = getPanel(formId, infoJsBuffer, 1, panelBean);// 原格线下显示 List> inFormList = systemSettingsBo.getFieldFormId(formId); int tiformid = 0; for (Map map : inFormList) { tiformid = DBHelper.getValueInt(map, "MasterFieldShowLocation"); htmlBuffer.append(getPanel(formId, infoJsBuffer, tiformid, panelBean)); htmlBuffer.append(""); } } } else { if (panelBean.isPrimaryPan) { htmlBuffer = getPanel(formId, infoJsBuffer, 0, panelBean);// 原格线上显示 } else { htmlBuffer = getPanel(formId, infoJsBuffer, 1, panelBean);// 原格线下显示 } } return htmlBuffer; } /** * 获得面板显示 * * @param formId 功能号 * @param infoJsBuffer 功能号组装的js集合信息 * @param downFormid 获得是否表格下面板 * @return 返回显示代码 */ private StringBuffer getPanel(int formId, StringBuffer infoJsBuffer, int downFormid, PanelBean panelBean) throws Exception { PanelParmHelper pHelper = panelBean.pHelper; StringBuffer htmlBuffer = new StringBuffer(); StringBuffer hidBuffer = new StringBuffer(); Map maxMap = new HashMap(); Map listRC = new TreeMap(); String listmax = ""; // 处理 List tabsheetNameS = systemSettingsBo.selectTabsheetname(formId, downFormid);// false为非grid下的面板 // if (tabsheetNameS.size() > 1) { tabsheetNameS.remove("");// 面板页多于2个时,去掉为空的面板页 tabsheetNameS.add("null"); // } int lineNO = systemSettingsBo.getShowMaxRow(formId, pHelper.primary, downFormid);// 总行数 lineNO = lineNO + ((tabsheetNameS.size() > 1) ? 1 : 0); List> listSys = systemSettingsBo.selectList(formId, pHelper.primary, downFormid);// 暂时为表格上面板,设计好后改 Map maxRC = systemSettingsBo.getFormIdtable(formId, pHelper.primary, downFormid); try { listmax = gridServiceIfc.getTypeLengthInfo(pHelper.tableIs);// 返回char // nchar,varchar // nvarchar类型的字段和长度。操作时间:2014-7-2 // 16:39:42 } catch (Exception e) { listmax = null; maxMap = null; } if (listmax != null) {// 处理返回的char nchar,varchar nvarchar类型 String[] max = listmax.split(","); for (int m = 0; m < max.length; m++) { try { String[] maindex = max[m].split("-");// 获取字段名和字段的长度 if (maindex.length < 3) {// 处理出现负数的问题 负数不需要添加到里面 2014-7-5 // 10:13:34 maxMap.put(maindex[0].toLowerCase(), Integer.parseInt(maindex[1]));// 组装字段和长度操作时间:2014-7-2 // 16:39:29 } } catch (Exception e) { throw new Exception("【"+max[m]+"】数据类型长度为空,请检查数据类型是否正确"); } } } // 在上面已经把分页,面板位置,及分页内部处理考虑好了 int kuaHang = 0; int kuaLie = 0; int danLie = 0; int danHang = 0; String yePanel = ""; String showMiaoShu = ""; int yinMiaoShu = 0; String miaoshuHtml = ""; String control = ""; String describeSQL = ""; StringBuffer sb1 = new StringBuffer();// 面板需要导出的字段名+标题 StringBuffer sb2 = new StringBuffer();// 面板需要导出的字段名 StringBuffer sb3 = new StringBuffer();// 面板需要导出的字段位置(在几行几列) StringBuffer sb4 = new StringBuffer();// 面板需要导出的文件名称设置 for (Map map : listSys) {// 在这里循环,组装出每一个控件 pHelper.div42=""; pHelper.initialValue.setInv(map); map.put(TypeControl.PANEL_INFO, panelBean); danLie = DBHelper.getValueInt(map, "ColNo"); danHang = DBHelper.getValueInt(map, "RowNo"); kuaHang = DBHelper.getValueInt(map, "HeightNum"); kuaLie = DBHelper.getValueInt(map, "LengthNum"); yePanel = DBHelper.getValue(map, "tabsheetname"); showMiaoShu = DBHelper.replaceBr(DBHelper.getValue(map, "fieldname")); showMiaoShu = showMiaoShu + (showMiaoShu.equals("") ? "  " : "");// 获得些必要信息,避免重复获得 yinMiaoShu = DBHelper.getValueInt(map, "Hidelabel"); pHelper.id = DBHelper.getValue(map, "FieldID").toLowerCase();// 给控件赋值ID //如果是42控件或者3类型设置了42控制的值这为true boolean boldiv = (DBHelper.getValueInt(map, "ControlType") == 42 || !DBHelper.getValue(map, "SuggestFileds").equals("")) ? true : false; // 增加面板的excel导出,2014-3-25,by danaus if (DBHelper.getValueInt(map, "isExport") == 1) { String displayformat = DBHelper.getValue(map, "Displayformat"); if (displayformat != null && !displayformat.isEmpty()) { sb1.append(DBHelper.getValue(map, "fieldid")).append("#") .append(DBHelper.getValue(map, "fieldname")).append("#") .append(displayformat.replaceAll("-", "~")).append(";"); } else { sb1.append(DBHelper.getValue(map, "fieldid")).append("#") .append(DBHelper.getValue(map, "fieldname")).append(";"); } if (DBHelper.getValueInt(map, "exportTitle") == 1) sb4.append(DBHelper.getValue(map, "fieldid")).append(";"); sb3.append(DBHelper.getValue(map, "fieldid") + "#" + DBHelper.getValueInt(map, "RowNo") + "," + DBHelper.getValueInt(map, "ColNo") + "," + DBHelper.getValueInt(map, "LengthNum") + "," + DBHelper.getValueInt(map, "HeightNum")).append(";"); sb2.append(DBHelper.getValue(map, "fieldid")).append(","); } if (DBHelper.getValueInt(map, "isCopyExclude") == 1) { pHelper.iscopy += DBHelper.getValue(map, "fieldid") + ";";// 处理复单字段 } if (";34;36;".indexOf(";" + DBHelper.getValue(map, "ControlType") + ";") == -1) { getJsInfo(infoJsBuffer, map, panelBean); } // 处理审计字段 if (!DBHelper.getValue(map, "audit").equals("") && DBHelper.getValueInt(map, "audit") != 0) { JsonArray audit = new JsonArray(); audit.add(DBHelper.getValue(map, "FieldID").toLowerCase()); audit.add(DBHelper.getValue(map, "audit")); audit.add(DBHelper.getValue(map, "fieldname")); pHelper.panelAudit.add(audit); // pHelper.panelAudit.append(DBHelper.getValue(map, "FieldID").toLowerCase() + "&" // + DBHelper.getValue(map, "audit") + "&" + DBHelper.getValue(map, "fieldname") + ";");// 审计字段,编号,审计字段描述。 } //typeControlDao.setPanelParmHelper(pHelper); if (DBHelper.getValueInt(map, "Visible") == 1 && danLie != 0 && danHang != 0) {// 显示 if (!DBHelper.getValue(map, "showfieldvalueexpression").equals("") || !DBHelper.getValue(map, "stylecss").equals("")) {// 隐藏这个控件的_expr hidBuffer.append(typeControlDao.getHidTextexpr(map)); } pHelper.maps = isAdd(pHelper.maps, map, pHelper); yePanel = (tabsheetNameS.size() == 1 || yePanel.trim().equals("")) ? "null" : yePanel;// 页名称 map.put("tdLen", ((pHelper.kongJianAndMiaoShu + 1) * kuaLie - 1) - ((panelBean.isLandscape) ? ((yinMiaoShu == 1) ? 0 : pHelper.miaoShuTdWidth) + 5 : +10));// 减5做备用 if (danLie > pHelper.liemut) {// 获取面板列控件的总宽度 pHelper.liemut = danLie; pHelper.liewidth = ((danLie - 1) * ((pHelper.kongJianAndMiaoShu))) + (pHelper.kongJianAndMiaoShu);// 面板列控件的总宽度 } if (showMiaoShu.substring(0, 1).indexOf("!") != -1) {//设置有动态字段描述,以!开头 showMiaoShu = showMiaoShu.replaceAll("!", ""); describeSQL = "\r\n<%String field" + DBHelper.getValue(map, "FieldID") + "=build.msInfo(DBHelper.getValRepShiMS(\"" + showMiaoShu + "\",session,docMap, false));" + "\r\n pantit+=\"" + pHelper.id + "(\"+field" + DBHelper.getValue(map, "FieldID") + "+\"'\";%>\r\n"; showMiaoShu = "<%=field" + DBHelper.getValue(map, "FieldID") + "%>"; } if (yinMiaoShu == 1) { miaoshuHtml = ((!panelBean.isLandscape) ? "
 
" : ""); } else { miaoshuHtml = "
" + showMiaoShu + "
";// 显示描述 } showMiaoShu = (DBHelper.getValue(map, "Hints").equals("")) ? showMiaoShu : DBHelper.getValue(map, "Hints");// 提示信息获得 if ((maxMap != null && maxMap.get(pHelper.id) != null) || !DBHelper.getValue(map, "TipsExpression").equals("")) {// 控制控件描述的限定长度操作时间2014-7-3 // 10:07:14 if (DBHelper.getValueInt(map, "ControlType") != 31 && DBHelper.getValueInt(map, "ControlType") != 2 && DBHelper.getValue(map, "TipsExpression").equals("")) {// 下拉不需要提示 showMiaoShu = showMiaoShu + " 【最长" + maxMap.get(pHelper.id) + "个字符(每个汉字占2个字符)】";// 提示限定长度描述 } if (!DBHelper.getValue(map, "TipsExpression").equals("")) { if (DBHelper.getValue(map, "TipsExpression").indexOf("!") != -1) {// 动态查询信息的时候 showMiaoShu = "<%=DBHelper.getValue(docMap,\"" + pHelper.id + "_tips\",mapAll)%>"; } else {// 没有动态查询时 showMiaoShu = DBHelper.getValue(map, "TipsExpression"); } } } // miaoshuHtml表示面板控件的名称:如:(单号)。showMiaoShu表示面板控件的提示信息:如:(单号【最长16个字符(每个汉字占2个字符)】 control = describeSQL + miaoshuHtml + "\n
\n \n"; //这里的tabs38属性是处理页面页卡的38类型控件显示边框问题-xin 2018-11-5 15:17:48 map.put("tabs38", yePanel); if(listRC.get(yePanel + "R" + danHang + "C" + danLie)==null) {//不存在的话就保存到map里 // yePanel代表小页卡名,如果值是null表示不是在小页卡。R代表行号,如:R1代表在第一行。C代表列号,如:C1代表在第一列。组合起来就是:第一行的第一列位置。 listRC.put(yePanel + "R" + danHang + "C" + danLie, control + typeControlDao.getComponentForPanel(map, false, maxMap) + (boldiv ? pHelper.div42 : "")); listRC.put(yePanel + "R" + danHang + "C" + danLie+"-idd",DBHelper.getValue(map, "fieldname")+"-"+DBHelper.getValue(map, "fieldId")); }else { panelBean.overlapText+="
提示:"+formId+"-控件【"+DBHelper.getValue(map, "fieldname")+"-"+DBHelper.getValue(map, "fieldId")+"】" + "在设置界面[行][列]中和【"+listRC.get(yePanel + "R" + danHang + "C" + danLie+"-idd")+"】出现重叠。" + "【"+DBHelper.getValue(map, "fieldname")+"-"+DBHelper.getValue(map, "fieldId")+"】已被忽略。"; } // 38控件特殊处理 kuaHang = (DBHelper.getValueInt(map, "ControlType") == 38 ? 1 : kuaHang); listRC.put(yePanel + "R" + danHang + "C" + danLie + "r", kuaHang + "");// 对应每个字段的跨行值 listRC.put(yePanel + "R" + danHang + "C" + danLie + "c", kuaLie + "");// 对应每个字段的跨列值 pHelper.div42 = ""; describeSQL = ""; } else {// 隐藏字段 if (DBHelper.getValueInt(map, "isLoad") == 1) {// 加载页面显示判断 // 2014-7-29 // 12:05:57 pHelper.mapHids = isAdd(pHelper.mapHids, map, pHelper); hidBuffer.append(typeControlDao.getHidText(map)); hidBuffer.append(typeControlDao.getHidTextexpr(map));//得到_expr隐藏网页代码 2018-12-25 10:00:50 xin } } //下面这两个是31控件或43控件设置好的sql语句,存在在对应功能号下的panelControXXXXXX.jsp //之前放在面板控件显示的判断里面(上面的显示字段处理),移出来是为了解决当OA审核按钮的抄送设置不显示后,在新的OA审核界面的抄送也能加载到数据 //xin 2021-2-25 10:04:19 if (!DBHelper.getValue(map, "SqlScript").equals("")) { pHelper.sqlBuffer.append(" controls.put(\"").append(DBHelper.getValue(map, "FieldID").toLowerCase()) .append("\",\"").append(DBHelper.replaceBr(DBHelper.getValue(map, "SqlScript"))) .append("\");\r\n"); } if (!DBHelper.getValue(map, "SqlWhere").equals("")) { pHelper.sqlBuffer.append(" controls.put(\"").append(DBHelper.getValue(map, "FieldID").toLowerCase()) .append("Where\",\"").append(DBHelper.replaceBr(DBHelper.getValue(map, "SqlWhere"))) .append("\");\r\n"); } } if (sb1.length() > 0) { if (pHelper.excelContext == "") { pHelper.excelContext += sb1.substring(0, sb1.length() - 1); pHelper.excelField += sb2.substring(0, sb2.length() - 1); pHelper.excelLoca += sb3.substring(0, sb3.length() - 1); if (sb4.length() > 0) pHelper.excelTitles += sb4.substring(0, sb4.length() - 1); } else { pHelper.excelContext += ";" + sb1.substring(0, sb1.length() - 1); pHelper.excelField += "," + sb2.substring(0, sb2.length() - 1); pHelper.excelLoca += ";" + sb3.substring(0, sb3.length() - 1); if (sb4.length() > 0) pHelper.excelTitles += ";" + sb4.substring(0, sb4.length() - 1); } } // 组装成面板格式 // kong += (pHelper.kongHei + 1) * lineNO + ((tabsheetNameS.size() > 1) // ? pHelper.rowHei : 0); getjspPanTable(formId, tabsheetNameS, listRC, htmlBuffer, panelBean, maxRC, downFormid); htmlBuffer.append(hidBuffer);// 追加隐藏字段信息 if (downFormid == 0) {// 显示在表格下面的字段不追加 htmlBuffer.append(""); } return htmlBuffer; } /** * 组装面板控件以table格式显示 * * @param formId * @param tabs * @param listRC * @param htmlBuffer * @param pHelper * @param maxRC * @return */ private StringBuffer getjspPanTable(int formId, List tabs, Map listRC, StringBuffer htmlBuffer, PanelBean panelBean, Map maxRC, int downFormid) { int Rows = DBHelper.getValueInt(maxRC, "MaxRows");// 面板上最下那一行的行数 int Cols = DBHelper.getValueInt(maxRC, "MaxCols");// 面板上最多的列的列数 Cols = (Cols > 4 ? Cols : 4);//默认最少列数为4列。 PanelParmHelper pHelper = panelBean.pHelper; pHelper.colsWidth = Cols;// 获取面板跨列数 Map Rmap = null;// 跨行集合 String tab = "";// 小页卡 String panel = "";// 存放table的面板 int ck = 0;// 控件跨的列 int rk = 0;// 控件跨的行 try { tab += "\r
";//style=\"margin: 5px 0px 10px 10px;width:96%;height:auto\">"; for (int y = 0; y < tabs.size(); y++) {// 面板中的小页卡。null值表示面板不需要小页卡存在,存在null在内的其他值表示面板有页卡 Rmap = new HashMap(); String table = "";// 用来组装一个table String margin_left = "";//(tabs.get(y).equals("null") ? "margin-left: 10px;" : "margin-left: -5px;margin-bottom: 10px;margin-top: 10px;"); table += "\r\n 4 ? "ss" : "") + "\" style=\"" + margin_left + "width:" + (258 * Cols) + "px;\">";// p_table" + Cols + " for (int r = 1; r < Rows + 1; r++) {// 循环每一行 table += "\r"; for (int c = 1; c < Cols + 1; c++) {// 循环每一列 String style = ""; if (listRC.get(tabs.get(y) + "R" + r + "C" + c) != null) {// 判断r行c列是否有值 rk = Integer.parseInt(listRC.get(tabs.get(y) + "R" + r + "C" + c + "r"));// 控件跨的行 ck = Integer.parseInt(listRC.get(tabs.get(y) + "R" + r + "C" + c + "c"));// 控件跨的列 if (rk > 1 && ck != Cols) {// 存在跨行 Rmap.put(tabs.get(y) + "R" + r + "C" + c + "r", rk);// 跨行集合(统一放到一个集合里面) Rmap.put(tabs.get(y) + "R" + r + "C" + c + "c", ck);// 跨行集合(统一放到一个集合里面) style += "rowspan=\"" + rk + "\" ";// 获取控件的跨行数 } style += (ck > 1 ? "colspan=\"" + ck + "\" " : "");// 获取控件的跨列数 style += "style=\"width:" + ((256 * ck) + ((ck - 1) * 6)) + "px;\""; table += "\r\n";// 组装一个td c = (ck > 1 ? (c + (ck - 1)) : c);// 跨列之后的位置 r = ((rk > 1 && ck == Cols) ? (r + (rk - 1)) : r);// 跨行之后的位置 } else { // 判断在跨行集合(Rmap)里面是否有跨行 if (Rmap.get(tabs.get(y) + "R" + (r - 1) + "C" + c + "r") != null && Rmap.get(tabs.get(y) + "R" + (r - 1) + "C" + c + "r") > 1) { Rmap.put(tabs.get(y) + "R" + (r) + "C" + c + "r", Rmap.get(tabs.get(y) + "R" + (r - 1) + "C" + c + "r") - 1); Rmap.remove(tabs.get(y) + "R" + (r - 1) + "C" + c + "r"); Rmap.put(tabs.get(y) + "R" + (r) + "C" + (c) + "c", Rmap.get(tabs.get(y) + "R" + (r - 1) + "C" + c + "c")); Rmap.remove(tabs.get(y) + "R" + (r - 1) + "C" + c + "c"); c = (c + (Rmap.get(tabs.get(y) + "R" + (r) + "C" + c + "c") - 1)); } else { table += "\r\n";// r行c列没值时添加一个空TD } } } table += "\r"; } table += "\r
" + listRC.get(tabs.get(y) + "R" + r + "C" + c) + "
" + "
\n"; if (!tabs.get(y).equals("null")) {// 有小页卡的时候进入进行组装 tab += "\r
" + table + "
"; } else { panel = table; } } tab += "\r
"; htmlBuffer.append(tabs.size() > 1 ? tab : panel);// 赋值 } catch (Exception e) { e.printStackTrace(); } finally { Rmap.clear(); } return htmlBuffer; } /** * 筛选面板获得 9窗体的日期从。。。。。到。。。。。调用到。 * * @param gfList 筛选设置集合 * @param infoJsBuffer 条件 * @return 返回面板html代码 * @throws Exception */ private StringBuffer getJspPanSift(int formId, List> gfList, StringBuffer infoJsBuffer, PanelBean panelBean) throws Exception { PanelParmHelper pHelper = panelBean.pHelper; Map panelMap = new HashMap(); StringBuffer hidBuffer = new StringBuffer(); StringBuffer htmlBuffer = new StringBuffer(); List pailit=new ArrayList<>(); panelMap.put("null", "");// 无多页的情况处理 int kuaHang = 0; int kuaLie = 0; int danLie = 0; int danHang = 0; int panHeight=0; String yePanel = ""; String style = ""; String showMiaoShu = ""; int xianMiaoShu = 0; String miaoshuHtml = ""; for (Map map : gfList) { danLie = DBHelper.getValueInt(map, "ColNo"); danHang = DBHelper.getValueInt(map, "RowNo"); if(!pailit.contains(danHang)){ panHeight=panHeight+30; pailit.add(danHang); } if (";34;36;".indexOf(";" + DBHelper.getValue(map, "ControlType") + ";") == -1) { map.put("isLoad", "1"); map.put("FT", DBHelper.getValue(map, "FT")); getJsInfo(infoJsBuffer, map, panelBean); } pHelper.id = DBHelper.getValue(map, "FieldID").toLowerCase();// 给控件赋值ID //typeControlDao.setPanelParmHelper(pHelper); if (DBHelper.getValueInt(map, "Visible") == 1 && danLie != 0 && danHang != 0) {// 显示 pHelper.maps = isAdd(pHelper.maps, map, pHelper); kuaHang = DBHelper.getValueInt(map, "HeightNum"); kuaLie = DBHelper.getValueInt(map, "LengthNum"); yePanel = DBHelper.getValue(map, "tabsheetname"); showMiaoShu = DBHelper.replaceBr(DBHelper.getValue(map, "fieldname")); xianMiaoShu = DBHelper.getValueInt(map, "Hidelabel"); showMiaoShu = showMiaoShu + (showMiaoShu.equals("") ? "  " : "");// 获得些必要信息,避免重复获得 yePanel = "null";// 页名称 danLie = danLie == 1 ? 0 : danLie; style = "margin-top: " + ((danHang - 1) * (pHelper.kongHei) + (danHang == 1 ? 5 : 10)) + "px; margin-left: " + (danLie * 120) + "px;";// 确定位置 // + (danLie * (pHelper.kongJianAndMiaoShu)) + "px;";// 确定位置 map.put("tdLen", ((pHelper.kongJianAndMiaoShu + 1) * kuaLie - 1) - ((panelBean.isLandscape) ? ((xianMiaoShu == 1) ? 0 : pHelper.miaoShuTdWidth) + 5 : +10));// 减5做备用 if (kuaLie > 1) { style += "width:" + (190 * kuaLie) + "px;"; //"width:" + (pHelper.kongJianAndMiaoShu * kuaLie) + "px;"; // 加10为控件不至于换行用 } if (kuaHang > 1) { style += "height:" + (pHelper.kongHei * kuaHang) + "px;";// 设置高度 } if (danLie > pHelper.liemut) {// 获取面板列控件的总宽度 pHelper.liemut = danLie; pHelper.liewidth = ((danLie - 1) * ((pHelper.kongJianAndMiaoShu) + 1)) + ((pHelper.kongJianAndMiaoShu) + 1); } miaoshuHtml = (xianMiaoShu == 1) ? "" : "
" + showMiaoShu + "
";// 显示描述 showMiaoShu = (DBHelper.getValue(map, "Hints").equals("")) ? showMiaoShu : DBHelper.getValue(map, "Hints");// 提示信息获得 if (!DBHelper.getValue(map, "TipsExpression").equals("")) { if (DBHelper.getValue(map, "TipsExpression").indexOf("!") != -1) {// 动态查询信息的时候 showMiaoShu = "<%=DBHelper.getValue(docMap,\"" + pHelper.id + "_tips\",mapAll)%>"; } else {// 没有动态查询时 showMiaoShu = DBHelper.getValue(map, "TipsExpression"); } } //这里的tabs38属性是处理页面页卡的38类型控件显示边框问题-xin 2018-11-5 15:17:30 map.put("tabs38", yePanel); map.put(TypeControl.PANEL_INFO, panelBean); panelMap.put(yePanel, panelMap.get(yePanel) + "\r\n" + miaoshuHtml + "
" + typeControlDao.get(map) + "
");// 组装成控件添加进当前页面,typeControlDao.get(map,false)之后统一考虑实现 } else {// 隐藏字段 // if(mrq==0) { pHelper.mapHids = isAdd(pHelper.mapHids, map, pHelper); hidBuffer.append(typeControlDao.getHidText(map)); // } } } htmlBuffer.append("
"); // .append((pHelper.rowHei + 4) * systemSettingsBo.getMaxRow(formId)).append("px;width:auto\">"); htmlBuffer.append(panelMap.get("null")).append("
"); htmlBuffer.append("
<%@ include file=\"@formId@_grid.jsp\" %>
"); // js 代码 htmlBuffer.append("\r\n "); return htmlBuffer; } /** * 给js集合添加设置 * * @param infoJsBuffer js集合显示的面板设置 * @param map 一条设置集合 */ private void getJsInfo(StringBuffer infoJsBuffer, Map map, PanelBean panelBean) throws Exception { PanelParmHelper pHelper = panelBean.pHelper; if (DBHelper.getValueInt(map, "isLoad") == 1) { pHelper.html_Col.append("{fileid:\"").append(DBHelper.getValue(map, "FieldID").toLowerCase()) .append("\"},"); } int controltype = DBHelper.getValueInt(map, "ControlType"); String morenV_ = DBHelper.getValRep(DBHelper.getValue(map, "initValue"), false); String ft = DBHelper.getValue(map, "ft"); if (controltype == 2) { if (ft.equals("")) { morenV_ = getSelectValue(morenV_, ft); } } String initV=morenV_; if(initV.indexOf("!")!=-1){//有!符号时进入 xin 2022-4-21 15:18:22 initV=initV.replaceAll("<%=","\"+").replaceAll("%>","+\""); initV="<%=DBHelper.getInitValue(request,docMap,\\\""+ initV+"\\\")%>"; } String temp = DBHelper.getValue(map, "FieldID").toLowerCase(); if (DBHelper.getValueInt(map, "isLoad") == 1) { //验证数字格式是否规范正确 xin 2023-3-28 09:53:14 String forMat=DBHelper.getValue(map,"Displayformat"); if(StringUtils.isNotBlank(forMat)){ //正则表达式(数字和日期在内) boolean isFormat = Pattern.matches("^,?0\\.?0*$|^(?:(?:[y]{4})?-?(?:M{1,2})?-?(?:d{1,2})?)?(?:\\s*(?:H{1,2})?:?(?:m{1,2})?:?(?:s{1,2})?)?$", forMat); if (!isFormat) { panelBean.overlapText += "
提示:功能号" + pHelper.formIdPan + ",字段:" + temp + "--" + DBHelper.getValue(map, "fieldname") + ",设置的【数字格式】无法识别,有可能导致显示不出值。当前格式:" + forMat; } } infoJsBuffer.append("\"" + temp + "\"").append(":{\r\n title:\"") .append(DBHelper.replaceBr(DBHelper.getValue(map, "fieldname").equals("") ? temp : DBHelper.getValue(map, "fieldname")))// 描述 .append("\",\r\n keyinput:\"").append(DBHelper.getValue(map, "keyinput"))// 必录 .append("\",\r\n ft:\"").append(ft)// 外表表号 .append("\",\r\n ftformtype:\"").append(DBHelper.getValue(map, "FTFormType"))// 外表类型 .append("\",\r\n emptyrefdata:\"").append(DBHelper.getValue(map, "emptyrefdata"))// 外表清空关联 .append("\",\r\n fk:\"").append(DBHelper.replaceBr(DBHelper.getValue(map, "FK")))// 外表接收数据外表字段 .append("\",\r\n seekgroupid:\"").append(DBHelper.replaceBr(DBHelper.getValue(map, "SeekGroupID")))// 外表接收数据自身字段 .append("\",\r\n spremissfield:\"").append(DBHelper.getValue(map, "sPremissField"))// 外表条件自身字段 .append("\",\r\n dpremissfield:\"").append(DBHelper.getValue(map, "dPremissField"))// 外表条件外表字段 .append("\",\r\n efilter:\"").append(DBHelper.getValue(map, "eFilter"))// 外表条件自定义 .append("\",\r\n hyperlinkft:\"").append(DBHelper.getValue(map, "HyperlinkFT"))// 超链接外表号 .append("\",\r\n hyperlinkftformtype:\"").append(DBHelper.getValue(map, "HyperlinkFTFormType"))// 超链接外表类型 .append("\",\r\n hyperlinkspremissfield:\"") .append(DBHelper.getValue(map, "HyperlinkSPremissField"))// 超链接自身字段 .append("\",\r\n hyperlinkdpremissfield:\"") .append(DBHelper.getValue(map, "HyperlinkDPremissField"))// 超链接外表字段 .append("\",\r\n Hyperlinkmode:\"") .append(DBHelper.getValue(map, "Hyperlinkmode"))//操作模式 .append("\",\r\n isAutoRefresh:\"") .append(DBHelper.getValue(map, "isAutoRefresh"))//执行后自动刷新 .append("\",\r\n hyperlinkefilter:\"").append(DBHelper.getValue(map, "HyperlinkEFilter"))// 超链接自定义 .append("\",\r\n datalink:\"").append(DBHelper.getValue(map, "DataLink"))// 感应字段 .append("\",\r\n stylecss:\"") .append("<%=DBHelper.getValRepShi(\"" + DBHelper.getValue(map, "StyleCss") + "\",session,null,false)%>")// css样式 .append("\",\r\n controltype:\"").append(controltype)// 控件类型 .append("\",\r\n ReadOnly:\"").append(DBHelper.getValue(map, "ReadOnly"))// 只读 .append("\",\r\n initValue:\"").append(initV)// 初始值 .append("\",\r\n format:\"").append(forMat)//数字各式 .append("\",\r\n isSuppressBlankLineForDropDown:\"").append(DBHelper.getValue(map,"isSuppressBlankLineForDropDown"))// .append("\"\r\n },");// 存放页面必要且经常用到的信息,减小冗余,需要信息直接从里面获得 // 之后把java获得的值也想办法弄进去,即一加载内部就有了所需要的所有信息,值改变顺带把值传进此,所有处理即可用这个集合,之后可以处理掉多余信息传递,不处理不影响 if (!morenV_.equals("")) { pHelper.intvalueMap.put(temp, morenV_); } } } /** * 更加默认值从ft表号中获得其实际值 * * @param morenV_ 默认设置值 * @param ft 外表号 * @return 实际值 */ private String getSelectValue(String morenV_, String ft) { if (!ft.equals("")) { String sql = "select intervalue,dictvalue from _sysdict where dictid = " + ft; List> list = null;// intervalue为实际值 list = sqlDBHelperIfc.getHashMap(sql); for (HashMap mapSel : list) { if (morenV_.trim().equals(mapSel.get("intervalue")) || morenV_.trim().equals(mapSel.get("dictvalue"))) { morenV_ = mapSel.get("intervalue");// 实际值 break; } } } return morenV_; } /** * 判断主从表 * * @param formType 窗体类型 * @param pHelper 集合信息 * @return 返回主表:0从表:1 */ private int hasTiaoJian(int formType, PanelBean panelBean) throws Exception { panelBean.isDoc = true; switch (formType) {// 0和-1为俩个特殊值 是不存在的窗体类型 需要用此信息做事情 0匹配查主表 -1匹配查从表 case 0:// 为499类型改为此 (主表) case 9:// 9类型面板 case 15: case 17: break; case -1:// 为301类型对应的第二个面板 case -2:// 为20类型对应的第二个面板 case 7: case 38: case 18: case 181: case 182: case 238: case 77: panelBean.pHelper.primary = (panelBean.notPan ? 0 : 1); panelBean.isDoc = false; break; default: panelBean.pHelper.primary = (panelBean.notPan ? 1 : 0); break; } return panelBean.pHelper.primary; } private String setTable(int primary1, int formId, PanelParmHelper pHelper, int x) throws Exception { return tableIs(primary1, formId, pHelper); } private String setTable(int primary1, int formId, PanelParmHelper pHelper) throws Exception { String tableString = ""; Map sysMap = systemSettingsBo.getFormIdInTable(formId); pHelper.primary = primary1; if (pHelper.primary == 1) { pHelper.tableIs = DBHelper.getValue(sysMap, "DTTable").trim(); tableString = DBHelper.getValue(sysMap, "DTTable").trim(); pHelper.tableIs2 = DBHelper.getValue(sysMap, "HDTable").trim(); } else { pHelper.tableIs = DBHelper.getValue(sysMap, "HDTable").trim(); tableString = DBHelper.getValue(sysMap, "HDTable").trim(); pHelper.tableIs2 = DBHelper.getValue(sysMap, "DTTable").trim(); } return tableString; } /** * 得到面板的表名,给出相应的信息 * * @param primary1 是否从表 * @param formId 功能号 * @param pHelper 信息 * @return 返回表名字符,表信息直接由pHelper返回 */ private String tableIs(int primary1, int formId, PanelParmHelper pHelper) throws Exception { String tableString = ""; Map sysMap = systemSettingsBo.getFormIdInTable(formId); pHelper.primary = primary1; if (pHelper.primary == 1) { pHelper.tableIs = DBHelper.getValue(sysMap, "DTTable").trim(); tableString = DBHelper.getValue(sysMap, "DTTable").trim(); pHelper.tableIs2 = DBHelper.getValue(sysMap, "HDTable").trim(); } else { pHelper.tableIs = DBHelper.getValue(sysMap, "HDTable").trim(); tableString = DBHelper.getValue(sysMap, "HDTable").trim(); pHelper.tableIs2 = DBHelper.getValue(sysMap, "DTTable").trim(); } return tableString; } private String setTable(int primary1, PanelParmHelper pHelper) throws Exception { return setTable(primary1, pHelper.formIdPan, pHelper, 1); } private Map> isAdd(Map> maps, Map sys, PanelParmHelper pHelper) { pHelper.sysTi = sys; String yeId = DBHelper.getValue(sys, "FieldID").toLowerCase(); // 排除非数据库字段 if (";34#;36#".indexOf(";" + DBHelper.getValue(sys, "ControlType").trim() + "#") == -1) { Map map = new HashMap(); map.put("FieldID", yeId);// 字段名 map.put("type", DBHelper.getValue(sys, "ControlType"));// 控件类型 map.put("HeadFlag", DBHelper.getValue(sys, "HeadFlag"));// 是否从表 map.put("format", DBHelper.getValue(sys, "Displayformat")); map.put("must", DBHelper.getValue(sys, "KeyInput")); map.put("HDTable", DBHelper.getValue(sys, "HDTable"));// 主表 map.put("DTTable", DBHelper.getValue(sys, "DTTable"));// 从表 map.put("editstatus", DBHelper.getValue(sys, "EditStatus"));// 必录或者编辑状态设置 map.put("datetype", (pHelper.verificationMap == null || pHelper.verificationMap.get(yeId) == null) ? "-1" : pHelper.verificationMap.get(yeId));// 在数据库中的类型 map.put("downGrid", String.valueOf(DBHelper.getValueInt(sys, "MasterFieldShowLocation")));// 是否显示在grid下面 // 添加处理信息自动 map.put("datalink", String.valueOf(DBHelper.getValueInt(sys, "DataLink")));// 是否感应 map.put("showfieldvalueexpression", DBHelper.getValue(sys, "showFieldValueExpression"));// 权限查看字段 map.put("stylecss", DBHelper.getValue(sys, "stylecss"));// css样式 map.put("tipsexpression", DBHelper.getValue(sys, "tipsexpression"));// css样式 map.put("datalink", DBHelper.getValue(sys, "datalink"));// 感应字段才处理更新插入 maps.put(yeId, map);// 解决Id暴露问题 } return maps; } private Map> getMaps(PanelParmHelper pHelper) {// 得到此表所有字段 Map> mapList = new HashMap>(); if (pHelper.maps != null) { mapList.putAll(pHelper.maps); } if (pHelper.mapHids != null) { mapList.putAll(pHelper.mapHids);// 后追加 } return mapList; } /** * @param maps 包含所查列的一些必须信息 * @return 拼写的查询sql语句 */ private String getSqlCol(Map> maps, PanelParmHelper pHelper) { String retuString = " "; String field = ""; String showField = ""; String stylecss = ""; String TipsExpression = ""; boolean hasQuan = false; for (Map map : maps.values()) { if (map.get("datalink").equals("1")) {// 是感应字段 field = map.get("FieldID"); showField = map.get("showfieldvalueexpression"); stylecss = map.get("stylecss"); TipsExpression = map.get("tipsexpression");// DBHelper.getValue(map, // "TipsExpression");// if (showField.equals("")) {// 权限字段无 retuString += field + ","; // hasQuan = true;//格线加载时,已经报错了,但面板却没有这样的错误弹出 ,显然,面板是写 * // 代替所有字段 。把 * 号改成 字段名就行了,其它的不用改了 } else { if (field.indexOf("_expr") == -1 || !field.substring(field.lastIndexOf("_expr")).equals("_expr")) {// 有这个特殊符还必须在最后 showField = pHelper.initialValue.getValLinShi(showField, false); //把替换值特殊符号全去掉 showField=showField.replace("'&","") .replace("&'","") .replace("&",""); retuString += "case when (" + showField + ")=0 then null else " + field + " end as " + field + " ,case when (" + showField + ")=1 then 1 when (" + showField + ")=2 then 2 else 0 end as " + field + "_expr,";// 一大堆逻辑,后处理 hasQuan = true; } } // StyleCss样式设置 if (!stylecss.equals("")) { if (field.indexOf("_css") == -1 || !field.substring(field.lastIndexOf("_css")).equals("_css")) {// 有这个特殊符还必须在最后 stylecss = pHelper.initialValue.getValLinShi(stylecss, false); retuString += stylecss + " as " + field + "_css,";// 一大堆逻辑,后处理 hasQuan = true; } } // 鼠标移动到控件动态显示信息 if (!TipsExpression.equals("") && TipsExpression.indexOf("!") != -1) { if (field.indexOf("_tips") == -1 || !field.substring(field.lastIndexOf("_tips")).equals("_tips")) {// 有这个特殊符还必须在最后 TipsExpression = pHelper.initialValue.getValLinShi(TipsExpression, false); TipsExpression = TipsExpression.replace("!", ""); retuString += "(" + TipsExpression + ") as " + field + "_tips,";// 一大堆逻辑,后处理 hasQuan = true; } } } } return (!hasQuan) ? "*" : DBHelper.replaceBr(retuString.substring(0, retuString.length() - 1)); } private StringBuffer getJspPanScript(int formId, String frameName, PanelBean panelBean) throws Exception { StringBuffer sBuffer = new StringBuffer(); PanelParmHelper pHelper = panelBean.pHelper; Map> mapList = getMaps(pHelper); sBuffer.append("\r\n panMain[panIndex].formtypeOne=" + pHelper.formTypePan + ";"); sBuffer.append("\r\n panMain[panIndex].keyDown=function(op,e,f){\r\n var flag = checkSession();"); sBuffer.append("\r\n if(flag){return;}"); if (!panelBean.notPan) {// if (";16;0;-1;22;2;-2;1;".indexOf(";" + pHelper.formTypePan + ";") == -1) { // !=17 sBuffer.append("\r\n var event;\r\n if(e!=null){\r\n if(e!='null'){ event = $.event.fix(e);}"); // 键盘按下事件 sBuffer.append("\r\n if(op=='123' || event.keyCode==13){"); sBuffer.append("\r\n var where =\"\";"); sBuffer.append("\r\n var value =\"\";"); List masterCodeList = pHelper.initialValue.getMASTERCODE(); if (masterCodeList == null || masterCodeList.size() == 0) {// getMASTERCODE判断是否有值 // 如果有错误返回旧版本单个2014-8-21 // 后改,只有这两个要把所有参数传出 if (";38#;238#;18#;7#;19#;77#".indexOf(";" + pHelper.formTypePan + "#") != -1) { if (";238#;38#".indexOf(";" + pHelper.formTypePan + "#") != -1) { Map> allIsChecks = new HashMap>(); Map checkMap = new HashMap(); checkMap.put("FieldID", "allIsChecks"); allIsChecks.put("allIsChecks", checkMap); mapList.putAll(allIsChecks); } String colS = ""; String colsInDate = "";// 数据库当前字段 for (String panId : mapList.keySet()) { colS += panId + ";"; colsInDate += mapList.get(panId).get("FieldID") + ";"; } if (pHelper.formTypePan == 19) { colS = ""; colsInDate = "";// 数据库当前字段 String execSql = "set nocount on ; select fieldid from gfield where headflag=" + pHelper.primary + " and formid=" + formId + " and DataLink=1 order by statisid"; List> col_descList = sqlDBHelperIfc.getHashMapObj(execSql); for (int i = 0; i < col_descList.size(); i++) { colS += col_descList.get(i).get("fieldid").toString().toLowerCase() + ";"; colsInDate += col_descList.get(i).get("fieldid").toString().toLowerCase() + ";"; } } sBuffer.append("\r\n var cols=\"\";var colsInDate=\"\";"); if (!colS.equals("")) { sBuffer.append("\r\n cols=(\"" + colS.substring(0, colS.length() - 1) + "\").split(';');"); sBuffer.append("\r\n colsInDate=(\"" + colsInDate.substring(0, colsInDate.length() - 1) + "\").split(';');"); } if (";18#;7#;19#;77#".indexOf(";" + pHelper.formTypePan + "#") != -1) {// 第一次传值为空的做法 sBuffer.append( "\r\nwhere +=panMain[panIndex].keyWhere(!panMain[panIndex].no_load_first,cols,colsInDate)"); } else { sBuffer.append("\r\nwhere +=panMain[panIndex].keyWhere(false,cols,colsInDate)"); } } else { if (mapList.get("doccode") != null) { sBuffer.append("\r\n value = document.getElementById('doccode').value;"); sBuffer.append("\r\n where +=\"" + mapList.get("doccode").get("FieldID") + "='\" + value.Trim() + \"' and \";"); } } } else {// 有MASTERCODE就只传MASTERCODE的那个字段信息 if (pHelper.formTypePan == 10) { sBuffer.append("\n var col_;//查询的条件字段名\n"); for (int m = 0; m < pHelper.initialValue.getMASTERCODE().size(); m++) { // 对设置了matercode的字段进行组装 sBuffer.append("\r\n value = document.getElementById('" + pHelper.initialValue.getMASTERCODE().get(m) + "').value;\n"); sBuffer.append(" col_=panMain[panIndex].getOrder('" + pHelper.initialValue.getMASTERCODE().get(m) + "');\r\n"); // 2015-6-1 10:44:46 sBuffer.append("\r\n if(value != null && col_!=null){"); sBuffer.append("\r\n where +=col_+\"='\" + value + \"' and \";"); sBuffer.append("\r\n }"); } } else { for (int m1 = 0; m1 < pHelper.initialValue.getMASTERCODE().size(); m1++) {// 循环 // 2014-8-21 sBuffer.append("\r\n value = document.getElementById('" + pHelper.initialValue.getMASTERCODE().get(m1) + "').value;"); // sBuffer.append("\r\n if(value != \"\"){"); sBuffer.append("\r\n if(value != null){"); sBuffer.append("\r\n where +=\"" + pHelper.initialValue.getMASTERCODE().get(m1) + "='\" + value + \"' and \";"); sBuffer.append("\r\n }"); } } } sBuffer.append( "\r\n where = where.substring(0,where.lastIndexOf(\"and\"));\r\n where += \"<%=addUrl%>\";"); if (";4#;238#;38#".indexOf(";" + pHelper.formTypePan + "#") != -1) { sBuffer.append(" return where;"); } else if (";301#;30#;20#".indexOf(";" + pHelper.formTypePan + "#") != -1) { sBuffer.append("\r\n query=(query==\"\"?where:query);"); sBuffer.append("\r\n loadTree(\"treeData.jsp\",{query:where});"); } else if (";77#".indexOf(";" + pHelper.formTypePan + "#") != -1) { sBuffer.append("\r\n if(null!=this.returnWhere&&\"\"!=this.returnWhere){where+=this.returnWhere;where=where.replaceAll(\"%\",\"@~\");}"); sBuffer.append("\r\n create@panelNo@(encodeText(where),<%=flag%>);"); } else if (";5#;16#;496#;498#".indexOf(";" + pHelper.formTypePan + "#") != -1) { sBuffer.append("\r\n where=where.replaceAll(\"%\",\"@~\");"); sBuffer.append("\r\n if(<%=copy%>!=null){\r\n create(encodeText(\"<%=where%>\"),<%=flag%>,1);\r\n }else{"); sBuffer.append("\r\n create(encodeText(where),<%=flag%>);\r\n }"); } else if (";8#".indexOf(";" + pHelper.formTypePan + "#") != -1) {// 对3表做特别处理 // by // danaus // 18-1-29 sBuffer.append("\r\n where=where.replaceAll(\"%\",\"@~\");"); sBuffer.append("\r\n if(<%=copy%>!=null){\r\n create(encodeText(\"<%=where%>\"),<%=flag%>,1).then(function(d){\r\n" + " create1(encodeText(\"<%=where%>\"),<%=flag%>,1).then(function(d){\r\n" + " mygrid.setThreeFilter();});});\r\n }else{"); sBuffer.append("\r\n create(encodeText(where),<%=flag%>).then(function(d){\n" + "create1(encodeText(where),<%=flag%>).then(function(d){\n" + "mygrid.setThreeFilter();});});\r\n }"); } else { sBuffer.append("\r\n where=where.replaceAll(\"%\",\"@~\");\n"); sBuffer.append("\r\n if(f!=undefined&&isOpen==0) where+=f;\r\ncreate(encodeText(where),<%=flag%>);");// by // 2015-5-6 // 增加对18类型设置为不自动加载数据的处理 } sBuffer.append("\r\n }\r\n }"); } } mapList.remove("allIsChecks"); sBuffer.append("\r\n } "); sBuffer.append("\r\n panMain[panIndex].checkUp=function (){"); String colStr = ""; // String cmsStr = ""; // 后添加判断表格增加行用的必录检查 String colToGrid = ""; int i = 0; String docstastuString = ""; for (String panId : mapList.keySet()) { if (mapList.get(panId).get("must").equals("1")) { if (panId.lastIndexOf("_expr") == -1 || (panId.lastIndexOf("_expr") != -1 && mapList.get(panId.substring(0, panId.lastIndexOf("_expr"))) == null)) { docstastuString = mapList.get(panId).get("editstatus"); colStr += ((i == 0) ? "" : ";pb#") + panId + (docstastuString.equals("") ? "" : ";sta#" + docstastuString); if (mapList.get(panId).get("downGrid").equals("0")) { colToGrid += ";pb#" + panId + (docstastuString.equals("") ? "" : ";sta#" + docstastuString); } i++; } } } sBuffer.append("\r\n var cols=(\"" + colStr + "\");"); sBuffer.append("\r\n var cms=(\"\");");// " + cmsStr + " sBuffer.append("\r\n return panMain[panIndex].mustCheck(cols,cms,<%=docstatePan%>); \r\n }"); sBuffer.append("\r\n panMain[panIndex].checkToGrid= function (){"); sBuffer.append("\r\n var cols=(\"" + colToGrid + "\");"); sBuffer.append("\r\n var cms=(\"\");");// " + cmsToGrid + " sBuffer.append("\r\n return panMain[panIndex].mustCheck(cols,cms,<%=docstatePan%>); \r\n }"); sBuffer.append("\r\n panMain[panIndex].upSub=function(op){");// 设置情况关联 // 程序代码 pHelper.mapAlls.putAll(pHelper.maps); pHelper.mapAlls.putAll(pHelper.mapHids); // sBuffer.append(pHelper.eConn.empty(pHelper.mapAlls)); if (pHelper.formTypePan == -1) { sBuffer.append("setPanel301=true;"); } // 追加公式触发 // sBuffer.append("\r\n var gongSiCo='" + pHelper.gongsiCols + "';"); // sBuffer.append("\r\n var gongSi='" + pHelper.gongsiStr.replaceAll("\'", "\\\\\'") + "';"); sBuffer.append("\r\n var gongSiCo='" + StringUtils.join(pHelper.gongsiCols,";") + "';"); sBuffer.append("\r\n var gongSi='" + StringUtils.join(pHelper.gongsiStr,"@#@") + "';"); sBuffer.append("\r\n panMain[panIndex].upSub_gongsi(op,gongSiCo,gongSi);"); sBuffer.append("\r\n panMain[panIndex].set_upSub(op);\r\n }"); sBuffer.append(getMapScript(mapList)); sBuffer.append("\r\n panMain[panIndex].loadSet=function(docstatePan){ "); sBuffer.append("\r\n var buttonInfo=null; "); sBuffer.append("\r\n var reads="); sBuffer.append(panelBean.getFunLoadList()); // i = 0; // for (String fun : typeControlDao.getFunLoadList()) {// 页面生成后的处理函数 // sBuffer.append(((i == 0) ? "" : ";fen#")).append(fun); // i++; // } sBuffer.append(";"); switch (pHelper.formTypePan) {// 按钮显示设置 case 0: case 5: case 8: case 16: case 18: if (pHelper.panelbol) { sBuffer.append("\r\n <%if(1==1){\r\n JsonArray butt=new JsonArray();\r\n JsonArray buttonInfo=new JsonArray();\r\n String sqlStr=\"\";");//\r\n String writeInfo=\"\";"); sBuffer.append("\r\n List> buttonList=gButtonIfc.getButton(formId);"); sBuffer.append("\r\n for (Map buttonMap : buttonList) {"); sBuffer.append("\r\n sqlStr+=DBHelper.getValue(buttonMap,\"buttonID\").toLowerCase()+\";pb#\";"); sBuffer.append("\r\n sqlStr+=DBHelper.getValRepShi(formId,DBHelper.getValue(buttonMap,\"showItemExpression\"),session,((listInfo!=null&&listInfo.size()>0)?listInfo.get(0):null),false)+\";pb#\";"); sBuffer.append("\r\n sqlStr+=session.getAttribute(SessionKey.USERCODE).toString()+\";pb#\";"); sBuffer.append("\r\n sqlStr+=DBHelper.getValue(buttonMap,\"editStatus\")+\";pb#\"+tableIs+\";pb#\"+(DBHelper.getValue(docMap,\"doccode\").equals(\"\")?\"null\":DBHelper.getValue(docMap,\"doccode\"))+\";fen#\";"); // sBuffer.append("+\";pb#\"+tableIs+\";pb#\"+(DBHelper.getValue(docMap,\"doccode\").equals(\"\")?\"null\":DBHelper.getValue(docMap,\"doccode\"))+\";pb#\"+DBHelper.getValueInt(buttonMap,\"editStatus\")+\";fen#\"; // }"); sBuffer.append("\r\n JsonArray buttString=new JsonArray();"); sBuffer.append("\r\n buttString.add(2);"); sBuffer.append("\r\n buttString.add(DBHelper.getValue(buttonMap,\"fieldid\").toLowerCase());"); sBuffer.append("\r\n buttString.add(DBHelper.getValue(buttonMap, \"buttonID\"));"); sBuffer.append("\r\n buttString.add(DBHelper.getValue(buttonMap,\"editStatus\"));"); sBuffer.append("\r\n butt.add(buttString);"); //sBuffer.append("\r\n buttString+=\";fen#2;pb#\"+DBHelper.getValue(buttonMap,\"fieldid\").toLowerCase()+\";pb#\"+DBHelper.getValue(buttonMap, \"buttonID\")+\";pb#\"+DBHelper.getValue(buttonMap,\"editStatus\");"); // sBuffer.append("\r\natMap.put(DBHelper.getValue(buttonMap, // \"buttonID\"),DBHelper.getValue(buttonMap,\"editStatus\"));"); // sBuffer.append("\r\nnb=DBHelper.getValue(docMap,\"curchecker\").toLowerCase().indexOf(session.getAttribute(\"@usercode\").toString().toLowerCase())!=-1?true:false; // "); sBuffer.append("\r\n }"); sBuffer.append("\r\n if(!sqlStr.equals(\"\")){"); // sBuffer.append("\r\n String sqlwhere=\"\";"); // sBuffer.append("\r\n if(!tableIs.equals(\"\") && // tableIs.indexOf(\"///|\")==-1){"); // sBuffer.append("\r\n sqlwhere=\"from \"+tableIs+\" where // DocCode='\"+DBHelper.getValue(docMap,\"doccode\")+\"'\";}"); // sBuffer.append("\r\n Map buMap=sqlDBHelperIfc.getBoolSql(sqlStr);"); // sBuffer.append("\r\n if(buMap.get(\"error\")!=null){%>"); // sBuffer.append("\r\n alert(\"<%=buMap.get(\"error\")%>\")"); // sBuffer.append("\r\n <%}"); // sBuffer.append("\r\n if(buMap!=null){"); // sBuffer.append("\r\n bdMap.putAll(buMap);\r\n }"); // sBuffer.append("\r\n if(buMap!=null&&buMap.size()>0){"); // sBuffer.append("\r\n for(String key:buMap.keySet()){"); // sBuffer.append("\r\n writeInfo+=\",{\\\"filed\\\":\\\"\"+key+\"\\\",\\\"value\\\":\\\"\"+buMap.get(key)+\"\\\"}\";"); // sBuffer.append("\r\n }"); // sBuffer.append("\r\n }"); // sBuffer.append("\r\n writeInfo=(writeInfo.indexOf(\",\")!=-1)?writeInfo.substring(1):writeInfo;"); sBuffer.append("\r\n try{"); sBuffer.append("\r\n bdMap=sqlDBHelperIfc.getBoolSql(sqlStr);"); sBuffer.append("\r\n for(String key:bdMap.keySet()){"); sBuffer.append("\r\n if(bdMap.get(key)!=null){"); sBuffer.append("\r\n JsonObject info=new JsonObject();"); sBuffer.append("\r\n info.addProperty(\"filed\", key);"); sBuffer.append("\r\n info.addProperty(\"value\",bdMap.get(key).toString());"); sBuffer.append("\r\n buttonInfo.add(info);"); sBuffer.append("\r\n }"); sBuffer.append("\r\n }"); sBuffer.append("\r\n }catch(Exception e){"); sBuffer.append("\r\n throw e;"); sBuffer.append("\r\n }"); sBuffer.append("\r\n }"); sBuffer.append("\r\n out.print(\"buttonInfo=\"+buttonInfo+\";\");"); sBuffer.append("\r\n out.print(\"\\r\\n reads = reads.concat(\"+butt+\");\");"); sBuffer.append("\r\n }%>"); } break; default: break; } if (!"".equals(pHelper.iscopy)) { sBuffer.append("\r\n panMain[panIndex].bolCopy=\"<%=copy%>\";");// 是不是复单 } else { sBuffer.append("\r\n panMain[panIndex].bolCopy=\"0\";");// 是不是复单 } sBuffer.append("\r\n panMain[panIndex].set_read_load(reads,docstatePan,<%=isNewOpen%>,'<%=session.getAttribute(\"@usercode\")%>;<%=session.getAttribute(\"@cccode\")%>;<%=session.getAttribute(\"@rolename\")%>',buttonInfo);"); sBuffer.append("\r\n }"); // 处理不复制字段 String colString = ""; if ("".equals(pHelper.iscopy)) { colString = DBHelper.replaceBr(DBHelper.getValue(assistIfc.getClernCol(formId), "rowcopyfields")); } else { colString = pHelper.iscopy; } sBuffer.append("\r\n panMain[panIndex].copy=function(){\r\n panMain[panIndex].noCopy('" + colString + "');\r\n }"); pHelper.iscopy = ""; switch (pHelper.formTypePan) { case 5: case 8: case 16: case 498: case 0:// 498 // sBuffer // .append("\r\nvar timer_h=null;function // start_Show(){try{setTimeout(parent.topFrame.hiddenToolButton(function(){stop();}),0);stop();}catch(e_){}}function // stop(){window.clearInterval(timer_h);}timer_h=window.setInterval(\"start_Show()\",300);"); break; default: break; } if (pHelper.formTypePan == 16) { sBuffer.append("<% if(\"@liuChen@\".equals(\"1\")){%>"); sBuffer.append("\r\n\" name=\"formid\"/>"); sBuffer.append("\r\n\" name=\"doccode\"/>"); sBuffer.append("\r\n<%} %>"); } // sBuffer.append(" "); return sBuffer; } // 获得面板中 的getPanMap private StringBuffer getMapScript(Map> mapList) { StringBuffer sBuffer = new StringBuffer(); sBuffer.append("\r\n panMain[panIndex].getPanMap=function(panIndexs){"); sBuffer.append("\r\n if(panIndexs==undefined){\r\n return panMain[panIndex].getPanMap_All();\r\n }else{\r\n return panMain[panIndexs].getPanMap_All();\r\n }");// 返回grid所需形式的字符串 sBuffer.append("\r\n }"); return sBuffer; } private String getTypeIni(PanelParmHelper pHelper) throws Exception { String output = ""; output += pHelper.FAFO.readFile(pHelper.URI + File.separator + "public" + File.separator + "template" + File.separator + "topPanInv.txt"); output = output.replaceAll("#zhu#", pHelper.tableIs); if (pHelper.seqtypefilde.indexOf("19") != -1) { String id19 = pHelper.seqtypefilde.replace("19;", ""); output = output.replace("[?seq]", "DBHelper.getValue(docMap,\"" + id19 + "\",mapAll)"); } else { output = output.replace("[?seq]", "\"\""); } return output; } /** * panPar.txt * * @param pHelper * @return * @throws Exception */ private String getPar(PanelParmHelper pHelper) throws Exception { String output = ""; output += pHelper.FAFO.readFile( pHelper.URI + File.separator + "public" + File.separator + "template" + File.separator + "panPar.txt"); return output; } /** * @param formId * @param maps * @param pHelper * @return */ private StringBuffer getJspPanSession(int formId, Map> maps, PanelParmHelper pHelper) { StringBuffer sBuffer = new StringBuffer(); sBuffer.append("<%\r//9802设置每一个字段的属性集合,在加载每个字段值的时候调用这个mapAll集合。\r maps = new HashMap>();");// 保存字段Id,即数据库中的列,不让其暴露 sBuffer.append("\r\n mapHids = new HashMap>();\r\n map_pb = null;"); sBuffer.append(" \r\n seStr=\"\";\r\n infoS=null;\r\n mapsetStr=null;"); String infoString = ""; if (maps != null) { for (String yeIdStr : maps.keySet()) { infoString += getPanMapStr(maps, yeIdStr, true) + ";pb#"; } } sBuffer.append("\r\n seStr=\"" + DBHelper.replaceBr(infoString) + "\";"); getMapSession(sBuffer, "maps");// 循环 for (String yeIdStr : pHelper.mapHids.keySet()) { infoString += getPanMapStr(pHelper.mapHids, yeIdStr, false) + ";pb#"; } sBuffer.append("\r\n seStr=\"" + DBHelper.replaceBr(infoString) + "\";"); getMapSession(sBuffer, "mapHids"); sBuffer.append( "\r\n mapAll = new HashMap>(); \r\n mapAll.putAll(maps); \r\n mapAll.putAll(mapHids);"); // if (pHelper.panelAudit.size() > 0) { // 审计功能调用到的属性 // sBuffer.append("\r\n String[] auditFiled@index@=\""+ pHelper.panelAudit.delete(pHelper.panelAudit.length() - 1, pHelper.panelAudit.length()) + "\".split(\";\");"); // sBuffer.append("\r\n String Filed@index@=\"\";"); // sBuffer.append("\r\n for(String Fileds@index@ : auditFiled@index@){"); // sBuffer.append("\r\n Filed@index@=Fileds@index@.substring(0,Fileds@index@.length()-2);\r\n%>"); // sBuffer.append("\r\n");//+='<%=Fileds@index@%>#';\r\n"); // sBuffer.append("\r\n<%}%>"); // pHelper.panelAudit = null; // } else { sBuffer.append("\r\n%>"); // } return sBuffer; } /** * 循环 * * @param sBuffer * @param maps */ private void getMapSession(StringBuffer sBuffer, String maps) { sBuffer.append("\r\n mapsetStr=seStr.split(\";pb#\");"); sBuffer.append("\r\n for(i=0;i();"); sBuffer.append("\r\n map_pb.put(\"FieldID\", infoS[0]);"); sBuffer.append("\r\n map_pb.put(\"type\",infoS[1]);"); sBuffer.append("\r\n map_pb.put(\"format\", infoS[2]);"); sBuffer.append("\r\n map_pb.put(\"downGrid\", infoS[3]);"); sBuffer.append("\r\n map_pb.put(\"datetype\", infoS[4]);"); sBuffer.append("\r\n map_pb.put(\"hidden\",infoS[5]);"); sBuffer.append("\r\n " + maps).append(".put(infoS[0], map_pb);"); sBuffer.append("\r\n }"); sBuffer.append("\r\n }"); } private StringBuffer getPanMapStr(Map> maps, String yeIdStr, boolean hid) { StringBuffer sBuffer = new StringBuffer(); Map mapStr = maps.get(yeIdStr); sBuffer.append(mapStr.get("FieldID")).append(";").append(mapStr.get("type")).append(";") .append(((mapStr.get("format") == null) ? "" : mapStr.get("format"))).append(";") .append(mapStr.get("downGrid")).append(";").append(mapStr.get("datetype")).append(";") .append((hid) ? "1" : "0"); return sBuffer; } /* * 修改后的38类型需要用到的数据采集方法 */ public StringBuffer newgetJspPanContent38(int formId, PanelBean panelBean) throws Exception { panelBean.bian38 = 0; StringBuffer sBuffer = new StringBuffer(); sBuffer.append( "\r\n "); List> selChecks = systemSettingsBo.getStatisDetail(formId); String tdSel = ""; int colNo = 4; Map mapObject = null; int tiI = 0; String theMes = null; /* String modder=null; */ StringBuffer sbFieldset = new StringBuffer(); String fieldCaption = null; String StatisID = null; for (int i = 0; i < selChecks.size(); i++) { mapObject = selChecks.get(i); String a = "0" + i; fieldCaption = mapObject.get("FieldCaption").toString(); StatisID = mapObject.get("StatisID") + ""; theMes = mapObject.get("DetailGroupName") == null ? "" : mapObject.get("DetailGroupName").toString().toLowerCase(); if (theMes.equals(mapObject.get("FieldID").toString().toLowerCase())) { tdSel = getEndTd(tdSel, colNo, tiI, sbFieldset, sBuffer); sbFieldset = new StringBuffer(); sbFieldset.append("\r\n"; tiI = 0; } */ } } tdSel = getEndTd(tdSel, colNo, tiI, sbFieldset, sBuffer); sbFieldset = new StringBuffer(); sBuffer.append("\r\n
").append(fieldCaption) .append(typeControlDao.getSelectAndCheckBoxs(a, StatisID, mapObject.get("FieldID").toString(), mapObject.get("FieldAlias") + "", mapObject.get("StatisType").toString(), mapObject.get("Sequence").toString(), mapObject.get("DisplayWidth").toString(), mapObject.get("displayformat") + "", mapObject.get("displayYN") + "", mapObject.get("isFilterZero") + "", mapObject.get("jionFlag") + "", mapObject.get("jionFlagGroup") + "", mapObject.get("conFlag") + "", mapObject.get("modfvalues") + "", mapObject.get("modfvalues2") + "", fieldCaption, panelBean)) .append(""); tiI = 0; continue; } else { tiI++; tdSel += "\r\n
" + fieldCaption + "" + typeControlDao.getSelectAndCheckBoxs(a, mapObject.get("StatisID") + "", mapObject.get("FieldID").toString(), mapObject.get("FieldAlias") + "", mapObject.get("StatisType").toString(), mapObject.get("Sequence") + "", mapObject.get("DisplayWidth").toString(), mapObject.get("displayformat") + "", mapObject.get("displayYN") + "", mapObject.get("isFilterZero") + "", mapObject.get("jionFlag") + "", mapObject.get("jionFlagGroup") + "", mapObject.get("conFlag") + "", mapObject.get("modfvalues") + "", mapObject.get("modfvalues2") + "", fieldCaption, panelBean) + "
";// 描述 /* * modder= * typeControlDao.getSelectAndCheckBoxs(mapObject.get("StatisID" * )+"",mapObject.get("FieldID").toString(), * mapObject.get("FieldAlias" * )+"",mapObject.get("StatisType").toString * (),mapObject.get("Sequence" * ).toString(),mapObject.get("DisplayWidth" * ).toString(),mapObject * .get("displayformat")+"",mapObject.get("displayYN" * )+"",mapObject * .get("isFilterZero")+"",mapObject.get("jionFlag" * )+"",mapObject * .get("jionFlagGroup")+"",mapObject.get("conFlag" * )+"",mapObject.get("modfvalues")+"", * mapObject.get("modfvalues2")+"", fieldCaption); */ /* * if (tiI == colNo) {// * 这样只能显示4的倍数,如果还有另起一行却多出两个单元格有信息,却没编码显示--现在来实现 tdSel = tdSel + * "
");// 这里供选择信息 sBuffer.append( "\r\n
"); sBuffer.append(""); sBuffer.append(""); sBuffer.append( "");// sBuffer.append("\r\n
");// 这里为提交信息 sBuffer.append( " ");// 这为保存进库信息 sBuffer.append("\r\n"); return sBuffer; } /* * 新增38类型的面板显示方法 fromid筛选出是哪个功能号 */ /* * private StringBuffer getType38(int formId) throws Exception { * * List> list = typei.selecttype(formId); StringBuffer * sBuffer = new StringBuffer(); String tdSel = ""; String tdSels = ""; int * colNo = 4; * * Map mapObject = null; int tiI = 0; * * StringBuffer sbFieldset = new StringBuffer(); String StatisName = null; * String StatisID = null; tdSel=""; String id=null; for (int i = 0; i < * list.size(); i++) { * * mapObject = list.get(i); String usercode = mapObject.get("UserCode") + * ""; if(usercode.equals("")||usercode.equals("")){ StatisName = * mapObject.get("StatisName")+""; StatisID = * mapObject.get("StatisID").toString()+""; if(StatisName.equals("null")){ * StatisName=StatisID; } String id = mapObject.get("FormID") + ""; tiI++; * * tdSel += "\r\n" * + StatisName + * "" * + ""; // 描述 tdSel += * ""; * parent.addTab('自定义条件或标准条件','','','','/general/publicpage/10/index.jsp') * tdSel += * ""; * * * if (tiI == colNo) {// 这样只能显示4的倍数,如果还有另起一行却多出两个单元格有信息,却没编码显示--现在来实现 tdSel * = tdSel + "
"; tiI = 0; * * } * * * if (tiI == colNo) {// 这样只能显示4的倍数,如果还有另起一行却多出两个单元格有信息,却没编码显示--现在来实现 tdSels * += "
" + tdSel + "
"; tiI = 0; tdSel = ""; } } } * int a = list.size() % 4; if (a < 4) { tdSels += "
" + * tdSel + "
"; } tdSel="
"+tdSel+"
"; tdSels = * getEndTd(tdSels, colNo, tiI, sbFieldset, sBuffer); sbFieldset = new * StringBuffer(); sBuffer.append("\r\n");// 这里供选择信息 sBuffer. * append("\r\n
" * ); sBuffer. * append(""); sBuffer. * append("" * ); sBuffer. * append("" * ); sBuffer. * append("" * );// sBuffer.append("\r\n
");// 这里为提交信息 sBuffer. * append(" " * );// 这为保存进库信息 sBuffer.append("\r\n"); * return sBuffer; } */ private String getEndTd(String tdSel, int colNo, int tiI, StringBuffer sbFieldset, StringBuffer sBuffer) { if (tiI < 5 && tiI > 0) { tdSel += " "; } if (sbFieldset.length() > 0) { if (tdSel.trim().length() > 0) { sbFieldset.append("").append(tdSel).append("
"); } sbFieldset.append(""); tdSel = ""; } if (tdSel.toCharArray().length > 0) {// 未分组显示的情况 sbFieldset.append(tdSel); } try { tdSel = getTr38(sBuffer, sbFieldset.toString()); } catch (Exception e) { e.printStackTrace(); } return tdSel; } private String getTr38(StringBuffer sBuffer, String tdSel) throws Exception { sBuffer.append("\r\n"); sBuffer.append(tdSel); sBuffer.append("\r\n"); return ""; } }