From 31400fffd7b31397d6d8882d3927e7b870924233 Mon Sep 17 00:00:00 2001
From: fs-danaus <danaus314@qq.com>
Date: 星期四, 14 九月 2023 11:16:52 +0800
Subject: [PATCH] 优化excel导出图片及增加下载原图功能

---
 src/com/yc/action/grid/GTGrid.java                             |   31 ++--
 src/com/yc/action/grid/TreeGrid.java                           |    4 
 src/com/yc/open/qiyunfang/service/QiyunfangImpl.java           |   95 ++++++++-------
 src/com/yc/open/jinwu/service/JinWuImpl.java                   |    2 
 src/com/yc/open/qiyunfang/controller/CashFlowDetailsEntry.java |    2 
 src/com/yc/open/controller/EchoController.java                 |  112 ++++++++++++++++++
 src/com/yc/action/BaseAction.java                              |   14 +
 src/com/yc/action/grid/PoiExcelWriter.java                     |   84 +++++++++----
 src/com/yc/log/ErrorLoggerBean.java                            |    4 
 src/com/yc/open/qiyunfang/controller/T150102Entry.java         |    7 +
 src/com/yc/utils/JsonUtil.java                                 |    2 
 11 files changed, 252 insertions(+), 105 deletions(-)

diff --git a/src/com/yc/action/BaseAction.java b/src/com/yc/action/BaseAction.java
index 4d73d13..b28511c 100644
--- a/src/com/yc/action/BaseAction.java
+++ b/src/com/yc/action/BaseAction.java
@@ -542,7 +542,8 @@
 	}
     @SuppressWarnings("unchecked")
 	protected void print2Excel(HttpServletRequest request,HttpServletResponse resp, Page page, Object object,int formid,String type)  {
-  	    try {
+		SXSSFWorkbook wb=null;
+		try {
   	        //璇诲彇褰撳墠鍔熻兘鍙峰摢浜涘瓧娈垫槸闇�瑕佸鍑虹殑
   	        String s=FileUtil.readFile(request.getServletContext().getRealPath("/")+request.getSession().getAttribute(SessionKey.PAGE_PATH)+File.separator+formid+File.separator+type+File.separator+"data");//
   	        if(request.getSession().getAttribute(SessionKey.USERCODE)==null){
@@ -597,7 +598,7 @@
   	        Map m=poi.writeExcel( dbid,str[0], page, name, filed,panel_name, panel_tfiled,
   		    map!=null?(List<?>)map.get("plist"):null,str[0],local,
   		    map!=null?(((String)map.get("desc")).split("-").length==5?this.replaceBlank(((String)map.get("desc")).split("-")[4]):""):"",hostUrl);
-  	        SXSSFWorkbook wb=(SXSSFWorkbook)m.get("wb");
+  	         wb=(SXSSFWorkbook)m.get("wb");
   	        String fileName=m.get("title")+"";
   	        if(wb!=null){
   	        	File file1=new File(request.getServletContext().getRealPath("/")+"excel"+File.separator+dbid+File.separator+formid+File.separator+type);
@@ -633,14 +634,19 @@
 				excelRecords(formid,type,map,file,request,page);//瀵煎嚭鏁版嵁瀹¤璁板綍鎵ц鏂规硶
                 wb.dispose();
   	        }
-  	        page = null;  	 
   	    }catch (ParseException e) {
 		    e.printStackTrace();
 		    this.printJson(resp, "error;"+e.getMessage());   
   	    } catch (Exception e) {
   	        e.printStackTrace();
   	        this.printJson(resp, "error;"+e.getMessage());
-  	    }
+  	    }finally {
+			try {
+				wb.close();
+			} catch (IOException e) {
+				throw new RuntimeException(e);
+			}
+		}
     }
 
     /**
diff --git a/src/com/yc/action/grid/GTGrid.java b/src/com/yc/action/grid/GTGrid.java
index bef5545..fe16c62 100644
--- a/src/com/yc/action/grid/GTGrid.java
+++ b/src/com/yc/action/grid/GTGrid.java
@@ -4420,31 +4420,28 @@
         Page page = new Page();
         try {
             page.setTableName(json.getFunName());
-            if (request.getHeader("x-app-type") != null && !"".equalsIgnoreCase(json.getFields()))
+            //缁熶竴鍙栨寚瀹氱殑瀛楁杈撳嚭锛屼笉鍐嶅尯鍒�
+           /* if (request.getHeader("x-app-type") != null && !"".equalsIgnoreCase(json.getFields()))
                 page.setSql(json.getFields().replaceAll(";", ","));
             else
-                page.setSql("*");// 鍙栨墍鏈�
+                page.setSql("*");// 鍙栨墍鏈�*/
+            page.setSql(json.getFields().replaceAll(";", ","));
+
             page.setWhere(json.getParm());
             page.setParms(json.getFields());
             SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
             gridService.loadAllByFunc_for(page);// 绗簩姝ワ紝璋冪敤鐩稿搴斾笟鍔$被鍙栧緱鏁版嵁
-            String data = JsonUtil.list2json(page.getData());
-            if (request.getHeader("x-app-type") != null) {
-                Gson gsons = new GsonBuilder().setDateFormat(
-                        "yyyy-MM-dd").disableHtmlEscaping().create();
-                this.print(resp, gsons.toJson(page.getData()));
-            } else
-                this.printJson(resp, data);// 绗笁姝ワ紝閫氳繃Response鍚戦〉闈㈣浆鎹负json鏍煎紡杈撳嚭Page绫绘暟鎹�
+            Gson gsons = new GsonBuilder().setDateFormat(
+                    "yyyy-MM-dd").disableHtmlEscaping().serializeNulls().create();
+            this.print(resp, gsons.toJson(page.getData()));
         } catch (DataAccessException e) {
-            if (request.getHeader("x-app-type") != null && "ionic".equals(request.getHeader("x-app-type"))) {
-                resp.setStatus(500);
-                this.printJson(resp, "{\"error\":\"" + this.getErrorMsg(e) + "\"}");
-            } else
+           // resp.setStatus(500);
+            this.printJson(resp, "{\"error\":\"" + this.getErrorMsg(e) + "\"}");
+            /*if (request.getHeader("x-app-type") != null && "ionic".equals(request.getHeader("x-app-type"))) {
+            } else {
                 this.printJson(resp, "error;" + this.getErrorMsg(e));
-        } finally {
-            gson = null;
-            json = null;
-            page = null;
+            }*/
+        }finally {
             SpObserver.setDBtoInstance();
         }
 
diff --git a/src/com/yc/action/grid/PoiExcelWriter.java b/src/com/yc/action/grid/PoiExcelWriter.java
index c35e737..075d813 100644
--- a/src/com/yc/action/grid/PoiExcelWriter.java
+++ b/src/com/yc/action/grid/PoiExcelWriter.java
@@ -7,6 +7,7 @@
 import com.yc.service.BaseService;
 import com.yc.utils.Page;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.common.usermodel.HyperlinkType;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.streaming.SXSSFCell;
 import org.apache.poi.xssf.streaming.SXSSFRow;
@@ -14,6 +15,7 @@
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFDataFormat;
 import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.LobRetrievalFailureException;
 import org.springframework.jdbc.core.support.AbstractLobStreamingResultSetExtractor;
 
 import java.io.ByteArrayOutputStream;
@@ -52,8 +54,8 @@
         if (datas == null) {
             throw new IllegalArgumentException("鍐檈xcel娴侀渶瑕丩ist鍙傛暟!");
         }
+        SXSSFWorkbook wb = new SXSSFWorkbook(500);
         try {
-            SXSSFWorkbook wb = new SXSSFWorkbook(500);
             SXSSFSheet ws = wb.createSheet("sheet1");
             formatd = (XSSFDataFormat) wb.createDataFormat();
             int rowNum = 0;    //瑕佸啓鐨勮
@@ -186,6 +188,11 @@
             //-----------
 
         } catch (Exception e) {
+            try {
+                wb.close();
+            } catch (IOException ex) {
+                throw new RuntimeException(ex);
+            }
             throw new ApplicationException(e.getMessage());
 
         }
@@ -230,28 +237,34 @@
                     fileds+=",FileType, null as  pic";//SmallPicture,OriginalPicture
                 }
                 List<AttendEntity> maps=new ArrayList<>();
-                baseService.getSimpleJdbcTemplate().query("set nocount on\n " +
-                        "  select  cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid" + fileds + " from _sys_Attachment9 where unid in(" + joiner.toString() + ") \n" +
-                        "  \nif @@ROWCOUNT=0 begin\n" +
-                        " select  cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid" + fileds + " from _sys_Attachment where unid in(" + joiner.toString() + ") end\n",
+                baseService.getSimpleJdbcTemplate().query(" declare @table table(unid varchar(150),FileType varchar(10),pic image)\n" +
+                                " insert into @table select cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid" + fileds + " from _sys_Attachment9\n" +
+                                " where unid in("+joiner.toString()+")\n" +
+                                " if @@ROWCOUNT=0 \n" +
+                                " insert into @table select cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid" + fileds + " from _sys_Attachment\n" +
+                                " where unid in("+joiner.toString()+")\n" +
+                                " select * from @table",
                 new AbstractLobStreamingResultSetExtractor<List<AttendEntity>>() {
                     @Override
+                    protected void handleNoRowFound() throws LobRetrievalFailureException {
+                            //鏈夊彲鑳借繑鍥炵┖闆嗗悎锛屽湪杩欓噷涓嶉渶瑕佸鐞� by danaus 2023-09-09 14:07
+                    }
+                    @Override
                     protected void streamData(ResultSet resultSet) throws SQLException, IOException, DataAccessException {
-                        do{
-                            AttendEntity attendEntity = new AttendEntity();
-                            attendEntity.setFileType(resultSet.getString("FileType"));
-                            attendEntity.setUnid(resultSet.getString("unid"));
-                            attendEntity.setData(resultSet.getBytes("pic"));
-                            maps.add(attendEntity);
-                        }while (resultSet.next());
+                        if(!resultSet.wasNull()) {
+                            do {
+                                AttendEntity attendEntity = new AttendEntity();
+                                attendEntity.setFileType(resultSet.getString("FileType"));
+                                attendEntity.setUnid(resultSet.getString("unid"));
+                                attendEntity.setData(resultSet.getBytes("pic"));
+                                maps.add(attendEntity);
+                            } while (resultSet.next());
+                        }
                     }
                 });
 
                 if (maps != null && maps.size() > 0) {
                     for (AttendEntity attendEntity: maps) {
-                        //AttendEntity attendEntity=new AttendEntity();
-                       // attendEntity.setFileType(map.get( "FileType")+"");
-                        //attendEntity.setData((byte[]) map.get("file"));
                         fileType.put(attendEntity.getUnid(), attendEntity);
                     }
                 }
@@ -528,8 +541,12 @@
         SXSSFRow rows = ws.getRow(rowindex);
         if (rows == null)
             rows = ws.createRow(rowindex);
-        SXSSFCell cell = rows.createCell(cellindex);
-        cell.setCellValue(titles);
+        SXSSFCell cell = rows.getCell(cellindex);
+        if(cell==null)
+             cell = rows.createCell(cellindex);
+        if(StringUtils.isNotBlank(titles)) {
+            cell.setCellValue(titles);
+        }
         if (cellStyle != null)
             cell.setCellStyle(cellStyle);
 
@@ -584,29 +601,24 @@
                 String[] strArray = uuid.split(";");
 
                 for (int i = 1; i < strArray.length; i++) {
-                   /* String txt = strArray[0] + ";" + strArray[i];//鍥剧墖鐩存帴浠庢暟鎹簱杩斿洖鍙栧緱锛屼笉閫氳繃姣忎釜浠庣綉缁滆鍙栧洖鏉� by danaus 2023-09-08 11:50
+                    String txt = strArray[0] + ";" + strArray[i];
                     //|/getImage.do?type=0&uuid=19D7C74C-FA55-4027-ADCB-BDDEBD3C42C5;15522;png|48|48|
-                    String imgUrl = null;
-                    try {
+                      String imgUrl = null;
                         if (txt.contains("|/getImage.do")) {
                             String[] uuids = txt.split("\\|");
                             java.util.regex.Matcher propsMatcher = p.matcher(uuids[1]);
                             while (propsMatcher.find()) {
                                 txt = propsMatcher.group().replace("uuid=", "");
                             }
-                            txt = txt.replace(";", "@p@_80x80").replace(";", ".");
+                            txt = txt.replace(";", "@p@").replace(";", ".");
                         } else {
                             //txt = txt.replace(";", "@p@") + ".jpg";
                             String fileExt="."+fileType.get(txt).getFileType();
-                            txt=txt.replace(";", "@p@_80x80")+fileExt ;
+                            txt=txt.replace(";", "@p@")+fileExt ;
                         }
 
                         imgUrl = imageHostUrl + "/uploads/attachment/" + dbid + "/" + formid + "/" + txt;
-                        imgByte = getImage(imgUrl);
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                        throw new ApplicationException(e.getMessage());
-                    }*/
+
                     if (imgByte != null && imgByte.length > 0) {
                         SXSSFRow row = ws.getRow(rowNum);
                         if (row == null)
@@ -636,13 +648,27 @@
                         double a = standardWidth / cellWidth;
                         double b = standardHeight / cellHeight;
 
-                        Picture picture = drawing.createPicture(anchor, addPicture);
+                        Picture picture =drawing.createPicture(anchor, addPicture);
                         if (strArray.length > 2) {
                             picture.resize(0.1);
                         } else {
                             picture.resize(a, b);
                         }
-
+                        // 鍦ㄥ崟鍏冩牸涓缃秴閾炬帴
+                        Cell hyperLinkCell = row.createCell(j+1);
+                        hyperLinkCell.setCellValue("鎵撳紑");
+                        Hyperlink hyperlink = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
+                        hyperlink.setAddress(imgUrl); // 鎸囧畾鐨刄RL閾炬帴
+                        //澧炲姞瓒呴摼鎺ユ墦寮�鍘熷浘鎴栧叾浠栦笉鏄浘鐗囩殑闄勪欢
+                        // 鍒涘缓瓒呴摼鎺ュ苟璁剧疆璧峰浣嶇疆鍜� URL
+                        hyperLinkCell.setHyperlink(hyperlink);
+                        // 鍒涘缓涓�涓牱寮忔潵鎸囩ず瓒呴摼鎺�
+                        CellStyle hlinkStyle = wb.createCellStyle();
+                        Font hlinkFont = wb.createFont();
+                        hlinkFont.setUnderline(Font.U_SINGLE);
+                        hlinkFont.setColor(IndexedColors.BLUE.getIndex());
+                        hlinkStyle.setFont(hlinkFont);
+                        hyperLinkCell.setCellStyle(hlinkStyle);
                     } else {
                         setCell("", ws, rowNum, j, null);
                     }
diff --git a/src/com/yc/action/grid/TreeGrid.java b/src/com/yc/action/grid/TreeGrid.java
index fdf8f9d..8b3940a 100644
--- a/src/com/yc/action/grid/TreeGrid.java
+++ b/src/com/yc/action/grid/TreeGrid.java
@@ -4,7 +4,6 @@
 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;
@@ -1389,6 +1388,9 @@
                         exportInfo.append(id.toLowerCase()).append("#").append(temp.replaceAll("-", "_")).append("#").append(displayformat.replaceAll("-", "~")).append(";");//-杞垚~鏄负浜嗗吋瀹逛箣鍓嶇殑浠g爜
                     }else {
                         exportInfo.append(id.toLowerCase()).append("#").append(temp.replaceAll("-", "_")).append(";");
+                        if(type==9||type==19||type==40){
+                            exportInfo.append(id.toLowerCase()).append("#").append(temp.replaceAll("-", "_")+"涓嬭浇").append(";");
+                        }
                     }
                     if (SumField > 0) {
                         SumFieldInfo.append(id.toLowerCase()).append("#").append(SumField).append("|").append(funclinkname).append("|").append(fumIndex).append("_T_").append(tabColIndex-1).append("|").append((displayformat != null && !displayformat.isEmpty()) ? displayformat.replaceAll("-", "~") : "0").append(";");
diff --git a/src/com/yc/log/ErrorLoggerBean.java b/src/com/yc/log/ErrorLoggerBean.java
index 4138458..1a5f74d 100644
--- a/src/com/yc/log/ErrorLoggerBean.java
+++ b/src/com/yc/log/ErrorLoggerBean.java
@@ -8,6 +8,7 @@
 import com.yc.utils.Page;
 import org.aspectj.lang.ProceedingJoinPoint;
 
+import java.util.HashMap;
 import java.util.Map;
 
 
@@ -47,6 +48,9 @@
 
 	private String conRevtPage(Page page) {
 		Map exceptoinMmap = page.getTbColsMap();
+		if(exceptoinMmap==null){
+			exceptoinMmap=new HashMap();
+		}
 		exceptoinMmap.put("@TableName", page.getTableName());
 		exceptoinMmap.put("@FieldList1", page.getSql());
 		exceptoinMmap.put("@Where", page.getWhere());
diff --git a/src/com/yc/open/controller/EchoController.java b/src/com/yc/open/controller/EchoController.java
index d6771e2..8a75214 100644
--- a/src/com/yc/open/controller/EchoController.java
+++ b/src/com/yc/open/controller/EchoController.java
@@ -1,22 +1,36 @@
 package com.yc.open.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.yc.action.BaseAction;
 import com.yc.action.build.FormidVersion;
+import com.yc.api.utils.SQLUtils;
+import com.yc.exception.CallBackMessage;
 import com.yc.factory.FactoryBean;
 import com.yc.multiData.MultiDataSource;
+import com.yc.multiData.SpObserver;
 import com.yc.open.utils.ApiUtils;
 import com.yc.open.utils.CallBackMessageToObject;
 import com.yc.sdk.WebSocketMessage.action.WebSocketMessageServer;
+import com.yc.service.BaseService;
+import com.yc.utils.SessionKey;
+import net.coobird.thumbnailator.Thumbnails;
+import org.springframework.dao.DataAccessException;
+import org.springframework.jdbc.LobRetrievalFailureException;
+import org.springframework.jdbc.core.support.AbstractLobStreamingResultSetExtractor;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.*;
 
 /**
  * 娴嬭瘯鐢ㄤ緥
@@ -126,4 +140,94 @@
         });
         return   callBackMessage.sendSuccessMessage(this+"=>"+id);
     }
+    /**
+     * 閲嶆柊鎶婇檮浠惰〃鐨勭缉鐣ュ浘鏇存柊涓�娆★紝鍥犱负鏈夊緢澶氱缉鐣ュ浘鏃ф暟鎹槸鏈夐棶棰�
+     * @return
+     */
+    @RequestMapping(value = "/attachn/refreshAttachments.do",method = RequestMethod.GET)
+    public @ResponseBody Object refreshAttachmentFromOriginalPictureToSmallPicture(HttpServletRequest request){
+        CallBackMessage callBackMessage = new CallBackMessage();
+        try {
+            SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
+            BaseService baseService = (BaseService) FactoryBean.getBean("BaseService");
+            Map result= new HashMap();
+            long start=System.currentTimeMillis();
+            List<Map<String, Object>> list = baseService.getSimpleJdbcTemplate().queryForList("select unid,seq from _sys_Attachment9 where filetype in('jpg','png','JPG','PNG') \n" +
+                    "union \n" +
+                    "select unid,seq from _sys_Attachment where filetype in('jpg','png','JPG','PNG')\n");
+            if(list!=null&&list.size()>0) {
+                List<List<Map<String, Object>>> lists = SQLUtils.splitList(list, 50);//鍒嗛〉澶勭悊锛屼竴娆″鐞�20鏉�
+                lists.stream().forEach(subList->{
+                   final StringBuilder sql=new StringBuilder("");
+                    subList.stream().forEach(x -> {
+                        String unid = x.get("unid") + "";
+                        String seq = x.get("seq") + "";
+                        baseService.getJdbcTemplate().query(" declare @unid varchar(100)='" + unid + "',@seq int=" + seq +
+                                " \n declare @table table(fileType varchar(10),OriginalPicture image,ctype varchar(10))\n" +
+                                " insert into @table select filetype,OriginalPicture,'9' as ctype from _sys_Attachment9\n" +
+                                " where unid=@unid and seq=@seq\n" +
+                                " if @@ROWCOUNT=0 \n" +
+                                "  insert into @table select filetype,OriginalPicture,'' as ctype from _sys_Attachment\n" +
+                                "  where unid=@unid and seq=@seq\n" +
+                                "select * from @table", new AbstractLobStreamingResultSetExtractor() {
+                            @Override
+                            protected void handleNoRowFound() throws LobRetrievalFailureException {
+                                System.out.println(unid + ";" + seq + "-娌℃暟鎹�");
+                            }
+                            @Override
+                            protected void streamData(ResultSet resultSet) throws SQLException, IOException, DataAccessException {
+                                ByteArrayOutputStream outputStream = null;
+                                ByteArrayInputStream bais =null;
+                                try {
+                                    do {
+                                        byte[] byteData = resultSet.getBytes("OriginalPicture");//鍘熷浘
+                                        String fileType = resultSet.getString("filetype");//鍥剧墖绫诲瀷
+                                        String type=resultSet.getString("ctype");//9杩樻槸19绫诲瀷
+                                         bais = new ByteArrayInputStream(byteData);
+                                        BufferedImage image = ImageIO.read(bais);
+                                        outputStream = new ByteArrayOutputStream();
+                                        Thumbnails.of(image).scale(0.25).outputQuality(1).outputFormat(fileType).toOutputStream(outputStream);
+                                        byte[] outData = outputStream.toByteArray();
+                                        // 灏嗕簩杩涘埗鏁版嵁杞崲涓哄崄鍏繘鍒跺瓧绗︿覆
+                                        StringBuilder hexString = new StringBuilder();
+                                        for (byte b : outData) {
+                                            hexString.append(String.format("%02x", b));
+                                        }
+
+                                        sql.append("\n update a set SmallPicture =0x"+hexString.toString()+" from _sys_Attachment"+type+" a where unid='" + unid + "' and seq=" + seq);
+                                    } while (resultSet.next());
+                                } catch (Exception e) {
+                                    e.printStackTrace();
+                                }finally {
+                                    if(outputStream!=null) outputStream.close();
+                                    if(bais!=null) bais.close();
+                                }
+                            }
+                        });
+                    });
+                    try {
+                        SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
+                        baseService.getJdbcTemplate().update(sql.toString());
+                        log.warn("鎵归噺鏇存柊50鏉℃垚鍔�");
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        SpObserver.setDBtoInstance();
+                    }
+                });
+            }
+            long end=System.currentTimeMillis();
+            result.put("time",(end-start)/(3600000));
+            result.put("count",list==null?0:list.size());
+            log.warn(JSON.toJSONString(result));
+            callBackMessage.setInfo(result).sendSuccessMessageByDefault();
+            return callBackMessage.toJSONObject();
+        } catch (Exception e) {
+            callBackMessage.sendErrorMessage(e.getMessage());
+            return callBackMessage.toJSONObject();
+        } finally {
+            SpObserver.setDBtoInstance();
+        }
+    }
+
 }
diff --git a/src/com/yc/open/jinwu/service/JinWuImpl.java b/src/com/yc/open/jinwu/service/JinWuImpl.java
index d67f52b..8ebc38f 100644
--- a/src/com/yc/open/jinwu/service/JinWuImpl.java
+++ b/src/com/yc/open/jinwu/service/JinWuImpl.java
@@ -304,7 +304,7 @@
 				" from t640210H a join t640210D b on a.DocCode=b.DocCode " +
 				//" join t110503 d on d.MatCode=b.matcode "+
 				" join t110501 e on e.MatGroup=b.MatGroup "+
-				" where    b.docCode='"+docCode+"' and (isnull(b.YonYa_PushStatus,0)=0 or b.YonYa_PushStatus=-1 ) \n";
+				" where    b.docCode='"+docCode+"' and isnull(a.isActivePush,0) = 0 and (isnull(b.YonYa_PushStatus,0)=0 or b.YonYa_PushStatus=-1 ) \n";
 		try {
 			//log.info("640210sql>>"+sql);
 			List<Map<String,Object>> list= this.jdbcTemplate.queryForList(sql);
diff --git a/src/com/yc/open/qiyunfang/controller/CashFlowDetailsEntry.java b/src/com/yc/open/qiyunfang/controller/CashFlowDetailsEntry.java
index bca26c0..9934556 100644
--- a/src/com/yc/open/qiyunfang/controller/CashFlowDetailsEntry.java
+++ b/src/com/yc/open/qiyunfang/controller/CashFlowDetailsEntry.java
@@ -22,5 +22,7 @@
     String ENTRYFLAG;//鍒嗗綍鏍囪瘑 鍑瘉鍙穇鍒嗗綍琛屽彿: 10002_001
     @JsonProperty("TXT")
     String TXT;//鍒嗗綍鏂囨湰(鎽樿)
+    @JsonProperty("INTERCO")
+    String INTERCO;
 
 }
diff --git a/src/com/yc/open/qiyunfang/controller/T150102Entry.java b/src/com/yc/open/qiyunfang/controller/T150102Entry.java
index a7637b2..40c9747 100644
--- a/src/com/yc/open/qiyunfang/controller/T150102Entry.java
+++ b/src/com/yc/open/qiyunfang/controller/T150102Entry.java
@@ -39,5 +39,10 @@
     String RHCUR;//璁拌处鏈竵甯佺
     @JsonProperty("HSL")
     Double HSL;//璁拌处鏈竵閲戦
-
+   /* @JsonProperty("SUBTABLE")//TODO 鏆傛椂涓嶅紑鍚�
+    String SUBTABLE;//涓氬姟娴佸瓧娈�
+    @JsonProperty("AMOUNT")
+    Double AMOUNT;
+     @JsonProperty("MANDT")
+    Integer MANDT;*/
 }
diff --git a/src/com/yc/open/qiyunfang/service/QiyunfangImpl.java b/src/com/yc/open/qiyunfang/service/QiyunfangImpl.java
index 30294b3..2b78190 100644
--- a/src/com/yc/open/qiyunfang/service/QiyunfangImpl.java
+++ b/src/com/yc/open/qiyunfang/service/QiyunfangImpl.java
@@ -20,26 +20,26 @@
                 "  declare @BaseCurrencyIsoCode varchar(20) \n" +
                 " select @BaseCurrencyIsoCode = CurrencyIsoCode from t110703 where isnull(domestic,0) = 1 \n" +
                 " select  a.periodid as TIME,  --鏃堕棿,浼氳鏈熼棿\n" +
-                " a.companyid as ENTITY,  --鍏徃鍚嶇О,杩欓噷浼犲叕鍙哥紪鍙穃n" +
-                " a.docnum as ENTRYFLAG,  --鍑瘉鏍囪瘑,鍑瘉鍙�+鍒嗗綍琛岄」鐩彿\n" +
-                " a.acctcode as D_ACCOUNT,  --绉戠洰鍚嶇О,瀹為檯涓婃槸绉戠洰缂栧彿\n" +
-                " a.TradePartnerCode as INTERCO,  --璐告槗浼欎即,鍐呴儴鍗曚綅缂栧彿(鐢ㄤ簬闆嗗洟鍐呴儴鍏宠仈浜ゆ槗)\n" +
-                " a.CltCode as KUNNR,   --瀹㈡埛缂栧彿\n" +
-                " a.VndCode as LIFNR,   --渚涘簲鍟嗙紪鍙穃n" +
-                " a.FundTypeCode as XREF2,  --SAP娆鹃」鎬ц川(瑙丼AP娆鹃」鎬ц川鍙傝��)\n" +
-                " a.FAlterId as ANBWA,   --璧勪骇鍙樺姩绫诲瀷(涓庡浐瀹氳祫浜с�佹棤褰㈣祫浜с�佸潖璐﹀噯澶囥�佽穼浠峰噯澶囩殑鍙樺姩鐩稿叧,瑙丼AP璧勪骇浜ゆ槗绫诲瀷)\n" +
-                " case isnull(a.DcFlag,'') when '鍊�' then 'S' else 'H' end as DRCRK,  --鍊熻捶鏍囪瘑锛圫-鍊熸柟銆丠璐锋柟锛塡n" +
-                " a.MatCode as MATNR ,  --鐗╂枡缂栧彿\n" +
-                " d.CurrencyIsoCode as RWCUR,   --浜ゆ槗甯佸竵绉�(WSL)\n" +
-                " case a.dcflag when '鍊�' then a.AmountDebit else a.AmountCredit end as WSL,  --浜ゆ槗鍘�(WSL)\n" +
-                " @BaseCurrencyIsoCode as RHCUR,   --璁拌处鏈竵甯佺\n" +
-                " case a.dcflag when '鍊�' then a.NatAmountDebit else a.NatAmountCredit end as HSL  --璁拌处鏈竵閲戦\n" +
-                " --a.DocWord, a.dcflag,b.acctname,c.companyname,\n" +
-                " --a.cv1,a.cv1name,a.cv2,a.cv2name,a.cv3,a.cv3name,a.cv4,a.cv4name,a.cv5,a.cv5name,a.Currency \n" +
+                "    a.companyid as ENTITY,  --鍏徃鍚嶇О,杩欓噷浼犲叕鍙哥紪鍙穃n" +
+                "    a.docnum as ENTRYFLAG,  --鍑瘉鏍囪瘑,鍑瘉鍙�+鍒嗗綍琛岄」鐩彿\n" +
+                "    case when a.acctcode like '6699%' then 'A'+ a.acctcode else a.acctcode end as D_ACCOUNT,  --绉戠洰鍚嶇О,瀹為檯涓婃槸绉戠洰缂栧彿\n" +
+                "    a.TradePartnerCode as INTERCO,  --璐告槗浼欎即,鍐呴儴鍗曚綅缂栧彿(鐢ㄤ簬闆嗗洟鍐呴儴鍏宠仈浜ゆ槗)\n" +
+                "    a.CltCode as KUNNR,   --瀹㈡埛缂栧彿\n" +
+                "    a.VndCode as LIFNR,   --渚涘簲鍟嗙紪鍙穃n" +
+                "    a.FundTypeCode as XREF2,  --SAP娆鹃」鎬ц川(瑙丼AP娆鹃」鎬ц川鍙傝��)\n" +
+                "    a.FAlterId as ANBWA,   --璧勪骇鍙樺姩绫诲瀷(涓庡浐瀹氳祫浜с�佹棤褰㈣祫浜с�佸潖璐﹀噯澶囥�佽穼浠峰噯澶囩殑鍙樺姩鐩稿叧,瑙丼AP璧勪骇浜ゆ槗绫诲瀷)\n" +
+                "    case isnull(a.DcFlag,'') when '鍊�' then 'S' else 'H' end as DRCRK,  --鍊熻捶鏍囪瘑锛圫-鍊熸柟銆丠璐锋柟锛塡n" +
+                "    a.MatCode as MATNR ,  --鐗╂枡缂栧彿\n" +
+                "    d.CurrencyIsoCode as RWCUR,   --浜ゆ槗甯佸竵绉�(WSL)\n" +
+                "    case a.dcflag when '鍊�' then a.AmountDebit else 0.0 - isnull(a.AmountCredit,0) end as WSL,  --浜ゆ槗鍘�(WSL)\n" +
+                "    @BaseCurrencyIsoCode as RHCUR,   --璁拌处鏈竵甯佺\n" +
+                "    case a.dcflag when '鍊�' then a.NatAmountDebit else 0.0 - isnull(a.NatAmountCredit,0) end as HSL , --璁拌处鏈竵閲戦\n" +
+                "    '800' as MANDT ,  --绯荤粺鏍囪瘑\n" +
+                "    case a.dcflag when '鍊�' then a.NatAmountDebit else 0.0 - isnull(a.NatAmountCredit,0) end as AMOUNT   --鍑瘉閲戦,鍑瘉閲戦锛岀瓑浜嶩SL\n" +
                 " from t150102 a join v110709 b on a.companyid = b.companyid and a.AcctCode = b.Acctcode\n" +
                 " join oCompany c on a.CompanyID = b.companyid \n" +
                 " join t110703 d on a.Currency = d.currency\n" +
-                " where (isnull(@periodid,'') = '' or a.periodid = @periodid)\n" +
+                " where a.periodid = @periodid \n" +
                 " and (isnull(@companyid,'') = '' or a.CompanyID = @companyid)\n" +
                 " and (isnull(@companyname,'') = '' or c.Companyname like '%'+ @companyname + '%')\n" +
                 " and (isnull(@acctcode,'') = '' or a.acctcode = @acctcode)\n" +
@@ -48,7 +48,8 @@
                 " and (isnull(@cv2,'') = '' or a.cv2 = @cv2)\n" +
                 " and (isnull(@cv3,'') = '' or a.cv3 = @cv3)\n" +
                 " and (isnull(@cv4,'') = '' or a.cv4 = @cv4)\n" +
-                " and (isnull(@cv5,'') = '' or a.cv5 = @cv5)", new BeanPropertyRowMapper<>(T150102Entry.class));
+                " and (isnull(@cv5,'') = '' or a.cv5 = @cv5)\n" +
+                " and a.DocType <> '鏈堟湯缁撹浆'   --鎺掗櫎缁撹浆鎹熺泭", new BeanPropertyRowMapper<>(T150102Entry.class));
     }
 
     @Override
@@ -79,7 +80,7 @@
                 " a.Amount5 as AMT_5 , --25-36涓湀(閲戦)\n" +
                 " a.Amount6 as AMT_6 , --37-48涓湀(閲戦)\n" +
                 " a.Amount7 as AMT_7  --48涓湀浠ヤ笂(閲戦)\n" +
-                " from f140933(@companyid,@periodid,'','','',30,180,360,720,1080,1440) a", new BeanPropertyRowMapper<>(InventoryAgeDataEntry.class));
+                " from f140933(@companyid,@periodid,'','','',30,150,180,360,360,360) a", new BeanPropertyRowMapper<>(InventoryAgeDataEntry.class));
     }
     @Override
     public List<CustomerDataEntry> getCustomerData() {
@@ -129,13 +130,16 @@
     @Override
     public List<CashFlowDetailsEntry> getCashFlowDetails(Post150102Entry entry) {
         return this.jdbcTemplate.query(" declare @periodid varchar(20) =" + GridUtils.prossSqlParm(entry.getPeriodid()) + ",@companyid varchar(20) =" + GridUtils.prossSqlParm(entry.getCompanyid()) +"\n"+
-                "   select a.PeriodId as TIME,  --鏃堕棿,浼氳鏈熼棿\n" +
-                " a.CompanyId as ENTITY ,  --鍏徃鍚嶇О,瀹為檯鏄叕鍙哥紪鍙穃n" +
-                " a.FluxId as ACCOUNT , --鐜伴噾娴侀噺缂栫爜,闇�瑕佽窡SAP鐨勭幇閲戞祦缂栫爜淇濇寔涓�鑷碶n" +
-                " a.BusinessPartnerCode as BP ,  --瀹㈠晢缂栫爜\n" +
-                " a.FluxAmount as AMOUNT ,  --閲戦\n" +
-                " isnull(a.DocCode,'')+'-'+isnull(a.DocRowId,'') as ENTRYFLAG , --鍒嗗綍鏍囪瘑,鍑瘉鍙�+鍒嗗綍琛屽彿\n" +
-                " a.Resume as TXT  --鍒嗗綍鏂囨湰(鎽樿) \n" +
+                " select a.PeriodId as TIME,  --鏃堕棿,浼氳鏈熼棿\n" +
+                "    a.CompanyId as ENTITY ,  --鍏徃鍚嶇О,瀹為檯鏄叕鍙哥紪鍙穃n" +
+                "    a.FluxId as ACCOUNT , --鐜伴噾娴侀噺缂栫爜,闇�瑕佽窡SAP鐨勭幇閲戞祦缂栫爜淇濇寔涓�鑷碶n" +
+                "    a.BusinessPartnerCode as BP ,  --瀹㈠晢缂栫爜\n" +
+                "    --AMOUNT 閲戦,鎶� B銆丏銆丗寮�澶寸殑鐜伴噾娴侀」鐩彉鎴愯礋鏁�,杩欎簺鏄睘浜庢敮鍑猴紝鍥犱负鍦⊿AP涓敤璐熸暟鏄剧ず鐨刓n" +
+                "    case when a.FluxId in ('B1','B2','B3','B4','B5','D1','D2','D3','D4','F1','F2','F3') \n" +
+                "       then 0.0 - isnull(a.FluxAmount,0) else a.FluxAmount end as AMOUNT ,  \n" +
+                "    isnull(a.DocCode,'')+'-'+isnull(a.DocRowId,'') as ENTRYFLAG , --鍒嗗綍鏍囪瘑,鍑瘉鍙�+鍒嗗綍琛屽彿\n" +
+                "    a.Resume as TXT,  --鍒嗗綍鏂囨湰(鎽樿) \n" +
+                "    a.TradePartnerCode as INTERCO  --璐告槗浼欎即,鍐呴儴鍗曚綅缂栧彿(鐢ㄤ簬闆嗗洟鍐呴儴鍏宠仈浜ゆ槗)\n" +
                 " from t150107  a\n" +
                 " where (isnull(@periodid,'') = '' or a.periodid = @periodid)\n" +
                 " and (isnull(@companyid,'') = '' or a.CompanyID = @companyid)", new BeanPropertyRowMapper<>(CashFlowDetailsEntry.class));
@@ -182,33 +186,30 @@
     @Override
     public List<VoucherOutstandingEntry> getVoucherOutstanding(Post150102Entry entry) {
         return this.jdbcTemplate.query(" declare @periodid varchar(20) =" + GridUtils.prossSqlParm(entry.getPeriodid()) + ",@companyid varchar(20) =" + GridUtils.prossSqlParm(entry.getCompanyid()) +  "\n"+
-                "  declare @AccountsReceivableAcctCode varchar(20)  --搴旀敹甯愭绉戠洰\n" +
-                " select @AccountsReceivableAcctCode = AccountsReceivableAcctCode from t111601 \n" +
-                " \n" +
-                " declare @BaseCurrencyIsoCode varchar(20) \n" +
+                "  declare @BaseCurrencyIsoCode varchar(20) \n" +
                 " select @BaseCurrencyIsoCode = CurrencyIsoCode from t110703 where isnull(domestic,0) = 1 \n" +
                 " select  a.periodid as TIME,  --鏃堕棿,浼氳鏈熼棿\n" +
-                " a.companyid as ENTITY,  --鍏徃鍚嶇О,杩欓噷浼犲叕鍙哥紪鍙穃n" +
-                " a.acctcode as RACCT,  --绉戠洰缂栫爜\n" +
-                " a.CltCode as KUNNR , --瀹㈡埛缂栫爜\n" +
-                " a.VndCode as LIFNR , --渚涘簲鍟嗙紪鐮乗n" +
-                " a.FundTypeCode as XREF2 , --SAP娆鹃」鎬ц川鎻忚堪\n" +
-                " a.docnum as BELNR,  --SAP鍑瘉鍙穃n" +
-                " a.DocRowID as BUZEI , --SAP鍑瘉琛孿n" +
-                " d.CurrencyIsoCode as RTCUR,   --鍘熷竵甯佺 \n" +
-                " @BaseCurrencyIsoCode as RHCUR ,  --鏈竵甯佺\n" +
-                " case isnull(a.DcFlag,'') when '鍊�' then a.AmountDebit else a.AmountCredit end as TSL , --鍘熷竵閲戦\n" +
-                " case isnull(a.DcFlag,'') when '鍊�' then a.NatAmountDebit else a.NatAmountCredit end as HSL,  --鏈竵閲戦\n" +
-                " a.BillingNetDate as NETDT,  --璐﹂緞鍒版湡鏃ワ紝璐﹂緞鍒版湡鏃ワ紙鍔犱笂淇$敤鏈熶箣鍚庣殑璐﹂緞璧风畻鏃ワ級\n" +
-                " a.DocDate as BLDAT ,  --鍑瘉鏃ユ湡\n" +
-                " a.BillRealDate as REALDATE ,-- 璐﹂緞璁$畻寮�濮嬫棩锛堢瓑浜庤处榫勫埌鏈熸棩锛塡n" +
-                " a.CurrencyRate as KURSK   --姹囩巼,鎶樼畻姹囩巼\n" +
+                "     a.companyid as ENTITY,  --鍏徃鍚嶇О,杩欓噷浼犲叕鍙哥紪鍙穃n" +
+                "     a.acctcode as RACCT,  --绉戠洰缂栫爜\n" +
+                "     a.CltCode as KUNNR , --瀹㈡埛缂栫爜\n" +
+                "     a.VndCode as LIFNR , --渚涘簲鍟嗙紪鐮乗n" +
+                "     a.FundTypeCode as XREF2 , --SAP娆鹃」鎬ц川鎻忚堪\n" +
+                "     a.docnum as BELNR,  --SAP鍑瘉鍙穃n" +
+                "     a.DocRowID as BUZEI , --SAP鍑瘉琛孿n" +
+                "     d.CurrencyIsoCode as RTCUR,   --鍘熷竵甯佺    \n" +
+                "     @BaseCurrencyIsoCode as RHCUR ,  --鏈竵甯佺\n" +
+                "     case isnull(a.DcFlag,'') when '鍊�' then a.AmountDebit else a.AmountCredit end as TSL , --鍘熷竵閲戦\n" +
+                "     case isnull(a.DcFlag,'') when '鍊�' then a.NatAmountDebit else a.NatAmountCredit end as HSL,  --鏈竵閲戦\n" +
+                "     case when a.BillRealDate is not null then a.BillingNetDate else a.DocDate end as NETDT,  --璐﹂緞鍒版湡鏃ワ紝璐﹂緞鍒版湡鏃ワ紙鍔犱笂淇$敤鏈熶箣鍚庣殑璐﹂緞璧风畻鏃ワ級\n" +
+                "     a.DocDate as BLDAT ,  --鍑瘉鏃ユ湡\n" +
+                "     case when a.BillRealDate is not null then a.BillRealDate else case when a.BillRealDate is not null then a.BillingNetDate else a.DocDate end end as REALDATE ,-- 璐﹂緞璁$畻寮�濮嬫棩锛堢瓑浜庤处榫勫埌鏈熸棩锛塡n" +
+                "     a.CurrencyRate as KURSK   --姹囩巼,鎶樼畻姹囩巼\n" +
                 " from t150102 a join v110709 b on a.companyid = b.companyid and a.AcctCode = b.Acctcode\n" +
                 " join oCompany c on a.CompanyID = b.companyid \n" +
                 " join t110703 d on a.Currency = d.currency\n" +
                 " where a.periodid = @periodid \n" +
-                " and a.AcctCode = isnull(@AccountsReceivableAcctCode,'')\n" +
                 " and (isnull(@companyid,'') = '' or a.CompanyID = @companyid)\n" +
-                " and isnull(FaPiaoMatchedAmount,0) <> (case isnull(a.DcFlag,'') when '鍊�' then isnull(a.AmountDebit,0) else isnull(a.AmountCredit,0) end)  --宸茬粡鍖归厤鐨勯噾棰漒n", new BeanPropertyRowMapper<>(VoucherOutstandingEntry.class));
+                " and isnull(FaPiaoMatchedAmount,0) <> (case isnull(a.DcFlag,'') when '鍊�' then isnull(a.AmountDebit,0) else isnull(a.AmountCredit,0) end)  --宸茬粡鍖归厤鐨勯噾棰漒n" +
+                " and isnull(b.isOpenItemMngment,0) = 1", new BeanPropertyRowMapper<>(VoucherOutstandingEntry.class));
     }
 }
diff --git a/src/com/yc/utils/JsonUtil.java b/src/com/yc/utils/JsonUtil.java
index 8aa3ca1..6662994 100644
--- a/src/com/yc/utils/JsonUtil.java
+++ b/src/com/yc/utils/JsonUtil.java
@@ -248,7 +248,7 @@
 //			}finally{
 //				SpObserver.setDBtoInstance();
 //			}
-			  if(fileType!=null) {
+			  if(fileType!=null&&fileType.get(temp)!=null) {
 				  temp += ";" + fileType.get(temp).getFileType();
 			  }
 			  return "|/getImage.do?type=0&uuid=" + temp + JsonUtil.IMGRANG;

--
Gitblit v1.8.0