201 lines
8.3 KiB
C#
201 lines
8.3 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// wmRyer 的摘要描述
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
}
|