123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- using iBemsDataService.Model;
- using Quartz;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Transactions;
- using System.Web;
- namespace iBemsDataService.Controllers.Fms.WorkManagement.ScheduledTask
- {
- public class WorkExecutionPlanJob : IJob
- {
- private iBemsEntities db = new iBemsEntities();
- public void Execute(IJobExecutionContext context)
- {
- var today = DateTime.Now.Date;
- var time = today.AddDays(-31);
- //return;
- using (var transaction = new TransactionScope())
- {
- // 내일 혹은 작업예정일이고 오늘 생성된 실행계획(작업요청)이 없다면
- // 실행계획을 생성해야 하는 기초계획 임
- var query =
- from s in db.FmsWorkSchedule
- where s.IsUse == true
- //&& (s.WorkDueDate == tomorrow || s.WorkDueDate == today)
- && (s.WorkDueDate >= time) //&& (s.WorkDueDate >= today)
- && db.FmsWorkRequest
- .Where(x => x.SiteId == s.SiteId
- && x.WorkScheduleId == s.WorkScheduleId
- //&& x.RequestDate == today
- && x.StartWorkDate == s.WorkDueDate
- )
- .Any() == false
- select s;
- foreach (var s in query)
- {
- var workRequest = new FmsWorkRequest
- {
- SiteId = s.SiteId,
- WorkScheduleId = s.WorkScheduleId,
- WorkTypeId = s.WorkTypeId,
- BusinessFieldId = s.BusinessFieldId,
- WorkProgressId = (short)WorkProgress.WORK_PLAN, // chl 수정(20161021)
- //WorkProgressId = s.IsAutoOrder ? (short)WorkProgress.WORK_STANDBY : (short)WorkProgress.WORK_PLAN,
- Title = s.Name,
- Content = s.Content,
- RequestDate = today,
- StartWorkDate = s.WorkDueDate,
- RequestUserId = s.UpdateUserId,
- InspectionAgencyId = s.InspectionAgencyId
- };
- workRequest = db.FmsWorkRequest.Add(workRequest);
- db.SaveChanges();
- // 기초계획에 설정된 시설들도 옮겨준다.
- var facilitiesQuery = from f in db.FmsWorkScheduleToFacility
- where f.SiteId == s.SiteId &&
- f.WorkScheduleId == s.WorkScheduleId
- select f;
- var facilities = facilitiesQuery.ToList();
- foreach (var f in facilities)
- {
- db.FmsWorkRequestToFacility.Add(new FmsWorkRequestToFacility
- {
- SiteId = f.SiteId,
- WorkRequestId = workRequest.WorkRequestId,
- FacilityCode = f.FacilityCode
- });
- }
- db.SaveChanges();
- // chl 수정(20161021)
- // 작업지시가 자동이면 작업지시도 생성
- //if (s.IsAutoOrder)
- //{
- // InsertWorkOrder(workRequest, facilities);
- //}
- }
- // 법정검사 및 정기점검의 작업에 자동지시로 되어 있으면 작업 예정일이 넘었는데도 실행계획에 있으면 작업예정일 0시에 자동으로 작업목록으로 넘어간다
- var query_auto =
- from s in db.FmsWorkSchedule
- join w in db.FmsWorkRequest on s.WorkScheduleId equals w.WorkScheduleId
- where s.IsUse == true
- && s.IsAutoOrder == true
- && (w.StartWorkDate <= today)
- && db.FmsWorkOrder
- .Where(x => x.SiteId == w.SiteId
- && x.WorkRequestId == w.WorkRequestId
- && x.Title == w.Title
- )
- .Any() == false
- select w;
- foreach (var w in query_auto)
- {
- // FmsWorkRequest 테이블 WorkProgressId 업데이트
- var update_WorkProgressId = (from d in db.FmsWorkRequest
- where d.WorkRequestId == w.WorkRequestId
- select d).Single();
- update_WorkProgressId.WorkProgressId = (short)WorkProgress.WORK_STANDBY;
- db.SaveChanges();
- var workRequest = new FmsWorkRequest
- {
- SiteId = w.SiteId,
- WorkRequestId = w.WorkRequestId,
- BusinessFieldId = w.BusinessFieldId,
- Title = w.Title,
- RequestUserId = w.RequestUserId,
- StartWorkDate = w.StartWorkDate
- };
- // 기초계획에 설정된 시설들도 옮겨준다.
- var facilitiesQuery = from f in db.FmsWorkScheduleToFacility
- where f.SiteId == w.SiteId &&
- f.WorkScheduleId == w.WorkScheduleId
- select f;
- var facilities = facilitiesQuery.ToList();
- InsertWorkOrder(workRequest, facilities);
- }
- transaction.Complete();
- }
- }
- private void InsertWorkOrder(FmsWorkRequest workRequest, List<FmsWorkScheduleToFacility> facilities)
- {
- var workOrder = new FmsWorkOrder
- {
- SiteId = workRequest.SiteId,
- WorkRequestId = workRequest.WorkRequestId,
- BusinessFieldId = workRequest.BusinessFieldId,
- OrderUserId = workRequest.RequestUserId,
- OrderDate = DateTime.Now.Date,
- Title = workRequest.Title,
- Content = workRequest.Content,
- StartWorkDate = workRequest.StartWorkDate
- };
- workOrder = db.FmsWorkOrder.Add(workOrder);
- foreach (var f in facilities)
- {
- db.FmsWorkOrderToFacility.Add(new FmsWorkOrderToFacility
- {
- SiteId = f.SiteId,
- WorkRequestId = workOrder.WorkRequestId,
- FacilityCode = f.FacilityCode
- });
- }
- //workRequest.WorkProgressId = (short)WorkProgress.WORK_STANDBY;
- db.SaveChanges();
- }
- }
- }
|