fs-danaus
2022-10-12 cef3ae7ec31b68823e75fc1e4f989565c226d9fa
解决OA审核调用外部URL,参数为空时也执行了请求的问题
1个文件已添加
7个文件已修改
122 ■■■■■ 已修改文件
src/attachment.config.properties 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/BaseAction.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/grid/GTGrid.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/grid/OAExternalEntiy.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/grid/SqlInfo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/wms/controller/WMSController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/wms/schedule/T110514Thread.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/sdk/shopping/action/api/InvitationCode.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/attachment.config.properties
@@ -1,17 +1,17 @@
#附件上传的保存地址    不设置默认保存在相对路径下
#文件上传的保存地址    不设置默认保存在相对路径下
#为了兼容之前绝对路径 保存路径不要包含WEB-INF 否则将会被视为采用项目相对路径而出现错误
########attachment.savepath=D:\images
#attachment.save.path=D:\images
#默认允许上传最大的10MB  没有通过权限控制下  如果有通过权限控制则以权限控制为标准
attachment.default.allowed.size=10485760
#attachment.server=https://img.onbus.cn
attachment.server=http://localhost:9002
attachment.server=https://img.onbus.cn
#attachment.server=http://localhost:9001
#图片
#image.save.pth=D:\images
# Shopping.Image.Server
Shopping.Image.Server=https://img.onbus.cn
#Shopping.Image.Server=http://localhost:9002
#保存手机生成页面的路径
#保存手机生成页面的路径
#Ionic.webUrl=D:/ionicPage/
Ionic.webUrl=D:/ionic_web/
Ionic.PageUrl=D:/ionic_updatePage/
@@ -23,8 +23,8 @@
#RSA Tool 公钥文件位置
RSA.PublicKey.File=/Users/johnswang/Documents/workspace/eCoWorksV4/WebRoot/WEB-INF/classes/key/pub.key
RSA.PrivateKey.File=/Users/johnswang/Documents/workspace/eCoWorksV4/WebRoot/WEB-INF/classes/key/pri.key
RSA.PublicKey.File=D:/workspace/eCoWorksV3/WebRoot/WEB-INF/classes/key/pub.key
RSA.PrivateKey.File=D:/workspace/eCoWorksV3/WebRoot/WEB-INF/classes/key/pri.key
#openssl 可执行文件存放的位置
OpenSSL=D:/openssl1.1/bin/openssl.exe
@@ -57,16 +57,22 @@
#检查农行支付订单状态
#isAbcPayRunSchedule=1
#WMS推送,0表示不启用,1表示启用
isWmsRunSchedule=1
#isWmsRunSchedule=1
# =====swagger是否启用配置字段,正式环境设置为false======
swagger.enable=true
#指定备份app,personalized目录
#backup.AppDir=d:/web9001
#是否开启定时作业(不影响加载推送服务)
#isStartUpSchedule=1
#只在9001开启多tomcat实例定时作业
#isStartUpOn9001=1
#自动更新小程序活动状态(新版小程序)
#isPanicBuyingRunSchedule=1
# 高备地图 Web服务 Key ,主要 根据 地理经度(x) 和 地理纬度(y) 查询所在的城市名
# 高备地图 Web服务 Key ,主要 根据 地理经度(x) 和 地理纬度(y) 查询所在的城市名
GaoDeWebServiceKey=62c1c18ff0d14bb90bccf24fa0d2b8f9
#指定本机IP匹配数据源绑定的IP,未配置则匹配所有
#localHostBindIPs=139.159.144.215
#更新同一个集群内其他tomcat的功能号内存版本号,通过redis消息发布来处理,所以需要在这里设置一个同一个集群内所有tomcat共用的一个名称,以便区分其他集群tomcat
#sync.version.clusterName=cluster_215_9001
#只在9001开启多tomcat实例定时作业
#isStartUpOn9001=1
src/com/yc/action/BaseAction.java
@@ -11,6 +11,7 @@
import com.yc.service.grid.TableMetaData;
import com.yc.service.upload.AttachmentIfc;
import com.yc.utils.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -697,10 +698,22 @@
            if(st.length()>1){
                String[] ss=st.split("#");
                if(ss.length>1){
                    if(ss[1].startsWith("!"))//如果是动态标题则替换
                        name[i]=gmap.get(ss[0].toLowerCase());
                    else
                        name[i]=ss[1];
                    if(StringUtils.isNotBlank(ss[1])) {
                        //标题存在复合标题的情况,需要处理
                        String[] value = ss[1].split("\\|");
                        if (value.length > 1) {
                            StringJoiner newTitle = new StringJoiner("|");
                            for (String s : value) {
                                if (s.trim().startsWith("!"))//如果是动态标题则替换
                                    newTitle.add(gmap.get(ss[0].toLowerCase()));
                                else
                                    newTitle.add(s);
                            }
                            name[i] = newTitle.toString();
                        } else {
                            name[i] = value[0];
                        }
                    }
                    }else{
                        name[i]="";
                    }
src/com/yc/action/grid/GTGrid.java
@@ -233,7 +233,7 @@
    private String ExcelProc = "";
    private String canelProc = "";
    private String revokeProc = "";
    private String[] oaExternalURL = null;
    private OAExternalEntiy oaExternalURL = null;
    private boolean isDoccode;
@@ -526,18 +526,22 @@
    }
    //执行外部url
    private void prossOaExternalURL(String[] str, int flag, HttpServletRequest request) {
        if (str == null) {
    private void prossOaExternalURL(OAExternalEntiy oaExternalEntiy, int flag, HttpServletRequest request) {
        if (oaExternalEntiy == null||oaExternalEntiy.getUrlShowLocation()==null) {
            return;
        }//没设置直接返回
        if (str[1] != null && str[1].contains("&")) {
            throw new ApplicationException("外部URL参数替换不完整:" + str[1]);
        }
        if (Integer.valueOf(str[0]) == flag) {
        //没设置直接返回
        if (org.apache.commons.lang3.StringUtils.isBlank(oaExternalEntiy.getExternalURL())) {
            return;
        }
        if (oaExternalEntiy.getExternalURL().contains("&")) {
            throw new ApplicationException("外部URL参数替换不完整:" + oaExternalEntiy.getExternalURL());
        }
        if (oaExternalEntiy.getUrlShowLocation() == flag) {
            try {
                String hostUrl = SettingKey.getHostUrl(request);
                final CloseableHttpClient client = HttpClientUtil.getClient();
                String url = str[1].replaceAll("\\|", "&");
                String url = oaExternalEntiy.getExternalURL().replaceAll("\\|", "&");
                if (!url.startsWith("http")) {
                    url = hostUrl + url;
                }
@@ -610,7 +614,7 @@
                if (info.isDoccode() && org.apache.commons.lang3.StringUtils.isNotBlank(info.getDoccode())) {
                    try {
                        //----推送入口
                        gate.enterGate(new GateEntity(this.formID, winType, CheckPointType.EXECUTE_BEFORE_POST, info.getDoccode(), dbid, info.getOaExternalURL() == null ? "" : info.getOaExternalURL()[2],request.getSession().getAttribute(SessionKey.USERCODE)+"",request.getSession().getAttribute(SessionKey.USERNAME)+""));
                        gate.enterGate(new GateEntity(this.formID, winType, CheckPointType.EXECUTE_BEFORE_POST, info.getDoccode(), dbid, info.getOaExternalURL() == null ? "" : info.getOaExternalURL().getButtonType(),request.getSession().getAttribute(SessionKey.USERCODE)+"",request.getSession().getAttribute(SessionKey.USERNAME)+""));
                    }catch (Exception ex){
                        showPushGateException(request, resp, mes_, info, ex);
                        return;
@@ -674,7 +678,7 @@
                this.prossOaExternalURL(info.getOaExternalURL(), 1, request);
                try {
                    //----推送入口
                    gate.enterGate(new GateEntity(this.formID, winType, CheckPointType.EXECUTE_AFTER_POST, info.getDoccode(), dbid,info.getOaExternalURL()==null?"":info.getOaExternalURL()[2],request.getSession().getAttribute(SessionKey.USERCODE)+"",request.getSession().getAttribute(SessionKey.USERNAME)+""));
                    gate.enterGate(new GateEntity(this.formID, winType, CheckPointType.EXECUTE_AFTER_POST, info.getDoccode(), dbid,info.getOaExternalURL()==null?"":info.getOaExternalURL().getButtonType(),request.getSession().getAttribute(SessionKey.USERCODE)+"",request.getSession().getAttribute(SessionKey.USERNAME)+""));
                }catch (Exception ex){
                    showPushGateException(request, resp, mes_, info, ex);
                    return;
@@ -1973,8 +1977,9 @@
     *
     * @param grid
     */
    private String[] setOAProcParm(String oa) {
    private OAExternalEntiy setOAProcParm(String oa) {
        if (oa != "" && oa.length() > 0) {
            OAExternalEntiy entiy=new OAExternalEntiy();
            String[] temp = oa.split(";");
            Map map = button.getButtonIs(this.formID, temp[0], Integer.parseInt(temp[1]));
            if (map != null) {
@@ -1991,12 +1996,10 @@
                }
            }
            String url = GridUtils.prossRowSetDataType_String(map, "ExternalURL");
                String[] str = new String[3];
                str[0] = GridUtils.prossRowSetDataType_Int(map, "UrlShowLocation") + "";
                str[1] = url;
                str[2] =  GridUtils.prossRowSetDataType_String(map, "ButtonType");//GridUtils.prossRowSetDataType_Int(map,"editStatus")+"_"+
                return str;
                entiy.setUrlShowLocation(GridUtils.prossRowSetDataType_Integer(map, "UrlShowLocation") );
                entiy.setExternalURL(GridUtils.prossRowSetDataType_String(map, "ExternalURL"));
                entiy.setButtonType(GridUtils.prossRowSetDataType_String(map, "ButtonType"));//GridUtils.prossRowSetDataType_Int(map,"editStatus")+"_"+
                return entiy;
        }
        return null;
    }
@@ -2230,18 +2233,18 @@
        }
    }
    private String[] getRecordValuesByExternalURL(HashMap map, String[] oaExternalURL) {
    private OAExternalEntiy getRecordValuesByExternalURL(HashMap map, OAExternalEntiy externalEntiy) {
        //url :/xxx.do?formid=&formid&|doccode=&doccode&
        if (oaExternalURL != null && oaExternalURL[1].contains("&")) {//存在&表示需要替换参数
            final List<String> parms = gridService.getString(oaExternalURL[1]);
        if (externalEntiy != null && externalEntiy.getExternalURL().contains("&")) {//存在&表示需要替换参数
            final List<String> parms = gridService.getString(externalEntiy.getExternalURL());
            for (String str : parms) {
                String value = GridUtils.prossRowSetDataType_String(map, str.replaceAll("&", "").toLowerCase());
                if (StringUtils.isNotBlank(value)) {
                    oaExternalURL[1] = oaExternalURL[1].replaceAll(str, value);
                    externalEntiy.setExternalURL(externalEntiy.getExternalURL().replaceAll(str, value));
                }
            }
        }
        return oaExternalURL;
        return  externalEntiy;
    }
    private boolean checkProcSame(String s, List<String> totalProc) {
src/com/yc/action/grid/OAExternalEntiy.java
New file
@@ -0,0 +1,10 @@
package com.yc.action.grid;
import lombok.Data;
@Data
public class OAExternalEntiy {
    Integer urlShowLocation;
    String buttonType;
    String externalURL;
}
src/com/yc/action/grid/SqlInfo.java
@@ -20,7 +20,7 @@
private boolean isDoccode=false;//是否为单据类型
private String rowid="";//返回primaryKey值
private String detailRowid="";//返回primaryKey值
    private String[] oaExternalURL=null;
    private OAExternalEntiy oaExternalURL=null;
    private String tableName;
    private int onlinePay;
    private int onlineRefund;
@@ -59,11 +59,11 @@
        this.onlineRefund = onlineRefund;
    }
    public String[] getOaExternalURL() {
    public OAExternalEntiy getOaExternalURL() {
        return oaExternalURL;
    }
    public void setOaExternalURL(String[] oaExternalURL) {
    public void setOaExternalURL(OAExternalEntiy oaExternalURL) {
        this.oaExternalURL = oaExternalURL;
    }
src/com/yc/open/wms/controller/WMSController.java
@@ -527,11 +527,12 @@
                    final APIConfig apiConfig = BaseThread.getAPIConfig(dataSourceEntity.getDbId() + "");
                    MatCodeXmlEntity matCodeXmlEntity = new MatCodeXmlEntity();
                    matCodeXmlEntity.setItem(entity);
                    matCodeXmlEntity.setOwnerCode(apiConfig.OWNERCODE);
                    String data = BaseThread.createXmlData(matCodeXmlEntity);
                    log.info(data);
                    //log.info(data);
                    String url = apiConfig.PUSH_URL + getSignByWms(data, "singleitem.synchronize", apiConfig.APP_KEY, apiConfig.SECRET, apiConfig.CUSTOMERID);
                    final String msg = doPostByParameterNotNameByXml(url, data);
                    log.info("msg:" + msg);
                    //log.info("msg:" + msg);
                    if (StringUtils.isNotBlank(msg)) {
                        ResponseEntity responseEntity = BaseThread.createDataByXml(msg);
                        if ("success".equalsIgnoreCase(responseEntity.getFlag())) {
src/com/yc/open/wms/schedule/T110514Thread.java
@@ -42,11 +42,12 @@
                if (salesData != null) {
                    MatCodeXmlEntity matCodeXmlEntity = new MatCodeXmlEntity();
                    matCodeXmlEntity.setItem(salesData);
                    matCodeXmlEntity.setOwnerCode(apiConfig.OWNERCODE);
                    String data = createXmlData(matCodeXmlEntity);
                    log.info(data);
                    //log.info(data);
                    String url = apiConfig.PUSH_URL + baseController.getSignByWms(data, "singleitem.synchronize", apiConfig.APP_KEY, apiConfig.SECRET, apiConfig.CUSTOMERID);
                    final String msg = baseController.doPostByParameterNotNameByXml(url, data);
                    log.info("msg:" + msg);
                    //log.info("msg:" + msg);
                    if (StringUtils.isNotBlank(msg)) {
                        ResponseEntity responseEntity = createDataByXml(msg);
                        if ("success".equalsIgnoreCase(responseEntity.getFlag())) {
src/com/yc/sdk/shopping/action/api/InvitationCode.java
@@ -414,8 +414,6 @@
        }catch (Exception e) {
            this.printJson(response, callBackMessage.sendErrorMessage(e.getMessage(),-1));
            return;
        } finally {
            SpObserver.setDBtoInstance();
        }
    }