public JsonResult AddItem(string id, string DiggerId, int PipeTypeId, float Length)
        {
            PipeNeedNotice notice = repository.FindByNotCache(id);
            if (id == null)
            {
                return Json(new { success = false, mesage = "未找到指定的物资调拨单" });
            }

            IPipeNeedNoticeItemRepository itemRepository = RepositoryFactory.GetRepository<IPipeNeedNoticeItemRepository, PipeNeedNoticeItem>(unitOfWork);
            IDiggerRepository diggerRepository = RepositoryFactory.GetRepository<IDiggerRepository, Digger>();
            IPipeTypeRepository ptRepository = RepositoryFactory.GetRepository<IPipeTypeRepository, PipeType>();

            if (string.IsNullOrEmpty(DiggerId))
            {
                return Json(new { success = false, message = "调拨项数据不完善:井队数据缺失" });
            }

            Digger digger = diggerRepository.FindBy(DiggerId);
            if (digger == null)
            {
                return Json(new { success = false, message = "调拨项数据不完善:井队数据缺失" });
            }

            PipeType pt = ptRepository.FindBy(PipeTypeId);
            if (pt == null)
            {
                return Json(new { success = false, message = "调拨项数据不完善:管材型号数据缺失" });
            }

            if (Length <= 0)
            {
                return Json(new { success = false, message = "调拨项数据不完善:所需米数数据缺失" });
            }

            PipeNeedNoticeItem item = new PipeNeedNoticeItem(Guid.NewGuid().ToString("N"),
                notice,
                digger,
                pt);
            item.Length = Length;
            itemRepository.Add(item);
            unitOfWork.Commit();

            return Json(new { success = true, Key = item.Key });
        }
        public JsonResult Create(string Code, String Sender, String Verifier, String CompanyId, String Items)
        {
            #region Validation

            if (string.IsNullOrEmpty(CompanyId))
            {
                return Json(new { success = false, message = "未指定公司" });
            }

            if (string.IsNullOrEmpty(Code) || !new Regex("^[-|a-z|A-Z|0-9]+$").IsMatch(Code))
            {
                return Json(new { success = false, message = "编号格式不正确" });
            }

            if (String.IsNullOrEmpty(Items))
            {
                return Json(new { success = false, message = "请至少添加一条调拨项" });
            }

            DetectionCompany company = RepositoryFactory.GetRepository<IDetectionCompanyRepository, DetectionCompany>().FindBy(CompanyId);
            if (company == null)
            {
                return Json(new { success = false, message = "无法找到指定公司" });
            }

            #endregion

            PipeNeedNotice notice = new PipeNeedNotice(Guid.NewGuid().ToString("N"), Code, company, UserSession.OnlineAccount, DateTime.Now);
            notice.Sender = Sender;
            notice.Verifier = Verifier;
            repository.Add(notice);

            IPipeNeedNoticeItemRepository itemRepository = RepositoryFactory.GetRepository<IPipeNeedNoticeItemRepository, PipeNeedNoticeItem>(unitOfWork);
            IDiggerRepository diggerRepository = RepositoryFactory.GetRepository<IDiggerRepository, Digger>();
            IPipeTypeRepository ptRepository = RepositoryFactory.GetRepository<IPipeTypeRepository, PipeType>();

            IList<PDCPMS.DataContracts.NormalCheck.PipeNeedNoticeItem> itemContracts = new JavaScriptSerializer().Deserialize<IList<PDCPMS.DataContracts.NormalCheck.PipeNeedNoticeItem>>(Items);
            foreach (PDCPMS.DataContracts.NormalCheck.PipeNeedNoticeItem ic in itemContracts)
            {
                if (string.IsNullOrEmpty(ic.DiggerId))
                {
                    return Json(new { success = false, message = "调拨项数据不完善:井队数据缺失" });
                }

                Digger digger = diggerRepository.FindBy(ic.DiggerId);
                if (digger == null)
                {
                    return Json(new { success = false, message = "调拨项数据不完善:井队数据缺失" });
                }

                PipeType pt = ptRepository.FindBy(ic.PipeTypeId);
                if (pt == null)
                {
                    return Json(new { success = false, message = "调拨项数据不完善:管材型号数据缺失" });
                }

                if (ic.Length <= 0)
                {
                    return Json(new { success = false, message = "调拨项数据不完善:所需米数数据缺失" });
                }

                PipeNeedNoticeItem item = new PipeNeedNoticeItem(Guid.NewGuid().ToString("N"),
                    notice,
                    digger,
                    pt);
                item.Length = ic.Length;
                itemRepository.Add(item);
            }

            unitOfWork.Commit();

            TempData["HintMessage"] = new PDCPMS.Application.HintMessage { Content = "成功添加物资调拨单" };
            return Json(new { success = true, noticeId = notice.Key });
        }