public ActionResult GetDataSourcePickCount(string codeList) { codeList = codeList.TrimEnd(',').Split(',').ToList().Aggregate(string.Empty, (c, r) => c + "'" + r + "',").TrimEnd(','); List <PickCount> list = DataSourceApp.GetPickCount(codeList); return(Json(list)); }
public ActionResult UpdateStatus(int id, int status) { int result = DataSourceApp.UpdateStatus(id, status); ServiceResult serviceResult = new ServiceResult(); serviceResult.ResultCode = result; serviceResult.Message = result >= 0 ? "更新成功。重启抓取服务才能生效" : "更新失败!"; return(Json(serviceResult)); }
/// <summary> /// 采集详情 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult PickDetail(string id, string dataSource) { List <DataSourcePickDetail> detailList = DataSourceApp.GetPickDetail(dataSource); List <DataSourcePickDetail> newList = (from d in detailList let p = LotteryHelper.GetTypeList(d.Code) let p3 = LotteryHelper.GetPicker(d.Code, dataSource) let p2 = p == null ? new List <Type>() : p.Where(pp => pp.Name.Contains(dataSource)).ToList() select new DataSourcePickDetail { Code = d.Code, TodayCount = d.TodayCount, TotalCount = d.TotalCount, PickerName = p2.Count == 0 ? "" : p2[0].Name, PickerValid = p3 == null ? false : p3.IsValid }).Where(p => !string.IsNullOrEmpty(p.PickerName)).ToList(); return(View(newList)); }
/// <summary> /// 执行抓取 /// </summary> /// <param name="taskCount">线程数量</param> public List <OpenResult> DoPick(int taskCount) { //取数据源开关 List <DataSource> dataSourceList = CacheManager.GetOrSet(CacheKey.DATASOURCE_KEY, () => { return(DataSourceApp.GetList().Where(d => d.status == 1).ToList()); }, 7 * 24 * 60 * 60); if (dataSourceList.Count == 0) { throw new Exception($"没有可用的数据源"); } string dataSourceStr = dataSourceList.Aggregate(string.Empty, (c, d) => c + d.name + ",").TrimEnd(','); Type type = typeof(DataSourceEnum); List <FieldInfo> fieldInfo = type.GetFields().ToList(); List <OpenResult> list = new List <OpenResult>(); ParallelOptions option = new ParallelOptions { MaxDegreeOfParallelism = Math.Min(taskCount, fieldInfo.Count) }; Parallel.ForEach(fieldInfo, option, field => { string dataSource = field.GetValue(null).ToString(); if (dataSourceStr.Contains(dataSource)) { IPicker picker = this.GetPicker(dataSource); if (picker != null) { list.AddRange(picker.Run()); } } }); list = DistinctEx(list); return(list.OrderBy(o => o.issue_number).ToList()); }