/// <summary> /// 获取管理岗位统计数据,包含总考勤项目数、今日考勤项目数、今日考勤人数[异步] /// </summary> /// <param name="search"></param> /// <returns></returns> public async Task <ManagePostAttStatistics> GetManagePostStatistics(ManagePostAttPageSearch search) { ManagePostAttStatistics managePostAttStatistics = new ManagePostAttStatistics(); Dictionary <string, string> searchDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SearchDic.ToString()); Dictionary <string, string> searchDicTotal = null; searchDicTotal = new Dictionary <string, string>(); if (!searchDic.ContainsKey("s_3_AttendanceTime")) { searchDic.Add("s_3_AttendanceTime", $"{DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:01"},{DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"}"); } if (searchDic.ContainsKey("s_1_SegmentAddressArea")) { searchDicTotal.Add("s_1_SegmentAddressArea", searchDic["s_1_SegmentAddressArea"]); } Expression <Func <ManagePostHistoryAtt, bool> > expression = whereHelper.GetExpression(searchDic); managePostAttStatistics.AttProjectTodayCount = await service.GetDistinctCountAsync(expression, "ConstructPermitNum"); managePostAttStatistics.AttPersonTodayCount = await service.GetDistinctCountAsync(expression, "IdCard"); expression = whereHelper.GetExpression(searchDicTotal); //whereHelper.GetExpression(searchDicTotal) managePostAttStatistics.AttProjectTotal = await service.GetDistinctCountAsync(expression, "ConstructPermitNum"); return(managePostAttStatistics); }
public async Task <IEnumerable <ManagePostAttStatistics> > GetListStatisticsAsync([FromBody] dynamic value) { JObject @object = JObject.Parse(value.ToString()); ManagePostAttPageSearch search = @object.ToObject <ManagePostAttPageSearch>(); return(await _ManagePostAtt.GetListStatisticsAsync(search)); }
public async Task <BaseResultModel <ManagePostAtt> > GetListAggregateAsync([FromBody] dynamic value) { JObject @object = JObject.Parse(value.ToString()); ManagePostAttPageSearch search = @object.ToObject <ManagePostAttPageSearch>(); return(await _ManagePostAtt.GetListAggregateAsync(search)); }
/// <summary> /// 分页获取管理岗位人员考勤数据[异步] /// </summary> /// <param name="search"></param> /// <returns></returns> public async Task <BaseResultModel <T> > GetPageManagePostAtt(ManagePostAttPageSearch search) { Dictionary <string, string> sortDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SortDic.ToString()); Dictionary <string, string> searchDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SearchDic.ToString()); return(await this.GetPageManagePostAtt(search.PageIndex, search.PageSize, sortDic, searchDic)); }
/// <summary> /// 根据管道获取数据[异步] /// </summary> /// <param name="search"></param> /// <returns></returns> public async Task <BaseResultModel <T> > GetListAggregateAsync(ManagePostAttPageSearch search) { Dictionary <string, string> searchDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SearchDic.ToString()); Dictionary <string, string> sortDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SortDic.ToString()); PipeLineBsonHelper pipeLineBsonHelper = new PipeLineBsonHelper(); List <string> pipeLinelist = new List <string>(); #region 过滤(条件查询) pipeLineBsonHelper.AddMatchList(searchDic, pipeLinelist); #endregion #region 分组(用 $last排序,后续改为属性映射独立方法 ) if (string.IsNullOrEmpty(search.GroupField)) { throw new ArgumentNullException($"分组参数{nameof(search.GroupField)}不能为空!"); } string group = "{'" + search.GroupField + "':'$" + search.GroupField + "'}"; string pipelineGroup = @"{$group: { _id:" + group + @", 'id':{ '$first':'$_id'}, 'ConstructPermitNum':{ '$first' :'$ConstructPermitNum'}, 'ProjectName':{ '$last' :'$ProjectName'}, 'ProjectGuid':{ '$last' :'$ProjectGuid'}, 'Company':{ '$last':'$Company'}, 'OrganizationCode':{ '$last':'$OrganizationCode'}, 'CorpType':{ '$last':'$CorpType'}, 'SegmentAddressArea':{ '$last':'$SegmentAddressArea'}, 'AttendanceTime':{ '$last':'$AttendanceTime'}, 'AttendanceId':{ '$last':'$AttendanceId'}, 'PersonGUID':{ '$last':'$PersonGUID'}, 'PersonName':{ '$last':'$PersonName'}, 'IdCard':{ '$last':'$IdCard'}, 'PostType':{ '$last':'$PostType'}, 'ImageBuffer':{ '$last':'$ImageBuffer'}, 'SupervisionDepartment':{ '$last':'$SupervisionDepartment'}, 'SupervisionDepartmentGUID':{ '$last':'$SupervisionDepartmentGUID'}, 'CreateTime':{ '$last':'$CreateTime'} } }"; pipeLinelist.Add(pipelineGroup); #endregion #region 总数(根据条件查询总数) string pipelineCount = "{$count:'total'}"; pipeLinelist.Add(pipelineCount); IList <IPipelineStageDefinition> stageList = new List <IPipelineStageDefinition>(); foreach (string item in pipeLinelist) { PipelineStageDefinition <BsonDocument, BsonDocument> stageGroup = new JsonPipelineStageDefinition <BsonDocument, BsonDocument>(item); stageList.Add(stageGroup); } BaseResultModel <T> baseResultModel = new BaseResultModel <T>(); BsonDocument bsonDocument = await mongodbBsonService.GetAggregateAsync(stageList); if (null != bsonDocument) { baseResultModel = BsonSerializer.Deserialize <BaseResultModel <T> >(bsonDocument); } else { baseResultModel.total = 0; baseResultModel.rows = new List <T>(); baseResultModel.success = false; return(baseResultModel); } #endregion //移除总数 pipeLinelist.Clear(); stageList.RemoveAt(stageList.Count - 1); #region 排序 pipeLineBsonHelper.AddSortList(sortDic, pipeLinelist); #endregion #region 分页 string pipelineSkip = "{$skip:" + ((search.PageIndex - 1) * search.PageSize) + "}"; string pipelineLimit = "{$limit:" + search.PageSize + "}"; pipeLinelist.Add(pipelineSkip); pipeLinelist.Add(pipelineLimit); #endregion #region 射 string pipelineProject = "{$project:{'_id':0,'id':0}}"; pipeLinelist.Add(pipelineProject); #endregion foreach (string item in pipeLinelist) { PipelineStageDefinition <BsonDocument, BsonDocument> stageGroup = new JsonPipelineStageDefinition <BsonDocument, BsonDocument>(item); stageList.Add(stageGroup); } //baseResultModel.rows = await mongodbBsonService.GetListAggregateAsync(stageList); List <T> list = new List <T>(); foreach (var item in await mongodbBsonService.GetListAggregateAsync(stageList)) { var d = BsonSerializer.Deserialize <BsonDocument>(item); list.Add(BsonSerializer.Deserialize <T>(item)); } baseResultModel.rows = list; baseResultModel.success = true; return(baseResultModel); }
/// <summary> /// 根据施工许可证号码、身份证号码、日期分组统计考勤人数 /// </summary> /// <param name="search"></param> /// <returns></returns> public async Task <IEnumerable <ManagePostAttStatistics> > GetListStatisticsAsync(ManagePostAttPageSearch search) { if (null == search) { throw new ArgumentNullException($"查询条件{nameof(search.SearchDic)}不能为空!"); } Dictionary <string, string> searchDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SearchDic.ToString()); PipeLineBsonHelper pipeLineBsonHelper = new PipeLineBsonHelper(); List <string> pipeLinelist = new List <string>(); #region 过滤(条件查询) pipeLineBsonHelper.AddMatchList(searchDic, pipeLinelist); #endregion #region 分组(用 $last排序,后续改为属性映射独立方法 ) string group = "{'ConstructPermitNum':'$ConstructPermitNum'"; group += ",'IdCard':'$IdCard'"; group += ",'day':{'$substr':[{'$add':['$AttendanceTime', 28800000]},0,10]}"; group += "}"; string pipelineGroup1 = @"{$group: { _id:" + group + @", 'ConstructPermitNum':{ '$first' :'$ConstructPermitNum'}, 'ProjectName':{ '$last' :'$ProjectName'}, 'ProjectGuid':{ '$last' :'$ProjectGuid'}, 'AttendanceTime':{ '$last':'$AttendanceTime'} } }"; pipeLinelist.Add(pipelineGroup1); string pipelineGroup2 = @"{$group: { _id:" + group + @", 'ConstructPermitNum':{ '$first' :'$ConstructPermitNum'}, 'ProjectName':{ '$last' :'$ProjectName'}, 'ProjectGuid':{ '$last' :'$ProjectGuid'}, 'AttendanceTime':{ '$last':'$AttendanceTime'}, 'AttPersonCount':{'$sum':1} } }"; pipeLinelist.Add(pipelineGroup2); #endregion #region 排序 if (null != search.SortDic) { Dictionary <string, string> sortDic = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(search.SortDic.ToString()); pipeLineBsonHelper.AddSortList(sortDic, pipeLinelist); } #endregion #region 射 string pipelineProject = "{$project:{'_id':0}}"; pipeLinelist.Add(pipelineProject); #endregion IList <IPipelineStageDefinition> stageList = new List <IPipelineStageDefinition>(); foreach (string item in pipeLinelist) { PipelineStageDefinition <BsonDocument, BsonDocument> stageGroup = new JsonPipelineStageDefinition <BsonDocument, BsonDocument>(item); stageList.Add(stageGroup); } //baseResultModel.rows = await mongodbBsonService.GetListAggregateAsync(stageList); List <ManagePostAttStatistics> list = new List <ManagePostAttStatistics>(); foreach (var item in await mongodbBsonService.GetListAggregateAsync(stageList)) { var d = BsonSerializer.Deserialize <BsonDocument>(item); list.Add(BsonSerializer.Deserialize <ManagePostAttStatistics>(item)); } return(list); }