Commit 1ecb7332 authored by solho's avatar solho

新增點數審核

parent ca6040f9
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using WebAPI.Models;
using static WebAPI.Models.CommonModel;
using static WebAPI.Tool.Common;
......@@ -18,14 +19,20 @@ namespace WebAPI.Controllers
[RoutePrefix("Esn_Subitem")]
public class Esn_Todos_FlowController : ApiController
{
public class Sns
{
public String todos_sn { get; set; }
public String Flow_id { get; set; }
}
HttpResponseMessage result;
CommonResponseMsg response ;
CommonResponseMsg response;
MessageList_ETF Outmsg;
public Esn_Todos_FlowController()
{
if (Outmsg == null) Outmsg = new MessageList_ETF();
result = new HttpResponseMessage(HttpStatusCode.OK);
response = new CommonResponseMsg();
result = new HttpResponseMessage(HttpStatusCode.OK);
response = new CommonResponseMsg();
}
/// <summary>
......@@ -53,16 +60,16 @@ namespace WebAPI.Controllers
Esn_Todos_FlowModel hisT = new Esn_Todos_FlowModel();
SqlCommand cmd = new SqlCommand("", Conn)
{
CommandText = @" select top 100 a.ConfirmTime
,Case When a.ConfirmUserClass='PG' Then '程序' When a.ConfirmUserClass='PE' Then '承辦人' When a.ConfirmUserClass='Leader' Then '主管' else '其他' End as ConfirmUserClass
,Case When a.ConfirmMethod='CF' Then '確認' When a.ConfirmMethod='RJ' Then '退回' When a.ConfirmMethod='RV' Then '撤回' else '其他' End as ConfirmMethod
,a.Create_time,d.cn_name as Create_User_Name,b.Step_Text as ""From"",c.Step_Text as ""To"",a.Description
from esn_Todos_flow_his a
left join esn_todos_Flow_StepType b on a.FromType_id = b.id
left join esn_todos_Flow_StepType c on a.ToType_id = c.id
left join evw_Employee d on a.Create_User_id = d.user_id
where a.Flow_id = @Flow_id
order by ConfirmTime desc
CommandText = @" select a.ConfirmTime
,Case When a.ConfirmUserClass='PG' Then '程序' When a.ConfirmUserClass='PE' Then '承辦人' When a.ConfirmUserClass='Leader' Then '主管' else '其他' End as ConfirmUserClass
,Case When a.ConfirmMethod='CF' Then '確認' When a.ConfirmMethod='RJ' Then '退回' When a.ConfirmMethod='RV' Then '撤回' else '其他' End as ConfirmMethod
,a.Create_time,d.cn_name as Create_User_Name,b.Step_Text as ""From"",c.Step_Text as ""To"",a.Description
from esn_Todos_flow_his a
left join esn_todos_Flow_StepType b on a.FromType_id = b.id
left join esn_todos_Flow_StepType c on a.ToType_id = c.id
left join evw_Employee d on a.Create_User_id = d.user_id
where a.Flow_id = @Flow_id
order by ConfirmTime desc
"
};
cmd.Parameters.AddWithValue("@Flow_id", obj_input["Flowid"].ToString());
......@@ -105,5 +112,197 @@ namespace WebAPI.Controllers
result.Content = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.UTF8, "application/json");
return result;
}
[Route("SaveEsnTodosFlow")]
[CorsHandle]
[HttpPost]
[HttpGet]
public HttpResponseMessage Save_Esn_Todos_Flow(ParamModel param)
{
if (param != null && param.Input != null && !string.IsNullOrWhiteSpace((param.Input.ToString())))
{
string input = param.Input.ToString();
String connString = ConfigurationManager.ConnectionStrings["eflow_cur"].ConnectionString;
JObject obj_input = JObject.Parse(input.ToString());
try
{
using (SqlConnection Conn = new SqlConnection(connString))
{
int IsConfirm;
List<String> return_msgs = new List<string>(), return_msg_error = new List<string>()
, Confirm_Class = new List<string>();
List<Esn_Todos_Flow_StepTypeModel> AllStepType = new List<Esn_Todos_Flow_StepTypeModel>();
String return_msg, Confirm_Method = obj_input["Confirm_Method"].ToString();
switch (Confirm_Method)
{
case "CF":
IsConfirm = 1; return_msg = "確認完成"; break;
case "RV":
IsConfirm = 0; return_msg = "已撤回"; break;
case "RJ":
IsConfirm = 0; return_msg = "已退回"; break;
default:
IsConfirm = 0; return_msg = "已退回"; break;
}
SqlCommand cmd = new SqlCommand("", Conn);
DataSet ds;
#region 取得Flow驗證身分
cmd.CommandText = @"select * from esn_todos_Flow_StepType a";
ds = SqlToDs(cmd);
foreach (DataRow dr in ds.Tables[0].Rows)
{
AllStepType.Add(new Esn_Todos_Flow_StepTypeModel()
{
id = Convert.ToInt32(dr["id"]),
update_time = Convert.ToDateTime(dr["update_time"]),
Map_Class = dr["Map_Class"].ToString(),
Step_Text = dr["Step_Text"].ToString(),
Step_Value_Next = dr["Step_Value_Next"].ToString(),
Step_Value = dr["Step_Value"].ToString(),
Step_Value_previous = dr["Step_Value_previous"].ToString(),
update_user_id = dr["update_user_id"].ToString()
}
);
}
#endregion
#region 取得該員身分
cmd.CommandText = @"select * from evw_Employee a
where a.user_id= @user_id  and a.is_enabled=1 and isnull(Emp_LeaveDate,'')=''";
//cmd.Parameters.AddWithValue("@user_id", obj_input["Wade_User_ID"].ToString());
cmd.Parameters.AddWithValue("@user_id", "FD67D192-041B-4725-A3E1-CB5E62A5CC61");//test
ds = SqlToDs(cmd);
Confirm_Class.Add("PE");//預設有承辦人
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr["is_programmer"].ToString() == "1") Confirm_Class.Add("PG");
if (dr["is_dept_manager"].ToString() == "1") Confirm_Class.Add("Leader");
}
#endregion
#region 取得FLOW相關
cmd.CommandText = @"select et.*,etf.id AS Flowid,etf.*,
etfs.* FROM esn_todos et
left join esn_todos_Flow etf on et.sn=etf.esn_todos_sn
left join esn_todos_Flow_StepType etfs on etfs.id=etf.StepType_id
where Esn_Todos_Sn in(@Esn_Todos_Sn)
";
List<Sns> items = JsonConvert.DeserializeObject<List<Sns>>(obj_input["Sns"].ToString());
var parameters = new string[items.Count];
cmd.Parameters.Clear();
for (int i = 0; i < items.Count; i++)
{
parameters[i] = string.Format("@Esn_Todos_Sn_{0}", i);
cmd.Parameters.AddWithValue(parameters[i], items[i].todos_sn);
}
cmd.CommandText = cmd.CommandText.Replace("@Esn_Todos_Sn", string.Format(string.Join(",", parameters)));
ds = SqlToDs(cmd);
#endregion
String Wade_User_ID = obj_input["Wade_User_ID"].ToString(), Reject_Description = obj_input["Reject_Description"].ToString(),
date0 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:dd"), Tsql = "";
JToken JtSn = obj_input.SelectToken("$.Sns[?(@.todos_sn == '888302')]");
List<String> sql = new List<string>();
int StepType_id_Previous, StepType_id;
foreach (DataRow dr in ds.Tables[0].Rows)
{
StepType_id_Previous = Convert.ToInt32(dr["StepType_id_Previous"]);
//StepType_id_next = Convert.ToInt32(dr["StepType_id_next"]);
StepType_id = Convert.ToInt32(dr["StepType_id"]);
Esn_Todos_Flow_StepTypeModel CStepTypeNext = new Esn_Todos_Flow_StepTypeModel(), CStepTypeCur = new Esn_Todos_Flow_StepTypeModel();
if (dr["esn_todos_sn"] == DBNull.Value) //insert
{
CStepTypeNext = AllStepType.Where(p => p.Map_Class.Contains("PE")).FirstOrDefault();
CStepTypeCur = CStepTypeNext;
Tsql = @"insert into esn_todos_Flow(esn_todos_sn,[StepType_id],[" + CStepTypeCur.Map_Class
+ @"_IsConfirm],StepType_id_Previous,Description,[create_user_id],[Create_time],update_user_id,update_time) "
+ " OUTPUT Inserted.id into @TempTable "
+ " values (" + dr["esn_todos_sn"] + ",'" + CStepTypeNext.id + "'," + IsConfirm + ",'" + 1
+ "','" + Reject_Description + "','" + Wade_User_ID + "'" + ",'" + date0 + "'" + ",'" + Wade_User_ID + "'" + ",'" + date0 + "'" + "); "
;
}
else //update
{
JtSn = obj_input.SelectToken("$.Sns[?(@.todos_sn == '" + dr["Sn"] + "')]");
String Map_Class = dr["Map_Class"].ToString();
#region 驗證
//if (Map_Class != JtSn["validclass"].ToString())
//{
// return_msg_error.Add(dr["esn_todos_sn"] + ":該流程已異動, 不可變更");
//}
if (!Confirm_Class.Contains(Map_Class))
{
return_msg_error.Add(dr["esn_todos_sn"] + ":無可審核該筆身分");
}
#endregion
CStepTypeCur = AllStepType.Where(p => p.id == StepType_id).FirstOrDefault();
CStepTypeNext = AllStepType.Where(p => p.Step_Value == CStepTypeCur.Step_Value_Next).FirstOrDefault();
String Step_Value_previous = dr["Step_Value_previous"].ToString(), Step_Value_Next = dr["Step_Value_Next"].ToString();
Tsql = Tsql + "update esn_todos_Flow set ";
if (Confirm_Method == "RJ")
{
Tsql = Tsql + "PG_IsConfirm =" + IsConfirm + "," + "PE_IsConfirm =" + IsConfirm + "," + "Leader_IsConfirm =" + IsConfirm + ","; //退回後,改為更新所有Flow狀態確認
CStepTypeNext = AllStepType.Where(p => p.Step_Value == Step_Value_previous).FirstOrDefault();
}
else if (Confirm_Method == "RV")
{
CStepTypeNext = AllStepType.Where(p => p.id == StepType_id_Previous).FirstOrDefault();
}
Tsql = Tsql + CStepTypeCur.Map_Class + "_IsConfirm =" + IsConfirm + ",";
Tsql = Tsql + " StepType_id = '" + CStepTypeNext.id + "',StepType_id_Previous = '" + CStepTypeCur.id +
"',Description = '" + Reject_Description + "',update_user_id='" + Wade_User_ID + "',update_time='" + date0 + "' "
+ " output Inserted.id into @TempTable where id =" + dr["Flowid"] + ";"
;
}
Tsql = Tsql + "select @FlowId=id from @TempTable;";
Tsql = Tsql + "insert into esn_todos_Flow_his (Flow_id,ConfirmTime,FromType_id,ToType_id,ConfirmUserId,ConfirmUserClass,ConfirmMethod,Description,Create_User_id,Create_time) "
+ " values (@FlowId,'" + date0 + "','" + CStepTypeCur.id + "','" + CStepTypeNext.id + "','" + Wade_User_ID
+ "','" + CStepTypeCur.Map_Class + "','" + Confirm_Method + "','" + Reject_Description + "','" + Wade_User_ID + "','" + date0 + "'" + ") ;";
}
cmd.CommandText = @"declare @TempTable TABLE(id INT)
declare @FlowId int " + Tsql;
return_msgs.Add(return_msg);
if (return_msg_error.Count == 0)
{
DataTable dt = SqlToDt(cmd);
response.Code = "1";
response.Msg = return_msgs;
}
else
{
response.Code = "0";
response.Msg = return_msg_error;
}
}
}
catch (Exception e)
{
response.Code = "0";
response.Msg = "Exception:" + e.StackTrace;
}
}
else
{
response.Code = "0";
response.Msg = "no input or format error";
}
result.Content = new StringContent(JsonConvert.SerializeObject(response), System.Text.Encoding.UTF8, "application/json");
return result;
}
}
}
......@@ -24,6 +24,16 @@ namespace WebAPI.Models
public String Description { get; set; }
public String Create_User_Name { get; set; }
}
public class Esn_Todos_Flow_StepTypeModel
{
public int id { get; set; }
public String Step_Value_previous { get; set; }
public String Step_Value_Next { get; set; }
public String Step_Value { get; set; }
public String Step_Text { get; set; }
public String Map_Class { get; set; }
public String update_user_id { get; set; }
public DateTime? update_time { get; set; }
}
}
\ No newline at end of file
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