using Microsoft.International.Converters.PinYinConverter; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.Linq; using System.Net.Http; using System.Net.Http.Json; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using wispro.sp.entity; using wispro.sp.share; using wispro.sp.utility; namespace wispro.sp.winClient { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DateTime startTime = DateTime.Now; frmMerageExcel frm = new frmMerageExcel(); if (frm.ShowDialog() == DialogResult.OK) { MessageBox.Show($"合并完成,合并后文件保存在:\r\n{frm.SaveFilePath}\r\n用时:{DateTime.Now - startTime }"); } } private void button2_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog() { Multiselect = false, Filter = "*.xls|*.xlsx" }; string strDinashuRegularFile = ConfigurationSettings.AppSettings["DinashuRegularFile"]; if (ofd.ShowDialog() == DialogResult.OK) { new ExcelHelper().FillDianShu(ofd.FileName, strDinashuRegularFile); } MessageBox.Show("完成点数输入!"); } private async void button3_Click(object sender, EventArgs e) { //await NewMethod(); await InputPerformanceItem(); } private async Task InputPerformanceItem() { DataTable dt = NPOIExcel.ExcelToDataTable("ExcelFiles\\21.01-21.06 工程师绩效报表-总表.xlsx", true); List Staffs =await GetStaffsAsync(); foreach(DataRow row in dt.Rows) { PerformanceItem item = new PerformanceItem(); item.CaseNo = row["我方文号"].ToString().Trim(); string strjxyf = row["绩效核算月份"].ToString().Trim(); string[] temYFs = strjxyf.Split(new char[] { '.' }); item.CalMonth = new CalMonth(); item.CalMonth.Year = int.Parse(temYFs[0]); item.CalMonth.Month = int.Parse(temYFs[1]); item.CalMonth.Status = 4; item.ApplicationType = row["申请类型"].ToString().Trim(); item.BusinessType = row["业务类型"].ToString().Trim(); item.AgentFeedbackMemo = row["备注(填表注意事项)"].ToString().Trim(); item.DoItem = row["处理事项"].ToString().Trim(); item.CaseStage = row["案件阶段"].ToString().Trim(); item.CaseCoefficient = row["案件系数"].ToString().Trim(); item.DoItemCoefficient = row["处理事项系数"].ToString().Trim(); item.PreOastaffId = GetStaff(row["前一次OA处理人"].ToString().Trim(),Staffs ); string strHandler = row["处理人"].ToString().Trim(); string[] temHandlers = strHandler.Split(new char[] { ',' },StringSplitOptions.RemoveEmptyEntries); item.ItemStaffs = new List(); foreach (string name in temHandlers) { ItemStaff itemStaff = new ItemStaff(); int? iTem = GetStaff(name,Staffs); if ((iTem != null)) { //itemStaff.Item = item; itemStaff.DoPersonId = iTem.Value; item.ItemStaffs.Add(itemStaff); } else { itemStaff.DoPerson = new Staff() { Name = name, Account =name, Password = "12345678", IsCalPerformsnce = false, Status = "已离职", StaffGradeId = 4 }; item.ItemStaffs.Add(itemStaff); } } if(item.ItemStaffs.Count == 0) { System.Diagnostics.Debug.WriteLine($"没有处理人: {item.CaseNo}\t{item.DoItem}"); } item.ReviewerId = GetStaff(row["核稿人"].ToString().Trim(), Staffs); item.Customer = new Customer() { Name = row["客户名称"].ToString().Trim() }; item.ApplicationName = row["申请人"].ToString().Trim(); DateTime temDate = new DateTime(); if (DateTime.TryParse(row["处理事项完成日"].ToString().Trim(),out temDate)) { item.FinishedDate = temDate; } //定稿日 if (DateTime.TryParse(row["定稿日"].ToString().Trim(), out temDate)) { item.FinalizationDate = temDate; } //返稿日 if (DateTime.TryParse(row["返稿日"].ToString().Trim(), out temDate)) { item.ReturnDate = temDate; } //案件类型 item.CaseType = row["案件类型"].ToString().Trim(); //案件状态 item.CaseState = row["案件状态"].ToString().Trim(); //处理事项备注 item.DoItemMemo = row["处理事项备注"].ToString().Trim(); //处理状态 item.DoItemState = row["处理状态"].ToString().Trim(); //案件名称 item.CaseName = row["案件名称"].ToString().Trim(); //委案日期 if (DateTime.TryParse(row["委案日期"].ToString().Trim(), out temDate)) { item.EntrustingDate = temDate; } //客户期限 if (DateTime.TryParse(row["客户期限"].ToString().Trim(), out temDate)) { item.CustomerLimitDate = temDate; } //内部期限 if (DateTime.TryParse(row["内部期限"].ToString().Trim(), out temDate)) { item.InternalDate = temDate; } //初稿日 if (DateTime.TryParse(row["初稿日"].ToString().Trim(), out temDate)) { item.FirstDraftDate = temDate; } //备注(发文严重超期是否属客观原因,若为否,请填写原因) item.OverDueMemo = row["备注(发文严重超期是否属客观原因,若为否,请填写原因)"].ToString().Trim(); //案件备注 item.CaseMemo = row["案件备注"].ToString().Trim(); await SavePerformanceItem(item); } } private int? GetStaff(string v, List staffs) { if (!string.IsNullOrEmpty(v)) { string[] temNames = v.Trim().Split(new char[] { '-' },StringSplitOptions.RemoveEmptyEntries); foreach (Staff sf in staffs) { if(sf.Name == temNames[0]) { return sf.Id; } } } return null; } private async Task NewMethod() { DataTable dt = NPOIExcel.ExcelToDataTable("ExcelFiles\\210730-威世博人员清单v1r01-xm.xlsx", true); List staffGrades = await GetStaffGrades(); foreach (DataRow row in dt.Rows) { Staff staff = new Staff(); staff.Name = row["姓名"].ToString().Trim(); staff.Status = row["岗位状态"].ToString().Trim(); staff.Department = row["部门"].ToString(); staff.WorkPlace = row["工作地"].ToString(); staff.EntyDate = DateTime.Parse(row["入职时间"].ToString()); staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是"); staff.Memo = row["备注"].ToString().Trim(); string strGrade = row["工程师等级"].ToString().Trim() + "级"; foreach (StaffGrade sg in staffGrades) { if (strGrade.Trim() == sg.Grade.Trim()) { staff.StaffGradeId = sg.Id; break; } } staff.Account = getPinYin(staff.Name.Trim()); staff.Mail = staff.Account + "@china-wispro.com"; staff.Password = "12345678"; //staff.StaffGradeId = row["姓名"].ToString(); await SaveStaff(staff); } } private string getPinYin(string str) { string retStr = ""; for(int i = 0; i < str.Length; i++) { ChineseChar cc = new ChineseChar(str[i]); retStr = retStr + cc.Pinyins[0].ToLower().Replace("1","") .Replace("2", "").Replace("3", "").Replace("4", ""); } return retStr; } private async Task SaveStaff(Staff obj) { HttpClient http = new HttpClient(); var data = await http.PostAsJsonAsync($"http://localhost:39476/api/Staff/Save", obj); if (data.IsSuccessStatusCode) { ApiSaveResponse result = await data.Content.ReadFromJsonAsync(); //await Task.Delay(1000); if (result.Success) { } else { } } else { } } private async Task SavePerformanceItem(PerformanceItem obj) { HttpClient http = new HttpClient(); var data = await http.PostAsJsonAsync($"http://localhost:39476/api/PerformanceItem/New", obj); if (data.IsSuccessStatusCode) { ApiSaveResponse result = await data.Content.ReadFromJsonAsync(); //await Task.Delay(1000); if (result.Success) { } else { System.Diagnostics.Debug.WriteLine($"保存错误: {obj.CaseNo}\t{obj.DoItem}\r\n{result.ErrorMessage}"); } } else { System.Diagnostics.Debug.WriteLine($"调用API错误: {obj.CaseNo}\t{obj.DoItem}"); } } private async Task> GetStaffGrades() { HttpClient http = new HttpClient(); var _StaffGrade = await http.GetFromJsonAsync>($"http://localhost:39476/api/StaffGrade/GetAll"); return _StaffGrade; } private async Task> GetStaffsAsync() { HttpClient http = new HttpClient(); ListApiResponse data = await http.GetFromJsonAsync>($"http://localhost:39476/api/Staff/Query?pageIndex=1&pageSize=200"); return data.Results; } } }