| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- using DevExpress.Mvvm;
- using DevExpress.Utils.DirectXPaint;
- using DevExpress.Xpo;
- using DevExpress.XtraDiagram.Base;
- using Ips.Library.Basic;
- using Ips.Library.Entity;
- using Ips.Sps.TskResults.Poses;
- using Ips.Sps.Tsks;
- using Ips.Sps.Tsks.Commands;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Ips.Sps.Store
- {
- public class PosStore
- {
- public static readonly PosStore Default = new PosStore();
- public PosStore()
- {
- _posManager = PosManager.Default;
- QueryModel = new PosQueryModel()
- {
- TskId = TskManager.Default.SelectTskId,
- SigId = TskManager.Default.SelectSigId,
- LastHours = 1,
- ShowNotValidPoint = false
- };
- ResigiterRecvMsg();
- }
- public event EventHandler ListFilterChanged;
- PosManager _posManager;
- public PosQueryModel QueryModel { get; private set; }
- private static readonly object obj = new object();
- private BindingList<Pos> _posList = new BindingList<Pos>();
- public BindingList<Pos> List => _posList;
- public IEnumerable<long> FilterPosIds { get; private set; }
- private long _gridSelectPosId;
- public long GridSelectPosId => _gridSelectPosId;
- private long _mapSelectPosId;
- public long MapSeLectPosId => _mapSelectPosId;
- private string _msgToken;
- public void GetAll()
- {
- lock (obj)
- {
- var list = _posManager.GetAll(QueryModel);
- _posList.Clear();
- foreach (var item in list)
- {
- _posList.Add(item);
- }
- }
- }
- public void Insert(IEnumerable<Pos> posList)
- {
- if (posList.IsNullOrEmpty()) return;
- lock (obj)
- {
- var posIds = posList.Select(m => m.Id).ToArray();
- var posQuery = _posManager.GetSession().Query<Pos>().Where(m => posIds.Contains(m.Id));
- var _list = _posManager.CreateFilter(posQuery, QueryModel).ToList();
- foreach (var posItem in _list)
- {
- //_posList.Insert(0, posItem);
- _posList.Add(posItem);
- }
- }
- }
- public void Delete(int[] idxs)
- {
- var posIds = new long[idxs.Length];
- lock (obj)
- {
- Array.Sort(idxs);
- for (int i = idxs.Length - 1; i >= 0; i--)
- {
- var idx = idxs[i];
- if (idx < 0) continue;
- var pos = _posList[idx];
- _posList.RemoveAt(idx);
- posIds[i] = pos.Id;
- }
- }
- _posManager.DeleteByIds(posIds);
- }
- public void UseMirr(int[] idxs)
- {
- var posIds = new long[idxs.Length];
- lock (obj)
- {
- for (int i = 0; i < idxs.Length; i++)
- {
- var idx = idxs[i];
- var pos = _posList[idx];
- pos.UseMirrPos();
- _posList.ResetItem(idx);
- posIds[i] = pos.Id;
- }
- }
- _posManager.DeleteByIds(posIds);
- }
- public void SetValid(int[] idxs, bool isvalid)
- {
- var posIds = new long[idxs.Length];
- lock (obj)
- {
- for (int i = 0; i < idxs.Length; i++)
- {
- var idx = idxs[i];
- var pos = _posList[idx];
- pos.IsValid = isvalid;
- _posList.ResetItem(idx);
- posIds[i] = pos.Id;
- }
- }
- _posManager.GetSession().ExecuteNonQuery($"update pos set isvalid={isvalid} where id in ({string.Join(',', posIds)})");
- }
- public void SetGridSelectPosId(long posId)
- {
- _gridSelectPosId = posId;
- Messenger.Default.Send(new PosSelectedChangedMessage(posId), "list");
- }
- public void ShowPosListByIds(IEnumerable<long> posIds)
- {
- FilterPosIds = posIds;
- ListFilterChanged.InvokeSafely(this);
- }
- public void SetMapSelectPosId(long posId)
- {
- _mapSelectPosId = posId;
- Messenger.Default.Send(new PosSelectedChangedMessage(posId), "map");
- }
- private void ResigiterRecvMsg()
- {
- Messenger.Default.Register<TskSelectedMessage>(this, TskSelectChanged);
- }
- private void TskSelectChanged(TskSelectedMessage msg)
- {
- QueryModel.TskId = msg.TskId;
- QueryModel.SigId = msg.SigId;
- string msgToken = "";
- if (QueryModel.SigId > 0)
- {
- msgToken = $"{QueryModel.TskId}_{QueryModel.SigId}";
- }
- else if (QueryModel.TskId > 0)
- {
- msgToken = $"{QueryModel.TskId}";
- }
- Messenger.Default.Unregister<PosListChangedMessage>(this, _msgToken, OnPosListChanged);
- GetAll();
- Messenger.Default.Register<PosListChangedMessage>(this, msgToken, OnPosListChanged);
- _msgToken = msgToken;
- }
- private void OnPosListChanged(PosListChangedMessage msg)
- {
- switch (msg.ChangeType)
- {
- case DataChangeType.Insert:
- Insert(msg.PosList);
- break;
- case DataChangeType.Update:
- break;
- case DataChangeType.Delete:
- break;
- }
- }
- }
- }
|