public ActionResult startHand(ViewModel_StHanEmp data) { //宣告變數接收傳回值 string employee_workNumber = Request["employee_WorkNumber"]; string employee_name = Request["employee_Name"]; string factory_Id = Request["factoryId"]; int startId = data.StartId; //用action決定動作 0表示查詢顯示資料 int action = Convert.ToInt32(Request["action"]); try { //action =1時,新增新資料行 if (action == 1) { //找出年度 var query1 = from o in db.StartCheck where o.Start_id == startId select o.start_year; int year = query1.FirstOrDefault(); //產生流水號 var query8 = from o in db.StartHand where o.startHand_checkId == startId orderby o.startHand_serialNumber descending select o.startHand_serialNumber; int serialNumber = query8.FirstOrDefault() + 1; string stringSerialNumber = serialNumber.ToString(); //找出廠別代碼 var query9 = from o in db.Employee where o.employee_workNumber == employee_workNumber select o.employee_factoryId; string factoryId = query9.FirstOrDefault(); //找出更新者 string updateUserWorkNumber = Session["employee_workNumber"].ToString(); var query2 = from o in db.Employee where o.employee_workNumber == updateUserWorkNumber select o.employee_name; string updateUserName = query2.FirstOrDefault(); StartHand startHand = new StartHand() { startHand_checkId = startId, startHand_workNumber = employee_workNumber, startHand_type = "手動收集", startHand_No = "RG" + year.ToString() + stringSerialNumber.PadLeft(5, '0') + factoryId.PadLeft(4, '0'), startHand_serialNumber = serialNumber, standHand_updateUser = updateUserName, startHand_updateTime = DateTime.Now }; //StartHand加入新資料行 db.StartHand.Add(startHand); //寫回資料庫 db.SaveChanges(); } //action=2,刪除資料表 if (action == 2) { //查詢要刪除的資料行 var q2 = (from o in db.StartHand where o.startHand_checkId == startId && o.startHand_workNumber == employee_workNumber select o).FirstOrDefault(); //把該筆資料標記為刪除 db.StartHand.Remove(q2); //存回資料庫,並刪除該筆 db.SaveChanges(); } //try有錯時,拋出錯誤 } catch (Exception ex) { return(Content(ex.ToString())); } //假如employee_workNumber為空 if (string.IsNullOrEmpty(employee_workNumber)) { //把employee_workNumber值設為空字串 employee_workNumber = ""; } //假如employee_name為空 if (string.IsNullOrEmpty(employee_name)) { //把employee_name值設為空字串 employee_name = ""; } //假如factory_Id為空 if (string.IsNullOrEmpty(factory_Id)) { //把factory_Id值設為空字串 factory_Id = ""; } //模糊查詢員工編號、員工姓名、廠別代號 var query = from o in db.Employee where o.employee_workId == 3 && o.employee_workNumber.Contains(employee_workNumber) && o.employee_name.Contains(employee_name) && o.employee_factoryId.Contains(factory_Id) select o; //把查詢到的員工資料丟入ViewModel_StHanEmp裡 data.Employee = query.ToList(); data.StartId = data.StartId; return(View(data)); }
public ActionResult checkCollect(int StartID, int startYear, int saveSignal) //收集作業 { Session["checkCollectStartID"] = StartID; Session["checkCollectstartYear"] = startYear; healthSystemCheckCollect data = new healthSystemCheckCollect(); data.StartID = StartID;//把StartID存到ViewModel給手動收集的新增人員使用 //列出目前的廠別 var query = from o in db.StartPlace where o.startplace_startId == StartID select o; data.startPlace = query.ToList(); //列出待驗的人員 var query1 = from o in db.StartPlace //先查出這個健檢計畫的受檢廠別有哪些 where o.startplace_startId == StartID select o.startPlace_factoryId; List <string> factoryID = query1.ToList(); //把廠別存成List List <string> allWorkNumber = new List <string>(); //存放此健檢計畫受檢單位的一般員工 List <int> allWorkNumberAge = new List <int>(); //存放此健檢計畫受檢單位的一般員工的年齡 List <string> startHandWorkNumber = new List <string>(); //存放挑選過後該去健檢的員工(存入startHand時使用) List <string> startHandFactoryID = new List <string>(); //存放挑選過後該去健檢的員工的廠別代號(存入startHand時使用) List <Employee> employeeList = new List <Employee>(); //創造一個List類別為Employee,物件名稱為employeeList foreach (var ID in factoryID) //把查到的廠別依序取出來查詢所屬此廠別的員工 { var query2 = from o in db.Employee where o.employee_factoryId == ID && o.employee_workId == 3 //o.employee_workId == 3:找出身分為一般員工的人員 select o.employee_workNumber; allWorkNumber.AddRange(query2.ToList()); //存入allWorkNumber } foreach (var number in allWorkNumber) //查詢allWorkNumber裡面員工的年齡 { var query4 = from o in db.Employee where o.employee_workNumber == number select o.employee_age; allWorkNumberAge.AddRange(query4.ToList()); } //allWorkNumber和allWorkNumberAge兩個List存放的資料 // List<string> allWorkNumber | List<int> allWorkNumberAge // 員工工號A | 員工編號A的年齡 編號第0筆 // 員工工號B | 員工編號B的年齡 編號第1筆 // 員工工號C | 員工編號C的年齡 編號第2筆 // 員工工號D | 員工編號D的年齡 編號第3筆 // 員工工號E | 員工編號E的年齡 編號第4筆 //用for迴圈去繞出編號第0筆的員工工號與年齡,即可對應 for (int i = 0; i <= allWorkNumber.Count() - 1; i++) { //檢查年齡確定級距 int level = 0; if (allWorkNumberAge[i] < 40) { level = 5; //40歲以下的級距為每5年一次 } if (40 <= allWorkNumberAge[i] && allWorkNumberAge[i] < 65) { level = 3; //40歲以上未滿65歲的級距為每3年一次 } if (65 <= allWorkNumberAge[i]) { level = 1; //65歲以上的級距為每5年一次 } //查詢ReportCheckItem查出 編號第i筆 最近一次健檢的年度,存到lastcheckYear string stringAllWorkNumber = allWorkNumber[i]; var query5 = from o in db.ReportCheckItem where o.ReportCheckItem_employee_workNumber == stringAllWorkNumber orderby o.ReportCheckItem_checkYear descending select o.ReportCheckItem_checkYear; int lastcheckYear = query5.First(); //存入 //最近健檢的年度(newcheckYear)加上他的級距(level)即為他應該健檢的年度 //如果跟這次啟動作業的年度一樣的話表示他就是今年要去健檢 if (lastcheckYear + level == startYear) { //查出這人在Employee的資料存入employeeList var query6 = from o in db.Employee where o.employee_workNumber == stringAllWorkNumber select o; employeeList.AddRange(query6.ToList()); //查出這人在Employee的員工編號 var query7 = from o in db.Employee where o.employee_workNumber == stringAllWorkNumber select o.employee_workNumber; startHandWorkNumber.AddRange(query7.ToList()); //查出這人在Employee的廠別代號 var query8 = from o in db.Employee where o.employee_workNumber == stringAllWorkNumber select o.employee_factoryId; startHandFactoryID.AddRange(query8.ToList()); } }//for繞完後就已經篩選出應該要去健檢的人 data.employee = employeeList; //存入ViewModel的employee做顯示 //儲存被按下後將系統收集的人員存入 if (saveSignal == 0) { foreach (var workNumber in startHandWorkNumber) { //產生流水號 var query8 = from o in db.StartHand where o.startHand_checkId == StartID orderby o.startHand_serialNumber descending select o.startHand_serialNumber; int serialNumber = query8.FirstOrDefault() + 1; string stringSerialNumber = serialNumber.ToString(); //找出廠別代碼 var query9 = from o in db.Employee where o.employee_workNumber == workNumber select o.employee_factoryId; string factoryId = query9.FirstOrDefault(); //將系統收集的資料存入startHand裡面 StartHand newStartHand = new StartHand() { startHand_checkId = StartID, startHand_workNumber = workNumber, startHand_type = "系統收集", startHand_No = "RG" + startYear.ToString() + stringSerialNumber.PadLeft(5, '0') + factoryId.PadLeft(4, '0'), startHand_serialNumber = serialNumber, startHand_updateTime = DateTime.Now }; db.StartHand.Add(newStartHand); db.SaveChanges(); } } //列出startHand人員(以儲存人員) var query3 = from o in db.StartHand where o.startHand_checkId == StartID select o; data.startHand = query3.ToList(); return(View(data)); }