Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
                }
            }
        }