using ESRI.ArcGIS.Geodatabase; using KGIS.Framework.DBOperator; using KGIS.Framework.Maps; using KGIS.Framework.Platform; using KGIS.Framework.Utils; using KGIS.Framework.Views; using Kingo.ImageViewForWebSocket; using Kingo.PluginServiceInterface; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Controls; using UIShell.OSGi; namespace Kingo.Plugin.ProofManager.View { /// /// UCImgView.xaml 的交互逻辑 /// public partial class UCImgView : UserControl, IElementInfo { ICameraPoint CameraHelper = null; private Dictionary DICIRDBHelper = null; private string pPath = string.Empty; private List DelFJList = new List(); IProofManager ProofMgr = null; private List ImgList = null; private ProjectInfo PrjInfo { get { return MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo; } } public UCImgView() { InitializeComponent(); Title = "外业照片"; DockHeight = 240; this.Loaded += (s1, e1) => { MapsManager.Instance.MapService.getAxMapControl().OnMouseDown += (s, e) => { try { if (e.button != 1) { return; } //System.Drawing.Point point = new System.Drawing.Point() { X = e.x, Y = e.y }; if (!(ImgList != null && ImgList.Count > 0)) { return; } int x = 0, y = 0; foreach (var item in ImgList) { ESRI.ArcGIS.Geometry.IPoint mP = new ESRI.ArcGIS.Geometry.PointClass() { X = item.X, Y = item.Y }; MapsManager.Instance.MapService.getAxMapControl().FromMapPoint(mP, ref x, ref y); double d = Math.Pow(x - e.x, 2) + Math.Pow(y - e.y, 2); double l = Math.Sqrt(d); //AttachEntity photoInfo = ImgList.FirstOrDefault(Z => Z.FJMC.Equals(item.FJMC)); if (l < 21) { ucImgXZZP.SetImage(item.FJMC); //for (int i = 0; i < fj1.ImgListSource.Count; i++) //{ // if (fj1.ImgListSource[i].FJMC.Equals(item.Key, StringComparison.CurrentCultureIgnoreCase)) // { // fj1.Index = i; // fj1.BindImage(); // break; // } //} } } } catch (Exception ex) { LogAPI.Debug("方位角选择同步照片异常:" + ex.Message); } }; }; ucImgXZZP.ChangedPointSymbol = ChangedPointSymbol; ucImgXZZP.ShowImgHandel = (path) => { WebsocketHelper.Instance.Send("src:" + path); }; ucImgXZZP.RotateImgHandel = (angle) => { WebsocketHelper.Instance.Send("angle:" + angle); }; ucImgXZZP.FullImgHandel = () => { WebsocketHelper.Instance.Send("full:"); }; Platform.Instance.NotifyMsgEven2 += (o) => { try { switch (o.MsgType) { case "BindProofImg": ucImgXZZP.InitData(o.Content as List); break; case "FullShowPic": ucImgXZZP.Img_Full_MouseLeftButtonDown(null, null); break; case "Select": ucImgXZZP.CbIsCheck_Checked(null, null); break; case "Next": ucImgXZZP.nextImg_MouseLeftButtonDown(null, null); break; case "Prev": ucImgXZZP.prevImg_MouseLeftButtonDown(null, null); break; default: break; } } catch (Exception ex) { LogAPI.Debug("绑定外业照片时异常,异常信息如下:"); LogAPI.Debug(ex); LogAPI.Debug("绑定外业照片时异常 异常信息结束"); } }; } private void ChangedPointSymbol(string fjmc) { //更新地图显示方位角样式 //EnvironmentVariables.Instance.cameraPoint.ChangedPointSymbol(fjmc); if (CameraHelper == null) CameraHelper = MapsManager.Instance.MapService as ICameraPoint; if (CameraHelper != null) CameraHelper.ChangedPointSymbol(fjmc); } public int ShowIndex { get; set; } public bool ResetSize { get; set; } public bool AllowEdit { get; set; } public Guid ID { get; set; } public DockStyle DockAreas { get; set; } public System.Drawing.Size FloatSize { get; set; } public int DockWidth { get; set; } public int DockHeight { get; set; } public DockStyle DefaultArea { get; set; } public bool ShowCloseButton { get; set; } public bool ShowAutoHideButton { get; set; } public string Title { get; set; } public bool IsShow { get; set; } public void BindData(object obj) { try { DelFJList.Clear(); if (obj == null) ucImgXZZP.InitData(null, false); if (ProofMgr == null) ProofMgr = BundleRuntime.Instance.GetFirstOrDefaultService(); if (obj is List) { if (CameraHelper == null) CameraHelper = MapsManager.Instance.MapService as ICameraPoint; if (CameraHelper != null) CameraHelper.AddCameraPoint(obj as List); ucImgXZZP.InitData(obj as List, true); ImgList = obj as List; } else if (obj is List) { List _ProofList = obj as List; if (_ProofList != null && _ProofList.Count > 0) { if (CameraHelper == null) CameraHelper = MapsManager.Instance.MapService as ICameraPoint; if (CameraHelper != null) CameraHelper.AddCameraPoint(_ProofList[0].ImgList); } var tempData = obj as List; if (tempData != null && tempData.Count > 0) { ucImgXZZP.InitData(tempData[0].ImgList as List, true); ImgList = tempData[0].ImgList as List; } else { ucImgXZZP.InitData(null); ImgList = null; } } //var list = ucImgXZZP.GetAttachEntityList(); //if (list != null && list.Count > 0) //{ // List attachEntities_checkfalse = list.FindAll(x => x.isCheck == false); // foreach (var item in attachEntities_checkfalse) // { // DelFJList.Add(item.FJMC); // } //} } catch (Exception ex) { LogAPI.Debug("绑定外业照片时异常,异常信息如下:"); LogAPI.Debug(ex); LogAPI.Debug("绑定外业照片时异常 异常信息结束"); } } private List GetProofData(IFeature pFeature) { List result = new List(); int fieldIndex = pFeature.Fields.FindField("TBYBH"); if (fieldIndex > 0) { result = ProofMgr.GetProofInfoList(pFeature.Value[fieldIndex].ToString()); } return result; } public void SaveEdit() { List attachEntities = ucImgXZZP.GetAttachEntityList(); if (attachEntities != null && attachEntities.Count > 0) { try { if (DICIRDBHelper == null) DICIRDBHelper = new Dictionary(); string dbPath = $"{(MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ProjDir}\\BGTJ.sqlite"; IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); var tempPrj = new ProjectInfo(); DataTable tab = rdbHelper.ExecuteDatatable("dbpath", $"select TBBH,DbPath from hcdb_relation where TBBH='{attachEntities[0].JCBH}' ", true); if (tab != null && tab.Rows.Count > 0) { List attachEntities_checkfalse = null; string fjmcs = string.Empty; string DBPath = tab.Rows[0]["DbPath"].ToString(); if (!DICIRDBHelper.ContainsKey(DBPath)) DICIRDBHelper.Add(DBPath, RDBFactory.CreateDbHelper("Data Source=" + DBPath, DatabaseType.SQLite)); rdbHelper = DICIRDBHelper[DBPath]; var v = rdbHelper.ExecuteSQL($" update FJ set isSelected=0 where TBBSM = '{attachEntities[0].JCBH}' "); attachEntities_checkfalse = attachEntities.FindAll(x => x.isCheck == true); fjmcs = string.Join(",", attachEntities_checkfalse.Select(x => $"'{x.FJMC}'")); v = rdbHelper.ExecuteSQL($" update FJ set isSelected=1 where TBBSM = '{attachEntities[0].JCBH}' and FJMC in ({fjmcs}) "); } } catch (Exception ex) { LogAPI.Debug("保存照片状态时异常,异常信息如下:"); LogAPI.Debug(ex); LogAPI.Debug("保存照片状态时异常 异常信息结束"); } } } public void Clear() { if (DICIRDBHelper != null) { foreach (var item in DICIRDBHelper) { if (item.Value == null) continue; item.Value.DisConnect(); } DICIRDBHelper = null; } } } }