private void ParsePlaceEquipData(List <IRowStream> Rows) { List <EquipRecord> listUpdateEquipData = new List <EquipRecord>(); List <EquipRecord> listInsertEquipData = new List <EquipRecord>(); // 取得位置設施資料 GetPlaceEquipData(); foreach (IRowStream row in Rows) { // 取得Key值 string place1 = row.GetValue("位置名稱(階層1)"); string place2 = row.GetValue("位置名稱(階層2)"); string place3 = row.GetValue("位置名稱(階層3)"); string key = GetKey(place1, place2, place3); // 透過key值取得位置系統編號 string placeID = this._dicPlaceUIDByKey[key]; // 透過位置系統編號取的該位置所屬設施 List <EquipRecord> listEquipRecord = this._dicEquipRecordByPlaceID[placeID]; // 透過該位置所屬設施判斷資料: 新增 or 更新 // 設施名稱為Key值 if (!string.IsNullOrEmpty(row.GetValue("設施名稱"))) // 如果設施名稱不是空字串 { var find = from data in listEquipRecord where data.Name == row.GetValue("設施名稱") select data; if (find.Count() > 0) // 找到 更新 { EquipRecord equip = null; foreach (EquipRecord data in find) { equip = data; equip.PropertyNo = row.GetValue("設施財產編號"); } listUpdateEquipData.Add(equip); } else // 沒找到 新增 { EquipRecord equip = new EquipRecord(); equip.UID = null; equip.Name = row.GetValue("設施名稱"); equip.PropertyNo = row.GetValue("設施財產編號"); equip.RefPlaceID = placeID; equip.CreateTime = DateTime.Now; equip.CreatedBy = this._userAccount; listInsertEquipData.Add(equip); } } } SaveEquipData(listUpdateEquipData, listInsertEquipData); }
private void GetPlaceEquipData() { this._dicEquipRecordByPlaceID.Clear(); string sql = @" SELECT place.uid , place.name , place.level , father.name AS father , grandfather.name AS grandfather , equip.uid AS equip_uid , equip.name AS equip_name , equip.property_no , equip.create_time , equip.created_by FROM $ischool.equip_repair.place AS place LEFT OUTER JOIN $ischool.equip_repair.place AS father ON father.uid = place.parent_id LEFT OUTER JOIN $ischool.equip_repair.place AS grandfather ON grandfather.uid = father.parent_id LEFT OUTER JOIN $ischool.equip_repair.equip AS equip ON equip.ref_place_id = place.uid "; DataTable dt = this._qh.Select(sql); // 資料整理 foreach (DataRow row in dt.Rows) { string placeID = "" + row["uid"]; string equipID = "" + row["equip_uid"]; if (!this._dicEquipRecordByPlaceID.ContainsKey(placeID)) { this._dicEquipRecordByPlaceID.Add(placeID, new List <EquipRecord>()); } if (!string.IsNullOrEmpty(equipID)) { EquipRecord data = new EquipRecord(); data.UID = equipID; data.Name = "" + row["equip_name"]; data.PropertyNo = "" + row["property_no"]; data.RefPlaceID = placeID; data.CreateTime = DateTime.Parse("" + row["create_time"]); data.CreatedBy = this._userAccount; this._dicEquipRecordByPlaceID[placeID].Add(data); } } }