private void UpdateOrAddSpecData(SpecDataDto item, int tplId, int oldTypeInId, DateTime samplingDate, string samplingTime) { // 如果没有元素数据直接返回 List <EleDataDto> eleDataList = item.EleDataList; if (eleDataList.Count == 0) { return; } // 查找到唯一的元素 TypeIn findTypeIn = _typeInRep.FirstOrDefault(x => x.Id == oldTypeInId); Attendance findAttendance = null; if (!string.IsNullOrEmpty(findTypeIn.SignId)) { int tempAttenId = int.Parse(findTypeIn.SignId); findAttendance = _attendanceRep.Single(x => x.Id == tempAttenId); } else { findTypeIn.SamplingDate = samplingDate.ToString("yyyy-MM-dd"); findTypeIn.SamplingTime = samplingTime; } // 获取化验元素信息 eleDataList = eleDataList.OrderBy(x => x.EleId).ToList(); string elementIds = string.Join(",", eleDataList.Select(x => x.EleId)); string elementNames = string.Join(",", eleDataList.Select(x => x.EleName)); string newElementIds = findTypeIn.EleIds + "," + elementIds; string newElementNames = findTypeIn.EleNames + "," + elementNames; // 将字符串 转变为 数值数组,并去重 var idArray = Array.ConvertAll <string, int>(newElementIds.Split(',', StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray(), x => int.Parse(x)); // 从小到大排序 Array.Sort(idArray); newElementIds = string.Join(',', idArray); // 元素名称去掉重复项 newElementNames = string.Join(',', newElementNames.Split(",", StringSplitOptions.RemoveEmptyEntries).Distinct()); findTypeIn.EleIds = newElementIds; findTypeIn.EleNames = newElementNames; // 更新TypeIn _typeInRep.UpdateAsync(findTypeIn); // 更新或者添加TypeInItem UpdateOrAddElement(item, findTypeIn.Id, tplId); // 更新签到表信息 if (findAttendance != null) { findAttendance.TplElementIds = newElementIds; if (findAttendance.TplElementIds == newElementIds) { findAttendance.Flag = 2; } else { findAttendance.Flag = 1; } _attendanceRep.UpdateAsync(findAttendance); } }
/// <summary> /// Filter by the type of activity where the type of activity is in the given collection. /// </summary> public GraphQueryArgument <IEnumerable <ActivityType> > TypeInQueryArgument(IEnumerable <ActivityType> value) { return(TypeIn.GetQueryArgumentAndSetValue(value)); }
private void AddSpecDataToTable(SpecDataDto item, int tplId, DateTime samplingDate, string samplingTime) { // 如果没有元素数据直接返回 List <EleDataDto> eleDataList = item.EleDataList; if (eleDataList.Count == 0) { return; } // 获取化验元素信息 eleDataList = eleDataList.OrderBy(x => x.EleId).ToList(); string elementIds = string.Join(",", eleDataList.Select(x => x.EleId)); string elementNames = string.Join(",", eleDataList.Select(x => x.EleName)); Attendance findAttendance = null; TypeIn tempTypeIn = null; // 记录数据插入的Id int tempTypeInId = -1; // 签到Id和typeIn的Id都为空,则需要去签到表中检测签Id if (string.IsNullOrEmpty(item.SignId)) { DateTime beginTime = DateTime.Parse(string.Format("{0} {1}:00", samplingDate.ToString("yyyy-MM-dd"), samplingTime)); DateTime endTime = DateTime.Parse(string.Format("{0} {1}:59", samplingDate.ToString("yyyy-MM-dd"), samplingTime)); int tempSpecId = item.SpecId; // 查找签到信息 var tempAttendance = _attendanceRep.GetAll().Where(x => x.SignTime >= beginTime && x.SignTime <= endTime && !x.IsDeleted && x.TplId == tplId && x.TplSpecId == tempSpecId) .FirstOrDefault(); findAttendance = tempAttendance; } else { findAttendance = _attendanceRep.Single(x => x.Id == int.Parse(item.SignId)); // 如果签到信息存在,则去TypeIn表中查找是否有录入记录 tempTypeIn = _typeInRep.GetAll().Where(x => x.SignId == item.SignId && x.IsDeleted == false).FirstOrDefault(); } // 如果typeIn表中没有记录,则根据签到信息回填,或者根据已有信息创建新的TypeIn if (tempTypeIn == null) { // 创建签到数据模型,并填充基础信息 TypeIn typeIn = new TypeIn(); typeIn.IsParallel = false; // 平行样 string attendanceEleIds = string.Empty; typeIn.TplId = tplId; typeIn.SpecId = item.SpecId; typeIn.CreateTime = DateTime.Now; typeIn.CreatorId = (int)AbpSession.UserId; typeIn.IsDeleted = false; typeIn.EleIds = elementIds; typeIn.EleNames = elementNames; // 如果有签到信息,则将签到信息回填 if (findAttendance != null) { typeIn.SignId = findAttendance.Id.ToString(); attendanceEleIds = findAttendance.ElementIds; typeIn.IsParallel = string.IsNullOrEmpty(findAttendance.MainScanId) ? false : true; typeIn.MainId = findAttendance.MainScanId; typeIn.SamplingDate = findAttendance.SamplingDate.ToString("yyyy-MM-dd"); typeIn.SamplingTime = findAttendance.SamplingTime; typeIn.SamplingTm = DateTime.Parse(findAttendance.SamplingDate.ToString("yyyy-MM-dd ") + findAttendance.SamplingTime); typeIn.SignTm = findAttendance.SignTime; } else // 没有签到信息,则根据已有信息补充 { string samplDate = samplingDate.ToString("yyyy-MM-dd"); typeIn.SamplingDate = samplDate; typeIn.SamplingTime = samplingTime; typeIn.SamplingTm = DateTime.Parse($"{samplDate} {samplingTime}"); typeIn.SignTm = DateTime.Now; } // 插入数据,获取当前插入ID tempTypeInId = _typeInRep.InsertAndGetId(typeIn); } else // 有信息则,只更新元素信息 { tempTypeIn.EleIds = elementIds; tempTypeIn.EleNames = elementNames; _typeInRep.Update(tempTypeIn); tempTypeInId = tempTypeIn.Id; } // 更新签到表信息(0-未录入,1-部分录入,2-全录入) if (findAttendance != null) { if (findAttendance.TplElementIds == elementIds) { findAttendance.Flag = 2; } else { findAttendance.Flag = 1; } _attendanceRep.UpdateAsync(findAttendance); } // 生成TypeInItem信息 AddElementDataToTable(item, tempTypeInId, tplId); }
protected override void SummaryBuildProperties() { base.SummaryBuildProperties(); SummaryAddProperty("TypeOut", TypeOut?.FriendlyName()); SummaryAddProperty("TypeIn", TypeIn?.FriendlyName()); }