package com.yc.open.deli.controller; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import com.yc.action.grid.GridUtils; import com.yc.entity.DataSourceEntity; import com.yc.exception.ApplicationException; import com.yc.exception.CallBackMessage; import com.yc.factory.FactoryBean; import com.yc.multiData.MultiDataSource; import com.yc.multiData.SpObserver; import com.yc.open.controller.BaseController; import com.yc.open.deli.entity.*; import com.yc.open.deli.service.PostDataBaseService; import com.yc.open.deli.service.v2.DeLiIfc; import com.yc.open.init.Task; import com.yc.open.utils.ApiUtils; import com.yc.open.utils.CallBackMessageToObject; import com.yc.sdk.weixinmp.util.MD5Util; import com.yc.service.build.type.T_22_Ifc; import com.yc.service.panel.SqlDBHelperIfc; import com.yc.utils.SessionKey; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; 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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLDecoder; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import static java.util.stream.Collectors.joining; /** * 德立相关的接口 */ @RestController public class DeliController extends BaseController { @Autowired T_22_Ifc t22ifc ; @Autowired SqlDBHelperIfc mSqlDBHelperIfc; @Autowired DeLiIfc mDeLiIfc; @Autowired PostDataBaseService mPostDataBaseService; final Logger log = LoggerFactory.getLogger(this.getClass()); /** * 生成数字签名及相关的公共参数 * @param request * @return URl的query字符串 */ public String getSignByDeLi(Task task, String data,String dbid) throws Exception { ConcurrentHashMap concurrentHashMap=new ConcurrentHashMap(); //post需要提交的数据 if(data!=null) { concurrentHashMap.putIfAbsent("data", data); } long timestamp= Calendar.getInstance().getTimeInMillis(); String nonce= org.apache.commons.lang.RandomStringUtils.randomAlphanumeric(5); concurrentHashMap.putIfAbsent("timestamp",timestamp+""); concurrentHashMap.putIfAbsent("nonce",nonce); //取accesskey,secretkey DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(dbid); String accessKey=dataSourceEntity.getSystemAccessKey(); String outUserID=dataSourceEntity.getDeliUserId(); concurrentHashMap.putIfAbsent("outUserID",outUserID); concurrentHashMap.putIfAbsent("accesskey",MD5Util.string2MD5(accessKey)); String sign= ApiUtils.SignRequest(concurrentHashMap,task.getAppSecret()); concurrentHashMap.putIfAbsent("sign",sign); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("?timestamp").append("=") .append(concurrentHashMap.get("timestamp")).append("&") .append("nonce").append("=") .append(concurrentHashMap.get("nonce")).append("&") .append("accesskey").append("=") .append(concurrentHashMap.get("accesskey")).append("&") .append("outUserID").append("=") .append(concurrentHashMap.get("outUserID")).append("&") .append("sign").append("=") .append(concurrentHashMap.get("sign")); return stringBuilder.toString(); } /** * 与德立营销系统对接的德立代理商 * @return */ @RequestMapping(value="/open/deli/getAgents.do", method = RequestMethod.GET) public @ResponseBody Object callback(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); Map infoList = MultiDataSource.getDataSourceMaps(); String ids= infoList.entrySet().stream().filter(x->"deli".equalsIgnoreCase(x.getValue().getDockingSystem())).map(x->x.getValue().getSystemAccessKey()).collect(joining("','")); try{ Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_"+dbid);//onbus.onbus.cn List> list= mPostDataBaseService.getAgents("'"+ids+"'"); return list; }catch (Exception ex){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } //-----------------------------接收德立传回来的数据----------------------------- /** * 获取电商平台等客户订单信息 * 由德立营销系统推送电商平台等客户写入巴士软件客户资料表,包含客户基本信息、已收金额、客户要求、门店信息 * @return */ @RequestMapping(value="/open/deli/customer/pull.do", method = RequestMethod.POST) public @ResponseBody Object pullCustomerInfo(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); //取到data数据,处理后更新到系统 String data=null; try { data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收电商平台订单数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); List deLi110203Entities=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken>() {}.getType() ); if(deLi110203Entities!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(120201, "", "", "接收第三方订单", data)); List results = mPostDataBaseService.do120220(deLi110203Entities); return callBackMessageToObject.setData(results).sendSuccessMessage("接收成功"); }else{ throw new ApplicationException("data内容为空"); } }catch (Exception ex){ try{ mPostDataBaseService.doLogBy110565(new T110565Entity(120201, "", "", "接收第三方订单", this.getErrorMsg(ex)+"【"+data+"】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 获取采购物料价格 * 由德立营销系统把采购物料价格反馈给巴士软件 * @return */ @RequestMapping(value="/open/deli/purchase/getprice.do", method = RequestMethod.POST) public @ResponseBody Object pullPrice(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); String data=null; //取到data数据,处理后更新到系统 try{ data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收采购物料价格数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); DeLiPriceEntity deLiPriceEntity=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken() {}.getType() ); if(deLiPriceEntity!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(130301, deLiPriceEntity.getDoccode(), deLiPriceEntity.getRowid(), "接收采购物料价格", data)); List results = mPostDataBaseService.doPrices(deLiPriceEntity); if (results != null && results.size() > 0) { return callBackMessageToObject.setData(results).sendSuccessMessage("接收成功"); } else { throw new ApplicationException("更新不成功"); } }else{ throw new ApplicationException("接收data数据为空"); } }catch (Exception ex){ try{ mPostDataBaseService.doLogBy110565(new T110565Entity(130301, "", "", "接收采购物料价格", this.getErrorMsg(ex)+"【"+data+"】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(ex.getMessage()); }finally { SpObserver.setDBtoInstance(); } } /** * 获取收款单 * 由德立营销系统把收款单反馈给巴士软件 * @return */ @RequestMapping(value="/open/deli/receivables/pull.do", method = RequestMethod.POST) public @ResponseBody Object pullReceivables(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); String data=null; //取到data数据,处理后更新到系统 try{ data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收收款单数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); DeLi150101Entity deLi150101Entity=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken() {}.getType() ); if(deLi150101Entity!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(150101, deLi150101Entity.getDoccode(), deLi150101Entity.getRowid(), "接收收款单", data)); List result = mPostDataBaseService.do150101(deLi150101Entity); return callBackMessageToObject.setData(result).sendSuccessMessage("接收成功"); }else{ throw new ApplicationException("接收data数据为空"); } }catch (Exception ex){ ex.printStackTrace(); try{ mPostDataBaseService.doLogBy110565(new T110565Entity(150101, "", "", "接收收款单", this.getErrorMsg(ex)+"【"+data+"】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 获取采购物料生产进度 * 由德立营销系统把采购物料生产进度反馈给巴士软件 * @return */ @RequestMapping(value="/open/deli/purchase/schedule.do", method = RequestMethod.POST) public @ResponseBody Object pullPurchaseSchedule(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); String data=null; //取到data数据,处理后更新到系统 try{ data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收采购物料生产进度数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); Deli130361ScheduleEntity deli130361ScheduleEntity=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken() {}.getType() ); if(deli130361ScheduleEntity!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(130361, deli130361ScheduleEntity.getSoDocCode(), deli130361ScheduleEntity.getSORowid(), "接收采购物料生产进度", data)); List result = mPostDataBaseService.do130361(deli130361ScheduleEntity); return callBackMessageToObject.setData(result).sendSuccessMessage("接收成功"); }else{ throw new ApplicationException("接收data数据为空"); } }catch (Exception ex){ try { mPostDataBaseService.doLogBy110565(new T110565Entity(130361, "", "", "接收采购物料生产进度", this.getErrorMsg(ex) + "【" + data + "】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 获取发货单明细 * 由德立营销系统把发货单反馈给巴士软件 * @return */ @RequestMapping(value="/open/deli/goods.do", method = RequestMethod.POST) public @ResponseBody Object pullGoods(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); String data=null; //取到data数据,处理后更新到系统 try{ data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收发货单数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); DeliGoods_DetailEntity deliGoods_detailEntity=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken() {}.getType() ); if(deliGoods_detailEntity!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(130362, deliGoods_detailEntity.getDoccode(), deliGoods_detailEntity.getRowid(), "接收发货单明细", data)); List result = mPostDataBaseService.doGoods(deliGoods_detailEntity); return callBackMessageToObject.setData(result).sendSuccessMessage("接收成功"); }else { throw new ApplicationException("接收data数据为空"); } }catch (Exception ex){ try{ mPostDataBaseService.doLogBy110565(new T110565Entity(130362, "", "", "接收发货单明细", this.getErrorMsg(ex)+"【"+data+"】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 获取发生产单号 * 由德立营销系统把生产单号反馈给巴士软件 * @return */ @RequestMapping(value="/open/deli/productCodes.do", method = RequestMethod.POST) public @ResponseBody Object pullProductCodes(HttpServletRequest request){ CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); String data=null; //取到data数据,处理后更新到系统 try{ data=URLDecoder.decode(request.getParameter("data"),"utf-8"); log.info("接收发生产单号数据:"+data); Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); SpObserver.setDBtoInstance("_" + dbid); List deLiProductCodeEntity=new Gson().fromJson(data,new com.google.gson.reflect.TypeToken>() {}.getType() ); if(deLiProductCodeEntity!=null) { mPostDataBaseService.doLogBy110565(new T110565Entity(140101, deLiProductCodeEntity.get(0).getSOdocCode(), deLiProductCodeEntity.get(0).getSOrowid(), "接收生产单号", data)); List result = mPostDataBaseService.doProductCodes(deLiProductCodeEntity); return callBackMessageToObject.setData(result).sendSuccessMessage("接收成功"); }else { throw new ApplicationException("接收data数据为空"); } }catch (Exception ex){ try{ mPostDataBaseService.doLogBy110565(new T110565Entity(140101, "", "", "接收生产单号", this.getErrorMsg(ex)+"【"+data+"】")); }catch (Exception ex1){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex1)); } return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } //-----------------------------接收德立传回来的数据----------------------------- //-----------------------------------页面调用----------------------- /** * 手动接收代理商资料,统一在onbus.onbus.cn这个系统处理,因为是取所有的代理商 * 从德立营销系统把代理商资料表拉取给巴士软件 * @return */ @RequestMapping(value="/deli/cvent/pull.do", method = RequestMethod.POST) public @ResponseBody Object pullCventInfo(HttpServletRequest request, HttpServletResponse response){ CallBackMessageToObject callMsg =new CallBackMessageToObject(); try { Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID); DeliController baseController = FactoryBean.getBean(DeliController.class); request.setAttribute("isPublic",1); //生成签名 String query = baseController.getSignByRequest(request, null, dbid+""); //拉取代理商数据,取得返回信息 String msgs=baseController.doPostByParameter(Constant.CVENTS_URL + query, null); CallBackMessageToObject callBackMessageToObject =null; callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken() {}.getType() ); if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){ return callMsg.sendErrorMessage(callBackMessageToObject.getMsg()); } if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){ return callMsg.sendSuccessMessage("返回数据结果为空"); } List data=new Gson().fromJson(GridUtils.toJson(callBackMessageToObject.getData()),new com.google.gson.reflect.TypeToken>() {}.getType() ); SpObserver.setDBtoInstance("_" + dbid); boolean flag= mPostDataBaseService.doAgent(data); if(flag) { return callMsg.sendSuccessMessage("成功拉取数据"); }else{ return callMsg.sendSuccessMessage("拉取数据出错"); } }catch (Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * * 与德立营销系统账号进行绑定 * @return */ @RequestMapping(value="/deli/bindUserAccount.do", method = RequestMethod.GET) public @ResponseBody Object bindUserAccount(String userName,String userPass,HttpServletRequest request, HttpServletResponse response){ CallBackMessageToObject callMsg =new CallBackMessageToObject(); try { if(StringUtils.isBlank(userName)){ throw new ApplicationException("账号不能为空"); } if(StringUtils.isBlank(userPass)){ throw new ApplicationException("密码不能为空"); } Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID); DeliController baseController = FactoryBean.getBean(DeliController.class); UserAccountEntity userAccountEntity=new UserAccountEntity(); userAccountEntity.setUserPass(userPass); userAccountEntity.setUserName(userName); String data= JSON.toJSONString(userAccountEntity); //生成签名 String query = baseController.getSignByRequest(request, data, dbid+""); //拉取代理商数据,取得返回信息 String msgs=baseController.doPostByParameter(Constant.BIND_USERACCOUNT_URL + query, data); CallBackMessageToObject callBackMessageToObject =null; callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken() {}.getType() ); if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){ return callMsg.sendErrorMessage(callBackMessageToObject.getMsg()); } 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); return callMsg.sendSuccessMessage("绑定成功"); }catch(Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } }catch (Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * * 与德立营销系统账号进行绑定 * @return */ @RequestMapping(value="/deli/unbindUserAccount.do", method = RequestMethod.GET) public @ResponseBody Object unbindUserAccount(String userName,String userPass,HttpServletRequest request, HttpServletResponse response){ CallBackMessageToObject callMsg =new CallBackMessageToObject(); try { if(StringUtils.isBlank(userName)){ throw new ApplicationException("账号不能为空"); } if(StringUtils.isBlank(userPass)){ throw new ApplicationException("密码不能为空"); } Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID); DeliController baseController = FactoryBean.getBean(DeliController.class); UserAccountEntity userAccountEntity=new UserAccountEntity(); userAccountEntity.setUserPass(userPass); userAccountEntity.setUserName(userName); String data= JSON.toJSONString(userAccountEntity); //生成签名 String query = baseController.getSignByRequest(request, data, dbid+""); //拉取代理商数据,取得返回信息 String msgs=baseController.doPostByParameter(Constant.UNBIND_USERACCOUNT_URL + query, data); CallBackMessageToObject callBackMessageToObject =null; callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken() {}.getType() ); if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){ return callMsg.sendErrorMessage(callBackMessageToObject.getMsg()); } 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); return callMsg.sendSuccessMessage("解绑成功"); }catch(Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } }catch (Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 手动接门店资料 * 从德立营销系统把门店资料表拉取给巴士软件 * @return */ @RequestMapping(value="/deli/customer/stores.do", method = RequestMethod.POST) public @ResponseBody Object pullShoppingInfo(HttpServletRequest request, HttpServletResponse response){ CallBackMessageToObject callMsg =new CallBackMessageToObject(); CallBackMessageToObject callBackMessageToObject =null; try { Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID); DeliController baseController = FactoryBean.getBean(DeliController.class); final DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(dbid + ""); if("".equals(dataSourceEntity.getSystemAccessKey())){ return callMsg.sendSuccessMessage("未设置代理商编码或数据源还没同步更新代理商编码设置"); } Map keyMap=new HashMap(); keyMap.put("venCode",dataSourceEntity.getSystemAccessKey()); //代理商编码 request.setAttribute(ApiUtils.MAP_OBJECT, keyMap); //生成签名 String query = baseController.getSignByRequest(request, null, dbid+""); //拉取门店数据,取得返回信息 String msgs=baseController.doPostByParameter(Constant.SHOPPING_URL + query+"&venCode="+dataSourceEntity.getSystemAccessKey(), null); callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken() {}.getType() ); if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){ return callMsg.sendErrorMessage(callBackMessageToObject.getMsg()); } if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){ return callMsg.sendSuccessMessage("拉取不到代理商【"+dataSourceEntity.getSystemAccessKey()+"】的门店数据"); } List data=new Gson().fromJson(GridUtils.toJson(callBackMessageToObject.getData()),new com.google.gson.reflect.TypeToken>() {}.getType() ); SpObserver.setDBtoInstance("_" + dbid); boolean flag= mPostDataBaseService.do110606(data); if(flag) { return callMsg.sendSuccessMessage("成功拉取数据"); }else{ return callMsg.sendSuccessMessage("拉取数据出错"); } }catch (Exception ex){ return callMsg.sendErrorMessage(this.getErrorMsg(ex)); }finally { SpObserver.setDBtoInstance(); } } /** * 手动接收产品列表 * 把产品更新到属于德立的代理商系统 * 从德立营销系统把产品列表拉取到巴士软件 * @return */ @RequestMapping(value="/deli/products/pull.do", method = RequestMethod.POST) public @ResponseBody Object pullProductsInfo(HttpServletRequest request, HttpServletResponse response){ CallBackMessageToObject callMsg =new CallBackMessageToObject(); CallBackMessageToObject callBackMessageToObject =null; try { DeliController baseController = FactoryBean.getBean(DeliController.class); Object dbid = request.getSession().getAttribute(SessionKey.DATA_BASE_ID); //生成签名 String query = baseController.getSignByRequest(null, null, dbid+""); //拉取产品数据,取得返回信息 String msgs=baseController.doPostByParameter(Constant.PRODUCTS_URL + query, null); callBackMessageToObject =new Gson().fromJson(msgs,new com.google.gson.reflect.TypeToken() {}.getType() ); if(callBackMessageToObject==null||callBackMessageToObject.getState()==-1){ return callMsg.sendErrorMessage(callBackMessageToObject.getMsg()); } if("{}".equals(callBackMessageToObject.getData())&&callBackMessageToObject.getState()==0){ return callMsg.sendSuccessMessage("找不到数据"); } List data=new Gson().fromJson(GridUtils.toJson(callBackMessageToObject.getData()),new com.google.gson.reflect.TypeToken>() {}.getType() ); try { SpObserver.setDBtoInstance("_" + dbid); mPostDataBaseService.doProduct(data); }finally { SpObserver.setDBtoInstance(); } return callMsg.sendSuccessMessage("成功拉取数据"); } catch (Exception ex) { ex.printStackTrace(); return callMsg.sendErrorMessage(this.getErrorMsg(ex)); } } /** * 初测单,复测单 * 巴士软件将初测单,复测单推送给德立营销系统 * @return */ @RequestMapping(value="/deli/measure/push.do", method = RequestMethod.POST) public @ResponseBody Object pushMeasureInfo(HttpServletRequest request, HttpServletResponse response){ //取当前dbid,查找 //获取 参数集 map CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); Map map = null ; try { DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request) ; SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId());//切换数据源 map = t22ifc.getParamMap(request); }catch (Exception e) { e.printStackTrace(); log.error(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); return callBackMessageToObject.sendErrorMessage(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); }finally { SpObserver.setDBtoInstance(); } //String formid=null;//功能号 String doccode=null; String docitem=null; String rowid=null; if (map != null) { doccode=map.get("doccode"); docitem=map.get("docitem"); rowid=map.get("rowid"); } if(log.isDebugEnabled()){ log.debug("通过22类型传进来组装也来的map:"+map.toString()); } StringBuilder stringBuilder=new StringBuilder(); if(doccode==null){ stringBuilder.append("\n单号不能为空"); } if(docitem==null){ stringBuilder.append("\n行号不能为空"); } if(rowid==null){ stringBuilder.append("\nrowid不能为空"); } if(stringBuilder.length()>0){ return callBackMessageToObject.sendErrorMessage(stringBuilder.toString()); } Object dbid= request.getSession().getAttribute(SessionKey.DATA_BASE_ID); //读取客户资料 try{ SpObserver.setDBtoInstance("_"+dbid); T640109Entity t640109Entity = mDeLiIfc.getT640109(doccode,docitem,rowid); String data=GridUtils.toJson(t640109Entity); //request.setAttribute("isPublic",1);//转换成公用key String query=this.getSignByRequest(request,data,null); String url=Constant.T640109_PUSH_NEW_URL; if("复测".equals(t640109Entity.getCustomer().getDocType())){ url= Constant.T640110_PUSH_NEW_URL; } String msg = this.doPostByParameter(url+query,data); //根据返回的url,生成ERP系统能识别自动打开的格式,返回到前端 CallBackMessage callBackMessage=new Gson().fromJson(msg,new com.google.gson.reflect.TypeToken() { }.getType() ); if(callBackMessage.getState()==-1){ //出错返回信息 return callBackMessageToObject.sendErrorMessage(callBackMessage.getMsg()); } callBackMessage.setState(0); callBackMessage.setData("open.callBack|"+Constant.HOST+callBackMessage.getData()); return callBackMessage.sendSuccessMessage(""); }catch (DataAccessException e){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(e)); }catch (Exception e){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(e)); } finally { SpObserver.setDBtoInstance(); } } //--------------------------------------end页面调用---------------------------------- //-------------------------------其他------------------------- //保存取消确认数据到日志表 private void postCanelLog(int formid,String url,String query,String data){ PostDataBaseService postDataBaseService= (PostDataBaseService) FactoryBean.getBean("postDataBaseService"); List list=new ArrayList<>(); //一个功能号只生成一条运行时出错日志 String docCode=""; if(!"".equals(data)){ Map map=GridUtils.fromJson(data); docCode=map.get("docCode")==null?"":map.get("docCode")+""; } list.add(new T110562Entity(formid,docCode,0, RandomStringUtils.randomAlphanumeric(6),"","","","",0,0,0,"","","推送取消确认",1,1,url+query+"【"+data+"】")); try { postDataBaseService.doLogBy110562(list); } catch (Exception e) { e.printStackTrace(); } } /** * 调用取消确认接口 * @param request * @param map * @param api * @return */ public boolean postDataToExternalURL(HttpServletRequest request,CanelEntity canelEntity,String api){ try{ String data=GridUtils.toJson(canelEntity); String query=this.getSignByRequest(request,data,null); String url=Constant.HOST+api; log.info("############start 取消确认###############"); log.info("准备推送的URL:"+url); log.info("准备推送的参数:"+query); log.info("准备推送的data:"+data); log.info("##############end#############"); //保存取消确认数据到日志表 int formid=0; if(request.getAttribute("canelFormid")!=null) { formid=Integer.valueOf(request.getAttribute("canelFormid")+""); } this.postCanelLog(formid,url,query,data); String msg = this.doPostByParameter(url+query,data); //根据返回的url,生成ERP系统能识别自动打开的格式,返回到前端 CallBackMessage callBackMessage=new Gson().fromJson(msg,new com.google.gson.reflect.TypeToken() { }.getType() ); if(callBackMessage.getState()==-1){ //出错返回信息 throw new ApplicationException(callBackMessage.getMsg()); } return true; }catch (DataAccessException e){ throw new ApplicationException(this.getErrorMsg(e)); }catch (Exception e){ throw new ApplicationException(this.getErrorMsg(e)); } } /** * 不使用 * 推送客户资料,用于手动推送, * 巴士软件将客户资料表推送给德立营销系统,包含客户基本信息、客户要求、门店信息 * @return */ @RequestMapping(value="/deli/customer/push.do", method = RequestMethod.POST) public @ResponseBody Object pushCustomerInfo(HttpServletRequest request, HttpServletResponse response){ //取当前dbid,查找 //获取 参数集 map Object dbid= request.getAttribute(SessionKey.SHOPPING_DBID); CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); Map map = null ; try { DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request) ; SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId());//切换数据源 map = t22ifc.getParamMap(request); }catch (Exception e) { e.printStackTrace(); log.error(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); return callBackMessageToObject.sendErrorMessage(e.getCause()!=null? e.getCause().getMessage():e.getMessage()); }finally { SpObserver.setDBtoInstance(); } //String formid=null;//功能号 String ctlCode=null;//客户编号,可以为空,1个或多个 if (map != null) { ctlCode=map.get("cltcode"); } // formid=request.getParameter("formid"); // if(formid==null){ // return callBackMessageToObject.sendErrorMessage("功能号不能为空"); // } if(ctlCode==null){ if(log.isDebugEnabled()){ log.error("通过22类型传进来组装也来的map:"+map.toString()); } return callBackMessageToObject.sendErrorMessage("客户编号不能为空"); } //读取客户资料 try{ SpObserver.setDBtoInstance("_"+dbid); List list = mDeLiIfc.getCustomerList(ctlCode); if(list==null){ return callBackMessageToObject.sendErrorMessage("没有符合条件的数据"); } String data=GridUtils.toJson(list); String query=this.getSignByRequest(request,data,null); String url="http://yingchen.onbus.cn:9001/open/postData.do";// TODO 正式发布时用AttachmentConfig.get("open.deli.customer.push.url"); String msg = this.doPostByParameter(url+query,data); return msg; }catch (DataAccessException e){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(e)); }catch (Exception e){ return callBackMessageToObject.sendErrorMessage(this.getErrorMsg(e)); } finally { SpObserver.setDBtoInstance(); } } // /** // * 接收门店资料 // * 德立营销系统把客户资料表推送给巴士软件,包含客户的accesskey和门店信息 // * @return // */ // @RequestMapping(value="/open/deli/customer/stores11111.do", method = RequestMethod.POST) // public @ResponseBody Object pullCustomerStores(HttpServletRequest request, HttpServletResponse response){ // CallBackMessageToObject callBackMessageToObject =new CallBackMessageToObject(); // // log.info("接收门店数据:"+request.getParameter("data")); // //取到data数据,处理后更新到系统 // List data=new Gson().fromJson(request.getParameter("data")+"",new com.google.gson.reflect.TypeToken>() {}.getType() ); // try { // Object dbid = request.getAttribute(SessionKey.SHOPPING_DBID); // CallBackService callBackService = (CallBackService) FactoryBean.getBean("callBackService"); // callBackService.process110601(data, dbid+ ""); // }catch (Exception ex){ // return callBackMessageToObject.sendErrorMessage(ex.getMessage()); // } // return callBackMessageToObject.sendSuccessMessage("接收成功"); // // } }