Form1.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. using Microsoft.International.Converters.PinYinConverter;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Configuration;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Net.Http;
  10. using System.Net.Http.Json;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Forms;
  14. using wispro.sp.entity;
  15. using wispro.sp.share;
  16. using wispro.sp.utility;
  17. namespace wispro.sp.winClient
  18. {
  19. public partial class Form1 : Form
  20. {
  21. public Form1()
  22. {
  23. InitializeComponent();
  24. }
  25. private void button1_Click(object sender, EventArgs e)
  26. {
  27. DateTime startTime = DateTime.Now;
  28. frmMerageExcel frm = new frmMerageExcel();
  29. if (frm.ShowDialog() == DialogResult.OK)
  30. {
  31. MessageBox.Show($"合并完成,合并后文件保存在:\r\n{frm.SaveFilePath}\r\n用时:{DateTime.Now - startTime }");
  32. }
  33. }
  34. private void button2_Click(object sender, EventArgs e)
  35. {
  36. OpenFileDialog ofd = new OpenFileDialog()
  37. {
  38. Multiselect = false,
  39. Filter = "*.xls|*.xlsx"
  40. };
  41. string strDinashuRegularFile = ConfigurationSettings.AppSettings["DinashuRegularFile"];
  42. if (ofd.ShowDialog() == DialogResult.OK)
  43. {
  44. new ExcelHelper().FillDianShu(ofd.FileName, strDinashuRegularFile);
  45. }
  46. MessageBox.Show("完成点数输入!");
  47. }
  48. private async void button3_Click(object sender, EventArgs e)
  49. {
  50. await InputPerformanceItem();
  51. }
  52. private async Task InputPerformanceItem()
  53. {
  54. DataTable dt = NPOIExcel.ExcelToDataTable("ExcelFiles\\21.01-21.06 工程师绩效报表-总表.xlsx", true);
  55. List<Staff> Staffs =await GetStaffsAsync();
  56. foreach(DataRow row in dt.Rows)
  57. {
  58. PerformanceItem item = new PerformanceItem();
  59. item.CaseNo = row["我方文号"].ToString().Trim();
  60. string strjxyf = row["绩效核算月份"].ToString().Trim();
  61. string[] temYFs = strjxyf.Split(new char[] { '.' });
  62. item.Year = int.Parse(temYFs[0]);
  63. item.Month = int.Parse(temYFs[1]);
  64. item.ApplicationType = row["申请类型"].ToString().Trim();
  65. item.BusinessType = row["业务类型"].ToString().Trim();
  66. item.AgentFeedbackMemo = row["备注(填表注意事项)"].ToString().Trim();
  67. item.DoItem = row["处理事项"].ToString().Trim();
  68. item.CaseStage = row["案件阶段"].ToString().Trim();
  69. item.CaseCoefficient = row["案件系数"].ToString().Trim();
  70. item.DoItemCoefficient = row["处理事项系数"].ToString().Trim();
  71. item.PreOastaffId = GetStaff(row["前一次OA处理人"].ToString().Trim(),Staffs );
  72. string strHandler = row["处理人"].ToString().Trim();
  73. string[] temHandlers = strHandler.Split(new char[] { ',' },StringSplitOptions.RemoveEmptyEntries);
  74. item.ItemStaffs = new List<ItemStaff>();
  75. foreach (string name in temHandlers)
  76. {
  77. ItemStaff itemStaff = new ItemStaff();
  78. int? iTem = GetStaff(name,Staffs);
  79. if ((iTem != null))
  80. {
  81. //itemStaff.Item = item;
  82. itemStaff.DoPersonId = iTem.Value;
  83. item.ItemStaffs.Add(itemStaff);
  84. }
  85. else
  86. {
  87. itemStaff.DoPerson = new Staff() { Name = name,
  88. Account = name,
  89. Password = "12345678",
  90. IsCalPerformsnce = false,
  91. Status = "已离职",
  92. StaffGradeId = 4
  93. };
  94. item.ItemStaffs.Add(itemStaff);
  95. }
  96. }
  97. if(item.ItemStaffs.Count == 0)
  98. {
  99. System.Diagnostics.Debug.WriteLine($"没有处理人: {item.CaseNo}\t{item.DoItem}");
  100. }
  101. item.ReviewerId = GetStaff(row["核稿人"].ToString().Trim(), Staffs);
  102. item.Customer = new Customer() { Name = row["客户名称"].ToString().Trim() };
  103. item.ApplicationName = row["申请人"].ToString().Trim();
  104. DateTime temDate = new DateTime();
  105. if (DateTime.TryParse(row["处理事项完成日"].ToString().Trim(),out temDate))
  106. {
  107. item.FinishedDate = temDate;
  108. }
  109. //定稿日
  110. if (DateTime.TryParse(row["定稿日"].ToString().Trim(), out temDate))
  111. {
  112. item.FinalizationDate = temDate;
  113. }
  114. //返稿日
  115. if (DateTime.TryParse(row["返稿日"].ToString().Trim(), out temDate))
  116. {
  117. item.ReturnDate = temDate;
  118. }
  119. //案件类型
  120. item.CaseType = row["案件类型"].ToString().Trim();
  121. //案件状态
  122. item.CaseState = row["案件状态"].ToString().Trim();
  123. //处理事项备注
  124. item.DoItemMemo = row["处理事项备注"].ToString().Trim();
  125. //处理状态
  126. item.DoItemState = row["处理状态"].ToString().Trim();
  127. //案件名称
  128. item.CaseName = row["案件名称"].ToString().Trim();
  129. //委案日期
  130. if (DateTime.TryParse(row["委案日期"].ToString().Trim(), out temDate))
  131. {
  132. item.EntrustingDate = temDate;
  133. }
  134. //客户期限
  135. if (DateTime.TryParse(row["客户期限"].ToString().Trim(), out temDate))
  136. {
  137. item.CustomerLimitDate = temDate;
  138. }
  139. //内部期限
  140. if (DateTime.TryParse(row["内部期限"].ToString().Trim(), out temDate))
  141. {
  142. item.InternalDate = temDate;
  143. }
  144. //初稿日
  145. if (DateTime.TryParse(row["初稿日"].ToString().Trim(), out temDate))
  146. {
  147. item.FirstDraftDate = temDate;
  148. }
  149. //备注(发文严重超期是否属客观原因,若为否,请填写原因)
  150. item.OverDueMemo = row["备注(发文严重超期是否属客观原因,若为否,请填写原因)"].ToString().Trim();
  151. //案件备注
  152. item.CaseMemo = row["案件备注"].ToString().Trim();
  153. await SavePerformanceItem(item);
  154. }
  155. }
  156. private int? GetStaff(string v, List<Staff> staffs)
  157. {
  158. if (!string.IsNullOrEmpty(v))
  159. {
  160. foreach(Staff sf in staffs)
  161. {
  162. if(sf.Name == v)
  163. {
  164. return sf.Id;
  165. }
  166. }
  167. }
  168. return null;
  169. }
  170. private async Task NewMethod()
  171. {
  172. DataTable dt = NPOIExcel.ExcelToDataTable("ExcelFiles\\210730-威世博人员清单v1r01-xm.xlsx", true);
  173. List<StaffGrade> staffGrades = await GetStaffGrades();
  174. foreach (DataRow row in dt.Rows)
  175. {
  176. Staff staff = new Staff();
  177. staff.Name = row["姓名"].ToString().Trim();
  178. staff.Status = row["岗位状态"].ToString().Trim();
  179. staff.Department = row["部门"].ToString();
  180. staff.WorkPlace = row["工作地"].ToString();
  181. staff.EntyDate = DateTime.Parse(row["入职时间"].ToString());
  182. staff.IsCalPerformsnce = (row["是否核算绩效"].ToString() == "是");
  183. staff.Memo = row["备注"].ToString().Trim();
  184. string strGrade = row["工程师等级"].ToString().Trim() + "级";
  185. foreach (StaffGrade sg in staffGrades)
  186. {
  187. if (strGrade.Trim() == sg.Grade.Trim())
  188. {
  189. staff.StaffGradeId = sg.Id;
  190. break;
  191. }
  192. }
  193. staff.Account = getPinYin(staff.Name.Trim());
  194. staff.Mail = staff.Account + "@china-wispro.com";
  195. staff.Password = "12345678";
  196. //staff.StaffGradeId = row["姓名"].ToString();
  197. await SaveStaff(staff);
  198. }
  199. }
  200. private string getPinYin(string str)
  201. {
  202. string retStr = "";
  203. for(int i = 0; i < str.Length; i++)
  204. {
  205. ChineseChar cc = new ChineseChar(str[i]);
  206. retStr = retStr + cc.Pinyins[0].ToLower().Replace("1","")
  207. .Replace("2", "").Replace("3", "").Replace("4", "");
  208. }
  209. return retStr;
  210. }
  211. private async Task SaveStaff(Staff obj)
  212. {
  213. HttpClient http = new HttpClient();
  214. var data = await http.PostAsJsonAsync<wispro.sp.entity.Staff>($"http://localhost:39476/api/Staff/Save", obj);
  215. if (data.IsSuccessStatusCode)
  216. {
  217. ApiSaveResponse result = await data.Content.ReadFromJsonAsync<ApiSaveResponse>();
  218. //await Task.Delay(1000);
  219. if (result.Success)
  220. {
  221. }
  222. else
  223. {
  224. }
  225. }
  226. else
  227. {
  228. }
  229. }
  230. private async Task SavePerformanceItem(PerformanceItem obj)
  231. {
  232. HttpClient http = new HttpClient();
  233. var data = await http.PostAsJsonAsync<PerformanceItem>($"http://localhost:39476/api/PerformanceItem/New", obj);
  234. if (data.IsSuccessStatusCode)
  235. {
  236. ApiSaveResponse result = await data.Content.ReadFromJsonAsync<ApiSaveResponse>();
  237. //await Task.Delay(1000);
  238. if (result.Success)
  239. {
  240. }
  241. else
  242. {
  243. System.Diagnostics.Debug.WriteLine($"保存错误: {obj.CaseNo}\t{obj.DoItem}\r\n{result.ErrorMessage}");
  244. }
  245. }
  246. else
  247. {
  248. System.Diagnostics.Debug.WriteLine($"调用API错误: {obj.CaseNo}\t{obj.DoItem}");
  249. }
  250. }
  251. private async Task<List<StaffGrade>> GetStaffGrades()
  252. {
  253. HttpClient http = new HttpClient();
  254. var _StaffGrade = await http.GetFromJsonAsync<List<StaffGrade>>($"http://localhost:39476/api/StaffGrade/GetAll");
  255. return _StaffGrade;
  256. }
  257. private async Task<List<Staff>> GetStaffsAsync()
  258. {
  259. HttpClient http = new HttpClient();
  260. ListApiResponse<Staff> data = await http.GetFromJsonAsync<ListApiResponse<Staff>>($"http://localhost:39476/api/Staff/Query?pageIndex=1&pageSize=200");
  261. return data.Results;
  262. }
  263. }
  264. }