public Result PostMaterialSpecification([FromBody] IEnumerable <MaterialSpecification> specifications)
        {
            if (specifications == null || !specifications.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (specifications.Any(x => x.Specification.IsNullOrEmpty()))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationNotEmpty));
            }
            if (specifications.GroupBy(x => x.Specification).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationDuplicate));
            }

            var sames = specifications.Select(x => x.Specification);

            if (MaterialSpecificationHelper.GetHaveSame(sames))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationIsExist));
            }

            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var data in specifications)
            {
                data.CreateUserId   = userId;
                data.MarkedDateTime = markedDateTime;
                data.Remark         = data.Remark ?? "";
            }
            MaterialSpecificationHelper.Instance.Add(specifications);
            return(Result.GenError <Result>(Error.Success));
        }
        public Result PutMaterialSpecification([FromBody] IEnumerable <MaterialSpecification> specifications)
        {
            if (specifications == null || !specifications.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (specifications.Any(x => x.Specification.IsNullOrEmpty()))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationNotEmpty));
            }
            if (specifications.GroupBy(x => x.Specification).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationDuplicate));
            }

            var sames = specifications.Select(x => x.Specification);
            var ids   = specifications.Select(x => x.Id);

            if (MaterialSpecificationHelper.GetHaveSame(sames, ids))
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationIsExist));
            }

            var cnt = MaterialSpecificationHelper.Instance.GetCountByIds(ids);

            if (cnt != specifications.Count())
            {
                return(Result.GenError <Result>(Error.MaterialSpecificationNotExist));
            }

            var markedDateTime = DateTime.Now;

            foreach (var data in specifications)
            {
                data.MarkedDateTime = markedDateTime;
                data.Remark         = data.Remark ?? "";
            }
            MaterialSpecificationHelper.Instance.Update(specifications);
            return(Result.GenError <Result>(Error.Success));
        }