public static bool DataToFreshPort(s_log_errEntity log, out string strErr) { HddzIF serv = new HddzIF(); string tableName = log.tablename; string changeCols = log.changecols; string ID = log.mainid; string[] parameters = log.parameters == null ? null : log.parameters.Split(','); bool flag = false; //字段集合 List <interfieldEntity> colslist = new List <interfieldEntity>(); //接口集合 //List<string> interNames = new List<string>(); try { if (!string.IsNullOrEmpty(changeCols)) { colslist = Service.BaseService.GetField(tableName, changeCols.Split(',')); // interNames = GetIFlist(colslist); } //根据表名分别调用接口 switch (tableName) { case "yw_hddz": //货代单证 case "yw_hddz_jzxxx": //集装箱 case "yw_hddz_dzyq": //单证 yw_hddzEntity model = new Service.HddzService().GetModel(ID); if (model == null) { throw new Exception("表" + tableName + "没有找到主键为" + ID + "的货代单证"); } flag = HddzInterface(colslist, tableName, model, GetParameter(parameters, 0), serv); break; case "yw_hddz_sdzpgl_cmd": //运费 case "yw_hddz_sdzpgl": flag = serv.SynInternational(ID); break; case "yw_hddz_fksqd_cmd": //超期费+国际运费 case "yw_hddz_fksqd": yw_hddz_fksqdEntity fksqd = new Service.HddzService().GetFksqd(ID); if (fksqd == null) { throw new Exception("表" + tableName + "没有找到主键为" + ID + "的数据"); } flag = fksqdInterface(fksqd, serv); break; case "yw_hddz_ycyy": flag = serv.SynAbnormal(ID, GetParameter(parameters, 0), GetParameter(parameters, 1)); break; case "yw_hddz_kycd": //空运配货 cdphbm flag = serv.SynAirDistribution(ID); break; case "yw_hddz_tpcdxx": //空运配货分录 cdphbm flag = serv.SynAirDistributionItem(ID); break; case "yw_hddz_wlgz": //传入ywbh flag = serv.SynSeaBLByWlgz(ID, GetParameter(parameters, 0)); break; case "yw_hddz_yshdfygj_cmd": //case "yw_hddz_qtysk_cmd"://传入ywbh yw_hddzEntity hddz = new Service.HddzService().GetModel(ID); if (hddz == null) { throw new Exception("表" + tableName + "没有找到主键为" + ID + "的货代单证"); } flag = serv.SynFreightCosts(hddz, GetParameter(parameters, 0)); break; case "yw_hddz_sjzf": //报关税金 传入ywbh flag = serv.SynCustomsduty(ID); break; default: throw new Exception("没有找到" + tableName + "对应接口"); //break; } serv.LogInfo.SaveLogToDb(); strErr = serv.LogInfo.buildLogStr(); } catch (Exception ex) { strErr = ex.Message; flag = false; } try { log.sccssj = DateTime.Now; log.sfcg = flag ? 1 : 0; log.cscs++; log.errmsg = serv.LogInfo.buildLogStr(); Service.BaseService.UpdateErrLog(log); } catch (Exception ex) { strErr += "保存日志时出现异常:" + ex.Message; } return(flag); }
/// <summary> /// 数据同步到生鲜港(基于表更新) /// </summary> /// <param name="tableName">更新的表名 不能为空</param> /// <param name="changeCols">更新的字段(分隔符为,半角逗号) 当该参数为空或null时 同步所有字段,当模式为新增时该值为空</param> /// <param name="ID">主键值 不能为空。如果更新的是子表,传递主表的主键(例如集装箱信息)</param> /// <param name="strErr">执行日志</param> /// <param name="parameters">其他可选参数</param> /// <returns>是否执行成功</returns> public static bool DataToFreshPort(string tableName, string changeCols, string ID, out string strErr, string[] parameters = null) { strErr = string.Empty; bool flag = false; s_log_errEntity le = new s_log_errEntity(); #region 记录日志 等待windows服务调用 //flag = false; if (changeCols == "null") { changeCols = null; } try//执行失败 记录接口调用日志 把参数保存下来 { var list = new Service.HddzService().GetLogerrListByTableName(tableName, ID, parameters, 10); if (list.FirstOrDefault(p => string.IsNullOrEmpty(p.changecols)) != null)//判断是否有更新所有字段的 { flag = true; goto End; } le = list.FirstOrDefault(); if (le == null) { le = new s_log_errEntity(); le.eid = Guid.NewGuid().ToString(); le.tablename = tableName; le.changecols = changeCols; le.cjsj = DateTime.Now; le.funname = "DataToFreshPort"; le.mainid = ID; if (parameters != null) { le.parameters = string.Join(",", parameters); } Service.BaseService.SaveErrLog(le); } else { string cols = le.changecols.TrimEnd(','); string[] strs = le.changecols.Split(','); foreach (string str in strs) { if (cols.IndexOf(str) == -1) { cols += "," + str; } } if (le.changecols != cols)//字段发生变化 需要修改 { le.changecols = cols; le.cjsj = DateTime.Now; Service.BaseService.UpdateErrLog(le); } } flag = true; } catch (Exception ex) { flag = false; strErr = ex.Message; //throw ex; } #endregion End: return(flag); }