fs-danaus
2022-08-15 74b2ff8d99c6a545a8ce552075d52be7d1941e01
解决图片颜色模型是CMCY时缩放图片会出错的问题,引入第三方包解决
8个文件已添加
6个文件已修改
132 ■■■■■ 已修改文件
WebRoot/WEB-INF/lib/common-image-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/common-io-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/common-lang-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/imageio-core-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/imageio-jpeg-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/imageio-metadata-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/imageio-tiff-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/servlet-3.8.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/js/index/deskTop.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/sessionFail.jsp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/grid/PoiExcelWriter.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/entity/T150201TempEntity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/entity/T150348Entity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/service/v2/DeLiImplV2.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/WEB-INF/lib/common-image-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/common-io-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/common-lang-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/imageio-core-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/imageio-jpeg-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/imageio-metadata-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/imageio-tiff-3.8.2.jar
Binary files differ
WebRoot/WEB-INF/lib/servlet-3.8.2.jar
Binary files differ
WebRoot/js/index/deskTop.js
@@ -3,7 +3,7 @@
 */
var hasDelGroup=false;//删除分组用到
$(function(){
    $("body").append("<div id='deskTopWindowUP'></div>");
    $("body").append("<div id='deskTopWindowUP' style='overflow: hidden'></div>");
    $("#inputFormid").keydown(function(e){
        var flag = checkSession();//session失效后弹出登录框,flag为true时表示已经失效
            if(flag){
WebRoot/sessionFail.jsp
@@ -34,7 +34,7 @@
         <div region="north" border="false" style="padding-top:15px;padding-bottom:15px;text-align:center;background:#fff;">
              <span>您有太长时间没有操作了,请重新登录!</span>
         </div>
        <div region="center" border="false" style="text-align:center;padding-top:25px;background:#fff;border:1px solid #ccc;">
        <div region="center" border="false" style="overflow:hidden;text-align:center;padding-top:25px;background:#fff;border:1px solid #ccc;">
       
<%--        <form id="loginForm" method="post" action="/againLogin.do">--%>
            <input type="hidden" id="dbid" name="dbid" value="<%= dataSourceEntity != null? dataSourceEntity.getDbId():"" %>"/>
src/com/yc/action/grid/PoiExcelWriter.java
@@ -93,7 +93,8 @@
                        //写入标题
                        setCell(p.getTitle() + ":", ws, row, col == -1 ? 0 : col, null);
                        int rcol = col + 1;
                        String value = putRowC(wb, ws, row, panel.get(0), new String[]{p.getFild()}, rcol, exporttitles, false, picFileds, dbid, imageHostUrl, page.getFormid() + "");    //压一行到sheet
                        final Map<String, String> fileType = getFileType(dbid, panel, picFileds);
                        String value = putRowC(wb, ws, row, panel.get(0), new String[]{p.getFild()}, rcol, exporttitles, false, picFileds, dbid, imageHostUrl, page.getFormid() + "",fileType);    //压一行到sheet
                        if (!"".equals(value)) sb.append(value).append("-");
                        tempNum = row;
                        col = rcol + 1;
@@ -110,9 +111,12 @@
                putRow(ws, rowNum, title);//压入标题
                rowNum += 1;
            }
            Map<String, String> fileType = getFileType(dbid, datas, picFileds);
            for (int i = 0; i < datas.size(); i++, rowNum++) {//写sheet
                Map map = (Map) datas.get(i);
                putRowC(wb, ws, rowNum, map, filed, 0, "", false, picFileds, dbid, imageHostUrl, page.getFormid() + "");    //压一行到sheet
                putRowC(wb, ws, rowNum, map, filed, 0, "", false, picFileds, dbid, imageHostUrl, page.getFormid() + "",fileType);    //压一行到sheet
                //处理第三表
                try {
                    if (page.getGrid3Data() != null && page.getGrid3Data().size() > 0) {
@@ -130,7 +134,7 @@
                        }).collect(Collectors.toList());
                        for (Map<String, Object> map2 : list) {
                            putRowC(wb, ws, ++rowNum, map2, filed, 1, "", true, picFileds, dbid, imageHostUrl, page.getFormid() + "");    //压一行到sheet
                            putRowC(wb, ws, ++rowNum, map2, filed, 1, "", true, picFileds, dbid, imageHostUrl, page.getFormid() + "",fileType);    //压一行到sheet
                        }
                    }
@@ -143,29 +147,29 @@
            if (!"".equalsIgnoreCase(ex)) {
                Map<String, ExcelPO> param = new HashMap<String, ExcelPO>();
                String[] tem = ex.split(";");
                if (StringUtils.isNotBlank(page.getTbColsOut())){
                if (StringUtils.isNotBlank(page.getTbColsOut())) {
                    String[] tbCols = page.getTbColsOut().split("#M#");//#M#是行号docItem,需要排除
                String[] values = tbCols[0].split("#p#");
                ;
                for (String key : tem) {
                    String[] ss = key.split("#");
                    ExcelPO po = new PoiExcelWriter().new ExcelPO();
                    po.setKey(ss[0]);
                    //ss[1]格式:汇总类型|自定义汇总公式(其他类型为空)|字段在excel的位置_T_字段在9802的位置|数字格式
                    String[] indexArry = ss[1].split("\\|")[2].split("_T_");
                    po.setFum(ss[1]);
                    if (indexArry.length == 1) {
                        throw new ApplicationException("汇总列格式已更新,请通过右下角的小助手[点我一键解决]重新生成页面后再操作");
                    String[] values = tbCols[0].split("#p#");
                    ;
                    for (String key : tem) {
                        String[] ss = key.split("#");
                        ExcelPO po = new PoiExcelWriter().new ExcelPO();
                        po.setKey(ss[0]);
                        //ss[1]格式:汇总类型|自定义汇总公式(其他类型为空)|字段在excel的位置_T_字段在9802的位置|数字格式
                        String[] indexArry = ss[1].split("\\|")[2].split("_T_");
                        po.setFum(ss[1]);
                        if (indexArry.length == 1) {
                            throw new ApplicationException("汇总列格式已更新,请通过右下角的小助手[点我一键解决]重新生成页面后再操作");
                        }
                        try {
                            po.setNum(Double.parseDouble(values[Integer.parseInt(indexArry[1])]));//indexArry[1]为汇总列在9802中的真实位置
                        } catch (Exception e) {
                            po.setNum(0);
                        }
                        param.put(ss[0], po);
                    }
                    try {
                        po.setNum(Double.parseDouble(values[Integer.parseInt(indexArry[1])]));//indexArry[1]为汇总列在9802中的真实位置
                    } catch (Exception e) {
                        po.setNum(0);
                    }
                    param.put(ss[0], po);
                    prossFormula(wb, ws, rowNum, param);//常规
                }
                prossFormula(wb, ws, rowNum, param);//常规
            }
            }
            //--------end
            Map<String, Object> map = new HashMap<String, Object>();
@@ -183,31 +187,66 @@
        }
    }
    private boolean fnEquals(Object o1, Object o2) {
    /**
     *
     * @param dbid
     * @param list 数据
     * @param key 附件字段名称
     * @return
     */
    private Map<String, String> getFileType(String dbid, List list,String key) {
        return o1.equals(o2);
        HashMap<String, String> fileType = new HashMap<>();
        try {
            SpObserver.setDBtoInstance("_" + dbid);
            BaseService baseService = (BaseService) FactoryBean.getBean("BaseService");
            StringJoiner joiner = new StringJoiner(" or ");
            if(list!=null&&list.size()>0) {
                list.stream().forEach(x->{
                    Map<String,Object> m =(Map<String, Object>) x;
                    if(m.get(key)!=null&&StringUtils.isNotBlank(m.get(key)+"")) {
                        joiner.add("unid='" + (m.get(key) + "").split(";")[0] + "'");
                    }
                });
                final List<Map<String, Object>> maps = baseService.getSimpleJdbcTemplate().queryForList("set nocount on\n "+
                        "  select  cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid,FileType from _sys_Attachment9 where " +joiner.toString()+" \n"+
                        "union\n" +
                        "select  cast(unid as varchar(100))+';'+cast(seq as varchar(10)) as unid,FileType from _sys_Attachment where "+joiner.toString()+"\n");
                if (maps != null && maps.size() > 0) {
                    for (Map<String, Object> map : maps) {
                        fileType.put(GridUtils.prossRowSetDataType_String(map, "unid"), GridUtils.prossRowSetDataType_String(map, "FileType"));
                    }
                }
            }
            return fileType;
        } catch (Exception ex) {
            return fileType;
        } finally {
            SpObserver.setDBtoInstance();
        }
    }
    /**
     * @param flg true表示常常规统计:汇总,计算,...,false表示自定义公式统计
     */
    private void prossFormula( SXSSFWorkbook wb, SXSSFSheet ws, int rowNum, Map<String, ExcelPO> param) {//
    private void prossFormula(SXSSFWorkbook wb, SXSSFSheet ws, int rowNum, Map<String, ExcelPO> param) {//
        for (Entry<String, ExcelPO> en : param.entrySet()) {
            ExcelPO po = en.getValue();
            double total=po.getNum();
            double total = po.getNum();
            String[] vo = po.getFum().split("\\|");//1,null,5,数字格式;
            String[] colIndex=vo[2].split("_T_");//取字段在execl的位置
            String[] colIndex = vo[2].split("_T_");//取字段在execl的位置
            String format = getNumFormat(vo[3]);//数字格式
                if (!"".equalsIgnoreCase(format)) {
                    String datetimestyle[] = format.split("-");
                    if (datetimestyle.length >= 2) {
                        setCellDouble(total, ws, rowNum + 1, Integer.parseInt(colIndex[0]), null);
                    } else {
                        setCellDouble(total, ws, rowNum + 1, Integer.parseInt(colIndex[0]), getCellStyle(format, wb));
                    }
                } else {
            if (!"".equalsIgnoreCase(format)) {
                String datetimestyle[] = format.split("-");
                if (datetimestyle.length >= 2) {
                    setCellDouble(total, ws, rowNum + 1, Integer.parseInt(colIndex[0]), null);
                } else {
                    setCellDouble(total, ws, rowNum + 1, Integer.parseInt(colIndex[0]), getCellStyle(format, wb));
                }
            } else {
                setCellDouble(total, ws, rowNum + 1, Integer.parseInt(colIndex[0]), null);
            }
        }
    }
@@ -488,7 +527,7 @@
        return byteArrayOutputStream.toByteArray();
    }
    private String putRowC(SXSSFWorkbook wb, SXSSFSheet ws, int rowNum, Object cells, String[] filed, int j, String titles, boolean isThreeData, String picFileds, String dbid, String imageHostUrl, String formid) {
    private String putRowC(SXSSFWorkbook wb, SXSSFSheet ws, int rowNum, Object cells, String[] filed, int j, String titles, boolean isThreeData, String picFileds, String dbid, String imageHostUrl, String formid,Map<String, String> fileType) {
        Map map = (Map) cells;
        boolean flg = false;
        if (j > 0 && !isThreeData) flg = true;
@@ -503,9 +542,9 @@
                byte[] imgByte = null;
                String str = GridUtils.prossRowSetDataType_String(map, fieldTexts[0].trim().toLowerCase());
                String uuid = GridUtils.prossRowSetDataType_String(map, fieldTexts[0].trim().toLowerCase());
                map.put(fieldTexts[0].trim().toLowerCase(), "");//清空附件内容
                String[] strArray = str.split(";");
                String[] strArray = uuid.split(";");
                for (int i = 1; i < strArray.length; i++) {
                    String txt = strArray[0] + ";" + strArray[i];
@@ -520,7 +559,9 @@
                            }
                            txt = txt.replace(";", "@p@").replace(";", ".");
                        } else {
                            txt = txt.replace(";", "@p@") + ".jpg";
                            //txt = txt.replace(";", "@p@") + ".jpg";
                            String fileExt="."+fileType.get(txt);
                            txt=txt.replace(";", "@p@")+fileExt ;
                        }
                        imgUrl = imageHostUrl + "/uploads/attachment/" + dbid + "/" + formid + "/" + txt;
src/com/yc/open/deli/entity/T150201TempEntity.java
@@ -24,7 +24,8 @@
    String remitter;//汇款人
    String remitterTel;//汇款人电话
    String bankDocCode;//汇款单号
    String accountName;//汇款银行账号
    String accountCode;//汇款银行账号
    String accountName;//汇款银行账号名称
    String amount;//金额
    String uploads;//附件
}
src/com/yc/open/deli/entity/T150348Entity.java
@@ -8,6 +8,7 @@
public class T150348Entity {
    String bankDocCode;//汇款单号
    String accountName;//汇款银行账号
    String accountCode;
    String amount;//金额
    List<String> uploads;//附件
}
src/com/yc/open/deli/service/v2/DeLiImplV2.java
@@ -1399,7 +1399,7 @@
    @Override
    public T150201Entity getT150201(String docCode, Task task,String dbid) {
        List<T150201TempEntity> list=this.jdbcTemplate.query("set nocount  on \n" +
                " select b.docCode,convert(varchar(10), b.docdate,120) as docDate,b.ccCode,b.ccName,b.vndCode,b.vndName,b.hDMemo,b.amount as totalAmount,b.bankCode,b.bankName,b.bankAccount,b.uploads,(SELECT stuff((SELECT',' + CONVERT(VARCHAR, pODoccode) FROM t150201D a  where a.DocCode=b.DocCode FOR XML PATH ('')),1,1,'')) as pODoccode,c.UserName as remitter,c.tel as remitterTel,(select  isnull(a.subacctname,'') + case when   isnull(a.BankCode,'') <> '' then '  【' + isnull(a.BankCode,'')  + '】 'else '' end from t110706  a join t110702 b on a.Acctcode = b.Acctcode where  a.subacctcode=d.AccountCode) as AccountName,d.Amount,d.BankDocCode " +
                " select b.docCode,convert(varchar(10), b.docdate,120) as docDate,b.ccCode,b.ccName,b.vndCode,b.vndName,b.hDMemo,b.amount as totalAmount,b.bankCode,b.bankName,b.bankAccount,b.uploads,(SELECT stuff((SELECT',' + CONVERT(VARCHAR, pODoccode) FROM t150201D a  where a.DocCode=b.DocCode FOR XML PATH ('')),1,1,'')) as pODoccode,c.UserName as remitter,c.tel as remitterTel,(select   isnull(a.BankCode,'')   from t110706  a join t110702 b on a.Acctcode = b.Acctcode where  a.subacctcode=d.AccountCode) as AccountCode,(select  isnull(a.subacctname,'') from t110706  a join t110702 b on a.Acctcode = b.Acctcode where  a.subacctcode=d.AccountCode) as AccountName,d.Amount,d.BankDocCode " +
                " from t150201H b \n" +
                "  left join _sys_loginuser c on c.usercode=replace(b.CurChecked,',','') \n" +
                "  left join t150348 d on d.Doccode=b.DocCode \n" +
@@ -1416,6 +1416,7 @@
                t150348Entity.setAmount(x.getAmount());
                t150348Entity.setBankDocCode(x.getBankDocCode());
                t150348Entity.setAccountName(x.getAccountName());
                t150348Entity.setAccountCode(x.getAccountCode());
                if(StringUtils.isNotBlank(x.getUploads())) {
                    //取出附件拼接url需要的数据
                    final List<com.yc.open.mutual.entity.AttachmentEntity> attachmentInfo = mutualServiceIfc.getAttachmentInfo(x.getUploads(), task.getAffectedFormId(), "uploads", 0);