public async Task <bool> SyncData_EveryDate(MC_getToken_Result token) { string sql = "SELECT MAX(RQ) FROM MN_THD"; var dbdate = helper.ExecuteScalar(sql, new Dictionary <string, object>()).ToString(); var startDate = string.IsNullOrEmpty(dbdate) ? DateTime.Parse("2019/08/01").ToString("yyyy/MM/dd") : DateTime.Parse(dbdate).Date.ToString("yyyy/MM/dd"); var endDate = DateTime.Now.Date.ToString("yyyy/MM/dd"); //var result = await RequestAndWriteData(token, startDate, endDate, pageSize); LogHelper.Info("开始MN_THD同步作业"); var result = await RequestAndWriteData_V2 <MC_PickUpGoods_Result, MC_PickUpGoods_ResultInfo>(token, startDate, endDate); Call_MN_THD_Update(); LogHelper.Info("本次MN_THD同步作业结束"); return(result); }
public async Task <bool> SyncData_Today(MC_getToken_Result token) { var startDate = DateTime.Now.Date.ToString("yyyy/MM/dd"); var result = await RequestAndWriteData(token, startDate, startDate); Call_MN_THD_Update(); return(result); }
public bool SyncData_EveryDate(MC_getToken_Result token) { string sql = "SELECT MAX(RQ) FROM MN_CKD"; var dbdate = DbUtils.GetExecuteScalarWhere(sql, null).ToString(); var startDate = string.IsNullOrEmpty(dbdate)? DateTime.Parse("2019/05/01").ToString("yyyy/MM/dd") : DateTime.Parse(dbdate).Date.ToString("yyyy/MM/dd"); var endDate = DateTime.Now.Date.AddDays(-1).ToString("yyyy/MM/dd"); return(RequestAndWriteData(token, startDate, endDate, pageSize)); }
public async Task <bool> SyncData_EveryDate(MC_getToken_Result token) { string sql = "SELECT MAX(RQ) FROM MN_CKD"; var dbdate = helper.ExecuteScalar(sql, new Dictionary <string, object>()).ToString(); var startDate = string.IsNullOrEmpty(dbdate)? DateTime.Parse("2019/05/01").ToString("yyyy/MM/dd") : DateTime.Parse(dbdate).Date.ToString("yyyy/MM/dd"); var endDate = DateTime.Now.Date.AddDays(-1).ToString("yyyy/MM/dd"); int pageindex = 1; return(await RequestAndWriteData(token, startDate, endDate, pageSize)); }
public async Task <bool> RequestAndWriteData(MC_getToken_Result token, string rq1, string rq2, int pagesize, int pageindex = 1) { var startDate = DateTime.Parse(rq1); var endDate = DateTime.Parse(rq2); //if (startDate == DateTime.Now.Date) //{ // Console.Out.WriteLineAsync("时间未到出仓单暂时不同步"); // return false; //} string parJson = ""; const string logstr = "参数:{0}\r\n返回结果:总条数【{1}】,当前页共【{2}】条记录\r\n异常:{3}"; try { do { rq1 = startDate.ToString("yyyy/MM/dd"); rq2 = startDate.AddDays(1) <= endDate?startDate.AddDays(1).ToString("yyyy/MM/dd") : rq1; var pagecount = 0; var total = 0; pageindex = 1; do { var pars = new MC_OutOfStore_Params(token.token, rq1, rq2, pagesize, pageindex); parJson = JsonConvert.SerializeObject(pars); var result = await Request <MC_OutOfStore_Result, MC_OutOfStore_Params>( pars); total = result.TotalCount; var msg = string.Format(logstr, parJson, total, result.resultInfo.Count, ""); LogHelper.LogInfo(msg); await Console.Out.WriteLineAsync(msg); if (pagecount == 0) { pagecount = total / pagesize; if (total % pagesize > 0) { pagecount++; } } //写入数据库 if (result.resultInfo.Count > 0) { //并发写入 foreach (var row in result.resultInfo.AsParallel()) { string sql = "SELECT COUNT(*) FROM MN_CKD WHERE FID=:FID"; var par = new Dictionary <string, object>(); par.Add(":FID", row.FID); var count = helper.ExecuteScalar(sql, par); if (Convert.ToInt32(count) > 0) { string where = "AND FID=:FID"; helper.Update(row, where); continue; } row.ComputeFID(); helper.Insert(row); } } pageindex++; } while (pageindex <= pagecount); startDate = startDate.AddDays(2); } while (startDate <= endDate); return(true); } catch (Exception e) { var msg = string.Format(logstr, parJson, 0, 0, e); await Console.Out.WriteLineAsync(msg); return(false); } }
public async Task <bool> RequestAndWriteData_V2 <T1, T3>(MC_getToken_Result token, string rq1, string rq2) where T1 : MC_Request_BaseResult <T3> where T3 : IComputeFID, IFID, new() { string msg = ""; var pageSize = 1000; var pageIndex = 1; //计算请求参数 var pars = ComputeParams(token.token, rq1, rq2, pageSize, pageIndex); string parJson = ""; const string logstr = "参数:{0}\r\n返回结果:共【{1}】条记录\r\n异常:{2}"; List <TP> exceptionList = null; var action = new Func <TP, Task <List <T3> > >(async(param) => { var json = JsonConvert.SerializeObject(param); List <T3> result = null; const string log = "参数:{0}\r\n返回结果:共【{1}】条记录\r\n异常:{2}"; try { result = await CommonRequest <T1, T3>(param); var formatTxt = string.Format(log, json, result.Count, ""); WriteDataToDB(result); result.Clear(); LogHelper.Info(formatTxt); } catch (Exception e) { //请求异常时,请加请求参数到异常列表,待列表循环结束后,再重新请求异常列表 if (exceptionList == null) { exceptionList = new List <TP>(); } var formatTxt = string.Format(log, json, result?.Count ?? 0, e.Message); LogHelper.Info(formatTxt); LogHelper.Error(e); } return(null); }); foreach (var par in pars.AsParallel()) { await action.Invoke(par); } int fixCount = 0; //处理异常列表 if (exceptionList != null && exceptionList.Count > 0) { LogHelper.Info("重新请求异常列表数据"); foreach (var par in exceptionList.AsParallel()) { try { var result = await CommonRequest <T1, T3>(par); WriteDataToDB(result); fixCount++; } catch (Exception e) { msg = string.Format(logstr, parJson, 0, 0, e.Message); LogHelper.Info(msg); LogHelper.Error(e); } } } return(exceptionList == null || fixCount == exceptionList.Count); }
public bool RequestAndWriteData(MC_getToken_Result token, string rq1, string rq2, int pagesize = 1000, int pageindex = 1) { var startDate = DateTime.Parse(rq1); var endDate = DateTime.Parse(rq2); //if (startDate == DateTime.Now.Date) //{ // Console.Out.WriteLineAsync("时间未到出仓单暂时不同步"); // return false; //} LogHelper.WriteLog("出仓单开始同步"); string parJson = ""; const string logstr = "参数:{0}\r\n返回结果:总条数【{1}】,当前页共【{2}】条记录\r\n异常:{3}"; try { do { rq1 = startDate.ToString("yyyy/MM/dd"); rq2 = startDate.AddDays(1) <= endDate?startDate.AddDays(1).ToString("yyyy/MM/dd") : rq1; var pagecount = 0; var total = 0; pageindex = 1; do { var pars = new MC_OutOfStore_Params(token.token, rq1, rq2, pagesize, pageindex); parJson = JsonConvert.SerializeObject(pars); var result = Request <MC_OutOfStore_Result, MC_OutOfStore_Params>( pars); total = result.TotalCount; var msg = string.Format(logstr, parJson, total, result.resultInfo.Count, ""); LogHelper.WriteLog(msg); if (pagecount == 0) { pagecount = total / pagesize; if (total % pagesize > 0) { pagecount++; } } //写入数据库 if (result.resultInfo.Count > 0) { //并发写入 foreach (var row in result.resultInfo.AsParallel()) { string sql = "SELECT COUNT(*) FROM MN_CKD WHERE 1=1"; row.ComputeFID(); var where = " AND FID='" + row.FID + "'"; sql += where; var count = DbUtils.CountBySQL(sql); var data = new MC_OutofStore_ResultInfo(row); if (Convert.ToInt32(count) > 0) { DbUtils.UpdateWithWhere <MC_OutofStore_ResultInfo>(data, where); continue; } DbUtils.InsertObj(data); } } pageindex++; } while (pageindex <= pagecount); startDate = startDate.AddDays(2); } while (startDate <= endDate); return(true); } catch (Exception e) { var msg = string.Format(logstr, parJson, 0, 0, e); LogHelper.WriteLog(msg); return(false); } }
public async Task <bool> SyncData_Today(MC_getToken_Result token) { var startDate = DateTime.Now.Date.ToString("yyyy/MM/dd"); return(await RequestAndWriteData_V2 <MC_OutOfStore_Result, MC_OutofStore_ResultInfo>(token, startDate, startDate)); }
public async Task <bool> RequestAndWriteData(MC_getToken_Result token, string rq1, string rq2, int pagesize = 1000, int pageindex = 1) { var startDate = DateTime.Parse(rq1); var endDate = DateTime.Parse(rq2); string parJson = ""; const string logstr = "参数:{0}\r\n返回结果:总条数【{1}】,当前页共【{2}】条记录\r\n异常:{3}"; do { rq1 = startDate.ToString("yyyy/MM/dd"); rq2 = startDate.AddDays(1) <= endDate?startDate.AddDays(1).ToString("yyyy/MM/dd") : rq1; var pagecount = 0; var total = 0; pageindex = 1; do { try { var pars = new MC_PickUpGoods_Params(token.token, rq1, rq2, pagesize, pageindex); parJson = JsonConvert.SerializeObject(pars); var result = await Request <MC_PickUpGoods_Result, MC_PickUpGoods_ResultInfo>(pars); total = result.TotalCount; var msg = string.Format(logstr, parJson, total, result.resultInfo.Count, ""); LogHelper.Info(msg); if (pagecount == 0) { pagecount = total / pagesize; if (total % pagesize > 0) { pagecount++; } } //写入数据库 WriteDataToDB(result.resultInfo); pageindex++; } catch (Exception e) { LogHelper.Error(e); } } while (pageindex <= pagecount); startDate = startDate.AddDays(2); } while (startDate <= endDate); return(true); }