PLCVM.cs 4.66 KB
using AutoMapper;
using HHECS.Application.Enums;
using HHECS.Infrastructure.Excel;
using HHECS.Model.Entities;
using HHECS.Model.ExcelModels;
using HHECS.WinCommon.ViewModel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using MessageBox = HandyControl.Controls.MessageBox;

namespace HHECS.WinClient.View.EquipmentInfo
{
    public class PLCVM : VMBase
    {
        public string PLCCode { get; set; }

        public string PLCName { get; set; }

        public List<PLC> PLCs { get; set; }

        public PageInfo PageInfo { get; set; } = new PageInfo();

        public void Query()
        {
            Expression<Func<PLC, bool>> filter = t => true;
            if (!string.IsNullOrWhiteSpace(PLCCode))
            {
                filter = filter.And(t => t.Code.Contains(PLCCode));
            }
            if (!string.IsNullOrWhiteSpace(PLCName))
            {
                filter = filter.And(t => t.Name.Contains(PLCName));
            }

            var result = App.EquipmentService.GetPLCs(filter, PageInfo.PageIndex, PageInfo.PageSize, out long totalCount);
            if (result.Success)
            {
                PageInfo.TotalCount = totalCount;
                PLCs = result.Data;
            }
            else
            {
                MessageBox.Show($"查询失败:{result.Msg}");
            }

        }

        public void Edit(PLC plc)
        {
            if (plc == null)
            {
                MessageBox.Show("请选中数据");
                return;
            }
            WinPLCAddOrEdit win = new WinPLCAddOrEdit(plc.Id);
            win.ShowDialog();
            Query();
        }

        public void New()
        {
            WinPLCAddOrEdit win = new WinPLCAddOrEdit(0);
            win.ShowDialog();
            Query();
        }

        public void Delete(List<PLC> plcs)
        {
            if (plcs == null || plcs.Count == 0)
            {
                MessageBox.Show("未选中数据");
                return;
            }
            if (MessageBox.Show("是否确认删除?", "警告", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
            {
                return;
            }
            var bllResult = App.EquipmentService.DeletePLCs(plcs);
            if (bllResult.Success)
            {
                App.LogService.LogOperation(Title.MaintainOperationDelete, ModuleConst.MaintainOperation, $"PLC数据删除成功.数据:{JsonConvert.SerializeObject(plcs.Select(t => new { Id = t.Id, Name = t.Name }))}", bllResult.Code.ToString(), App.User.UserCode);
                MessageBox.Show("删除成功");
            }
            else
            {
                App.LogService.LogOperation(Title.MaintainOperationDelete, ModuleConst.MaintainOperation, $"PLC数据删除失败.数据:{JsonConvert.SerializeObject(plcs.Select(t => new { Id = t.Id, Name = t.Name }))}.详情:{bllResult.Msg}", bllResult.Code.ToString(), App.User.UserCode);
                MessageBox.Error($"删除失败:{bllResult.Msg}");
            }
            Query();
        }

        public async void Export()
        {
            try
            {
                if (MessageBox.Show("是否确认导出?", "注意", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
                {
                    return;
                }
                Expression<Func<PLC, bool>> filter = t => true;
                var result = App.EquipmentService.GetPLCs(filter);
                if (result.Success)
                {
                    var operations = result.Data;
                    var config = new MapperConfiguration(cfg => cfg.CreateMap<PLC, PLCExcelModel>());
                    var mapper = config.CreateMapper();
                    List<PLCExcelModel> models = new List<PLCExcelModel>();
                    operations.ForEach(t =>
                    {
                        var temp = mapper.Map<PLCExcelModel>(t);
                        models.Add(temp);
                    });
                    string TimeTxt = DateTime.Now.ToString("yyyy年MM月dd日HH点mm分ss秒");
                    await NPIOHelper.ExportDTtoExcelAsync<PLCExcelModel>(models, "PLC数据", string.Format($"{App.ExportPath}PLC数据{TimeTxt}.xlsx"), App.ExportPath);
                    MessageBox.Show($"PLC数据导出成功");
                }
                else
                {
                    MessageBox.Show($"导出失败:{result.Msg}");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"导出异常:{ex.Message}");
            }
        }
    }
}