fs-danaus
2022-12-01 0e86df3c6a2a641626bb08a737fb97ef522cbd5e
src/com/yc/action/grid/TreeGrid.java
@@ -4,6 +4,7 @@
package com.yc.action.grid;
import com.yc.action.BaseAction;
import com.yc.action.build.DTO;
import com.yc.exception.ApplicationException;
import com.yc.factory.FactoryBean;
import com.yc.multiData.SpObserver;
@@ -24,10 +25,7 @@
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.regex.Pattern;
@@ -800,6 +798,7 @@
    private StringBuilder fillFT(int type, int ft, String sql, TreeGridDTO dto) {
        StringBuilder sb = new StringBuilder();
        SqlRowSet rst = null;
        String enumMenu="";
        try {
            SpObserver.setDBtoInstance("_" + dto.dbid);
            rst = gridService.getFTData(ft);
@@ -833,6 +832,7 @@
                                SpObserver.setDBtoInstance();
                            }
                            if (!set.wasNull()) {
                                enumMenu=getEnumMenu(dto,set,null);
                                while (set.next()) {
                                    id.append("|").append(this.replaceBlank(set.getString(1)));
                                    value.append("|").append(this.replaceBlank(set.getString(2)));
@@ -849,6 +849,7 @@
                }
                if (!flag) {
                    if (!rst.wasNull()) {
                        enumMenu=getEnumMenu(dto,rst,"interValue");
                        while (rst.next()) {
                            id.append("|").append(this.replaceBlank(rst.getString("interValue")));
                            if(type==46){
@@ -866,13 +867,20 @@
                rst = null;
            }
            if (type == 31)
                if (ft != 0)//有表号才会有新增选项
                if (ft != 0) {//有表号才会有新增选项
                    sb.append("  EnumKeys='").append(id.toString() + "|-add-").append("' Enum='").append(value.toString() + "|<<新增>>").append("' ");
                else//当没表号表示不需要新增选项
                } else {//当没表号表示不需要新增选项
                    sb.append("  EnumKeys='").append(id.toString()).append("' Enum='").append(value.toString()).append("' ");
                    if (org.apache.commons.lang3.StringUtils.isNotBlank(id.toString()) && org.apache.commons.lang3.StringUtils.isNotBlank(enumMenu)) {
                        sb.append("EnumMenu=\"").append(enumMenu).append("\" ");
                    }
                }
            else {
                if (type != 35) {
                    sb.append("  EnumKeys='").append(id.toString()).append("' Enum='").append(value.toString()).append("' ");
                    if(org.apache.commons.lang3.StringUtils.isNotBlank(id.toString())&&org.apache.commons.lang3.StringUtils.isNotBlank(enumMenu)) {
                        sb.append("EnumMenu=\"").append(enumMenu).append("\" ");
                    }
                }
            }
            if (type == 35) {//可编辑列表,值与键需要一样
@@ -888,6 +896,29 @@
        return sb;
    }
    /**
     * 生成下拉列表的enumMenu,主要是为了能显示-号的情况
     * @param dto
     * @param rst
     * @return
     */
    private String getEnumMenu(TreeGridDTO dto,SqlRowSet rst,String colName){
        String menu="{Items:[";//{Value:''},{Value:'-',Text:'-'},{Value:'+',Text:'+'}
    StringJoiner joiner=new StringJoiner(",");
    if(dto.isSuppressBlankLineForDropDown==0){
        //有留白列
        joiner.add("{Value:'',Text:''}");
    }
    while (rst.next()) {
        if(colName==null)
            joiner.add("{Value:'"+rst.getString(1)+"',Text:'"+rst.getString(2)+"'}");
        else
            joiner.add("{Value:'"+rst.getString(colName)+"',Text:'"+rst.getString("dictvalue")+"'}");
    }
    rst.beforeFirst();
    return menu+=joiner.toString()+"]}";
}
    private synchronized String setJsName(TreeGridDTO dto) {
        return "grid_" + dto.formID + "_" + dto.winType + ".xml";
    }