Commit 0418de18 authored by solho's avatar solho

feat:結算改為批次打包送出作法

parent 708de2ef
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System; using System;
...@@ -23,7 +23,7 @@ namespace WebAPI.Controllers ...@@ -23,7 +23,7 @@ namespace WebAPI.Controllers
String connString; String connString;
public Esn_todosController() public Esn_todosController()
{ {
result = new HttpResponseMessage(HttpStatusCode.OK); result = new HttpResponseMessage(HttpStatusCode.OK);
response = new CommonResponseMsg(); response = new CommonResponseMsg();
connString = ConfigurationManager.ConnectionStrings["eflow_cur"].ConnectionString; connString = ConfigurationManager.ConnectionStrings["eflow_cur"].ConnectionString;
...@@ -142,29 +142,31 @@ namespace WebAPI.Controllers ...@@ -142,29 +142,31 @@ namespace WebAPI.Controllers
{ {
using (SqlConnection Conn = new SqlConnection(connString)) using (SqlConnection Conn = new SqlConnection(connString))
{ {
String sns = obj_input["SN"].ToString(); String sns = obj_input["SN"].ToString();
String sqlstr = @"select td.SN, tdp.SN as SN_tdp,td.points,AssignedTo_userid,tdp.date_points_settlement,td.TaskDescription,td.CaseNo ,eel.* FROM esn_todos td String sqlstr = @"select td.SN, tdp.SN as SN_tdp,td.points,AssignedTo_userid,tdp.date_points_settlement,td.TaskDescription,etfs.Map_Class,td.CaseNo ,eel.* FROM esn_todos td
left join esn_todos_points tdp on tdp.sn=td.sn left join esn_todos_points tdp on tdp.sn=td.sn
left join evw_Employee eel on eel.user_id=td.AssignedTo_userid left join evw_Employee eel on eel.user_id=td.AssignedTo_userid
WHERE td.sn in (" + sns +")"; left join esn_todos_Flow etf on etf.esn_todos_sn=td.sn
left join esn_todos_Flow_StepType etfs on etfs.id=etf.StepType_id
WHERE td.sn in (" + sns + ")";
String value = obj_input["value"].ToString(); String value = obj_input["value"].ToString();
value = value == "" ? "null" : obj_input["value"].ToString(); value = value == "" ? "null" : obj_input["value"].ToString();
SqlCommand cmd = new SqlCommand("",Conn) SqlCommand cmd = new SqlCommand("", Conn)
{ {
CommandText = sqlstr CommandText = sqlstr
}; };
cmd.Parameters.AddWithValue("@SN", obj_input["SN"].ToString()); cmd.Parameters.AddWithValue("@SN", obj_input["SN"].ToString());
DataTable dt = SqlToDt(cmd); DataTable dt = SqlToDt(cmd);
cmd.CommandText= @" select ets.* from esn_todos_Settle ets cmd.CommandText = @" select ets.* from esn_todos_Settle ets
left join evw_qResult_EmpDS eqe on ets.DSNum=eqe.Emp_DSNum"; left join evw_qResult_EmpDS eqe on ets.DSNum=eqe.Emp_DSNum";
DataTable dtSettle = SqlToDt(cmd); DataTable dtSettle = SqlToDt(cmd);
List<Esn_todos_SettleModel> SettleMataData=new List<Esn_todos_SettleModel>(); List<Esn_todos_SettleModel> SettleMataData = new List<Esn_todos_SettleModel>();
foreach (DataRow drs in dtSettle.Rows) foreach (DataRow drs in dtSettle.Rows)
{ {
Esn_todos_SettleModel etsm = new Esn_todos_SettleModel() Esn_todos_SettleModel etsm = new Esn_todos_SettleModel()
{ {
Settle_Date =Convert.ToDateTime( drs["Settle_Date"]), Settle_Date = Convert.ToDateTime(drs["Settle_Date"]),
Create_time = Convert.ToDateTime(drs["Create_time"]), Create_time = Convert.ToDateTime(drs["Create_time"]),
update_time = Convert.ToDateTime(drs["update_time"]), update_time = Convert.ToDateTime(drs["update_time"]),
Create_user_id = drs["Create_user_id"].ToString(), Create_user_id = drs["Create_user_id"].ToString(),
...@@ -172,18 +174,19 @@ namespace WebAPI.Controllers ...@@ -172,18 +174,19 @@ namespace WebAPI.Controllers
DSNum = drs["DSNum"].ToString(), DSNum = drs["DSNum"].ToString(),
ItemNum = drs["ItemNum"].ToString(), ItemNum = drs["ItemNum"].ToString(),
update_user_id = drs["update_user_id"].ToString(), update_user_id = drs["update_user_id"].ToString(),
isClosed =Convert.ToBoolean( drs["isClosed"]) isClosed = Convert.ToBoolean(drs["isClosed"])
}; };
SettleMataData.Add(etsm); SettleMataData.Add(etsm);
} }
String point, AssignedTo_userID, Emp_DSNum, TaskDescription, CaseNo; String sqldeclare;int batchcount = 20;
String point, AssignedTo_userID, Emp_DSNum, TaskDescription, CaseNo, Map_Class;
DateTime date_points_settlement; DateTime date_points_settlement;
DataRow dr; DataRow dr;
List<String> return_msgs = new List<string>(), return_msg_error = new List<string>(), return_sn = new List<string>(); List<String> return_msgs = new List<string>(), return_msg_error = new List<string>(), return_sn = new List<string>();
sqlstr = "declare @TempTable TABLE(id INT) declare @FlowId int; "; sqldeclare = "declare @TempTable TABLE(id INT) declare @FlowId int; ";
cmd.Parameters.Clear(); cmd.Parameters.Clear(); sqlstr = "";
List<String> batchSql = new List<string>();
for (int i = 0;i< dt.Rows.Count;i++ ) for (int i = 0; i < dt.Rows.Count; i++)
{ {
dr = dt.Rows[i]; dr = dt.Rows[i];
point = dr["points"].ToString(); point = dr["points"].ToString();
...@@ -191,27 +194,35 @@ namespace WebAPI.Controllers ...@@ -191,27 +194,35 @@ namespace WebAPI.Controllers
Emp_DSNum = dr["Emp_DSNum"].ToString(); Emp_DSNum = dr["Emp_DSNum"].ToString();
TaskDescription = dr["TaskDescription"].ToString(); TaskDescription = dr["TaskDescription"].ToString();
CaseNo = dr["CaseNo"].ToString(); CaseNo = dr["CaseNo"].ToString();
Map_Class = dr["Map_Class"].ToString();
#region 關帳邏輯比對 AssignedTo_userID = dr["AssignedTo_userID"].ToString();
Esn_todos_SettleModel etsm = SettleMataData.Where(a => ( a.Settle_Date.ToString("yyyyMM").Equals(date_points_settlement.ToString("yyyyMM")) #region 邏輯比對
) && a.DSNum== Emp_DSNum && a.isClosed==true).FirstOrDefault(), #region 關帳
etsm2 = SettleMataData.Where(a => (a.Settle_Date.ToString("yyyyMM").Equals(Convert.ToDateTime(value).ToString("yyyyMM")) Esn_todos_SettleModel etsm = SettleMataData.Where(a => (a.Settle_Date.ToString("yyyyMM").Equals(date_points_settlement.ToString("yyyyMM"))
) && a.DSNum == Emp_DSNum && a.isClosed == true).FirstOrDefault(); ) && a.DSNum == Emp_DSNum && a.isClosed == true).FirstOrDefault(),
String etsmmsg = "sn:" + dr["SN_tdp"] + "<font color='blue'> 案件編號</font>:" + CaseNo + " <font color='blue'>子事項</font>:" + TaskDescription ; etsm2 = SettleMataData.Where(a => (a.Settle_Date.ToString("yyyyMM").Equals(Convert.ToDateTime(value).ToString("yyyyMM"))
) && a.DSNum == Emp_DSNum && a.isClosed == true).FirstOrDefault();
String etsmmsg = "承辦人:<font color='blue'> " + dr["cn_name"].ToString() + " </font> 案件編號: <font color='blue'>" + CaseNo + " </font>子事項:<font color='blue'>" + TaskDescription+ "</font>";
if (etsm != null) if (etsm != null)
{ {
return_msg_error.Add(etsmmsg + date_points_settlement.ToString("yyyy年MM月 ").ToString() + " 已關帳,不可變更<br>"); return_msg_error.Add(etsmmsg + date_points_settlement.ToString("yyyy年MM月 ").ToString() + " 已關帳,不可變更<br>");
continue; continue;
} }
else if (etsm2 != null) else if (etsm2 != null)
{ {
return_msg_error.Add(etsmmsg + Convert.ToDateTime(value).ToString("yyyy年MM月 ").ToString() + " 已關帳,不可設定結算<br>"); return_msg_error.Add(etsmmsg + Convert.ToDateTime(value).ToString("yyyy年MM月 ").ToString() + " 已關帳,不可結算<br>");
continue;
}
#endregion
#region 程序不可結算
if (Map_Class == "PG")
{
return_msg_error.Add(etsmmsg +" 程序審核中,不可結算<br>");
continue; continue;
} }
#endregion
#endregion #endregion
AssignedTo_userID = dr["AssignedTo_userID"].ToString();
if (dr["SN_tdp"] == DBNull.Value) if (dr["SN_tdp"] == DBNull.Value)
{ {
sqlstr += string.Format(@"insert into esn_todos_points(sn,date_points_settlement,date_points_settlement_AssignTo,date_points_settlement_Point,update_user_id,update_time) sqlstr += string.Format(@"insert into esn_todos_points(sn,date_points_settlement,date_points_settlement_AssignTo,date_points_settlement_Point,update_user_id,update_time)
...@@ -223,7 +234,7 @@ namespace WebAPI.Controllers ...@@ -223,7 +234,7 @@ namespace WebAPI.Controllers
,date_points_settlement_Point=@points{0} ,update_user_id=@gWadeID,Update_time=GETDATE() where SN =@SN{0};", i); ,date_points_settlement_Point=@points{0} ,update_user_id=@gWadeID,Update_time=GETDATE() where SN =@SN{0};", i);
} }
cmd.Parameters.AddWithValue(string.Format("@SN{0}",i), dr["SN"].ToString()); cmd.Parameters.AddWithValue(string.Format("@SN{0}", i), dr["SN"].ToString());
cmd.Parameters.AddWithValue(string.Format("@AssignedTo_userID{0}", i), AssignedTo_userID); cmd.Parameters.AddWithValue(string.Format("@AssignedTo_userID{0}", i), AssignedTo_userID);
cmd.Parameters.AddWithValue(string.Format("@points{0}", i), point); cmd.Parameters.AddWithValue(string.Format("@points{0}", i), point);
...@@ -234,18 +245,26 @@ namespace WebAPI.Controllers ...@@ -234,18 +245,26 @@ namespace WebAPI.Controllers
select id as Flow_id,GETDATE(),a.StepType_id_Previous,StepType_id,@gWadeID,'HR','SL','結算日期:' + @value,@gWadeID,GETDATE() from esn_todos_Flow a where a.id=@FlowId; select id as Flow_id,GETDATE(),a.StepType_id_Previous,StepType_id,@gWadeID,'HR','SL','結算日期:' + @value,@gWadeID,GETDATE() from esn_todos_Flow a where a.id=@FlowId;
", i); ", i);
return_sn.Add(dr["SN"].ToString()); return_sn.Add(dr["SN"].ToString());
if (i % batchcount == batchcount-1 || i== dt.Rows.Count-1) //固定筆數 存入批次語法
{
batchSql.Add(sqldeclare + sqlstr);
}
} }
cmd.Parameters.AddWithValue("@value", value); cmd.Parameters.AddWithValue("@value", value);
cmd.Parameters.AddWithValue("@gWadeID", obj_input["gWadeID"].ToString()); cmd.Parameters.AddWithValue("@gWadeID", obj_input["gWadeID"].ToString());
cmd.CommandText = sqlstr;
string JSONString = string.Empty; string JSONString = string.Empty;
if (return_msg_error.Count == 0) if (return_msg_error.Count == 0)
{ {
return_msgs.Add("結算完畢"); foreach (string sql in batchSql)
dt = SqlToDt(cmd); {
cmd.CommandText = sql;
dt = SqlToDt(cmd);
}
return_msgs.Add("設定結算完畢");
if (return_sn.Count > 0) if (return_sn.Count > 0)
...@@ -264,7 +283,7 @@ namespace WebAPI.Controllers ...@@ -264,7 +283,7 @@ namespace WebAPI.Controllers
response.Code = "1"; response.Code = "1";
response.Msg = return_msgs; response.Msg = return_msgs;
response.ExtraInfo= JSONString; response.ExtraInfo = JSONString;
} }
else else
{ {
...@@ -288,7 +307,7 @@ namespace WebAPI.Controllers ...@@ -288,7 +307,7 @@ namespace WebAPI.Controllers
result.Content = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.UTF8, "application/json"); result.Content = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.UTF8, "application/json");
return result; return result;
} }
[Route("batchUpdate_points")] [Route("batchUpdate_points")]
[CorsHandle] [CorsHandle]
[HttpPost] [HttpPost]
...@@ -402,12 +421,12 @@ namespace WebAPI.Controllers ...@@ -402,12 +421,12 @@ namespace WebAPI.Controllers
cmd.Parameters.AddWithValue("@CustName", obj_input["CustName"].ToString()); cmd.Parameters.AddWithValue("@CustName", obj_input["CustName"].ToString());
cmd.Parameters.AddWithValue("@DisplayType", obj_input["DisplayType"].ToString()); cmd.Parameters.AddWithValue("@DisplayType", obj_input["DisplayType"].ToString());
cmd.Parameters.AddWithValue("@DataMode", obj_input["DataMode"].ToString()); cmd.Parameters.AddWithValue("@DataMode", obj_input["DataMode"].ToString());
DataTable dt = SqlToDt(cmd); DataTable dt = SqlToDt(cmd);
DataRow dr; DataRow dr;
for (int i = 0; i < dt.Rows.Count; i++) for (int i = 0; i < dt.Rows.Count; i++)
{ {
dr = dt.Rows[i]; dr = dt.Rows[i];
} }
response.Code = "1"; response.Code = "1";
string JSONString = string.Empty; string JSONString = string.Empty;
JSONString = JsonConvert.SerializeObject(dt); JSONString = JsonConvert.SerializeObject(dt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment