예제 #1
0
        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);
            }
        }
예제 #2
0
 /// <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));
 }
예제 #3
0
        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());
 }