/// <summary> /// 進行功過相抵作業 /// </summary> public void RunOffsetAtoB() { if (獎勵 > 懲戒) { //餘獎勵 int 獎懲功過相抵和 = 獎勵 - 懲戒; Crett ccc = cha(MeritAtoB, MeritBtoC, 獎懲功過相抵和); 歷年功過相抵大功 = ccc.歷年功過相抵A; 歷年功過相抵小功 = ccc.歷年功過相抵B; 歷年功過相抵嘉獎 = ccc.歷年功過相抵C; } else if (獎勵 < 懲戒) { //餘懲戒 int 獎懲功過相抵和 = 懲戒 - 獎勵; Crett ccc = cha(DemeritAtoB, DemeritBtoC, 獎懲功過相抵和); 歷年功過相抵大過 = ccc.歷年功過相抵A; 歷年功過相抵小過 = ccc.歷年功過相抵B; 歷年功過相抵警告 = ccc.歷年功過相抵C; } else { //相抵後為0 } }
public Crett cha(int ab, int bc, int 總和) { Crett ccc = new Crett(); int 比值A = ab * bc; int 比值B = ab; ccc.歷年功過相抵A = 總和 / 比值A; //餘數是否大於0 //大於0則是嘉獎資料 if (總和 % 比值A > 0) { // int d = 總和 % 比值A; if (d >= 比值B) { ccc.歷年功過相抵B = d / 比值B; ccc.歷年功過相抵C = d % 比值B; } else { ccc.歷年功過相抵C = d; } } return(ccc); }
/// <summary> /// 進行功過換算作業 /// </summary> public void RunOffset() { foreach (MeritRecord meric in MeritList) { int 大功換算 = 0; int 小功換算 = 0; int 獎換算 = meric.MeritC.HasValue ? meric.MeritC.Value : 0; if (meric.MeritA.HasValue && meric.MeritA.Value != 0) { 大功換算 = meric.MeritA.Value * DemeritAtoB * DemeritBtoC; } if (meric.MeritB.HasValue && meric.MeritB.Value != 0) { 小功換算 = meric.MeritB.Value * DemeritBtoC; } 獎勵 += 獎換算 + 小功換算 + 大功換算; } foreach (DemeritRecord demeric in DemeritList) { //資料必須為未銷過 if (demeric.Cleared == "") { int 大過換算 = 0; int 小過換算 = 0; int 警告換算 = demeric.DemeritC.HasValue ? demeric.DemeritC.Value : 0; if (demeric.DemeritA.HasValue && demeric.DemeritA.Value != 0) { 大過換算 = demeric.DemeritA.Value * DemeritAtoB * DemeritBtoC; } if (demeric.DemeritB.HasValue && demeric.DemeritB.Value != 0) { 小過換算 = demeric.DemeritB.Value * DemeritBtoC; } 懲戒 += 警告換算 + 小過換算 + 大過換算; } } if (MeritList.Count > 0) { Crett ccc = cha(MeritAtoB, MeritBtoC, 獎勵); 歷年功過換算大功 = ccc.歷年功過相抵A; 歷年功過換算小功 = ccc.歷年功過相抵B; 歷年功過換算嘉獎 = ccc.歷年功過相抵C; } if (DemeritList.Count > 0) { Crett ccc = cha(MeritAtoB, MeritBtoC, 懲戒); 歷年功過換算大過 = ccc.歷年功過相抵A; 歷年功過換算小過 = ccc.歷年功過相抵B; 歷年功過換算警告 = ccc.歷年功過相抵C; } }