using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Script.Services; using System.Web.Services; using Wellan.Common; using Wellan.Data; /// /// wmRyer 的摘要描述 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class wmRyer : System.Web.Services.WebService { public wmRyer() { } private static WQuery CreateQuery() { string ConnectionConfigName = WConfig.GetConnectionConfigName(); WConnectionString.ConnectionConfigFile = WConfig.GetConnectionConfig(); string ConnectionString = WConnectionString.GetConnectionString(ConnectionConfigName); string ConnectionType = WConnectionString.GetConnectionType(ConnectionConfigName); WQuery Query = new WQuery(ConnectionType, ConnectionString); return Query; } private static void CheckInput(RyerSaveItem item) { if (item.ryd01 <= 0) item.ryd01 = 1; if (item.ryd02 <= 0) item.ryd02 = 1; if (item.ryd03 <= 0) item.ryd03 = 1; if (item.ryd04 <= 0) item.ryd04 = 1; if (item.ryd05 <= 0) item.ryd05 = 1; if (item.ryd06 <= 0) item.ryd06 = 1; if (item.ryd07 <= 0) item.ryd07 = 1; if (item.ryd08 <= 0) item.ryd08 = 1; if (item.ryd09 <= 0) item.ryd09 = 1; if (item.ryd10 <= 0) item.ryd10 = 1; if (item.ryd11 <= 0) item.ryd11 = 1; if (item.ryd12 <= 0) item.ryd12 = 1; if (item.ryd01 > 31) item.ryd01 = 31; if (item.ryd02 > 31) item.ryd02 = 31; if (item.ryd03 > 31) item.ryd03 = 31; if (item.ryd04 > 31) item.ryd04 = 31; if (item.ryd05 > 31) item.ryd05 = 31; if (item.ryd06 > 31) item.ryd06 = 31; if (item.ryd07 > 31) item.ryd07 = 31; if (item.ryd08 > 31) item.ryd08 = 31; if (item.ryd09 > 31) item.ryd09 = 31; if (item.ryd10 > 31) item.ryd10 = 31; if (item.ryd11 > 31) item.ryd11 = 31; if (item.ryd12 > 31) item.ryd12 = 31; item.ryyst_h = item.ryyst_h ?? 0; item.ryyst_m = item.ryyst_m ?? 0; item.rysly_h = item.rysly_h ?? 0; item.rysly_m = item.rysly_m ?? 0; item.rynxt_h = item.rynxt_h ?? 0; item.rynxt_m = item.rynxt_m ?? 0; if (item.ryyst_h < 0) { throw new Exception("年初小時數錯誤,應大於等於 0"); } if (item.ryyst_m < 0 || item.ryyst_m > 59) { throw new Exception("年初分鐘數錯誤,應從 0 至 59"); } if (item.rysly_h < 0) { throw new Exception("折算薪資小時數錯誤,應大於等於 0"); } if (item.rysly_m < 0 || item.rysly_m > 59) { throw new Exception("折算薪資分鐘數錯誤,應從 0 至 59"); } if (item.rynxt_h < 0) { throw new Exception("遞延下年小時數錯誤,應大於等於 0"); } if (item.rynxt_m < 0 || item.rynxt_m > 59) { throw new Exception("遞延下年分鐘數錯誤,應從 0 至 59"); } item.ryyst = item.ryyst_h * 60 + item.ryyst_m; item.rysly = item.rysly_h * 60 + item.rysly_m; item.rynxt = item.rynxt_h * 60 + item.rynxt_m; } [WebMethod(EnableSession = true)] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public RyerSaveItem Save(RyerSaveItem item) { try { CheckInput(item); WQuery Query = CreateQuery(); RyerDAC ryerdao = new RyerDAC(Query); var nowtime = DateTime.UtcNow.AddHours(8); int month = nowtime.Month; int day = nowtime.Day; if (item.ryyer < nowtime.Year) { month = 12; day = 31; } ryerdao.UpdateOne( item.ryeno , item.ryyer , item.ryyst.Value + (item.ryh01 + item.ryh02 + item.ryh03 + item.ryh04 + item.ryh05 + item.ryh06 + item.ryh07 + item.ryh08 + item.ryh09 + item.ryh10 + item.ryh11 + item.ryh12) * 60 , item.userid , item.ryyst.Value , item.ryh01 * 60, item.ryh02 * 60, item.ryh03 * 60, item.ryh04 * 60, item.ryh05 * 60, item.ryh06 * 60, item.ryh07 * 60, item.ryh08 * 60, item.ryh09 * 60, item.ryh10 * 60, item.ryh11 * 60, item.ryh12 * 60 , item.ryd01, item.ryd02, item.ryd03, item.ryd04, item.ryd05, item.ryd06, item.ryd07, item.ryd08, item.ryd09, item.ryd10, item.ryd11, item.ryd12 , item.rysly.Value, item.rynxt.Value, item.ryrmk); int 可用特休 = ryerdao.Get可用特休(item.ryeno, item.ryyer, month, day); int 至今生效特休 = ryerdao.Get至今生效特休(item.ryeno, item.ryyer, month, day); int 已休特休 = ryerdao.Get年初特休(item.ryeno, item.ryyer) + 至今生效特休 - 可用特休; item.ryyxt_d = String.Format("{0}:{1:00}", Convert.ToInt32(item.ryyxt / 60), item.ryyxt % 60); item.ryvld = String.Format("{0}:{1:00}", Convert.ToInt32(至今生效特休 / 60), 至今生效特休 % 60); item.ryust = String.Format("{0}:{1:00}", Convert.ToInt32(已休特休 / 60), 已休特休 % 60); item.rylft = String.Format("{0}:{1:00}", Convert.ToInt32(可用特休 / 60), 可用特休 % 60); item.result = 0; } catch (Exception ex) { item.result = -1; item.message = ex.Message; } return item; } [WebMethod(EnableSession = true)] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public RyerSaveItem Final(RyerSaveItem item) { try { CheckInput(item); WQuery Query = CreateQuery(); RyerDAC ryerdao = new RyerDAC(Query); var nowtime = DateTime.UtcNow.AddHours(8); int month = nowtime.Month; int day = nowtime.Day; if (item.ryyer < nowtime.Year) { month = 12; day = 31; } ryerdao.UpdateOne( item.ryeno , item.ryyer , item.ryyst.Value + (item.ryh01 + item.ryh02 + item.ryh03 + item.ryh04 + item.ryh05 + item.ryh06 + item.ryh07 + item.ryh08 + item.ryh09 + item.ryh10 + item.ryh11 + item.ryh12) * 60 , item.userid , item.ryyst.Value , item.ryh01 * 60, item.ryh02 * 60, item.ryh03 * 60, item.ryh04 * 60, item.ryh05 * 60, item.ryh06 * 60, item.ryh07 * 60, item.ryh08 * 60, item.ryh09 * 60, item.ryh10 * 60, item.ryh11 * 60, item.ryh12 * 60 , item.ryd01, item.ryd02, item.ryd03, item.ryd04, item.ryd05, item.ryd06, item.ryd07, item.ryd08, item.ryd09, item.ryd10, item.ryd11, item.ryd12 , item.rysly.Value, item.rynxt.Value, item.ryrmk); var finalResult = ryerdao.Final( item.ryeno , item.ryyer , item.userid); int 可用特休 = ryerdao.Get可用特休(item.ryeno, item.ryyer, month, day); int 至今生效特休 = ryerdao.Get至今生效特休(item.ryeno, item.ryyer, month, day); int 已休特休 = ryerdao.Get年初特休(item.ryeno, item.ryyer) + 至今生效特休 - 可用特休; item.ryyxt_d = String.Format("{0}:{1:00}", Convert.ToInt32(item.ryyxt / 60), item.ryyxt % 60); item.ryvld = String.Format("{0}:{1:00}", Convert.ToInt32(至今生效特休 / 60), 至今生效特休 % 60); item.ryust = String.Format("{0}:{1:00}", Convert.ToInt32(已休特休 / 60), 已休特休 % 60); item.rylft = String.Format("{0}:{1:00}", Convert.ToInt32(可用特休 / 60), 可用特休 % 60); item.result = 0; if (finalResult == "年度結算") item.message = string.Format("人員編號 {0} 年度 {1} 結算成功", item.ryeno, item.ryyer - 1911); if (finalResult == "離職結算") item.message = string.Format("人員編號 {0} 離職結算成功", item.ryeno); } catch (Exception ex) { item.result = -1; item.message = string.Format("人員編號 {0} 結算失敗:{1}", item.ryeno, ex.Message); } return item; } }