DataManager.cs 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.RegularExpressions;
  9. using System.Threading.Tasks;
  10. using System.Windows.Automation.Peers;
  11. using System.Windows.Forms;
  12. using System.Windows.Forms.DataVisualization.Charting;
  13. using static DataManager.DataAccess;
  14. using static DataManager.UIConstants;
  15. namespace DataManager
  16. {
  17. public partial class frmDataManager : Form
  18. {
  19. private DateTime defaultDatetime = DateTime.Now.AddDays(-30);
  20. private DataTable collectionTaskTable = new DataTable();
  21. private DataTable contactTaskTable;
  22. private DataTable orphanFundTable;
  23. private DataTable companyCoverageTable;
  24. private DataTable authorizedCompanyTable;
  25. private static int userId;
  26. public static int UserId { get => userId; set => userId = value; }
  27. public frmDataManager(int userid)
  28. {
  29. UserId = userid;
  30. InitializeComponent();
  31. InitializeData();
  32. }
  33. private void InitializeData()
  34. {
  35. #region Contact Task Tab
  36. DataTable dt_dm_user_1 = DataAccess.Get_dm_user(null, 1);
  37. dt_dm_user_1.Rows.Add(DataAccess.DM_NULL, 1, "全部");
  38. cmbContactor.DataSource = dt_dm_user_1;
  39. cmbContactor.DisplayMember = "username";
  40. cmbContactor.ValueMember = "userid";
  41. cmbContactor.SelectedValue = UserId;
  42. dtpContactTaskDate.Value = defaultDatetime;
  43. BindingSource bs4 = new BindingSource();
  44. Dictionary<int, string> d4 = new Dictionary<int, string>(ContactTaskType);
  45. d4.Add(DM_NULL, "全部");
  46. bs4.DataSource = d4;
  47. cmbContactTaskType.DataSource = bs4;
  48. cmbContactTaskType.DisplayMember = "Value";
  49. cmbContactTaskType.ValueMember = "Key";
  50. cmbContactTaskType.SelectedValue = (int)DM_NULL;
  51. BindingSource bs = new BindingSource();
  52. Dictionary<int, string> d = new Dictionary<int, string>(ContactTaskStatus);
  53. d.Add(DM_NULL, "全部");
  54. bs.DataSource = d;
  55. cmbContactTaskStatus.DataSource = bs;
  56. cmbContactTaskStatus.DisplayMember = "Value";
  57. cmbContactTaskStatus.ValueMember = "Key";
  58. cmbContactTaskStatus.SelectedValue = (int)DM_NULL;
  59. BindingSource bs2 = new BindingSource();
  60. Dictionary<int, string> d2 = new Dictionary<int, string>(TaskPriority);
  61. d2.Add(DM_NULL, "全部");
  62. bs2.DataSource = d2;
  63. cmbContactPriority.DataSource = bs2;
  64. cmbContactPriority.DisplayMember = "Value";
  65. cmbContactPriority.ValueMember = "Key";
  66. cmbContactPriority.SelectedValue = (int)DM_NULL;
  67. BindingSource bs3 = new BindingSource();
  68. Dictionary<int, string> d3 = new Dictionary<int, string>(CompanyAssetSize);
  69. d3.Add(DM_NULL, "全部");
  70. bs3.DataSource = d3;
  71. cmbContactCompanySize.DataSource = bs3;
  72. cmbContactCompanySize.DisplayMember = "Value";
  73. cmbContactCompanySize.ValueMember = "Key";
  74. cmbContactCompanySize.SelectedValue = (int)DM_NULL;
  75. dtpContactFollowUpDate.ShowCheckBox = true;
  76. dtpContactFollowUpDate.Checked = false;
  77. #endregion
  78. #region Collection Task Tab
  79. DataTable dt_dm_user_2 = DataAccess.Get_dm_user(null, 2);
  80. dt_dm_user_2.Rows.Add(DataAccess.DM_NULL, 2, "全部");
  81. cmbCollector.DataSource = dt_dm_user_2;
  82. cmbCollector.DisplayMember = "username";
  83. cmbCollector.ValueMember = "userid";
  84. cmbCollector.SelectedValue = UserId;
  85. dtpCollectionTaskDate.Value = defaultDatetime;
  86. BindingSource bs5 = new BindingSource();
  87. Dictionary<int, string> d5 = new Dictionary<int, string>(CollectionTaskType);
  88. d5.Add(DM_NULL, "全部");
  89. bs5.DataSource = d5;
  90. cmbCollectionTaskType.DataSource = bs5;
  91. cmbCollectionTaskType.DisplayMember = "Value";
  92. cmbCollectionTaskType.ValueMember = "Key";
  93. cmbCollectionTaskType.SelectedValue = (int)DM_NULL;
  94. BindingSource bs6 = new BindingSource();
  95. Dictionary<int, string> d6 = new Dictionary<int, string>(CollectionTaskStatus);
  96. d6.Add(DM_NULL, "全部");
  97. bs6.DataSource = d6;
  98. cmbCollectionTaskStatus.DataSource = bs6;
  99. cmbCollectionTaskStatus.DisplayMember = "Value";
  100. cmbCollectionTaskStatus.ValueMember = "Key";
  101. cmbCollectionTaskStatus.SelectedValue = (int)DM_NULL;
  102. #endregion
  103. }
  104. #region Contact Tab
  105. private void LoadContactTaskGrid()
  106. {
  107. ContactTask task = CreateContactTaskFromUI();
  108. int? userid = task.UserId;
  109. if (userid == DM_NULL) userid = null;
  110. short? taskType = task.TaskType;
  111. if(taskType == DM_NULL) taskType = null;
  112. sbyte? isvalid = task.Isvalid;
  113. if(isvalid == DM_NULL) isvalid = null;
  114. sbyte? priority = task.Priority;
  115. if (priority == DM_NULL) priority = null;
  116. sbyte? companyAssetSize = task.CompanyAssetSize;
  117. if(companyAssetSize == DM_NULL) companyAssetSize = null;
  118. contactTaskTable = DataAccess.Get_dm_contact_task(userid, null, task.CompanyId, task.CompanyShortName,
  119. task.TaskDate, taskType, isvalid, priority,
  120. task.FollowUpDate, companyAssetSize);
  121. grdContactTask.DataSource = contactTaskTable;
  122. grdContactTask.Columns["task_id"].HeaderText = "ID";
  123. grdContactTask.Columns["company_short_name"].HeaderText = "公司";
  124. grdContactTask.Columns["task_date"].HeaderText = "日期";
  125. grdContactTask.Columns["task_type_name"].HeaderText = "任务";
  126. grdContactTask.Columns["isvalid_name"].HeaderText = "状态";
  127. grdContactTask.Columns["priority_name"].HeaderText = "优先级";
  128. grdContactTask.Columns["follow_up_date"].HeaderText = "跟进日";
  129. grdContactTask.Columns["company_asset_size_name"].HeaderText = "规模";
  130. grdContactTask.Columns["creator_name"].HeaderText = "创建";
  131. grdContactTask.Columns["updater_name"].HeaderText = "更新";
  132. grdContactTask.Columns["updatetime"].HeaderText = "更新时间";
  133. grdContactTask.Columns["company_id"].Visible = false;
  134. grdContactTask.Columns["task_type"].Visible = false;
  135. grdContactTask.Columns["isvalid"].Visible = false;
  136. grdContactTask.Columns["priority"].Visible = false;
  137. grdContactTask.Columns["company_asset_size"].Visible = false;
  138. grdContactTask.Columns["creatorid"].Visible = false;
  139. grdContactTask.Columns["createtime"].Visible = false;
  140. grdContactTask.Columns["updaterid"].Visible = false;
  141. grdContactTask.Columns["company_short_name"].DefaultCellStyle.ForeColor = Color.DodgerBlue;
  142. grdContactTask.Columns["company_short_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
  143. lblContactTaskCount.Text = contactTaskTable.Rows.Count.ToString();
  144. }
  145. private ContactTask CreateContactTaskFromUI()
  146. {
  147. ContactTask task = new ContactTask();
  148. task.UserId = int.Parse(cmbContactor.SelectedValue.ToString());
  149. // 支持输 company_id或简称关键字的搜索
  150. string keywrod = txtContactCompany.Text.Trim();
  151. if (keywrod == String.Empty)
  152. {
  153. task.CompanyId = null;
  154. task.CompanyShortName = null;
  155. } else if (keywrod.Length == 10 && keywrod.ToUpper().Substring(0, 2) == "CO")
  156. {
  157. task.CompanyId = keywrod.ToUpper();
  158. task.CompanyShortName = null;
  159. } else
  160. {
  161. task.CompanyId = null;
  162. task.CompanyShortName = keywrod;
  163. }
  164. task.TaskDate = DateTime.Parse(dtpContactTaskDate.Text.ToString());
  165. task.TaskType = short.Parse(cmbContactTaskType.SelectedValue.ToString());
  166. task.Isvalid = sbyte.Parse(cmbContactTaskStatus.SelectedValue.ToString());
  167. task.Priority = sbyte.Parse(cmbContactPriority.SelectedValue.ToString());
  168. task.CompanyAssetSize = sbyte.Parse(cmbContactCompanySize.SelectedValue.ToString());
  169. if (dtpContactFollowUpDate.Checked == true)
  170. {
  171. task.FollowUpDate = DateTime.Parse(dtpContactFollowUpDate.Text.ToString());
  172. } else {
  173. task.FollowUpDate = null;
  174. };
  175. return task;
  176. }
  177. private void btnContactSearch_Click(object sender, EventArgs e)
  178. {
  179. LoadContactTaskGrid();
  180. }
  181. private void grdContactTask_CellClick(object sender, DataGridViewCellEventArgs e)
  182. {
  183. int rowIndex = e.RowIndex;
  184. int columnIndex = e.ColumnIndex;
  185. if (columnIndex < 0 || rowIndex < 0) return;
  186. DataRow row = contactTaskTable.Rows[rowIndex];
  187. if (columnIndex == grdContactTask.Columns["company_short_name"].Index)
  188. // 弹出公司页面
  189. {
  190. UICompany frmCompany = new UICompany(row.Field<string>("company_id"), UserId);
  191. frmCompany.Show();
  192. }
  193. else
  194. // 弹出联系任务编辑框
  195. {
  196. ContactTask task = new ContactTask(UserId, row.Field<int>("task_id"), row.Field<string>("company_id"), row.Field<string>("company_short_name"),
  197. row.Field<DateTime>("task_date"), row.Field<short>("task_type"), row.Field<sbyte>("isvalid"), row.Field<sbyte>("priority"),
  198. row.Field<DateTime?>("follow_up_date"), row.Field<sbyte?>("company_asset_size"),
  199. row.Field<int?>("creatorid"), row.Field<string>("creator_name"), row.Field<DateTime?>("createtime"),
  200. row.Field<int?>("updaterid"), row.Field<string>("updater_name"), row.Field<DateTime?>("updatetime"));
  201. if (task != null)
  202. {
  203. frmContactTask ctk = new frmContactTask(task);
  204. ctk.ShowDialog();
  205. // 刷新 grid 数据
  206. if (ctk.DialogResult == DialogResult.OK)
  207. {
  208. LoadContactTaskGrid();
  209. }
  210. }
  211. }
  212. }
  213. private void btnAddContactTask_Click(object sender, EventArgs e)
  214. {
  215. frmContactTask ctk = new frmContactTask(UserId);
  216. ctk.ShowDialog();
  217. // 刷新 grid 数据
  218. if (ctk.DialogResult == DialogResult.OK)
  219. {
  220. LoadContactTaskGrid();
  221. }
  222. }
  223. #endregion
  224. #region Collection Tab
  225. private void LoadCollectionTaskGrid()
  226. {
  227. CollectionTask task = CreatecCollectionTaskFromUI();
  228. int? userId = task.UserId;
  229. if (userId == DM_NULL) userId = null;
  230. short? taskType = task.TaskType;
  231. if (taskType == DM_NULL) taskType = null;
  232. sbyte? isvalid = task.Isvalid;
  233. if (isvalid == DM_NULL) isvalid = null;
  234. collectionTaskTable = DataAccess.Get_dm_collection_task(userId, null, task.ProviderId, task.ProviderName,
  235. task.TaskDate, taskType, task.EntityId, task.EntityName,
  236. isvalid);
  237. grdCollectionTask.DataSource = collectionTaskTable;
  238. grdCollectionTask.Columns["task_id"].HeaderText = "ID";
  239. grdCollectionTask.Columns["provider_name"].HeaderText = "来源";
  240. grdCollectionTask.Columns["task_date"].HeaderText = "日期";
  241. grdCollectionTask.Columns["task_type_name"].HeaderText = "任务";
  242. grdCollectionTask.Columns["entity_name"].HeaderText = "主题";
  243. grdCollectionTask.Columns["err_message"].HeaderText = "详情";
  244. grdCollectionTask.Columns["isvalid_name"].HeaderText = "状态";
  245. grdCollectionTask.Columns["creator_name"].HeaderText = "创建";
  246. grdCollectionTask.Columns["updater_name"].HeaderText = "更新";
  247. grdCollectionTask.Columns["updatetime"].HeaderText = "更新时间";
  248. grdCollectionTask.Columns["provider_id"].Visible = false;
  249. grdCollectionTask.Columns["task_type"].Visible = false;
  250. grdCollectionTask.Columns["entity_id"].Visible = false;
  251. grdCollectionTask.Columns["isvalid"].Visible = false;
  252. grdCollectionTask.Columns["creatorid"].Visible = false;
  253. grdCollectionTask.Columns["createtime"].Visible = false;
  254. grdCollectionTask.Columns["updaterid"].Visible = false;
  255. //grdCollectionTask.Columns["provider_name"].DefaultCellStyle.ForeColor = Color.DodgerBlue;
  256. grdCollectionTask.Columns["entity_name"].DefaultCellStyle.ForeColor = Color.DodgerBlue;
  257. grdCollectionTask.Columns["entity_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
  258. lblCollectionTaskCount.Text = collectionTaskTable.Rows.Count.ToString();
  259. }
  260. private CollectionTask CreatecCollectionTaskFromUI()
  261. {
  262. CollectionTask task = new CollectionTask();
  263. task.UserId = int.Parse(cmbCollector.SelectedValue.ToString());
  264. string providerKeyword = txtCollectionProvider.Text.Trim();
  265. if (providerKeyword == string.Empty)
  266. {
  267. task.ProviderId = null;
  268. task.ProviderName = null;
  269. }
  270. else if (providerKeyword.Length == 10 && providerKeyword.Substring(0, 2).ToUpper() == "CO")
  271. {
  272. task.ProviderId = providerKeyword.ToUpper();
  273. task.ProviderName = null;
  274. }
  275. else
  276. {
  277. task.ProviderId = null;
  278. task.ProviderName = providerKeyword;
  279. }
  280. task.TaskDate = DateTime.Parse(dtpCollectionTaskDate.Text.ToString());
  281. task.TaskType = short.Parse(cmbCollectionTaskType.SelectedValue.ToString());
  282. // 支持输入fund_id或简称关键字的搜索
  283. string entityKeyword = txtCollectionEntity.Text.Trim();
  284. if (entityKeyword == string.Empty)
  285. {
  286. task.EntityId = null;
  287. task.EntityName = null;
  288. }
  289. else if (entityKeyword.Length == 10 && Regex.Match(entityKeyword.ToUpper(), "^[M|H]F").Success)
  290. {
  291. task.EntityId = entityKeyword.ToUpper();
  292. task.EntityName = null;
  293. }
  294. else
  295. {
  296. task.EntityId = null;
  297. task.EntityName = entityKeyword;
  298. }
  299. task.Isvalid = sbyte.Parse(cmbCollectionTaskStatus.SelectedValue.ToString());
  300. return task;
  301. }
  302. private void btnCollectionSearch_Click(object sender, EventArgs e)
  303. {
  304. LoadCollectionTaskGrid();
  305. }
  306. private void grdCollectionTask_CellClick(object sender, DataGridViewCellEventArgs e)
  307. {
  308. int rowIndex = e.RowIndex;
  309. int columnIndex = e.ColumnIndex;
  310. if (columnIndex < 0 || rowIndex < 0) return;
  311. DataRow row = collectionTaskTable.Rows[rowIndex];
  312. if (columnIndex == grdCollectionTask.Columns["entity_name"].Index )
  313. // 弹出基金页面
  314. {
  315. string entityId = row["entity_id"].ToString();
  316. if (entityId.Length == 10 && Regex.Match(entityId, "^[HM]F").Success)
  317. {
  318. UIFund frmFund = new UIFund(entityId, UserId);
  319. frmFund.Show();
  320. }
  321. }
  322. else
  323. // 弹出采集任务编辑框
  324. {
  325. CollectionTask task = new CollectionTask(UserId, row.Field<int>("task_id"), row.Field<string>("provider_id"), row.Field<string>("provider_name"),
  326. row.Field<DateTime>("task_date"), row.Field<short>("task_type"),
  327. row.Field<string>("entity_id"), row.Field<string>("entity_name"),
  328. row.Field<string>("err_message"), row.Field<sbyte>("isvalid"),
  329. row.Field<int?>("creatorid"), row.Field<string>("creator_name"), row.Field<DateTime?>("createtime"),
  330. row.Field<int?>("updaterid"), row.Field<string>("updater_name"), row.Field<DateTime?>("updatetime"));
  331. if (task != null)
  332. {
  333. UICollectionTask ctk = new UICollectionTask(task);
  334. ctk.ShowDialog();
  335. // 刷新 grid 数据
  336. if (ctk.DialogResult == DialogResult.OK)
  337. {
  338. LoadCollectionTaskGrid();
  339. }
  340. }
  341. }
  342. }
  343. private void btnAddCollectionTask_Click(object sender, EventArgs e)
  344. {
  345. UICollectionTask ctk = new UICollectionTask(UserId);
  346. ctk.ShowDialog();
  347. // 刷新 grid 数据
  348. if (ctk.DialogResult == DialogResult.OK)
  349. {
  350. LoadCollectionTaskGrid();
  351. }
  352. }
  353. #endregion
  354. #region Data - Fund
  355. private void LoadFundGrid()
  356. {
  357. string keyword = txtFundKeyword.Text.Trim();
  358. if (keyword == string.Empty) { keyword = null; }
  359. // 只搜私募
  360. DataTable dt = DataAccess.Search_dm_fund(RaiseType.FirstOrDefault(x=>x.Value== "私募").Key, keyword);
  361. grdFundList.DataSource = dt;
  362. grdFundList.DefaultCellStyle.ForeColor = Color.DimGray;
  363. grdFundList.Columns["fund_id"].Visible = false;
  364. grdFundList.Columns["fund_name"].HeaderText = "基金全名";
  365. grdFundList.Columns["fund_short_name"].HeaderText = "基金简称";
  366. grdFundList.Columns["company_id"].Visible = false;
  367. grdFundList.Columns["company_short_name"].HeaderText = "公司简称";
  368. grdFundList.Columns["strategy"].HeaderText = "策略分类";
  369. grdFundList.Columns["substrategy"].HeaderText = "二级分类";
  370. grdFundList.Columns["max_price_date"].HeaderText = "最新净值";
  371. grdFundList.Columns["company_short_name"].DefaultCellStyle.ForeColor = Color.DodgerBlue;
  372. grdFundList.Columns["max_price_date"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  373. grdFundList.Columns["fund_short_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  374. ToolStripStatusLabel label = new ToolStripStatusLabel();
  375. label.Text = "记录条数:" + dt.Rows.Count.ToString();
  376. sstData.Items.Clear();
  377. sstData.Items.Add(label);
  378. }
  379. private void btnSearchFund_Click(object sender, EventArgs e)
  380. {
  381. LoadFundGrid();
  382. }
  383. private void grdFundList_CellClick(object sender, DataGridViewCellEventArgs e)
  384. {
  385. int rowIndex = e.RowIndex;
  386. int columnIndex = e.ColumnIndex;
  387. if (columnIndex < 0 || rowIndex < 0) return;
  388. DataGridViewRow row = grdFundList.Rows[rowIndex];
  389. if (columnIndex == grdFundList.Columns["company_short_name"].Index)
  390. // 弹出公司页面
  391. {
  392. string entityId = row.Cells["company_id"].Value.ToString().ToUpper();
  393. if (entityId.Length == 10 && Regex.Match(entityId, "^CO").Success)
  394. {
  395. UICompany frm = new UICompany(entityId, UserId);
  396. frm.Show();
  397. }
  398. }
  399. else
  400. // 弹出基金页面
  401. {
  402. string entityId = row.Cells["fund_id"].Value.ToString().ToUpper();
  403. if (entityId.Length == 10 && Regex.Match(entityId, "^[M|H]F").Success)
  404. {
  405. UIFund frm = new UIFund(entityId, UserId);
  406. frm.Show();
  407. }
  408. }
  409. }
  410. #endregion
  411. #region Data - Company
  412. private void LoadCompanyGrid()
  413. {
  414. string keyword = txtCompanyKeyword.Text.Trim();
  415. if (keyword == string.Empty) { keyword = null; }
  416. // 只搜私募
  417. DataTable dt = DataAccess.Search_dm_company(1, keyword);
  418. grdCompanyList.DataSource = dt;
  419. grdCompanyList.DefaultCellStyle.ForeColor = Color.DimGray;
  420. grdCompanyList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
  421. //grdCompanyList.Columns["company_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
  422. grdCompanyList.Columns["company_id"].Visible = false;
  423. grdCompanyList.Columns["company_name"].HeaderText = "公司全名";
  424. grdCompanyList.Columns["company_short_name"].HeaderText = "公司简称";
  425. grdCompanyList.Columns["company_asset_size"].Visible = false;
  426. grdCompanyList.Columns["company_asset_size_name"].HeaderText = "管理规模";
  427. grdCompanyList.Columns["register_number"].HeaderText = "协会编号";
  428. grdCompanyList.Columns["establish_date"].HeaderText = "成立日";
  429. grdCompanyList.Columns["company_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  430. ToolStripStatusLabel label = new ToolStripStatusLabel();
  431. label.Text = "记录条数:" + dt.Rows.Count.ToString();
  432. sstData.Items.Clear();
  433. sstData.Items.Add(label);
  434. }
  435. private void btnSearchCompany_Click(object sender, EventArgs e)
  436. {
  437. LoadCompanyGrid();
  438. }
  439. private void grdCompanyList_CellClick(object sender, DataGridViewCellEventArgs e)
  440. {
  441. int rowIndex = e.RowIndex;
  442. int columnIndex = e.ColumnIndex;
  443. if (columnIndex < 0 || rowIndex < 0) return;
  444. DataGridViewRow row = grdCompanyList.Rows[rowIndex];
  445. string entityId = row.Cells["company_id"].Value.ToString().ToUpper();
  446. if (entityId.Length == 10 && Regex.Match(entityId, "^CO").Success)
  447. {
  448. UICompany frm = new UICompany(entityId, UserId);
  449. frm.Show();
  450. }
  451. }
  452. #endregion
  453. #region Reports
  454. #region Orphan Fund
  455. private void LoadOrphanFund()
  456. {
  457. DataTable dt;
  458. string providerName = txtOrphanProvider.Text.Trim();
  459. sbyte isOrphan = 1;
  460. if (!chkIsOrphan.Checked) isOrphan = 0;
  461. orphanFundTable = DataAccess.Get_dm_external_fund_mapping(isOrphan, UserId);
  462. if (providerName != string.Empty)
  463. dt = orphanFundTable.Select("provider_name LIKE '%" + providerName + "%'", "id DESC").CopyToDataTable();
  464. else
  465. dt = orphanFundTable;
  466. grdOrphanFund.DataSource = dt;
  467. grdOrphanFund.Columns["id"].Visible = false;
  468. grdOrphanFund.Columns["fund_id"].HeaderText = "基金ID";
  469. grdOrphanFund.Columns["provider_id"].Visible = false;
  470. grdOrphanFund.Columns["provider_name"].HeaderText = "数据源";
  471. grdOrphanFund.Columns["external_id"].HeaderText = "外部ID";
  472. grdOrphanFund.Columns["isvalid"].HeaderText = "状态";
  473. grdOrphanFund.Columns["creatorid"].Visible = false;
  474. grdOrphanFund.Columns["creator_name"].HeaderText = "创建";
  475. grdOrphanFund.Columns["createtime"].HeaderText = "创建时间";
  476. grdOrphanFund.Columns["updaterid"].Visible = false;
  477. grdOrphanFund.Columns["updater_name"].HeaderText = "更新";
  478. grdOrphanFund.Columns["updatetime"].HeaderText = "更新时间";
  479. grdOrphanFund.Columns["provider_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  480. grdOrphanFund.Columns["external_id"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  481. }
  482. private void btnOrphanFundSearch_Click(object sender, EventArgs e)
  483. {
  484. LoadOrphanFund();
  485. }
  486. private void grdOrphanFund_CellClick(object sender, DataGridViewCellEventArgs e)
  487. {
  488. int rowIndex = e.RowIndex;
  489. if (rowIndex < 0) return;
  490. DataGridViewRow row = grdOrphanFund.Rows[rowIndex];
  491. // 弹出基金页面
  492. string provider_id = row.Cells["provider_id"].Value.ToString();
  493. string external_id = row.Cells["external_id"].Value.ToString();
  494. string fund_id = row.Cells["fund_id"].Value.ToString();
  495. UIFund frmFund = new UIFund(provider_id, external_id, fund_id, UserId);
  496. frmFund.ShowDialog();
  497. if (frmFund.DialogResult == DialogResult.OK)
  498. {
  499. LoadOrphanFund();
  500. }
  501. }
  502. private void txtOrphanProvider_KeyPress(object sender, KeyPressEventArgs e)
  503. {
  504. if (e.KeyChar == 13)
  505. {
  506. btnOrphanFundSearch_Click(sender, e);
  507. }
  508. }
  509. #endregion
  510. #region Company Coverage
  511. private void LoadCompanyCoverageChart()
  512. {
  513. int coveredCnt = 0;
  514. int totalCnt = 0;
  515. DataRow[] rows = companyCoverageTable.Select(CompanySizeFilter());
  516. for (int i = 0; i < rows.Length; i ++)
  517. {
  518. coveredCnt += int.Parse(rows[i]["covered_cnt"].ToString());
  519. totalCnt += int.Parse(rows[i]["total_cnt"].ToString());
  520. }
  521. string[] pieX = { "合作", "其它" };
  522. int[] pieY = { coveredCnt, totalCnt - coveredCnt };
  523. Series series = chtCompanyCoverage.Series[0];
  524. series.ChartType = SeriesChartType.Pie;
  525. series.Points.DataBindXY(pieX, pieY);
  526. series.Points[0].Label = $"{series.Points[0].AxisLabel}: {coveredCnt}";
  527. series.Points[0].ToolTip = $"{series.Points[0].AxisLabel}: {(100.0 * coveredCnt / totalCnt):F2}%";
  528. series.Points[1].Label = $"{series.Points[1].AxisLabel}: {totalCnt - coveredCnt}";
  529. series.Points[1].ToolTip = $"{series.Points[1].AxisLabel}: {(100.0 * ( 1.0 - coveredCnt / totalCnt)):F2}%";
  530. }
  531. private string CompanySizeFilter()
  532. {
  533. string selectExp = "company_asset_size in (";
  534. if (chk100.Checked) selectExp += "6,";
  535. if (chk50.Checked) selectExp += "5,";
  536. if (chk20.Checked) selectExp += "4,";
  537. if (chk10.Checked) selectExp += "3,";
  538. if (chk5.Checked) selectExp += "2,";
  539. if (chk0.Checked) selectExp += "1,";
  540. // 没有checkbox背选中时表示规模未知
  541. if (selectExp.Substring(selectExp.Length - 1) == "(") selectExp = selectExp + " -1)";
  542. // 去掉最后一个逗号
  543. if (selectExp.Substring(selectExp.Length - 1) == ",") selectExp = selectExp.Substring(0, selectExp.Length - 1) + ")";
  544. return selectExp;
  545. }
  546. private void LoadCompanyCoverageGrid()
  547. {
  548. companyCoverageTable = DataAccess.Report_company_coverage(null);
  549. grdCompanyCoverage.DataSource = companyCoverageTable;
  550. grdCompanyCoverage.Columns["company_asset_size"].Visible = false;
  551. grdCompanyCoverage.Columns["company_asset_size_name"].HeaderText = "规模";
  552. grdCompanyCoverage.Columns["covered_cnt"].HeaderText = "覆盖家数";
  553. grdCompanyCoverage.Columns["covered_cnt"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
  554. grdCompanyCoverage.Columns["covered_cnt"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
  555. grdCompanyCoverage.Columns["total_cnt"].HeaderText = "总家数";
  556. grdCompanyCoverage.Columns["total_cnt"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
  557. grdCompanyCoverage.Columns["total_cnt"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
  558. grdCompanyCoverage.Columns["cover_pct"].HeaderText = "覆盖率%";
  559. grdCompanyCoverage.Columns["cover_pct"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
  560. grdCompanyCoverage.Columns["cover_pct"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
  561. grdCompanyCoverage.Columns["company_asset_size_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  562. grdCompanyCoverage.Columns["cover_pct"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  563. }
  564. private void LoadAuthrizedCompanyList()
  565. {
  566. authorizedCompanyTable = DataAccess.Get_dm_company_authorization(null);
  567. }
  568. private void LoadAuthorizedCompanyGrid()
  569. {
  570. if (authorizedCompanyTable != null)
  571. {
  572. DataTable dt = null;
  573. string selectExp = CompanySizeFilter();
  574. string nameExp = txtLocalCompany.Text.Trim();
  575. if (nameExp.Length > 0) selectExp += " and company_short_name LIKE '%" + nameExp + "%'";
  576. DataRow[] dr = authorizedCompanyTable.Select(selectExp);
  577. if (dr != null && dr.Length > 0) dt = dr.CopyToDataTable();
  578. grdAuthCompany.DataSource = dt;
  579. if (dt != null)
  580. {
  581. grdAuthCompany.Columns["company_id"].Visible = false;
  582. grdAuthCompany.Columns["company_name"].Visible = false;
  583. grdAuthCompany.Columns["company_short_name"].HeaderText = "公司简称";
  584. grdAuthCompany.Columns["company_asset_size"].Visible = false;
  585. grdAuthCompany.Columns["company_asset_size_name"].HeaderText = "规模";
  586. grdAuthCompany.Columns["register_number"].HeaderText = "协会编号";
  587. grdAuthCompany.Columns["establish_date"].HeaderText = "成立日";
  588. grdAuthCompany.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
  589. grdAuthCompany.Columns["company_short_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  590. grdAuthCompany.Columns["company_asset_size_name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
  591. }
  592. }
  593. }
  594. private void btnCompanyCoverage_Click(object sender, EventArgs e)
  595. {
  596. LoadAuthrizedCompanyList();
  597. LoadCompanyCoverageGrid();
  598. LoadCompanyCoverageChart();
  599. LoadAuthorizedCompanyGrid();
  600. }
  601. #endregion
  602. private void rdbCompany_CheckedChanged(object sender, EventArgs e)
  603. {
  604. if (rdbCompany.Checked)
  605. {
  606. btnCompanyCoverage_Click(sender, e);
  607. }
  608. }
  609. #endregion
  610. private void chk100_CheckedChanged(object sender, EventArgs e)
  611. {
  612. if (((Control)sender).Focus())
  613. {
  614. // 重新画饼图
  615. LoadCompanyCoverageChart();
  616. // 刷新公司列表
  617. LoadAuthorizedCompanyGrid();
  618. }
  619. }
  620. private void chk50_CheckedChanged(object sender, EventArgs e)
  621. {
  622. chk100_CheckedChanged(sender, e);
  623. }
  624. private void chk20_CheckedChanged(object sender, EventArgs e)
  625. {
  626. chk100_CheckedChanged(sender, e);
  627. }
  628. private void chk10_CheckedChanged(object sender, EventArgs e)
  629. {
  630. chk100_CheckedChanged(sender, e);
  631. }
  632. private void chk5_CheckedChanged(object sender, EventArgs e)
  633. {
  634. chk100_CheckedChanged(sender, e);
  635. }
  636. private void chk0_CheckedChanged(object sender, EventArgs e)
  637. {
  638. chk100_CheckedChanged(sender, e);
  639. }
  640. private void txtLocalCompany_TextChanged(object sender, EventArgs e)
  641. {
  642. LoadAuthorizedCompanyGrid();
  643. }
  644. private void grdAuthCompany_CellClick(object sender, DataGridViewCellEventArgs e)
  645. {
  646. int rowIndex = e.RowIndex;
  647. int columnIndex = e.ColumnIndex;
  648. if (columnIndex < 0 || rowIndex < 0) return;
  649. DataGridViewRow row = grdAuthCompany.Rows[rowIndex];
  650. string entityId = row.Cells["company_id"].Value.ToString().ToUpper();
  651. if (entityId.Length == 10 && Regex.Match(entityId, "^CO").Success)
  652. {
  653. UICompany frm = new UICompany(entityId, UserId);
  654. frm.Show();
  655. }
  656. }
  657. }
  658. }