Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }