完成附件功能
This commit is contained in:
		
							parent
							
								
									8ea15b2ab7
								
							
						
					
					
						commit
						e7f8aaed1f
					
				@ -20,7 +20,9 @@ namespace CalendarNotepad.Extends
 | 
			
		||||
 | 
			
		||||
        public void DbInit() {
 | 
			
		||||
            using var db = new DbContext();
 | 
			
		||||
            db.CodeFirst.InitTables<WorkUnit>();
 | 
			
		||||
            db.CodeFirst.InitTables<WorkUnit>(); 
 | 
			
		||||
            db.CodeFirst.InitTables<PlusFileUnit>();
 | 
			
		||||
            db.CodeFirst.InitTables<WorkUnitPlusFile>();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										66
									
								
								CalendarNotepad/Extends/PlusFile.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								CalendarNotepad/Extends/PlusFile.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
			
		||||
using System.Security.Cryptography;
 | 
			
		||||
using System.Text;
 | 
			
		||||
 | 
			
		||||
namespace CalendarNotepad.Extends
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 附件操作
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public static class PlusFile
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 获取MD5码
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string GetMd5(string fileContent) {
 | 
			
		||||
            var ibs = Encoding.UTF8.GetBytes(fileContent);
 | 
			
		||||
            return GetMd5(ibs);
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 获取MD5码
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public static string GetMd5(byte[] content) {
 | 
			
		||||
            using var md5 = MD5.Create();
 | 
			
		||||
            var md5bs = md5.ComputeHash(content);
 | 
			
		||||
            StringBuilder sb = new(md5bs.Length * 2);
 | 
			
		||||
            for(int i = 0;i < md5bs.Length;i++) {
 | 
			
		||||
                sb.Append(md5bs[i].ToString("X2"));
 | 
			
		||||
            }
 | 
			
		||||
            return sb.ToString();
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 读取文件内容
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="fullFilePath"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public static byte[] LoadFile(string fullFilePath) {
 | 
			
		||||
            if(!File.Exists(fullFilePath)) {
 | 
			
		||||
                throw new FileNotFoundException();
 | 
			
		||||
            }
 | 
			
		||||
            var fileInfo = new FileInfo(fullFilePath);
 | 
			
		||||
            var fileSize = fileInfo.Length;
 | 
			
		||||
            if(fileSize > 4 * 1024 * 1024) {
 | 
			
		||||
                throw new OutOfMemoryException();
 | 
			
		||||
            }
 | 
			
		||||
            using FileStream fs = fileInfo.OpenRead();
 | 
			
		||||
            using BinaryReader br = new BinaryReader(fs);
 | 
			
		||||
            var length = (int)fs.Length;
 | 
			
		||||
            var buf = br.ReadBytes(length);
 | 
			
		||||
            return buf;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 写入文件内容
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="fullFilePath"></param>
 | 
			
		||||
        /// <param name="content"></param>
 | 
			
		||||
        public static void SaveFile(string fullFilePath,byte[] content) {
 | 
			
		||||
            if(File.Exists(fullFilePath)) {
 | 
			
		||||
                File.Delete(fullFilePath);
 | 
			
		||||
            }
 | 
			
		||||
            using var fs = new FileStream(fullFilePath,FileMode.CreateNew,FileAccess.Write);
 | 
			
		||||
            using var bw = new BinaryWriter(fs);
 | 
			
		||||
            bw.Write(content);
 | 
			
		||||
            bw.Flush();
 | 
			
		||||
            bw.Close();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -45,7 +45,6 @@ namespace CalendarNotepad
 | 
			
		||||
 | 
			
		||||
        private void rtbMsg_TextChanged(object sender,EventArgs e) {
 | 
			
		||||
            var data = new WorkUnit {
 | 
			
		||||
                DayRange = GetDateRange(),
 | 
			
		||||
                WorkDay = this.mcWorkDay.SelectionStart.ToString("yyyyMMdd"),
 | 
			
		||||
                WorkMessage = this.rtbMsg.Text,
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								CalendarNotepad/Models/PlusFileUnit.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								CalendarNotepad/Models/PlusFileUnit.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
namespace CalendarNotepad.Models
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 附件文件单元
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class PlusFileUnit
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 文件指纹ID
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? FileId { get; set; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 文件内容
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public byte[]? FileContent { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -27,7 +27,7 @@ namespace CalendarNotepad.Models
 | 
			
		||||
 | 
			
		||||
        public void AddOrReplace(WorkUnit unit) {
 | 
			
		||||
            lock(_lockObj) {
 | 
			
		||||
                var qu = this.WorkList.Where(a => a.WorkDay == unit.WorkDay && a.DayRange == unit.DayRange);
 | 
			
		||||
                var qu = this.WorkList.Where(a => a.WorkDay == unit.WorkDay);
 | 
			
		||||
                if(qu.Any() && unit.WorkMessage.IsNullOrEmpty()) {
 | 
			
		||||
                    qu.ToList().ForEach(a => this.WorkList.Remove(a));
 | 
			
		||||
                    return;
 | 
			
		||||
@ -53,8 +53,8 @@ namespace CalendarNotepad.Models
 | 
			
		||||
        /// <param name="workRange">工作范围</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public WorkUnit GetUnit(string workDay,string workRange) {
 | 
			
		||||
            var qu = this.WorkList.Where(a => a.WorkDay == workDay && a.DayRange == workRange);
 | 
			
		||||
            return qu.Any() ? qu.First() : new WorkUnit { DayRange = workRange,WorkDay = workDay,WorkMessage = "" };
 | 
			
		||||
            var qu = this.WorkList.Where(a => a.WorkDay == workDay);
 | 
			
		||||
            return qu.Any() ? qu.First() : new WorkUnit { WorkDay = workDay,WorkMessage = "" };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SaveToFile() {
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
using System.ComponentModel.DataAnnotations.Schema;
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using System.ComponentModel.DataAnnotations.Schema;
 | 
			
		||||
 | 
			
		||||
namespace CalendarNotepad.Models
 | 
			
		||||
{
 | 
			
		||||
@ -11,12 +12,9 @@ namespace CalendarNotepad.Models
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 工作日期
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        [Key]
 | 
			
		||||
        public string? WorkDay { get; set; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 时间段
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? DayRange { get; set; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 内容
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? WorkMessage { get; set; }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								CalendarNotepad/Models/WorkUnitPlusFile.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								CalendarNotepad/Models/WorkUnitPlusFile.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
namespace CalendarNotepad.Models
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 工作单元附件对应关系
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    public class WorkUnitPlusFile
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 工作日期
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? WorkDay { get; set; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 文件指纹
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? FileKey { get; set; }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 文件名称
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public string? FileName { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										75
									
								
								CalendarNotepad/WorkMain.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										75
									
								
								CalendarNotepad/WorkMain.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -25,6 +25,7 @@
 | 
			
		||||
        /// the contents of this method with the code editor.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent() {
 | 
			
		||||
            components = new System.ComponentModel.Container();
 | 
			
		||||
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WorkMain));
 | 
			
		||||
            tabControl1 = new TabControl();
 | 
			
		||||
            tpWorkManage = new TabPage();
 | 
			
		||||
@ -47,9 +48,15 @@
 | 
			
		||||
            radioButton5 = new RadioButton();
 | 
			
		||||
            mcWorkDay = new MonthCalendar();
 | 
			
		||||
            rtbMsg = new RichTextBox();
 | 
			
		||||
            FileListView = new ListView();
 | 
			
		||||
            cms_FileList = new ContextMenuStrip(components);
 | 
			
		||||
            删除ToolStripMenuItem = new ToolStripMenuItem();
 | 
			
		||||
            导入ToolStripMenuItem = new ToolStripMenuItem();
 | 
			
		||||
            toolStrip1 = new ToolStrip();
 | 
			
		||||
            tsp_Copy = new ToolStripButton();
 | 
			
		||||
            tsb_palse = new ToolStripButton();
 | 
			
		||||
            OpenFileDlg = new OpenFileDialog();
 | 
			
		||||
            下载ToolStripMenuItem = new ToolStripMenuItem();
 | 
			
		||||
            tabControl1.SuspendLayout();
 | 
			
		||||
            tpWorkManage.SuspendLayout();
 | 
			
		||||
            ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
 | 
			
		||||
@ -61,6 +68,7 @@
 | 
			
		||||
            flowLayoutPanel1.SuspendLayout();
 | 
			
		||||
            gbWorkTypes.SuspendLayout();
 | 
			
		||||
            C_WorkTypes.SuspendLayout();
 | 
			
		||||
            cms_FileList.SuspendLayout();
 | 
			
		||||
            toolStrip1.SuspendLayout();
 | 
			
		||||
            SuspendLayout();
 | 
			
		||||
            // 
 | 
			
		||||
@ -71,7 +79,7 @@
 | 
			
		||||
            tabControl1.Location = new Point(0,0);
 | 
			
		||||
            tabControl1.Name = "tabControl1";
 | 
			
		||||
            tabControl1.SelectedIndex = 0;
 | 
			
		||||
            tabControl1.Size = new Size(695,490);
 | 
			
		||||
            tabControl1.Size = new Size(717,443);
 | 
			
		||||
            tabControl1.TabIndex = 0;
 | 
			
		||||
            // 
 | 
			
		||||
            // tpWorkManage
 | 
			
		||||
@ -80,7 +88,7 @@
 | 
			
		||||
            tpWorkManage.Location = new Point(4,26);
 | 
			
		||||
            tpWorkManage.Name = "tpWorkManage";
 | 
			
		||||
            tpWorkManage.Padding = new Padding(3);
 | 
			
		||||
            tpWorkManage.Size = new Size(687,460);
 | 
			
		||||
            tpWorkManage.Size = new Size(709,413);
 | 
			
		||||
            tpWorkManage.TabIndex = 1;
 | 
			
		||||
            tpWorkManage.Text = "录入记录";
 | 
			
		||||
            tpWorkManage.UseVisualStyleBackColor = true;
 | 
			
		||||
@ -102,8 +110,9 @@
 | 
			
		||||
            // splitContainer1.Panel2
 | 
			
		||||
            // 
 | 
			
		||||
            splitContainer1.Panel2.Controls.Add(rtbMsg);
 | 
			
		||||
            splitContainer1.Panel2.Controls.Add(FileListView);
 | 
			
		||||
            splitContainer1.Panel2.Controls.Add(toolStrip1);
 | 
			
		||||
            splitContainer1.Size = new Size(681,454);
 | 
			
		||||
            splitContainer1.Size = new Size(703,407);
 | 
			
		||||
            splitContainer1.SplitterDistance = 236;
 | 
			
		||||
            splitContainer1.TabIndex = 9;
 | 
			
		||||
            // 
 | 
			
		||||
@ -178,7 +187,7 @@
 | 
			
		||||
            flowLayoutPanel1.AutoSize = true;
 | 
			
		||||
            flowLayoutPanel1.Controls.Add(btSave);
 | 
			
		||||
            flowLayoutPanel1.Controls.Add(btReset);
 | 
			
		||||
            flowLayoutPanel1.Location = new Point(6,420);
 | 
			
		||||
            flowLayoutPanel1.Location = new Point(6,373);
 | 
			
		||||
            flowLayoutPanel1.Name = "flowLayoutPanel1";
 | 
			
		||||
            flowLayoutPanel1.Size = new Size(220,29);
 | 
			
		||||
            flowLayoutPanel1.TabIndex = 8;
 | 
			
		||||
@ -297,17 +306,51 @@
 | 
			
		||||
            rtbMsg.EnableAutoDragDrop = true;
 | 
			
		||||
            rtbMsg.Location = new Point(0,25);
 | 
			
		||||
            rtbMsg.Name = "rtbMsg";
 | 
			
		||||
            rtbMsg.Size = new Size(441,429);
 | 
			
		||||
            rtbMsg.Size = new Size(463,297);
 | 
			
		||||
            rtbMsg.TabIndex = 7;
 | 
			
		||||
            rtbMsg.Text = "";
 | 
			
		||||
            rtbMsg.LinkClicked += rtbMsg_LinkClicked;
 | 
			
		||||
            rtbMsg.TextChanged += rtbMsg_TextChanged_1;
 | 
			
		||||
            // 
 | 
			
		||||
            // FileListView
 | 
			
		||||
            // 
 | 
			
		||||
            FileListView.ContextMenuStrip = cms_FileList;
 | 
			
		||||
            FileListView.Dock = DockStyle.Bottom;
 | 
			
		||||
            FileListView.FullRowSelect = true;
 | 
			
		||||
            FileListView.GridLines = true;
 | 
			
		||||
            FileListView.Location = new Point(0,322);
 | 
			
		||||
            FileListView.Name = "FileListView";
 | 
			
		||||
            FileListView.Size = new Size(463,85);
 | 
			
		||||
            FileListView.TabIndex = 9;
 | 
			
		||||
            FileListView.UseCompatibleStateImageBehavior = false;
 | 
			
		||||
            FileListView.View = View.Details;
 | 
			
		||||
            // 
 | 
			
		||||
            // cms_FileList
 | 
			
		||||
            // 
 | 
			
		||||
            cms_FileList.Items.AddRange(new ToolStripItem[] { 删除ToolStripMenuItem,导入ToolStripMenuItem,下载ToolStripMenuItem });
 | 
			
		||||
            cms_FileList.Name = "contextMenuStrip1";
 | 
			
		||||
            cms_FileList.Size = new Size(181,92);
 | 
			
		||||
            // 
 | 
			
		||||
            // 删除ToolStripMenuItem
 | 
			
		||||
            // 
 | 
			
		||||
            删除ToolStripMenuItem.Name = "删除ToolStripMenuItem";
 | 
			
		||||
            删除ToolStripMenuItem.Size = new Size(180,22);
 | 
			
		||||
            删除ToolStripMenuItem.Text = "删除";
 | 
			
		||||
            删除ToolStripMenuItem.Click += 删除ToolStripMenuItem_Click;
 | 
			
		||||
            // 
 | 
			
		||||
            // 导入ToolStripMenuItem
 | 
			
		||||
            // 
 | 
			
		||||
            导入ToolStripMenuItem.Name = "导入ToolStripMenuItem";
 | 
			
		||||
            导入ToolStripMenuItem.Size = new Size(180,22);
 | 
			
		||||
            导入ToolStripMenuItem.Text = "导入";
 | 
			
		||||
            导入ToolStripMenuItem.Click += 导入ToolStripMenuItem_Click;
 | 
			
		||||
            // 
 | 
			
		||||
            // toolStrip1
 | 
			
		||||
            // 
 | 
			
		||||
            toolStrip1.Items.AddRange(new ToolStripItem[] { tsp_Copy,tsb_palse });
 | 
			
		||||
            toolStrip1.Location = new Point(0,0);
 | 
			
		||||
            toolStrip1.Name = "toolStrip1";
 | 
			
		||||
            toolStrip1.Size = new Size(441,25);
 | 
			
		||||
            toolStrip1.Size = new Size(463,25);
 | 
			
		||||
            toolStrip1.TabIndex = 8;
 | 
			
		||||
            toolStrip1.Text = "toolStrip1";
 | 
			
		||||
            // 
 | 
			
		||||
@ -331,11 +374,22 @@
 | 
			
		||||
            tsb_palse.Text = "粘贴";
 | 
			
		||||
            tsb_palse.Click += tsb_palse_Click;
 | 
			
		||||
            // 
 | 
			
		||||
            // OpenFileDlg
 | 
			
		||||
            // 
 | 
			
		||||
            OpenFileDlg.Multiselect = true;
 | 
			
		||||
            // 
 | 
			
		||||
            // 下载ToolStripMenuItem
 | 
			
		||||
            // 
 | 
			
		||||
            下载ToolStripMenuItem.Name = "下载ToolStripMenuItem";
 | 
			
		||||
            下载ToolStripMenuItem.Size = new Size(180,22);
 | 
			
		||||
            下载ToolStripMenuItem.Text = "下载";
 | 
			
		||||
            下载ToolStripMenuItem.Click += 下载ToolStripMenuItem_Click;
 | 
			
		||||
            // 
 | 
			
		||||
            // WorkMain
 | 
			
		||||
            // 
 | 
			
		||||
            AutoScaleDimensions = new SizeF(7F,17F);
 | 
			
		||||
            AutoScaleMode = AutoScaleMode.Font;
 | 
			
		||||
            ClientSize = new Size(695,490);
 | 
			
		||||
            ClientSize = new Size(717,443);
 | 
			
		||||
            Controls.Add(tabControl1);
 | 
			
		||||
            Name = "WorkMain";
 | 
			
		||||
            StartPosition = FormStartPosition.CenterScreen;
 | 
			
		||||
@ -357,6 +411,7 @@
 | 
			
		||||
            gbWorkTypes.ResumeLayout(false);
 | 
			
		||||
            C_WorkTypes.ResumeLayout(false);
 | 
			
		||||
            C_WorkTypes.PerformLayout();
 | 
			
		||||
            cms_FileList.ResumeLayout(false);
 | 
			
		||||
            toolStrip1.ResumeLayout(false);
 | 
			
		||||
            toolStrip1.PerformLayout();
 | 
			
		||||
            ResumeLayout(false);
 | 
			
		||||
@ -388,5 +443,11 @@
 | 
			
		||||
        private ToolStrip toolStrip1;
 | 
			
		||||
        private ToolStripButton tsp_Copy;
 | 
			
		||||
        private ToolStripButton tsb_palse;
 | 
			
		||||
        private ListView FileListView;
 | 
			
		||||
        private ContextMenuStrip cms_FileList;
 | 
			
		||||
        private ToolStripMenuItem 删除ToolStripMenuItem;
 | 
			
		||||
        private ToolStripMenuItem 导入ToolStripMenuItem;
 | 
			
		||||
        private OpenFileDialog OpenFileDlg;
 | 
			
		||||
        private ToolStripMenuItem 下载ToolStripMenuItem;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -25,6 +25,16 @@ namespace CalendarNotepad
 | 
			
		||||
                    rab.CheckedChanged += Rab_CheckedChanged;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            var fieViewWidth = this.FileListView.Width;
 | 
			
		||||
            this.FileListView.Columns.Add(new ColumnHeader {
 | 
			
		||||
                Text = "附件",Width = fieViewWidth - 200,TextAlign = HorizontalAlignment.Left,
 | 
			
		||||
            });
 | 
			
		||||
            this.FileListView.Columns.Add(new ColumnHeader {
 | 
			
		||||
                Text = "类型",Width = 100,TextAlign = HorizontalAlignment.Left,
 | 
			
		||||
            });
 | 
			
		||||
            this.FileListView.Columns.Add(new ColumnHeader {
 | 
			
		||||
                Text = "文件指纹",Width = 100,TextAlign = HorizontalAlignment.Left,
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Rab_CheckedChanged(object? sender,EventArgs e) {
 | 
			
		||||
@ -44,18 +54,28 @@ namespace CalendarNotepad
 | 
			
		||||
 | 
			
		||||
        private void mcWorkDay_DateChanged(object sender,DateRangeEventArgs e) {
 | 
			
		||||
            var wd = this.mcWorkDay.SelectionStart.ToString("yyyyMMdd");
 | 
			
		||||
            var sr = "全天";
 | 
			
		||||
            var qu = this.Db.Queryable<WorkUnit>().Where(a => a.DayRange == sr && a.WorkDay == wd).ToList();
 | 
			
		||||
            this.FileListView.Items.Clear();
 | 
			
		||||
            var qu = this.Db.Queryable<WorkUnit>().Where(a => a.WorkDay == wd).ToList();
 | 
			
		||||
            if(!qu.Any()) {
 | 
			
		||||
                this.rtbMsg.Text = "";
 | 
			
		||||
                this.SetWorkType("休假");
 | 
			
		||||
                this.SetWorkOut("无");
 | 
			
		||||
            }
 | 
			
		||||
            if(qu.Any()) {
 | 
			
		||||
                var fir = qu.First();
 | 
			
		||||
                this.rtbMsg.Text = fir.WorkMessage;
 | 
			
		||||
                this.SetWorkType(fir.WorkType);
 | 
			
		||||
                this.SetWorkOut(fir.Workout ?? "无");
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                this.rtbMsg.Text = "";
 | 
			
		||||
                this.SetWorkType("休假");
 | 
			
		||||
                this.SetWorkOut("无");
 | 
			
		||||
 | 
			
		||||
                var plsq = this.Db.Queryable<WorkUnitPlusFile>().Where(a => a.WorkDay == wd).ToList();
 | 
			
		||||
                if(plsq.Any()) {
 | 
			
		||||
                    foreach(var i in plsq) {
 | 
			
		||||
                        var lit1 = new ListViewItem(i.FileName);
 | 
			
		||||
                        lit1.SubItems.Add(new ListViewItem.ListViewSubItem { Text = "已载入" });
 | 
			
		||||
                        lit1.SubItems.Add(new ListViewItem.ListViewSubItem { Text = i.FileKey });
 | 
			
		||||
                        this.FileListView.Items.Add(lit1);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            this.DataReset();
 | 
			
		||||
            Task.Factory.StartNew(() => {
 | 
			
		||||
@ -116,11 +136,10 @@ namespace CalendarNotepad
 | 
			
		||||
 | 
			
		||||
        private void btSave_Click(object sender,EventArgs e) {
 | 
			
		||||
            var wd = this.mcWorkDay.SelectionStart.ToString("yyyyMMdd");
 | 
			
		||||
            var dr = "全天";
 | 
			
		||||
            var msg = this.rtbMsg.Text;
 | 
			
		||||
            var wt = GetWorkType();
 | 
			
		||||
            var wo = this.GetWorkOut();
 | 
			
		||||
            var exp = Expressionable.Create<WorkUnit>().And(a => a.DayRange == dr && a.WorkDay == wd).ToExpression();
 | 
			
		||||
            var exp = Expressionable.Create<WorkUnit>().And(a => a.WorkDay == wd).ToExpression();
 | 
			
		||||
            var qu = this.Db.Queryable<WorkUnit>().Where(exp).ToList();
 | 
			
		||||
            if(qu.Any() && msg.IsNullOrEmpty()) {
 | 
			
		||||
                this.Db.Deleteable<WorkUnit>().Where(exp).ExecuteCommand();
 | 
			
		||||
@ -138,7 +157,7 @@ namespace CalendarNotepad
 | 
			
		||||
            }
 | 
			
		||||
            if(!qu.Any() && msg.IsNotNullOrEmpty()) {
 | 
			
		||||
                this.Db.Insertable<WorkUnit>(new WorkUnit {
 | 
			
		||||
                    DayRange = dr,WorkDay = wd,
 | 
			
		||||
                    WorkDay = wd,
 | 
			
		||||
                    WorkMessage = msg,WorkType = wt,Workout = wo,
 | 
			
		||||
                }).ExecuteCommand();
 | 
			
		||||
                this.DataReset();
 | 
			
		||||
@ -206,5 +225,85 @@ namespace CalendarNotepad
 | 
			
		||||
        private void tsb_palse_Click(object sender,EventArgs e) {
 | 
			
		||||
            this.rtbMsg.AppendText(Clipboard.GetText());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void rtbMsg_TextChanged_1(object sender,EventArgs e) {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void 删除ToolStripMenuItem_Click(object sender,EventArgs e) {
 | 
			
		||||
            var wd = this.mcWorkDay.SelectionStart.ToString("yyyyMMdd");
 | 
			
		||||
            var items = this.FileListView.SelectedItems;
 | 
			
		||||
            if(items.Count == 0) {
 | 
			
		||||
                MessageBox.Show("没有选择列表项!");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if(MessageBox.Show($"共选择了{items.Count}项,是否全部删除?","警告",MessageBoxButtons.OKCancel) == DialogResult.Cancel) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            foreach(ListViewItem i in items) {
 | 
			
		||||
                this.FileListView.Items.Remove(i);
 | 
			
		||||
                this.Db.Deleteable<WorkUnitPlusFile>()
 | 
			
		||||
                    .Where(a => a.WorkDay == wd && a.FileKey == i.SubItems[2].Text)
 | 
			
		||||
                    .ExecuteCommand();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void 导入ToolStripMenuItem_Click(object sender,EventArgs e) {
 | 
			
		||||
            var dlgFile = OpenFileDlg.ShowDialog();
 | 
			
		||||
            if(dlgFile == DialogResult.Cancel) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if(OpenFileDlg.SafeFileNames.Length == 0) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var wd = this.mcWorkDay.SelectionStart.ToString("yyyyMMdd");
 | 
			
		||||
            foreach(var f in OpenFileDlg.FileNames) {
 | 
			
		||||
                var lit1 = new ListViewItem(Path.GetFileName(f));
 | 
			
		||||
                lit1.SubItems.Add(new ListViewItem.ListViewSubItem { Text = "导入中" });
 | 
			
		||||
                lit1.SubItems.Add(new ListViewItem.ListViewSubItem { Text = "" });
 | 
			
		||||
                this.FileListView.Items.Add(lit1);
 | 
			
		||||
 | 
			
		||||
                var fc = PlusFile.LoadFile(f);
 | 
			
		||||
                var fk = PlusFile.GetMd5(fc);
 | 
			
		||||
                lit1.SubItems[2].Text = fk;
 | 
			
		||||
                var pfu = new PlusFileUnit { FileContent = fc,FileId = fk };
 | 
			
		||||
                var qu = this.Db.Queryable<PlusFileUnit>().Where(a => a.FileId == fk);
 | 
			
		||||
                if(!qu.Any()) {
 | 
			
		||||
                    this.Db.Insertable(pfu).ExecuteCommand();
 | 
			
		||||
                }
 | 
			
		||||
                this.Db.Insertable(new WorkUnitPlusFile {
 | 
			
		||||
                    FileKey = fk,
 | 
			
		||||
                    WorkDay = wd,
 | 
			
		||||
                    FileName = Path.GetFileName(f),
 | 
			
		||||
                }).ExecuteCommand();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void 下载ToolStripMenuItem_Click(object sender,EventArgs e) {
 | 
			
		||||
            var items = this.FileListView.SelectedItems;
 | 
			
		||||
            if(items.Count == 0) {
 | 
			
		||||
                MessageBox.Show("没有选择文件");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            foreach(ListViewItem i in items) {
 | 
			
		||||
                var sdlg = new SaveFileDialog {
 | 
			
		||||
                    Title = "保存附件",
 | 
			
		||||
                    FileName = Path.GetFileName(i.Text),
 | 
			
		||||
                };
 | 
			
		||||
                var dresult = sdlg.ShowDialog();
 | 
			
		||||
                if(dresult != DialogResult.OK) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                var filePath = sdlg.FileName;
 | 
			
		||||
                var fileKey = i.SubItems[2].Text;
 | 
			
		||||
                var qu = this.Db.Queryable<PlusFileUnit>().Where(a => a.FileId == fileKey).ToList();
 | 
			
		||||
                if(qu.Any()) {
 | 
			
		||||
                    var fir = qu.First();
 | 
			
		||||
                    if(fir.FileContent != null) {
 | 
			
		||||
                        PlusFile.SaveFile(filePath,fir.FileContent);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -117,6 +117,9 @@
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <metadata name="cms_FileList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>127, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>17, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
@ -130,4 +133,10 @@
 | 
			
		||||
        AAAAAElFTkSuQmCC
 | 
			
		||||
</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <metadata name="OpenFileDlg.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>248, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
 | 
			
		||||
    <value>36</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
</root>
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user