Form1.cs 11 KB

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