private void checkedListBoxDept_ItemCheck(object sender, ItemCheckEventArgs e) { string dept = checkedListBoxDept.Items[e.Index].ToString(); List <string> depts = new List <string>() { dept }; var fullvoteds = GetFullVoteds(depts); if (e.NewValue == CheckState.Checked) { foreach (var v in fullvoteds.Where(x => x.Department.Equals(dept))) { if (checkedListBoxVoteds.Items.Contains(v)) { } else { checkedListBoxVoteds.Items.Add(v, true); } } } else { for (var i = checkedListBoxVoteds.Items.Count; i > 0; i--) { Voted v = (Voted)checkedListBoxVoteds.Items[i - 1]; if (v.Department.Equals(dept)) { checkedListBoxVoteds.Items.RemoveAt(i - 1); } } } }
/// <summary> /// Calculate the hash code of the instance. /// </summary> /// <returns>The hash code of the instance.</returns> public override int GetHashCode() { unchecked { var result = DbId; result = (result * 397) ^ (FirstName != null ? FirstName.GetHashCode() : 0); result = (result * 397) ^ (LastName != null ? LastName.GetHashCode() : 0); result = (result * 397) ^ (Street != null ? Street.GetHashCode() : 0); result = (result * 397) ^ (City != null ? City.GetHashCode() : 0); result = (result * 397) ^ (Cpr != null ? Cpr.GetHashCode() : 0); result = (result * 397) ^ VoterId; result = (result * 397) ^ (PollingVenue != null ? PollingVenue.GetHashCode() : 0); result = (result * 397) ^ (PollingTable != null ? PollingTable.GetHashCode() : 0); result = (result * 397) ^ Voted.GetHashCode(); result = (result * 397) ^ VotedTime; result = (result * 397) ^ (VotedPollingTable != null ? VotedPollingTable.GetHashCode() : 0); result = (result * 397) ^ Exists.GetHashCode(); return(result); } }
public void Vote(int voterId, int id) { if (Responses == null) { Responses = new List <Response>(); } if (Responses.All(i => i.PlayerId != id)) { return; } if (Voted.Contains(voterId)) { return; } Voted.Add(voterId); Votes.Add(id); }
public VotedResult(Voted result) { this.Result = result; }
private void checkedListBoxVoteds_DoubleClick(object sender, EventArgs e) { Voted selected = (Voted)checkedListBoxVoteds.SelectedItem; // 投票人 var voters = votes .GroupBy(r => new { r.VoterName, r.VoterDepartment }) .Select(r => new { VoterName = r.Key.VoterName, r.Key.VoterDepartment }) .ToList(); // 写报告文件 using (FileStream fs = new FileStream(@"single_template.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { //載入Excel檔案 using (ExcelPackage ep = new ExcelPackage(fs)) { ExcelWorksheet sheet = ep.Workbook.Worksheets[1];//取得Sheet1 sheet.Name = selected.Name + "评测明细"; if (selected.CalculateScore(votes, Rank) == false) { return; } // 基本信息 sheet.Cells[3, 1].Value = selected.Order; sheet.Cells[3, 2].Value = selected.Department; sheet.Cells[3, 3].Value = selected.Id; sheet.Cells[3, 4].Value = selected.Name; sheet.Cells[3, 5].Value = selected.Job; sheet.Cells[3, 6].Value = selected.JobType; if (Rank == "普通员工") { sheet.Cells[3, 7].Value = voters.Count(); } sheet.Cells[3, 8].Value = selected.Totalcount(); sheet.Cells[3, 9].Value = selected.TotalScore(); // 总计 if (Rank.Equals("普通员工")) { if (selected.Uppercount() > 0 && selected.Flatcount() > 0) { sheet.Cells[9, 6].Formula = "=F6*0.6+F7*0.4"; sheet.Cells[9, 7].Formula = "=G6*0.6+G7*0.4"; sheet.Cells[9, 8].Formula = "=H6*0.6+H7*0.4"; sheet.Cells[9, 9].Formula = "=I6*0.6+I7*0.4"; sheet.Cells[9, 10].Formula = "=J6*0.6+J7*0.4"; } else { if (selected.Uppercount() > 0) { sheet.Cells[9, 6].Formula = "=F6"; sheet.Cells[9, 7].Formula = "=G6"; sheet.Cells[9, 8].Formula = "=H6"; sheet.Cells[9, 9].Formula = "=I6"; sheet.Cells[9, 10].Formula = "=J6"; } else { sheet.Cells[9, 6].Formula = "=F7"; sheet.Cells[9, 7].Formula = "=G7"; sheet.Cells[9, 8].Formula = "=H7"; sheet.Cells[9, 9].Formula = "=I7"; sheet.Cells[9, 10].Formula = "=J7"; } } } foreach (var rank in new List <string>() { "下级", "同级", "上级" }) { var vm = selected.detail.Where(x => x.Level.Equals(rank)).OrderBy(y => y.VoterDepartment).ToList(); int row = 0; switch (rank) { case "下级": { row = 8; break; } case "同级": { row = 7; break; } default: { row = 6; break; } } int rowstart = row; int rowend = row + vm.Count() - 1; string rowstarts = rowstart.ToString(); string rowends = rowend.ToString(); sheet.InsertRow(row, vm.Count(), 5); var first = true; for (var v = 0; v < vm.Count(); v++) { if (first) { sheet.Cells[v + row, 1].Value = rank; first = false; } sheet.Cells[v + row, 2].Value = vm[v].VoterName; sheet.Cells[v + row, 3].Value = vm[v].VoterDepartment; sheet.Cells[v + row, 4].Value = vm[v].IsValid; sheet.Cells[v + row, 5].Value = vm[v].IsMinOrMax; sheet.Cells[v + row, 6].Value = vm[v].Score[0]; sheet.Cells[v + row, 7].Value = vm[v].Score[1]; sheet.Cells[v + row, 8].Value = vm[v].Score[2]; sheet.Cells[v + row, 9].Value = vm[v].Score[3]; sheet.Cells[v + row, 10].Value = vm[v].ScoreTotal(); } // 平均分 if (vm.Count() > 0) { sheet.Cells[rowend + 1, 6].Formula = "=SUMIFS(F" + rowstarts + ":F" + rowends + ",D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)/COUNTIFS(D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)"; sheet.Cells[rowend + 1, 7].Formula = "=SUMIFS(G" + rowstarts + ":G" + rowends + ",D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)/COUNTIFS(D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)"; sheet.Cells[rowend + 1, 8].Formula = "=SUMIFS(H" + rowstarts + ":H" + rowends + ",D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)/COUNTIFS(D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)"; sheet.Cells[rowend + 1, 9].Formula = "=SUMIFS(I" + rowstarts + ":I" + rowends + ",D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)/COUNTIFS(D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)"; sheet.Cells[rowend + 1, 10].Formula = "=SUMIFS(J" + rowstarts + ":J" + rowends + ",D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)/COUNTIFS(D" + rowstarts + ":D" + rowends + ",TRUE,E" + rowstarts + ":E" + rowends + ",FALSE)"; } else { if (Rank.Equals("部门主管")) { sheet.Cells[rowend + 1, 6].Formula = "#NUM!"; sheet.Cells[rowend + 1, 7].Formula = "#NUM!"; sheet.Cells[rowend + 1, 8].Formula = "#NUM!"; sheet.Cells[rowend + 1, 9].Formula = "#NUM!"; sheet.Cells[rowend + 1, 10].Formula = "#NUM!"; } } } using (FileStream createStream = new FileStream(selected.Name + "评测明细.xlsx", FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) { ep.SaveAs(createStream);//存檔 } Process m_Process = null; m_Process = new Process(); m_Process.StartInfo.FileName = selected.Name + "评测明细.xlsx"; m_Process.Start(); } } }