Пример #1
0
 public TransferRecord(string key, Pipe pipe, TransferItem transferItem, DateTime dateCreated)
     : base(key)
 {
     this.Pipe = pipe;
     this.TransferItem = transferItem;
     this.DateCreated = dateCreated;
 }
Пример #2
0
        public void CacheLoaded()
        {
            if (this.Pipe != null)
                this.Pipe = RepositoryFactory.GetRepository<IPipeRepository, Pipe>().FindBy(this.Pipe.Key);

            if (this.PrevPos != null)
                this.PrevPos = RepositoryFactory.GetRepository<IPipePositionRepository, PipePosition>().FindBy(this.PrevPos.Key);

            if (this.NewPos != null)
                this.NewPos = RepositoryFactory.GetRepository<IPipePositionRepository, PipePosition>().FindBy(this.NewPos.Key);

            if (this.TransferItem != null)
                this.TransferItem = RepositoryFactory.GetRepository<ITransferItemRepository, TransferItem>().FindBy(this.TransferItem.Key);
        }
        public JsonResult CreateTask(int pipeTypeId, String code, String diggerId,String team,String faxno, String items)
        {
            string pipeneednoticeitemid = Request.Form["needlength"].ToString();
            PipeType pipeType = null;
            Digger targetDigger = null;
            IList<PDCPMS.DataContracts.Transfer.TransferItem> transferItemContracts;
            Account onlineAccount = UserSession.OnlineAccount;

            #region Get Basic Data

            if (onlineAccount.DetectionCompany == null) { return Json(new { success = false, message = "你无权发起常检任务" }); }

            if (string.IsNullOrEmpty(code))
            {
                return Json(new { success = false, message = "编号不能为空" });
            }
            Regex codePattern = new Regex("^[-|a-z|A-Z|0-9]+$");
            if (!codePattern.IsMatch(code))
            {
                return Json(new { success = false, message = "编号格式不正确,只能为英文字母、数字或者短横线(-)的组合" });
            }

            if (null != repository.FindByCode(code))
            {
                return Json(new { success = false, message = string.Format("编号为{0}的常检任务存在,请尝试使用其他编号", code) });
            }

            if (string.IsNullOrEmpty(items))
            {
                return Json(new { success = false, message = "未指定调度项" });
            }
            transferItemContracts = new JavaScriptSerializer().Deserialize<IList<PDCPMS.DataContracts.Transfer.TransferItem>>(items);
            if (transferItemContracts.Count < 1)
            {
                return Json(new { success = false, message = "未指定调度项" });
            }

            if (pipeTypeId < 1)
            {
                return Json(new { success = false, message = "未指定管材类型" });
            }
            pipeType = RepositoryFactory.GetRepository<IPipeTypeRepository, PipeType>().FindBy(pipeTypeId);

            if (pipeType == null)
            {
                return Json(new { success = false, message = "未指定管材类型" });
            }
            if (!string.IsNullOrEmpty(diggerId))
            {
                targetDigger = RepositoryFactory.GetRepository<IDiggerRepository, Digger>().FindBy(diggerId);
            }

            #endregion

            ITransferTaskRepository transferTaskRepository = RepositoryFactory.GetRepository<ITransferTaskRepository, TransferTask>(unitOfWork);
            ITransferItemRepository transferItemRepository = RepositoryFactory.GetRepository<ITransferItemRepository, TransferItem>(unitOfWork);
            ITransferRecordRepository transferRecordRepository = RepositoryFactory.GetRepository<ITransferRecordRepository, TransferRecord>(unitOfWork);
            IPipePositionRepository posRepository = RepositoryFactory.GetRepository<IPipePositionRepository, PipePosition>();
            IPipeRepository pipeRepository = RepositoryFactory.GetRepository<IPipeRepository, PDCPMS.Model.Common.Pipe>(unitOfWork);
            DateTime now = DateTime.Now;

            StringBuilder sb = new StringBuilder();
            sb.Append("Begin ");
            TransferTask transferTask = new TransferTask(Guid.NewGuid().ToString("N"), pipeType, onlineAccount.DetectionCompany, onlineAccount, now, true);

            #region 我的修改insert TransferTask
            string TransferTaskId = Guid.NewGuid().ToString("N");
            string DateCreated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string CreatorId = onlineAccount.Key.ToString();
            int TotalCount = transferItemContracts[0].Count;
            string PipeTypeId = pipeTypeId.ToString();
            string DetectionCompanyId = onlineAccount.DetectionCompany.Key.ToString();
            sb.Append("Insert Into TransferTask(TransferTaskId,IsSystemTask,DateCreated,CreatorId,IsFinished,DateFinished,TotalCount,PipeTypeId,DetectionCompanyId,\"Comment\")Values(");
            sb.Append("'" + TransferTaskId + "',");
            sb.Append("1,");
            sb.Append("to_date('" + DateCreated + "', 'yyyy-mm-dd HH24:mi:ss'),");
            sb.Append("'" + CreatorId + "',");
            sb.Append("0,");
            sb.Append("null,");
            sb.Append("" + TotalCount + ",");
            sb.Append("'" + PipeTypeId + "',");
            sb.Append("'" + DetectionCompanyId + "',");
            sb.Append("'');");
            #endregion
            TotalCount = 0;

            foreach (PDCPMS.DataContracts.Transfer.TransferItem tic in transferItemContracts)
            {
                PipePosition prePos = posRepository.FindBy(tic.PrevPosId);
                PipePosition newPos = posRepository.FindBy(tic.NewPosId);

                if (prePos == null || newPos == null || tic.Count < 0)
                {
                    return Json(new { success = false, message = "你的调度项输入有误" });
                }

                TransferItem item = new TransferItem(Guid.NewGuid().ToString("N"), transferTask);

                item.PrevPos = prePos;
                item.NewPos = newPos;
                item.Count = tic.Count;

                #region 我的修改 TransferItem Insert
                string TransferItemId = Guid.NewGuid().ToString("N");
                string TransferTaskId_Forignkey = TransferTaskId;
                int Count = TotalCount;
                string PrevPositionId = item.PrevPos.Key.ToString();
                string NewPositionId = item.NewPos.Key.ToString();
                sb.Append("Insert Into TransferItem(TransferItemId, TransferTaskId, Count, PrevPositionId, NewPositionId)Values(");
                sb.Append("'" + TransferItemId + "',");
                sb.Append("'" + TransferTaskId_Forignkey + "',");
                sb.Append("" + tic.Count + ",");
                sb.Append("'" + PrevPositionId + "',");
                sb.Append("'" + NewPositionId + "');");
                #endregion

                System.Data.DataTable dt = pipeRepository.FindByMyCondition(prePos, pipeType, PipeState.Received | PipeState.Storing, PipeState.Transfering | PipeState.NormalChecking);

                if (dt.Rows.Count < tic.Count)
                {
                    return Json(new { success = false, message = string.Format("调度失败:垛位({0})已无{1}根可检测的存货,可能已经被调至别处", prePos.ToString(), tic.Count) });
                }
                for (int i = 0; i < tic.Count; i++)
                {
                    #region 我改的 TransferRecord Insert
                    string TransferRecordId = Guid.NewGuid().ToString("N");
                    string TransferItemId_ForignKey = TransferItemId;
                    string DateCreated_Record = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    string PrevPositionId_Record = item.PrevPos.Key.ToString();
                    string NewPositionId_Record = item.NewPos.Key.ToString();
                    string PipeId = dt.Rows[i]["pipeid"].ToString();

                    sb.Append("Insert Into TransferRecord(TransferRecordId,TransferItemId,DateCreated,DateFinished,PrevPositionId,NewPositionId,PipeId)Values(");
                    sb.Append("'" + TransferRecordId + "',");
                    sb.Append("'" + TransferItemId_ForignKey + "',");
                    sb.Append("to_date('" + DateCreated + "', 'yyyy-mm-dd HH24:mi:ss'),");
                    sb.Append("null,");
                    sb.Append("'" + PrevPositionId_Record + "',");
                    sb.Append("'" + NewPositionId_Record + "',");
                    sb.Append("'" + PipeId + "');");

                    //2010-12-01 by huncherby  发起常检任务改变状态
                    sb.Append("update Pipe set state = (state + ");
                    sb.Append((int)PipeState.Transfering);
                    sb.Append(" - bitand(state, ");
                    sb.Append((int)PipeState.Transfering);
                    sb.Append(" )) Where PipeId = ");

                    sb.Append(dt.Rows[i]["PipeId"].ToString());
                    sb.Append(";");

                    #endregion
                }
                TotalCount += item.Count;
                transferTask.TotalCount += item.Count;
            }

            NormalCheckTask ncTask = new NormalCheckTask(Guid.NewGuid().ToString("N"), code, onlineAccount.DetectionCompany, pipeType, targetDigger, transferTask, onlineAccount, now);

            #region 我的修改 NormalCheckTask Insert
            string NormalCheckTaskId = Guid.NewGuid().ToString("N");
            string PipeTypeId_ForignKey = PipeTypeId;
            string DetectionCompanyId_ForignKey = DetectionCompanyId;
            string DiggerId = diggerId;
            string TransferTaskId_ForignKey = TransferTaskId;
            string Code = code;
            string DateCreated_NCTask = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            int Count_NCTask = TotalCount;
            //string pipeneednoticeitemid = null;

            sb.Append("Insert Into NormalCheckTask(NormalCheckTaskId,PipeTypeId,DetectionCompanyId,DiggerId,TransferTaskId,State,Code,WorkNO,CreatorId,DateCreated,SenderId,DateSent,ReceiverId,DateReceived,CheckItemCreatorId,CheckItemDateCreated,Count,CheckStandard,IsNeedMark,IsCheckAppearance,IsCheckThickness,IsCheckLength,IsNeedWash,IsCheckUnBlock,IsCheckPressure,CheckPressureType,IsCheckCloseness,IsCheckBodyCrack,CheckBodyCrackType,IsCheckBlindCrack,\"Comment\",FinisherId,DateFinished,CheckTools,CheckConclusion,ReportComment,MainCheckId,VeriferId,DateVerified,ApproverId,DateApproved,ReportNO,team,faxno,pipeneednoticeitemid)Values(");
            sb.Append("'" + NormalCheckTaskId + "',");
            sb.Append("'" + PipeTypeId_ForignKey + "',");
            sb.Append("'" + DetectionCompanyId_ForignKey + "',");
            sb.Append("'" + diggerId + "',");
            sb.Append("'" + TransferTaskId_ForignKey + "',");
            sb.Append("0,");
            sb.Append("'" + Code + "',");
            sb.Append("'',");
            sb.Append("'" + CreatorId + "',");
            sb.Append("to_date('" + DateCreated_NCTask + "', 'yyyy-mm-dd HH24:mi:ss'),");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("'" + Count_NCTask + "',");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("-1,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("-1,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,");
            sb.Append("null,'"+team+"','"+faxno+"',");
            sb.Append("'" + pipeneednoticeitemid + "');");
            sb.Append(" End;");
            #endregion
            INormalCheckTaskRepository NCTaskR = RepositoryFactory.GetRepository<INormalCheckTaskRepository, NormalCheckTask>();
            NCTaskR.Excute(sb.ToString());
            TempData["HintMessage"] = new PDCPMS.Application.HintMessage { Content = string.Format("成功发起常检任务({0})", Code) };
            return Json(new { success = true, taskId = Code });
        }
        public JsonResult Update(string code, string items)
        {
            #region 基本信息
            if (string.IsNullOrEmpty(code))
            {
                return Json(new { success = false, message = "未指定常检任务单" });
            }

            NormalCheckTask task = repository.FindByCode(code);

            if (string.IsNullOrEmpty(items))
            {
                return Json(new { success = false, message = "未指定调度项" });
            }

            IList<PDCPMS.DataContracts.Transfer.TransferItem> transferItemContracts;
            transferItemContracts = new JavaScriptSerializer().Deserialize<IList<PDCPMS.DataContracts.Transfer.TransferItem>>(items);

            if (transferItemContracts.Count < 1)
            {
                return Json(new { success = false, message = "未指定调度项" });
            }

            PipeType pipeType = null;
            //Digger targetDigger = null;
            if (Convert.ToInt32(task.PipeType.Key) < 1)
            {
                return Json(new { success = false, message = "未指定管材类型" });
            }
            pipeType = RepositoryFactory.GetRepository<IPipeTypeRepository, PipeType>().FindBy(task.PipeType.Key);

            if (pipeType == null)
            {
                return Json(new { success = false, message = "未指定管材类型" });
            }

            #endregion

            ITransferTaskRepository transferTaskRepository = RepositoryFactory.GetRepository<ITransferTaskRepository, TransferTask>(unitOfWork);
            ITransferItemRepository transferItemRepository = RepositoryFactory.GetRepository<ITransferItemRepository, TransferItem>(unitOfWork);
            ITransferRecordRepository transferRecordRepository = RepositoryFactory.GetRepository<ITransferRecordRepository, TransferRecord>(unitOfWork);
            IPipePositionRepository posRepository = RepositoryFactory.GetRepository<IPipePositionRepository, PipePosition>();
            IPipeRepository pipeRepository = RepositoryFactory.GetRepository<IPipeRepository, PDCPMS.Model.Common.Pipe>(unitOfWork);

            System.Data.DataTable dt2 = retory.FindNormalCheckRecords(task);
            int j = 0;
            StringBuilder sb = new StringBuilder();
            sb.Append("Begin ");

            foreach (PDCPMS.DataContracts.Transfer.TransferItem tic in transferItemContracts)
            {
                PipePosition prePos = posRepository.FindBy(tic.PrevPosId);
                PipePosition newPos = posRepository.FindBy(tic.NewPosId);

                System.Data.DataTable dt = pipeRepository.FindByMyCondition(prePos, pipeType, PipeState.Received | PipeState.Storing, PipeState.Transfering | PipeState.NormalChecking);

                if (prePos == null || newPos == null || tic.Count < 0)
                {
                    return Json(new { success = false, message = "你的调度项输入有误" });
                }

                TransferItem item = new TransferItem(Guid.NewGuid().ToString("N"), task.TransferTask);

                item.PrevPos = prePos;
                item.NewPos = newPos;
                item.Count = tic.Count;

                //改变数量
                //retory.AddNormalCheck(task, TotalCount);

                sb.Append("update normalchecktask set count=count+");
                sb.Append(tic.Count);
                sb.Append(" where normalchecktaskid='");
                sb.Append(task.Key.ToString()+"';");

                sb.Append("update transfertask set totalcount=totalcount+");
                sb.Append(tic.Count);
                sb.Append(" where TransferTaskid='");
                sb.Append(task.TransferTask.Key.ToString() + "';");

                if (dt.Rows.Count < tic.Count)
                {
                    return Json(new { success = false, message = string.Format("调度失败:垛位({0})已无{1}根可检测的存货,可能已经被调至别处", prePos.ToString(), tic.Count) });
                }
                #region 新增常检任务

                //新增transferitem
                string TransferItemId = Guid.NewGuid().ToString("N");
                string TransferTaskId_Forignkey = task.TransferTask.Key.ToString();
                //int Count = TotalCount;
                string PrevPositionId = item.PrevPos.Key.ToString();
                string NewPositionId = item.NewPos.Key.ToString();
                System.Data.DataTable dt1 = transferItemRepository.FindTransfer(task, item);

                if (dt1.Rows.Count > 0)
                {
                    sb.Append("update transferitem set count=count+");
                    sb.Append(tic.Count);
                    sb.Append(" where TransferTaskid='");
                    sb.Append(task.TransferTask.Key.ToString() + "' and prevpositionid=");
                    sb.Append(dt1.Rows[0]["PrevPositionId"].ToString() + ";");
                }
                else
                {
                    sb.Append("Insert Into TransferItem(TransferItemId, TransferTaskId, Count, PrevPositionId, NewPositionId)Values(");
                    sb.Append("'" + TransferItemId + "',");
                    sb.Append("'" + TransferTaskId_Forignkey + "',");
                    sb.Append("" + tic.Count + ",");
                    sb.Append("'" + PrevPositionId + "',");
                    sb.Append("'" + NewPositionId + "');");
                }
                 for (int i = 0; i < tic.Count; i++)
                {
                    j++;
                    //新增TransferRecord
                    string TransferRecordId = Guid.NewGuid().ToString("N");
                    string TransferItemId_key = dt1.Rows[0]["TransferItemId"].ToString();
                    string DateCreated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    string PrevPositionId_Record = item.PrevPos.Key.ToString();
                    string NewPositionId_Record = item.NewPos.Key.ToString();
                    string PipeId = dt.Rows[i]["pipeid"].ToString();

                    sb.Append("Insert Into TransferRecord(TransferRecordId,TransferItemId,DateCreated,DateFinished,PrevPositionId,NewPositionId,PipeId)Values(");
                    sb.Append("'" + TransferRecordId + "',");
                    sb.Append("'" + TransferItemId_key + "',");
                    sb.Append("to_date('" + DateCreated + "', 'yyyy-mm-dd HH24:mi:ss'),");
                    sb.Append("null,");
                    sb.Append("'" + PrevPositionId_Record + "',");
                    sb.Append("'" + NewPositionId_Record + "',");
                    sb.Append("'" + PipeId + "');");

                    //更新pipe
                    sb.Append("update Pipe set state = (state + ");

                    if (task.State == NormalCheckTaskState.Created)
                    {

                        sb.Append((int)PipeState.Transfering);
                        sb.Append(" - bitand(state, ");
                        sb.Append((int)PipeState.Transfering);
                        sb.Append(" ))");
                    }
                    else
                    {
                        sb.Append((int)PipeState.NormalChecking);
                        sb.Append(" - bitand(state, ");
                        sb.Append((int)PipeState.NormalChecking);
                        sb.Append(")),positionid = ");
                        sb.Append("'" + NewPositionId_Record + "',");
                        sb.Append(" prevposid= ");
                        sb.Append("'" + PrevPositionId_Record + "',poslastchangetime=");
                        sb.Append("to_date('" + DateCreated + "', 'yyyy-mm-dd HH24:mi:ss')");
                    }

                    sb.Append(" Where PipeId = ");
                    sb.Append(dt.Rows[i]["PipeId"].ToString() + ";");

                    if ((int)task.State >= (int)NormalCheckTaskState.Received && task.Approver != null)
                    {
                        int orderno = Convert.ToInt32(dt2.Rows[0]["max(orderno)"]) + j;
                        //新增Normalcheckrecords记录
                        string normalchecktaskid = Guid.NewGuid().ToString("N");

                        sb.Append("Insert Into normalcheckrecord(normalcheckrecordid,pipeid,normalchecktaskid,datecreated,orderno ) Values (");

                        sb.Append("'" + normalchecktaskid + "',");
                        sb.Append("'" + PipeId + "',");
                        sb.Append("'" + task.Key + "',");
                        sb.Append("to_date('" + DateCreated + "', 'yyyy-mm-dd HH24:mi:ss'),");
                        sb.Append("'" + orderno.ToString() + "' );");
                    }

                }
            }
            #endregion

            sb.Append(" End;");

            INormalCheckTaskRepository AddNCK = RepositoryFactory.GetRepository<INormalCheckTaskRepository, NormalCheckTask>();
            AddNCK.Excute(sb.ToString());

            TempData["HintMessage"] = new PDCPMS.Application.HintMessage { Content = "成功新增常检任务记录!" };
            return Json(new { success = true ,code=task.Code});
        }