From 12560372988b49cc9465e92c32d852db2d0e8612 Mon Sep 17 00:00:00 2001
From: fs-danaus <danaus314@qq.com>
Date: 星期一, 14 十一月 2022 11:42:30 +0800
Subject: [PATCH] 处理保存时脚本顺序,先主表后从表

---
 src/com/yc/utils/Page.java                      |   10 +
 src/com/yc/service/grid/DoExecuteParameter.java |   26 ++--
 src/com/yc/action/grid/GTGrid.java              |  120 ++++++++++-------------
 src/com/yc/action/grid/TreeGrid.java            |    6 +
 src/com/yc/service/grid/GridServiceImpl.java    |   32 ++---
 src/com/yc/utils/FileUtil.java                  |   77 +++++++++++++-
 src/com/yc/action/grid/TreeGridDTO.java         |    1 
 7 files changed, 163 insertions(+), 109 deletions(-)

diff --git a/src/com/yc/action/grid/GTGrid.java b/src/com/yc/action/grid/GTGrid.java
index f9129ce..6288904 100644
--- a/src/com/yc/action/grid/GTGrid.java
+++ b/src/com/yc/action/grid/GTGrid.java
@@ -124,13 +124,14 @@
     /**
      * 淇濆瓨鎵�鏈夋柊澧瀞ql璇彞
      */
-    List<String> insertsql = new ArrayList<String>();// 淇濆瓨鎵�鏈塻ql璇彞(鏂板)
+    List<String> detailSql = new ArrayList<String>();// 淇濆瓨浠庤〃鎵�鏈塻ql璇彞(鏂板)
 
 
     /**
      * 淇濆瓨鎵�鏈変慨鏀箂ql璇彞
      */
     List<String> updatesql = new ArrayList<String>();// 淇濆瓨鎵�鏈塻ql璇彞(淇敼)
+    List<String> headSql = new ArrayList<String>();// 淇濆瓨涓昏〃鎵�鏈塻ql璇彞(淇敼)
 
     /**
      * 淇濆瓨鎵�鏈夊垹闄ql璇彞
@@ -1073,8 +1074,8 @@
                 } finally {
                     SpObserver.setDBtoInstance();
                 }
-                for (int i = 0; i < this.insertsql.size(); i++) {
-                    this.insertsql.add(i, this.insertsql.get(i).replaceAll("#docceod", doc));
+                for (int i = 0; i < this.detailSql.size(); i++) {
+                    this.detailSql.add(i, this.detailSql.get(i).replaceAll("#docceod", doc));
                 }
             }
             //------
@@ -1084,7 +1085,7 @@
             try {
                 SpObserver.setDBtoInstance("_" + dbid);
                 info = gridService.doExecute(new DoExecuteParameter(doc, this.winType,
-                                this.formID, this.insertsql, updatesql, this.procName,
+                                this.formID, this.detailSql, this.headSql, this.procName,
                                 this.saveProc, this.DProc, this.DProcPram, sqlDel, null, null, this.PerProc,
                                 this.PerProcPram, this.isSave, this.docPram, this.status, tableName,
                                 this.FunLinkProc, this.FunLinkPram, json, this.totalProc, this.ExcelProc, this.canelProc, this.revokeProc),
@@ -1406,6 +1407,7 @@
                 gt.setPrimeKey(json.getPrimeKey());
                 gt.setTableType(json.getgType());
                 json.setUserName(request.getSession().getAttribute(SessionKey.USER_NAME)+"");
+                // 鏄庣粏琛ㄧ殑澶勭悊绉诲埌杩欓噷-----
                 this.convert2InsertSQL(tableMetaData, json, table, 1, gt, dbid);
                 this.convert2UpdateSQL(tableMetaData, json, table, 1, gt);
                 this.convert2DeleteSQL(tableMetaData, json, table, 1, gt);
@@ -1479,7 +1481,7 @@
                     // 鏈変簺sql鎵ц灏辨姤閿欍�倄in--2016-4-20
                     // 16:34:17
                     if (!this.zhupan496.equals("")) {
-                        this.insertsql.add(0, this.zhupan496);// 閽堝496鐨勪富琛ㄦ渶鍚庢坊鍔犺繘鍘�
+                        this.detailSql.add(0, this.zhupan496);// 閽堝496鐨勪富琛ㄦ渶鍚庢坊鍔犺繘鍘�
                         this.zhupan496 = "";
                     }
                     // this.insertsql496="";//娓呯┖
@@ -1522,7 +1524,6 @@
                     json.setgType(this.winType + "");
                     json.setTaobao(this.taobaoAPI);
                 }
-                // -----
 
                 try {
                     String doc = "";
@@ -1540,7 +1541,7 @@
                     }
 
                     // ----鍥犱负鏈夊彲鑳介渶瑕佹浛鎹㈠弬鏁拌�屽嚭閿欙紝鍥犱负鎻愪氦鏁版嵁涓虹┖锛屼繚瀛樺悗闇�瑕佹帓闄や繚瀛樻椂鎵ц by 2014-5-19
-                    if (this.insertsql.size() == 0 && this.updatesql.size() == 0 && this.sqlDel.size() == 0) {
+                    if (this.detailSql.size() == 0 && this.updatesql.size() == 0 && this.sqlDel.size() == 0) {
                         this.DProc = "";
                         this.ExcelProc="";
                     }
@@ -1549,7 +1550,7 @@
                     try {
                         SpObserver.setDBtoInstance("_" + dbid);
                         info = gridService.doExecute(
-                                new DoExecuteParameter(doc, this.winType, this.formID, this.insertsql, updatesql,
+                                new DoExecuteParameter(doc, this.winType, this.formID, this.detailSql, this.headSql,
                                         this.procName, this.saveProc, this.DProc, this.DProcPram, sqlDel, null, null,
                                         this.PerProc, this.PerProcPram, this.isSave, this.docPram, this.status,
                                         tableName, this.FunLinkProc, this.FunLinkPram, json, this.totalProc,
@@ -1599,7 +1600,7 @@
                     return null;
 
                 } finally {
-                    this.insertsql.clear();
+                    this.detailSql.clear();
                     this.insert.clear();
                     this.totalNum = 0;
                     this.updatesql.clear();
@@ -1839,7 +1840,7 @@
                         if (isPrimaryPan.equals("1")) {
                             this.zhupan496 = this.wherepan496;
                         } else {
-                            this.insertsql.add(0, this.wherepan496);
+                            this.headSql.add(0, this.wherepan496);
                         }
                         this.wherepan496 = "";
                     }
@@ -2778,10 +2779,10 @@
                         this.type496 = "";
                     } else {
                         if (isPramyPan != null && "1".equalsIgnoreCase(isPramyPan))
-                            this.insertsql.add(0, "insert into " + tableName + keyList.substring(0, keyList.length() - 1) + ")"
+                            this.headSql.add(0, "insert into " + tableName + keyList.substring(0, keyList.length() - 1) + ")"
                                     + value.substring(0, value.length() - 1) + ")");
                         else
-                            this.insertsql.add("insert into " + tableName + keyList.substring(0, keyList.length() - 1) + ")"
+                            this.headSql.add("insert into " + tableName + keyList.substring(0, keyList.length() - 1) + ")"
                                     + value.substring(0, value.length() - 1) + ")");
                     }
                 } else {// 杩欎釜鏄富浠庝笉鏄竴涓鍥炬儏鍐垫坊鍔犲埌瀵瑰簲鐨勮〃閲屻��
@@ -2825,32 +2826,6 @@
         }
         if (list != null) {
             for (HashMap map : list) {
-//                if (this.TbkeyID != null && this.TbkeyID.length() > 0) {
-//                    //娣樺疂鎺ュ彛锛屽厛鍒ゆ柇褰撳墠鏁版嵁搴撴槸鍚﹀凡瀛樺湪锛屽瓨鍦ㄥ垯杞崲鎴愭洿鏂版搷浣滐紝鍚﹀垯鏄柊澧�
-//                    String id = this.TbkeyID.split(",")[1];//涓昏〃鐨勪富閿�
-//                    String sql = "declare @num" + cont + " integer \n select @num" + cont + "=count([" + id + "]) from " + name + " where [" + id + "]=? \n select @num" + cont + " ";
-//
-//                    int cont = 0;
-//                    try {
-//                        SpObserver.setDBtoInstance("_" + dbid);
-//                        cont = gridService.getSimpleJdbcTemplate().queryForObject(sql, new Object[]{map.get(id.toLowerCase())}, Integer.class);
-//                    } finally {
-//                        SpObserver.setDBtoInstance();
-//                    }
-//                    if (cont > 0) {//琛ㄧず宸插瓨鍦紝闇�瑕佽浆鎹㈡垚鏇存柊sql
-//                        GTJson js = new GTJson();
-//                        List<HashMap<String, String>> temp1 = new ArrayList<HashMap<String, String>>();
-//                        temp1.add(map);
-//                        if (fl == 2)
-//                            js.setOtherUpdateds(temp1);
-//                        else
-//                            js.setUpdatedRecords(temp1);
-//                        convert2UpdateSQL(tableMetaData, js, name, fl, g);
-//                        temp1 = null;
-//                        js = null;
-//                        continue;
-//                    }
-//                }
                 StringBuilder key = new StringBuilder();
                 StringBuilder value = new StringBuilder();
                 String rowidCreate = "";
@@ -2911,18 +2886,6 @@
                                 || "".equals(map.get(k)) || ((String) map.get(k)).length() == 0)) {
                             rowidCreate = " exec getXXXX @rowid" + cont + " output; \n";
                             map.put(k, "@rowid" + cont);
-//				if(json.getRefKeyMap().get(g.getFormid()+"")!=null){//鏈夊�艰〃鏄巖owid鐢熸垚鐩存帴鍙栦笂涓�琛�
-//
-//				}else {
-//					rowidCreate = " exec getXXXX @rowid" + cont + " output; \n";
-//					map.put(k, "@rowid" + cont);
-//				}
-//			    //澶勭悊496澶氳〃瀛愬姛鑳藉彿涔嬮棿鏈夊叧鑱旂殑鎯呭喌(rowid) by danaus 2020/1/18 11:31
-////				if(g.getKeyid()!=null&&!"".equals(g.getKeyid())){
-////					//T_180212|RowId;rowid
-////					String refFormid=g.getKeyid().split("|")[0].replace("T_","");//鍙栧緱180212
-////					json.getRefKeyMap().put(refFormid,cont+"");
-////				}
                         }
                         if ("detailrowid".equalsIgnoreCase((String) k)
                                 && (map.get(k) == null || "".equals(map.get(k))
@@ -2963,9 +2926,7 @@
                         value.append(",");
                     }
                 }
-                this.insertsql.add(rowidCreate + detailrowidCreate + " insert into " + tableName + key.substring(0, key.length() - 1) + ")" + value.substring(0, value.length() - 1) + ")");
-                rowidCreate = "";
-                detailrowidCreate = "";
+                this.detailSql.add(rowidCreate + detailrowidCreate + " insert into " + tableName + key.substring(0, key.length() - 1) + ")" + value.substring(0, value.length() - 1) + ")");
             }
         }
         if (add != null && add.size() > 0) {
@@ -3017,7 +2978,7 @@
                         value.append(",");
                     }
                 }
-                this.insertsql.add("insert into _sysAudit" + key.substring(0, key.length() - 1) + ")" + value.substring(0, value.length() - 1) + ")");
+                this.detailSql.add("insert into _sysAudit" + key.substring(0, key.length() - 1) + ")" + value.substring(0, value.length() - 1) + ")");
             }
         }
        // list = null;
@@ -3086,22 +3047,25 @@
                                 continue;
                             }
                         } else {
-                            if ("docversion".equalsIgnoreCase((String) k)) {//鐗堟湰鍙蜂笉鏇存柊
-                                continue;
-                            }
                             key.append("[").append(k);
                             key.append("]=");
-                            parserType(up, key, k, tableMetaData);
+                            if ("docversion".equalsIgnoreCase((String) k)) {//鐗堟湰鍙疯烦杩�
+                                continue;
+                            }else {
+                                parserType(up, key, k, tableMetaData);
+                            }
                         }
                         key.append(",");
                         isNul = true;
                     }
+                    //---澧炲姞鐗堟湰鍙风殑鏇存柊
+                    //key.append(" DocVersion=isnull(DocVersion,0)+1,");
                 }
                 if (!isNul) continue;// 璺冲嚭锛屼笉鐢ㄥ啓杩涘幓锛屽洜涓轰笉瀛樺湪闇�瑕佹洿鏂扮殑瀛楁
                 String versionStr = "";
                 if (!isVersion && vs != null && vs.size() > 0 && vs.containsKey("docversion")) {//瀛樺湪鏈夌増鏈彿,鐢ㄦ潵澶勭悊骞跺彂闂
 
-                    versionStr = " and isnull(docversion,0)=isnull(" + (("null".equals(vs.get("docversion")) || org.apache.commons.lang3.StringUtils.isBlank(vs.get("docversion"))) ? "0" : vs.get("docversion")) + ",0) \n" +
+                    versionStr = " and isnull(DocVersion,0)=isnull(" + (("null".equals(vs.get("docversion")) || org.apache.commons.lang3.StringUtils.isBlank(vs.get("docversion"))) ? "0" : vs.get("docversion")) + ",0) \n" +
                             " if @@rowcount=0  \n " +
                             " begin \n" +
                             "  raiserror('褰撳墠鍗曟嵁鍐呭宸插彂鐢熷彉鍖栵紝璇峰埛鏂伴〉闈㈢劧鍚庨噸璇曟鎿嶄綔',16,1) \n" +
@@ -3147,7 +3111,7 @@
                 //閫氳繃鐗堟湰鍙峰垽鏂暟鎹槸鍚﹀凡鏇存柊锛岀増鏈彿涓嶄竴鑷村垯鏄剧ず鎻愮ず淇℃伅锛屽埛鏂伴〉闈㈠啀鎻愪氦  by danaus 2022/3/11 11:11
                 String updateSql = "update " + tableName + (key.lastIndexOf(",") == (key.length() - 1) ? key.substring(0, key.length() - 1) : key.toString()) + value.toString() + versionStr;
                 //澧炲姞澶勭悊鍥犱负灏戜簡涓婚敭閫犳垚鏇存柊澶氭潯璁板綍鐨勬儏鍐�  by danaus 2020/4/24 15:26
-                this.updatesql.add(updateSql +
+                this.detailSql.add(updateSql +
                         "\n if @@rowcount > 1 \n" +
                         "  begin \n" +
                         "     raiserror('鐢变簬琛�/瑙嗗浘缂哄皯姝g‘鐨勪富閿紙Primary Key锛夛紝灏嗗鑷村鏉¤褰曡鏇存柊锛坲pdate锛変负鐩稿悓鐨勫�硷紝瑙e喅鍔炴硶锛氫负琛�/瑙嗗浘銆�" + tableName + "銆戣缃纭殑涓婚敭锛圥rimary Key)',16,1)\n" +
@@ -3342,7 +3306,7 @@
 
 
                 }
-                this.updatesql.add(sb.toString());
+                this.detailSql.add(sb.toString());
             }
 
             if (update1.size() == 0) {//娌℃暟鎹紝琛ㄧず闇�瑕佹妸涔嬪墠鐨勪繚瀛樻椂鎵ц杩囩▼娓呯┖锛岄拡瀵�9646鎵嶉渶瑕佽繖鏍�
@@ -3548,7 +3512,7 @@
 
 
                 }
-                this.updatesql.add(sb.toString());
+                this.detailSql.add(sb.toString());
             }
 
             if (update1.size() == 0) {//娌℃暟鎹紝琛ㄧず闇�瑕佹妸涔嬪墠鐨勪繚瀛樻椂鎵ц杩囩▼娓呯┖锛岄拡瀵�9646鎵嶉渶瑕佽繖鏍�
@@ -3723,7 +3687,6 @@
                     isPass = tableMetaDatas.containsKey(k + "");// 鍘婚櫎璁$畻鍒�
                     isPass = checkExpressionColumn(up, k, isPass);// 鏇存柊鏃舵湁鏉冮檺鎺у埗鐨勫瓧娈典笉闇�瑕佹洿鏂�
                     if (isPass) {
-
                         key.append("[").append(k);
                         key.append("]=");
                         parserType(up, key, k, tableMetaDatas);
@@ -3743,11 +3706,13 @@
                     key.append("]='").append(local.get().get("@hrname")).append("',");
 
                 }
-
+                //澧炲姞鐗堟湰鍙风殑鏇存柊
+               // key.append("[").append("DocVersion");
+                //key.append("]=").append("isnull(DocVersion,0)+1 ");
                 String updateSql = " update " + tableName + key.substring(0, key.length() - 1) + value.toString();
                 //閫氳繃鐗堟湰鍙峰垽鏂暟鎹槸鍚﹀凡鏇存柊锛岀増鏈彿涓嶄竴鑷村垯鏄剧ず鎻愮ず淇℃伅锛屽埛鏂伴〉闈㈠啀鎻愪氦  by danaus 2022/3/11 11:11
                 if (up.containsKey("docversion")) {
-                    updateSql += " and isnull(docversion,0)=isnull(" + (("null".equals(up.get("docversion")) || org.apache.commons.lang3.StringUtils.isBlank(up.get("docversion"))) ? "0" : up.get("docversion")) + ",0) \n" +
+                    updateSql += " and isnull(DocVersion,0)=isnull(" + (("null".equals(up.get("docversion")) || org.apache.commons.lang3.StringUtils.isBlank(up.get("docversion"))) ? "0" : up.get("docversion")) + ",0) \n" +
                             " if @@rowcount=0  \n " +
                             " begin \n" +
                             "  raiserror('褰撳墠鍗曟嵁鍐呭宸插彂鐢熷彉鍖栵紝璇峰埛鏂伴〉闈㈢劧鍚庨噸璇曟鎿嶄綔',16,1) \n" +
@@ -3756,9 +3721,9 @@
                 }
                 if (!this.type496.equals("update")) {
                     if (isPramyPan != null && "1".equalsIgnoreCase(isPramyPan)) {
-                        this.updatesql.add(0, updateSql);
+                        this.headSql.add(0, updateSql);
                     }else {
-                        this.updatesql.add(updateSql);
+                        this.headSql.add(updateSql);
                     }
                 } else {// 496绫诲瀷鐨剈pdate璋冪敤
                     //---澧炲姞澶勭悊value鐨勫�兼病鏈墂here鏉′欢锛屽彧鏄痸alue=where 1=1鐨勬儏鍐碉紝浼氬鑷存洿鏂版墍鏈夋暟鎹紝濡傛灉鍑虹幇杩欑鎯呭喌锛岄渶瑕佹姏鍑洪敊璇�
@@ -4752,9 +4717,24 @@
                 String expanded = getExpanded(request.getSession().getAttribute(SessionKey.DATA_BASE_ID) + "");
                 page.setExpanded(expanded);
                 boolean hasParentNode=false;
+                //鍙栧垎椤典俊鎭紝缁勮鏁版嵁杈撳嚭
+                //--鍙栨�婚〉鏁�=鏍戠殑涓昏妭鐐规暟
+                List<Map<String, Object>> data=page.getData();
+                List<Map<String, Object>> parentData = data.stream().filter(x -> org.apache.commons.lang3.StringUtils.isBlank(x.get("parentrowid") + "")).collect(Collectors.toList());
 
-                for (int i = 0; i < page.getData().size(); i++) {
-                    Map<String, Object> map = (Map<String, Object>) page.getData().get(i);
+                if(parentData!=null&&parentData.size()>0) {
+
+                   int totalSize= parentData.size()%page.getOrgPageSize()==0?parentData.size() /page.getOrgPageSize():parentData.size() /page.getOrgPageSize()+1;
+                    page.setTotalPageNum(totalSize);//閲嶆柊璁$畻鎬婚〉鏁�
+                    page.setPageSize(page.getOrgPageSize());
+                    int fromIndex=page.getPos()==0?0:(page.getPos()*page.getPageSize());//寮�濮�
+                    int toIndex=page.getPos()==0?(page.getPageSize()-1):((page.getPos()+1)*page.getPageSize()-1);//缁撴潫
+                    if(toIndex>=parentData.size()) toIndex=parentData.size()-1;
+                    data=parentData.subList(fromIndex,toIndex);//鍙栨寚瀹氳寖鍥寸殑鏁版嵁
+                }
+                //------
+                for (int i = 0; i < data.size(); i++) {
+                    Map<String, Object> map = data.get(i);
                     String pid = (String) map.get("parentrowid");//涓婄骇鑺傜偣ID锛屼粠杩欓噷寮�濮嬬粍瑁�
                     String rowid = (String) map.get("rowid");
                     if (pid == null || "".equalsIgnoreCase(pid)) {//鍙栨瘡棰楁爲鐨勭埗鑺傜偣浣滀负绗竴涓妭鐐硅繘琛岀粍瑁�
@@ -6150,8 +6130,10 @@
         try {
             if (-1 == page.getFlag()) page.setPageSize(MAX_RECORD);
             if (this.isShowTree(dbid) && -1 != page.getFlag()) {
+                page.setOrgPageSize(page.getPageSize());
                 page.setPageSize(MAX_RECORD);
                 page.setFlag(-20);//琛ㄧず涓洪渶瑕佹樉绀烘爲褰紝鎵�浠ラ渶瑕佹妸鎵�鏈夋暟鎹彇鍑烘潵锛屼笉鍒嗛〉
+                page.setPageNum(1);
             }
             try {
                 SpObserver.setDBtoInstance("_" + dbid);
diff --git a/src/com/yc/action/grid/TreeGrid.java b/src/com/yc/action/grid/TreeGrid.java
index 885e511..176fd61 100644
--- a/src/com/yc/action/grid/TreeGrid.java
+++ b/src/com/yc/action/grid/TreeGrid.java
@@ -812,8 +812,11 @@
             StringBuilder id = new StringBuilder();
             StringBuilder value = new StringBuilder();
             if (type != 30 && type != 32) {
+            if(dto.isSuppressBlankLineForDropDown==0) {
+                //鍙湁涓�0鎵嶉渶瑕佸鍔犵┖鐧藉垪
                 id.append("| ");
                 value.append("| ");
+            }
             }
             try {
                 if (sql != null && sql != "" && sql.length() > 0) {//鏈塻ql鍙傛暟
@@ -1174,6 +1177,7 @@
                 boolean cpltrow = GridUtils.prossRowSetDataType_Boolean(map, "copyfromlastrow");//鎻掑叆鏃朵粠涓婅澶嶅埗
                 String cs = GridUtils.prossRowSetDataType_String(map, "stylecss");//css鏍峰紡
                 String tips = GridUtils.prossRowSetDataType_String(map, "TipsExpression");
+                int isSuppressBlankLineForDropDown = GridUtils.prossRowSetDataType_Int(map, "isSuppressBlankLineForDropDown");
                 valExp.append((ValueExp != null && !"".equalsIgnoreCase(ValueExp)) ? id + "|" + this.replaceBlank(ValueExp) + ";" : "");
                 cssExp.append((cs != null && !"".equalsIgnoreCase(cs)) ? id + "|" + this.replaceBlank(cs.replaceAll(";", "~")) + ";" : "");
                 tipsExp.append((tips != null && !"".equalsIgnoreCase(tips)) ? id + "|" + this.replaceBlank(tips.replaceAll(";", "~")) + ";" : "");
@@ -1360,6 +1364,7 @@
                     sb.append(" showType='" + (type == 9 ? 0 : 2) + "' ");//浠ュ悗澧炲姞鏍肩嚎鏀寔澶氶檮浠舵樉绀洪渶瑕佺敤鍒帮紝鍖哄埆鍑哄埌鏃跺簲璇ュ彇鍝竴涓檮浠惰〃(_sys_Attachment9,_sys_Attachment)鐨勬暟鎹�
                 }
                 if (type == 2 || type == 35 || type == 31 || type == 43 || type == 30 || type == 32|| type == 46) {
+                    dto.isSuppressBlankLineForDropDown=isSuppressBlankLineForDropDown;
                     if(!(type==46&&ft==0&&org.apache.commons.lang3.StringUtils.isBlank(sqlScript))){
                         //46鎺т欢娌℃湁2锛�31鐨勮缃�夐」鍒欎笉鐢ㄥ湪杩欓噷鐢熸垚涓嬫媺鍒楄〃
                         sb = fillFT(type, ft, sqlScript, dto);//2绫诲瀷
@@ -1400,6 +1405,7 @@
                             .append("' wtype='").append(wiType)
                             .append("' oneRec='").append(oneRec ? 1 : 0)
                             .append("' onlyOne='").append(onlyOne ? 1 : 0)
+                            .append("' isSuppressBlankLineForDropDown='").append(isSuppressBlankLineForDropDown)
                             .append("' sqlWhere=\"").append(sqlWhere)// by danaus 2019/12/20 15:28
                             .append("\" path='").append(path)
                             .append("' scanCodeField='").append(scanCodeField)
diff --git a/src/com/yc/action/grid/TreeGridDTO.java b/src/com/yc/action/grid/TreeGridDTO.java
index 14dd16e..c58d76e 100644
--- a/src/com/yc/action/grid/TreeGridDTO.java
+++ b/src/com/yc/action/grid/TreeGridDTO.java
@@ -98,4 +98,5 @@
 	public int isExchangeDataWithHost=0;//鍗曟嵁鍔熻兘鍙�
 	public String formTabName="";//澶氳〃瀛愬姛鑳藉彿椤靛崱鍚嶇О
     public int postDocStatus;//纭鍚庣姸鎬佸��
+	public  int isSuppressBlankLineForDropDown;//鍙栨秷涓嬫媺鍒楄〃鎺т欢绌虹櫧鍒�
 }
diff --git a/src/com/yc/service/grid/DoExecuteParameter.java b/src/com/yc/service/grid/DoExecuteParameter.java
index 9def722..23c99f9 100644
--- a/src/com/yc/service/grid/DoExecuteParameter.java
+++ b/src/com/yc/service/grid/DoExecuteParameter.java
@@ -8,8 +8,8 @@
 	private String doccode;
 	private int type;
 	private int formid;
-	private  List<String> insertsql;
-	private List<String> updatesql;
+	private  List<String> detailSql;
+	private List<String> headSql;
 	private List<String> proc1;
 	private List<String> proc2;
 	private String str;
@@ -104,7 +104,7 @@
 	}
 
 	public DoExecuteParameter(String doccode, int type, int formid,
-			List<String> insert, List<String> updatesql, List<String> proc1,
+			List<String> detailSql, List<String> headSql, List<String> proc1,
 			List<String> proc2, String str, String parm, List<String> del,
 			List<String> delproc1, List<String> delproc2, String oaButtonProcName, String oaButtonProcParms,
 			boolean fl, String docParm, String status,String tableName,
@@ -112,8 +112,8 @@
 		this.doccode = doccode;
 		this.type = type;
 		this.formid = formid;
-		this.insertsql = insert;
-		this.updatesql = updatesql;
+		this.detailSql = detailSql;
+		this.headSql = headSql;
 		this.proc1 = proc1;
 		this.proc2 = proc2;
 		this.str = str;
@@ -166,20 +166,20 @@
 	
 	
 
-	public List<String> getInsertsql() {
-	    return insertsql;
+	public List<String> getDetailSql() {
+	    return detailSql;
 	}
 
-	public void setInsertsql(List<String> insertsql) {
-	    this.insertsql = insertsql;
+	public void setDetailSql(List<String> detailSql) {
+	    this.detailSql = detailSql;
 	}
 
-	public List<String> getUpdatesql() {
-		return updatesql;
+	public List<String> getHeadSql() {
+		return headSql;
 	}
 
-	public void setUpdatesql(List<String> updatesql) {
-		this.updatesql = updatesql;
+	public void setHeadSql(List<String> headSql) {
+		this.headSql = headSql;
 	}
 
 	public List<String> getProc1() {
diff --git a/src/com/yc/service/grid/GridServiceImpl.java b/src/com/yc/service/grid/GridServiceImpl.java
index 4021f2e..9fc5c58 100644
--- a/src/com/yc/service/grid/GridServiceImpl.java
+++ b/src/com/yc/service/grid/GridServiceImpl.java
@@ -502,40 +502,36 @@
             return info;
 
         }
-        int in = parameterObject.getInsertsql().size();
-        int up = parameterObject.getUpdatesql().size();
+
+        int in = parameterObject.getDetailSql().size();
+        int up = parameterObject.getHeadSql().size();
         int de = parameterObject.getDel().size();
         int to = parameterObject.getTotalProc().size();
 
         String[] list = new String[in + up + de];
-        String[] toBeStored = parameterObject.getInsertsql().toArray(new String[in]);
-        String[] toBeStored1 = parameterObject.getUpdatesql().toArray(new String[up]);
+        String[] toBeStored = parameterObject.getHeadSql().toArray(new String[in]);
+        String[] toBeStored1 = parameterObject.getDetailSql().toArray(new String[up]);
         String[] toBeStored_p = parameterObject.getTotalProc().toArray(new String[to]);
         String[] toBeStored2 = parameterObject.getDel().toArray(new String[de]);
-        // 1-------鏂板鏁版嵁
-        if (in > 0) {
-            System.arraycopy(toBeStored, 0, list, 0, in);
+        // 1-------琛ㄥご鏁版嵁
+        if (up > 0) {
+            System.arraycopy(toBeStored, 0, list, 0, up);
 
         }
-        // 2----------鏇存柊鏁版嵁
-        if (up > 0) {
-            System.arraycopy(toBeStored1, 0, list, in, up);
+        // 2----------琛ㄤ綋鏁版嵁
+        if (in > 0) {
+            System.arraycopy(toBeStored1, 0, list, up, in);
         }
         // 3----------鍒犻櫎鏁版嵁
         if (de > 0) {
-            System.arraycopy(toBeStored2, 0, list, in + up, de);
+            System.arraycopy(toBeStored2, 0, list, up + in, de);
         }
-        int[] count = null;
-        // if(list.length>0)
-        // this.jdbcTemplate.batchUpdate(list);//鎵归噺鏇存柊鏁版嵁
-        //
         // 鎻愪氦鏁版嵁
-        for (String str : list)
+        for (String str : list) {
             sql.append(str).append(" \n");
-
+        }
         // 鏈夊垹闄ゅ浘鐗囩殑鍦ㄨ繖閲屾墽琛�
         if (picList.size() > 0) {
-
             for (PicEntity picEntity : picList) {
                 String uuid = null;
                 String[] splt = null;
diff --git a/src/com/yc/utils/FileUtil.java b/src/com/yc/utils/FileUtil.java
index c305400..fe49a71 100644
--- a/src/com/yc/utils/FileUtil.java
+++ b/src/com/yc/utils/FileUtil.java
@@ -1,13 +1,6 @@
 package com.yc.utils;
 
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
+import java.io.*;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.regex.Pattern;
@@ -244,4 +237,72 @@
 		}
 		return null;
 	}
+	/**
+	 *
+	 * @param path
+	 * @return String
+	 * @description 灏嗘枃浠惰浆base64瀛楃涓�
+	 * @date 2018骞�3鏈�20鏃�
+	 * @author changyl
+	 * File杞垚缂栫爜鎴怋ASE64
+	 */
+
+	public static  String fileToBase64(String path) {
+		String base64 = null;
+		InputStream in = null;
+		try {
+			File file = new File(path);
+			in = new FileInputStream(file);
+			byte[] bytes=new byte[(int)file.length()];
+			in.read(bytes);
+			base64 = java.util.Base64.getEncoder().encodeToString(bytes);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			if (in != null) {
+				try {
+					in.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return base64;
+	}
+	//BASE64瑙g爜鎴怓ile鏂囦欢
+	public static void base64ToFile(String destPath,String base64, String fileName) {
+		File file = null;
+		//鍒涘缓鏂囦欢鐩綍
+		String filePath=destPath;
+		File  dir=new File(filePath);
+		if (!dir.exists() && !dir.isDirectory()) {
+			dir.mkdirs();
+		}
+		BufferedOutputStream bos = null;
+		java.io.FileOutputStream fos = null;
+		try {
+			byte[] bytes = java.util.Base64.getDecoder().decode(base64);
+			file=new File(filePath+"/"+fileName);
+			fos = new java.io.FileOutputStream(file);
+			bos = new BufferedOutputStream(fos);
+			bos.write(bytes);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			if (bos != null) {
+				try {
+					bos.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			if (fos != null) {
+				try {
+					fos.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
 }
diff --git a/src/com/yc/utils/Page.java b/src/com/yc/utils/Page.java
index 21876be..b9f0cfbf 100644
--- a/src/com/yc/utils/Page.java
+++ b/src/com/yc/utils/Page.java
@@ -61,7 +61,7 @@
     private Map tbColsMap;
     private String formName;
     private Map<String, String> attachmentType;
-
+private  int orgPageSize;
     public String getFormName() {
         return formName;
     }
@@ -495,4 +495,12 @@
     public Map<String, String> getAttachmentType() {
         return attachmentType;
     }
+
+    public void setOrgPageSize(int orgPageSize) {
+        this.orgPageSize = orgPageSize;
+    }
+
+    public int getOrgPageSize() {
+        return orgPageSize;
+    }
 }

--
Gitblit v1.8.0