fs-danaus
2023-02-27 ecf825bbe8ede4e012ef4b502937b51867064170
处理德立接口功能多账号绑定
1个文件已添加
16个文件已修改
371 ■■■■ 已修改文件
WebRoot/general/deliauth.jsp 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/controller/DeliController.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/Cancel130301Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/DeliSchedule.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/DeliThread.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/Get640115Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T120201Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T130301Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T150201Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T150206Thread.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T170139Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T640109Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T640115Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/schedule/v2/T640201Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/service/v2/DeLiIfc.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/deli/service/v2/DeLiImplV2.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/mutual/schedule/Gate.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebRoot/general/deliauth.jsp
@@ -2,22 +2,16 @@
    pageEncoding="UTF-8"%>
<%@page import="com.yc.sdk.shopping.util.SettingKey"%>
<%@page import="com.yc.factory.FactoryBean"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Map"%>
<%@page import="com.yc.multiData.SpObserver"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@page import="com.yc.utils.SessionKey"%>
<%@page import="com.yc.sdk.shopping.action.Maintaince"%>
<%@page import="com.yc.service.user.UserAccountServiceIfc"%>
<%@page import="com.yc.entity.UserAccountEntity"%>
<%@page import="com.yc.entity.DataSourceEntity"%>
<%@page import="com.yc.multiData.MultiDataSource"%>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="com.yc.service.BaseService" %>
<%@ page import="com.yc.utils.SessionKey" %>
<%
    String hostUrl = SettingKey.getHostUrl(request) ;
    DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request) ;
    BaseService baseService = (BaseService) FactoryBean.getBean("BaseService");
    String deLiUserCode = baseService.getSimpleJdbcTemplate().queryForObject("set nocount on \n select  DeLiUserCode from _sysuser where userCode=?", String.class,request.getSession().getAttribute(SessionKey.USERCODE));
%>    
<!DOCTYPE html  >
<html>
@@ -46,7 +40,7 @@
<div class="" id="collapse-messages"><div class="panel-body"></div></div>
<div class="row">                
     <div id="content" class="col-sm-12">
     <h1>德立营销系统账号绑定与解绑[<%=dataSourceEntity.getDeliUserCode()==null?"未绑定账号":dataSourceEntity.getDeliUserCode()%>]</h1><br>
     <h1>德立营销系统账号绑定与解绑[<%=deLiUserCode==null?"未绑定账号":deLiUserCode%>]</h1><br>
     <fieldset>
         <div class="form-group required">
            <label class="col-sm-2 control-label" for="userName">账号:</label>
@@ -75,7 +69,7 @@
</div>
</body>
<script type="application/x-javascript">
    var isbind=<%=StringUtils.isNotBlank(dataSourceEntity.getDeliUserId())?true:false%>;//是否已绑定了账号
    var isbind=<%=StringUtils.isNotBlank(deLiUserCode)?true:false%>;//是否已绑定了账号
    $('#button-bind').attr("disabled",isbind);
    $('#button-unbind').attr("disabled",!isbind);
    $(document).delegate('#button-bind', 'click', function() {
@@ -92,6 +86,7 @@
            $.get("/deli/bindUserAccount.do?userPass=" + userPass + "&userName=" + userName, function (data) {
                if (data != null) {
                    alert(data.msg);//回调提示
                    location.reload();
                }
            });
        }
@@ -110,6 +105,7 @@
            $.get("/deli/unbindUserAccount.do?userPass=" + userPass + "&userName=" + userName, function (data) {
                if (data != null) {
                    alert(data.msg);//回调提示
                    location.reload();
                }
            });
        }
src/com/yc/open/deli/controller/DeliController.java
@@ -17,10 +17,12 @@
import com.yc.open.deli.service.v2.DeLiIfc;
import com.yc.open.init.InitSystemTaks;
import com.yc.open.init.Task;
import com.yc.open.mutual.schedule.GateEntity;
import com.yc.open.utils.ApiUtils;
import com.yc.open.utils.CallBackMessageToObject;
import com.yc.sdk.weixincp.util.UploadFiles;
import com.yc.sdk.weixinmp.util.MD5Util;
import com.yc.service.BaseService;
import com.yc.service.build.type.T_22_Ifc;
import com.yc.service.panel.SqlDBHelperIfc;
import com.yc.service.upload.AttachmentIfc;
@@ -31,19 +33,13 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.util.FileCopyUtils;
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.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -71,11 +67,12 @@
    /**
     * 生成数字签名及相关的公共参数
     * @param request
     *
     * @param entity
     * @return URl的query字符串
     */
    public   String getSignByDeLi(Task task, String data,String dbid) throws Exception {
    public   String getSignByDeLi(Task task, String data, GateEntity entity) throws Exception {
        ConcurrentHashMap<String,String> concurrentHashMap=new ConcurrentHashMap();
        //post需要提交的数据
@@ -87,9 +84,22 @@
        concurrentHashMap.putIfAbsent("timestamp",timestamp+"");
        concurrentHashMap.putIfAbsent("nonce",nonce);
        //取accesskey,secretkey
        DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(dbid);
        DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(entity.getDbid());
        String accessKey=dataSourceEntity.getSystemAccessKey();
        String outUserID=dataSourceEntity.getDeliUserId();
        //取当前用户绑定的德立账号
        String outUserID=null;
        try {
            SpObserver.setDBtoInstance("_" + entity.getDbid());
            BaseService baseService = (BaseService) FactoryBean.getBean("BaseService");
             outUserID =baseService.getSimpleJdbcTemplate().queryForObject("set nocount on \n select DeLiUserId from _sysuser where usercode=? and isnull(inActive,0)=0",String.class,entity.getUserCode());
             if(StringUtils.isBlank(outUserID)){
                 throw new ApplicationException(entity.getUserCode()+"未绑定德立账号,DeLiUserId不能为空");
             }
        }catch (Exception e){
            throw e;
        }finally {
            SpObserver.setDBtoInstance();
        }
        concurrentHashMap.putIfAbsent("outUserID",outUserID);
        concurrentHashMap.putIfAbsent("accesskey",MD5Util.string2MD5(accessKey));
        String sign= ApiUtils.SignRequest(concurrentHashMap,task.getAppSecret());
@@ -596,13 +606,9 @@
            if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){
                return  callMsg.sendSuccessMessage("返回数据结果为空");
            }else{
                //成功则写入数据源表和更新内存中的数据源
                DataSourceEntity dataSource=MultiDataSource.getDataSourceMap(dbid+"");
                dataSource.setDeliUserCode(((Map)callBackMessageToObject.getData()).get("userName")+"");
                dataSource.setDeliUserId(((Map)callBackMessageToObject.getData()).get("outUserID")+"");
                try{
                    SpObserver.setDBtoDemo();
                        mDeLiIfc.bindUserAccount(dataSource);
                    SpObserver.setDBtoInstance("_"+dbid);
                        mDeLiIfc.bindUserAccount((Map)callBackMessageToObject.getData(),request.getSession().getAttribute(SessionKey.USERCODE)+"");
                        return callMsg.sendSuccessMessage("绑定成功");
                }catch(Exception ex){
                    return callMsg.sendErrorMessage(this.getErrorMsg(ex));
@@ -650,13 +656,9 @@
            if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){
                return  callMsg.sendSuccessMessage("返回数据结果为空");
            }else{
                //成功则写入数据源表和更新内存中的数据源
                DataSourceEntity dataSource=MultiDataSource.getDataSourceMap(dbid+"");
                dataSource.setDeliUserCode(((Map)callBackMessageToObject.getData()).get("userName")+"");
                dataSource.setDeliUserId(((Map)callBackMessageToObject.getData()).get("outUserID")+"");
                try{
                    SpObserver.setDBtoDemo();
                    mDeLiIfc.unbindUserAccount(dataSource);
                    SpObserver.setDBtoInstance("_"+dbid);
                    mDeLiIfc.unbindUserAccount(request.getSession().getAttribute(SessionKey.USERCODE)+"");
                    return callMsg.sendSuccessMessage("解绑成功");
                }catch(Exception ex){
                    return callMsg.sendErrorMessage(this.getErrorMsg(ex));
@@ -816,7 +818,10 @@
            String data=GridUtils.toJson(t640109Entity);
            //request.setAttribute("isPublic",1);//转换成公用key
            Task task=InitSystemTaks.getTaskByIsOpenURL(dbid+"","OP0046",130301);//取130301设置的密钥
            String query=this.getSignByDeLi(task,data,dbid+"");
            GateEntity entity=new GateEntity();
            entity.setDbid(dbid+"");
            entity.setUserCode(request.getSession().getAttribute(SessionKey.USERCODE)+"");
            String query=this.getSignByDeLi(task,data,entity);
            String url=Constant.T640109_PUSH_NEW_URL;
            if("复测".equals(t640109Entity.getCustomer().getDocType())){
                url= Constant.T640110_PUSH_NEW_URL;
src/com/yc/open/deli/schedule/v2/Cancel130301Thread.java
@@ -55,7 +55,7 @@
                OrderReturnEntity result = this.deliIfc.getT130301(entity, task);
                if (result != null) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity.getDbid());
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity);
                    String msg = deliController.doPostByParameter(url, data);
                    log.info("msg:" + msg);
                    DeliCallBackMessage callBackMessage = JSON.parseObject(msg, DeliCallBackMessage.class);
src/com/yc/open/deli/schedule/v2/DeliSchedule.java
@@ -47,6 +47,9 @@
        if (entity.getFormid() == 150201) {
            threadPoolExecutor.execute(new T150201Thread(entity, deLiIfc, deliController));
        }
        if (entity.getFormid() == 150206) {
            threadPoolExecutor.execute(new T150206Thread(entity, deLiIfc, deliController));
        }
        if (entity.getFormid() == 640115) {
            threadPoolExecutor.execute(new T640115Thread(entity, deLiIfc, deliController));
            threadPoolExecutor.execute(new Get640115Thread(entity, deLiIfc, deliController));
src/com/yc/open/deli/schedule/v2/DeliThread.java
@@ -27,15 +27,7 @@
    @Override
    public void run() {
        try {
            SpObserver.setDBtoInstance("_"+entity.getDbid());//固定取onbus系统
            //判断德立设置的SystemAccessKey是否正确及outUserID是否为空
            DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(entity.getDbid());
            String accessKey=dataSourceEntity.getSystemAccessKey();
            String outUserID=dataSourceEntity.getDeliUserId();
            if(StringUtils.isBlank(outUserID)){
                throw  new ApplicationException("outUserID不能为空,请先绑定德立账号[快捷->德立账号绑定]");
            }
            SpObserver.setDBtoInstance("_"+entity.getDbid());
            DeliSchedule deliSchedule = (DeliSchedule) FactoryBean.getBean("deliSchedule");
                    deliSchedule.pushData(entity);
        } catch (Exception ex) {
@@ -46,6 +38,4 @@
            SpObserver.setDBtoInstance();
        }
    }
}
src/com/yc/open/deli/schedule/v2/Get640115Thread.java
@@ -48,7 +48,7 @@
                Get640115Entity result = this.deliIfc.getT640115V2(entity, task);
                if (result != null) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity.getDbid());
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity);
                    String msg = deliController.doPostByParameter(url, data);
                    DeliCallBackMessage callBackMessage = JSON.parseObject(msg, DeliCallBackMessage.class);
                    if (callBackMessage != null) {
src/com/yc/open/deli/schedule/v2/T120201Thread.java
@@ -45,7 +45,7 @@
                List<T120201Entity> result = this.deliIfc.getT120201List(entity.getDocCode(),task);
                if (result != null && result.size() > 0) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity.getDbid());
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    List<DeliCallBackMessage> callBackMessage=JSON.parseArray(msg,DeliCallBackMessage.class);
                    callBackMessage= callBackMessage.stream().map(x->{
src/com/yc/open/deli/schedule/v2/T130301Thread.java
@@ -47,7 +47,7 @@
                List<T130301Entity> result = this.deliIfc.getT130301List(entity.getDocCode(), task);
                if (result != null && result.size() > 0) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity.getDbid());
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity);
                    String msg = deliController.doPostByParameter(url, data);
                    log.info("msg:" + msg);
                    DeliCallBackMessage callBackMessage = JSON.parseObject(msg, DeliCallBackMessage.class);
src/com/yc/open/deli/schedule/v2/T150201Thread.java
@@ -48,7 +48,7 @@
                T150201Entity result = this.deliIfc.getT150201(entity.getDocCode(),task,entity.getDbid());
                if (result != null) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity.getDbid());
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    DeliCallBackMessage callBackMessage=JSON.parseObject(msg,DeliCallBackMessage.class);
                        if(callBackMessage.getState()==0) {
src/com/yc/open/deli/schedule/v2/T150206Thread.java
New file
@@ -0,0 +1,124 @@
package com.yc.open.deli.schedule.v2;
import com.alibaba.fastjson.JSON;
import com.yc.action.grid.GridUtils;
import com.yc.factory.FactoryBean;
import com.yc.multiData.SpObserver;
import com.yc.open.deli.controller.DeliController;
import com.yc.open.deli.entity.DeliCallBackMessage;
import com.yc.open.deli.entity.T110562Entity;
import com.yc.open.deli.entity.T110565Entity;
import com.yc.open.deli.entity.T150201Entity;
import com.yc.open.deli.service.PostDataBaseService;
import com.yc.open.deli.service.v2.DeLiIfc;
import com.yc.open.init.BaseGate;
import com.yc.open.init.Task;
import com.yc.open.mutual.schedule.GateEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
 * 推送预付款单
 */
public class T150206Thread extends BaseGate implements Runnable {
    protected final Logger log = LoggerFactory.getLogger(this.getClass());
    private static String TASKID = "OP0068";
    private GateEntity entity;
    DeLiIfc deliIfc;
    DeliController deliController;
    public T150206Thread(GateEntity entity, DeLiIfc deliIfc, DeliController deliController) {
        this.entity = entity;
        this.deliIfc = deliIfc;
        this.deliController = deliController;
    }
    @Override
    public void run() {
        try {
            SpObserver.setDBtoInstance("_" + entity.getDbid());
            Task task = checkPoint(entity, TASKID);
            //满足条件才执行
            if (task != null && task.getResult() == 1) {
                this.deliIfc.getDeliCvent(entity);
                T150201Entity result = this.deliIfc.getT150206(entity.getDocCode(),task,entity.getDbid());
                if (result != null) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    DeliCallBackMessage callBackMessage=JSON.parseObject(msg,DeliCallBackMessage.class);
                        if(callBackMessage.getState()==0) {
                            callBackMessage.setMsg("推送成功");
                        }
                        List<DeliCallBackMessage> list=new ArrayList<>();
                        list.add(callBackMessage);
                    updateState(list,result);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            deliController.sendErrorLog(entity.getFormid(), entity.getDocCode(), ex);
            log.error(ex.getMessage());
        } finally {
            SpObserver.setDBtoInstance();
        }
    }
    private   void updateState(List<DeliCallBackMessage> callBackMessages, T150201Entity t150201Entity) {
        if (callBackMessages != null && callBackMessages.size() > 0) {
            List<T110562Entity> t110562Entities = new ArrayList<>();
            StringBuilder sb=new StringBuilder();
            for (DeliCallBackMessage deliCallBackMessage : callBackMessages) {
                                t110562Entities.add(new T110562Entity(150206,
                                        t150201Entity.getDocCode(),
                                        10,
                                        null,
                                        null,
                                        null,
                                        null,
                                        null,
                                        0,
                                        0,
                                        0,
                                        null,
                                        null,
                                        t150201Entity.getHDMemo(),
                                        deliCallBackMessage.getState(),
                                        1,
                                        deliCallBackMessage.getMsg()
                                ));
                                //更新到对应单据表
                                sb.append(" set nocount on \n update a set a.DeLi_PushStatus="+(deliCallBackMessage.getState()==0?1:0)+",a.DeLi_PushDate=getdate(),a.DeLi_PushTimes=isnull(a.DeLi_PushTimes,0)+1,a.DeLi_PushMsg='"+deliCallBackMessage.getMsg()+"'  from t150206H a where a.doccode='"+t150201Entity.getDocCode()+"'\n");
            }
            try {
                SpObserver.setDBtoInstance("_"+entity.getDbid());
                PostDataBaseService mPostDataBaseService= (PostDataBaseService)FactoryBean.getBean("postDataBaseService");
                int  updateCount =  mPostDataBaseService.getSimpleJdbcTemplate().queryForObject(sb.toString() + "  \n select @@rowcount;", Integer.class);
                if(updateCount<=0){
                    log.error("德立预付款单-->更新出错【"+sb.toString()+"】");
                }
                 mPostDataBaseService.doLogBy110562(t110562Entities);
                    String docCode=t150201Entity.getDocCode();
                    String rowid=null;
                    mPostDataBaseService.doLogBy110565(new T110565Entity(
                            150206,
                            docCode,
                            rowid,
                            "推送预付款单150206",
                            GridUtils.toJson(t150201Entity)
                    ));
            }catch (Exception ex){
                log.error("德立预付款单-->"+ex.getMessage());
            }finally {
                SpObserver.setDBtoInstance();
            }
        }
    }
}
src/com/yc/open/deli/schedule/v2/T170139Thread.java
@@ -48,7 +48,7 @@
                List<T170139Entity> result = this.deliIfc.getT170139List(entity.getDocCode(),task,entity.getDbid());
                if (result != null && result.size() > 0) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity.getDbid());
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    List<DeliCallBackMessage> callBackMessage=JSON.parseArray(msg,DeliCallBackMessage.class);
                    callBackMessage= callBackMessage.stream().map(x->{
src/com/yc/open/deli/schedule/v2/T640109Thread.java
@@ -45,7 +45,7 @@
                List<T640109Entity> result = this.deliIfc.getT640109(entity.getDocCode(),task);
                if (result != null && result.size() > 0) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity.getDbid());
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    List<DeliCallBackMessage> callBackMessage=JSON.parseArray(msg,DeliCallBackMessage.class);
                    callBackMessage= callBackMessage.stream().map(x->{
src/com/yc/open/deli/schedule/v2/T640115Thread.java
@@ -48,7 +48,7 @@
                T640115Entity result = this.deliIfc.getT640115(entity.getDocCode(), task, entity.getDbid());
                if (result != null) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity.getDbid());
                    String url = task.getApiUrl() + deliController.getSignByDeLi(task, data, entity);
                    String msg = deliController.doPostByParameter(url, data);
                    DeliCallBackMessage callBackMessage = JSON.parseObject(msg, DeliCallBackMessage.class);
                    if (callBackMessage != null) {
src/com/yc/open/deli/schedule/v2/T640201Thread.java
@@ -45,7 +45,7 @@
                List<T640201Entity> result = this.deliIfc.getT640201List(entity.getDocCode(),task);
                if (result != null && result.size() > 0) {
                    String data = GridUtils.toJson(result);
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity.getDbid());
                    String url = task.getApiUrl()+ deliController.getSignByDeLi(task,data,entity);
                    String msg= deliController.doPostByParameter(url, data);
                    List<DeliCallBackMessage> callBackMessage=JSON.parseArray(msg,DeliCallBackMessage.class);
                    callBackMessage= callBackMessage.stream().map(x->{
src/com/yc/open/deli/service/v2/DeLiIfc.java
@@ -70,11 +70,11 @@
    public CanelEntity getCanelEntityByTableName(String hdtable,String dttable,String doccode,int formid);
    Integer bindUserAccount(DataSourceEntity dataSource);
    Integer unbindUserAccount(DataSourceEntity dataSource);
    Integer bindUserAccount(Map map,String userCode);
    Integer unbindUserAccount(String userCode);
    T150201Entity getT150201(String docCode, Task task,String dbid);
    T150201Entity getT150206(String docCode, Task task,String dbid);
    T640115Entity getT640115(String docCode, Task task,String dbid);
    Get640115Entity getT640115V2(GateEntity entity, Task task);
src/com/yc/open/deli/service/v2/DeLiImplV2.java
@@ -1445,6 +1445,7 @@
                " and   a.DocStatus=@mydocStatus \n" +
                " and   a.DocCode=@myDocCode \n" +
                " and isnull(e.vndcode,'') = @DefaultVndCode \n" +
                " and exists(select 1 from t120201D t where t.doccode=b.SoDoccode and isnull(t.DeLi_PushStatus,0)=1) \n" +
                " order by a.doccode asc,b.DocItem asc \n" +
                " open mycurDeli \n" +
                " fetch next from mycurDeli into @docCode,@docDate,@docType,@factoryNumber,\n" +
@@ -2178,14 +2179,14 @@
    @Override
    @Transactional
    public Integer bindUserAccount(DataSourceEntity dataSource) {
        return this.jdbcTemplate.update("set nocount  on \n update a set a.DeliUserCode =? , a.DeliUserId =? from gsystem a where id=?", dataSource.getDeliUserCode(), dataSource.getDeliUserId(), dataSource.getDbId());
    public Integer bindUserAccount(Map map,String userCode) {
        return this.jdbcTemplate.update("set nocount  on \n update a set a.DeliUserCode =? , a.DeliUserId =?,a.DeLiCShopCode=?,a.DeLiCShopName=? from _sysuser a where a.userCode=?", map.get("userName"), map.get("outUserID"), map.get("ccCode"), map.get("ccName"),userCode);
    }
    @Override
    @Transactional
    public Integer unbindUserAccount(DataSourceEntity dataSource) {
        return this.jdbcTemplate.update("set nocount  on \n update a set a.DeliUserCode =null , a.DeliUserId =null from gsystem a where id=?", dataSource.getDbId());
    public Integer unbindUserAccount(String userCode) {
        return this.jdbcTemplate.update("set nocount  on \n update a set a.DeliUserCode =null , a.DeliUserId =null,a.DeLiCShopCode=null,a.DeLiCShopName=null from _sysuser a where a.userCode=?", userCode);
    }
    @Override
@@ -2258,4 +2259,73 @@
        }
        return t150201Entity;
    }
    @Override
    public T150201Entity getT150206(String docCode, Task task, String dbid) {
        List<T150201TempEntity> list = this.jdbcTemplate.query("set nocount  on \n" +
                " declare @DefaultVndCode varchar(50),@DefaultVndName varchar(50) \n" +
                " select top 1 @DefaultVndCode = a.DefaultVndCode ,@DefaultVndName = b.vndName \n" +
                " from t110561 a left join t110302 b on a.DefaultVndCode = b.vndCode \n" +
                " if isnull(@DefaultVndCode,'') = '' \n" +
                " begin \n" +
                "    raiserror('请在 110561 功能号中维护【缺省供应商编号】',16,1) \n" +
                "    return \n" +
                "  end \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,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 t150206H b \n" +
                "  left join _sys_loginuser c on c.usercode=replace(b.CurChecked,',','') \n" +
                "  left join t150348 d on d.Doccode=b.DocCode \n" +
                "  where b.DocCode=? and isnull(b.VndCode,'')=@DefaultVndCode", new BeanPropertyRowMapper(T150201TempEntity.class), docCode);
        T150201Entity t150201Entity = null;
        if (list != null && list.size() > 0) {
            t150201Entity = new T150201Entity();
            List<T150348Entity> t150348Entities = new ArrayList<>();
            int i = 0;
            for (T150201TempEntity x : list) {
                List<DeliFileEntity> uploads = new ArrayList<>();
                T150348Entity t150348Entity = new T150348Entity();
                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);
                    if (attachmentInfo != null && attachmentInfo.size() > 0) {
                        for (AttachmentEntity entity : attachmentInfo) {
                            DeliFileEntity deliFileEntity=new DeliFileEntity();
                            String url = AttachmentConfig.get("attachment.server") + "/uploads/attachment/" + dbid + "/" + entity.getFormid() + "/" + entity.getUnid() + "@p@" + entity.getSeq() + "." + entity.getFileType();
                            deliFileEntity.setUrl(url);
                            deliFileEntity.setFileName(entity.getOriginalFileName());
                            uploads.add(deliFileEntity);
                        }
                    }
                    t150348Entity.setUploads(uploads);
                }else {
                    t150348Entity.setUploads(new ArrayList<DeliFileEntity>());
                }
                t150348Entities.add(t150348Entity);
                if (i == 0) {
                    t150201Entity.setDocCode(x.getDocCode());
                    t150201Entity.setDocDate(x.getDocDate());
                    t150201Entity.setCcCode(x.getCcCode());
                    t150201Entity.setCcName(x.getCcName());
                    t150201Entity.setVndCode(x.getVndCode());
                    t150201Entity.setVndName(x.getVndName());
                    t150201Entity.setHDMemo(x.getHDMemo());
                    t150201Entity.setTotalAmount(x.getTotalAmount());
                    t150201Entity.setBankCode(x.getBankCode());
                    t150201Entity.setBankName(x.getBankName());
                    t150201Entity.setBankAccount(x.getBankAccount());
                    t150201Entity.setRemitter(x.getRemitter());
                    t150201Entity.setRemitterTel(x.getRemitterTel());
                }
                i++;
            }
            ;
            t150201Entity.setRemittanceList(t150348Entities);
        }
        return t150201Entity;
    }
}
src/com/yc/open/mutual/schedule/Gate.java
@@ -10,6 +10,7 @@
import com.yc.open.mutual.entity.OnlineMessageEntity;
import com.yc.open.ufida.schedule.UfIdaGate;
import com.yc.open.wms.schedule.WMSThread;
import com.yc.service.impl.BaseDoIfc;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,7 +26,8 @@
    protected final Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    ThreadPoolTaskExecutor threadPoolExecutor;
    @Autowired
    BaseDoIfc baseDoIfc;
    public void enterGate(GateEntity entity) throws Exception{
        DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(entity.getDbid());
        //不是OA审核按钮不执行
@@ -35,6 +37,8 @@
        threadPoolExecutor.execute(new MutualThread(entity));
        //----德立推送
        if("deli".equalsIgnoreCase(dataSourceEntity.getDockingSystem())) {
            //推送前判断相关配置是否正确
            checkDeliConfig(entity);
            threadPoolExecutor.execute(new DeliThread(entity));
        }
        //----订货帮
@@ -67,4 +71,57 @@
    public void enterGateByOnlineMessages(OnlineMessageEntity entity) throws Exception{
        threadPoolExecutor.execute(new OnLineMessagesThread(entity));
    }
    private  void checkDeliConfig(GateEntity entity){
        //TODO 德立新增推送需要在这里增加相关的功能号
        if(!";130301;120201;170139;640109;640201;150201;640115;150206;".contains(";"+entity.getFormid()+";")) {
            return;//不是推送的功能号不执行检查
        }
        DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(entity.getDbid());
        String sql="declare @UserCode varchar(50) = '"+entity.getUserCode()+"',@cVenCode varchar(20) = '"+dataSourceEntity.getSystemAccessKey()+"'\n" +
                "declare @UserName varchar(80),@CcCode varchar(20),@CcName varchar(50)\n" +
                "declare @DeLiUserCode varchar(50),@DeLiUserId varchar(50)\n" +
                "declare @DeLiCShopCode varchar(50),@DeLiCShopName varchar(80)\n" +
                "declare @CShopCode varchar(50),@CShopName varchar(80),@TempCcCode varchar(20)\n" +
                "declare @Msg varchar(2000)='',@State int = 0\n" +
                "select @UserName = a.UserName,@CcCode = a.CcCode ,@CcName = b.ccName,\n" +
                "  @DeLiCShopCode=a.DeLiCShopCode,@DeLiCShopName=a.DeLiCShopName,\n" +
                "  @DeLiUserCode = a.DeLiUserCode,@DeLiUserId = a.DeLiUserId\n" +
                "from _sysUser a \n" +
                "left join t110601 b on a.cccode = b.ccCode\n" +
                "where a.UserCode = @UserCode \n" +
                "if @@ROWCOUNT = 0\n" +
                "begin\n" +
                "  select @Msg = '不存在ERP系统登录用户【'+isnull(@UserCode,'')+ '】'\n" +
                "  raiserror(@Msg,16,1)\n" +
                "  return\n" +
                "end \n" +
                "if isnull(@DeLiUserCode,'') = '' or isnull(@DeLiUserId,'') = ''\n" +
                "begin\n" +
                "  select @Msg = '当前用户【'+ isnull(@UserName,'') + '】还未绑定德立营销系统,请先绑定然后再重试此操作!'\n" +
                "  raiserror(@Msg,16,1)\n" +
                "  return\n" +
                "end \n" +
                "select @CShopCode = CShopCode,@CShopName =CShopName ,@TempCcCode = CcCode\n" +
                "from t110606 where @cVenCode = cVenCode and CShopCode = @DeLiCShopCode \n" +
                "if @@ROWCOUNT = 0\n" +
                "begin\n" +
                "  insert into t110606(ccCode,ccName,cVenCode,cVenName,cShopCode,cshopName)\n" +
                "  values(@CcCode,@CcName,@cVenCode,'',@DeLiCShopCode,@DeLiCShopName)\n" +
                "  select @TempCcCode = @CcCode,@CShopCode=@CcCode,@CShopName = @CcName\n" +
                "end\n" +
                "if isnull(@TempCcCode,'') = ''\n" +
                "begin\n" +
                "  update a set CcCode = @CcCode from t110606 a \n" +
                "  where @cVenCode = cVenCode and CShopCode = @DeLiCShopCode \n" +
                "  set @TempCcCode = @CcCode \n" +
                "end \n" +
                "if isnull(@TempCcCode,'') <> isnull(@CcCode,'')\n" +
                "begin\n" +
                "  select @Msg = 'ERP系统中的门店与德立系统中门店名称不一致,以下任一方法均可解决:1.将ERP系统中所属门店改为【'+isnull(@CShopName,'')+'】;2.登录德立营销系统,修改所属门店为【'+isnull(@CcName,'') + '】。修改完成后请再重试此操作!'\n" +
                "  raiserror(@Msg,16,1)\n" +
                "  return\n" +
                "end";
                baseDoIfc.doExecute(sql);
    }
}