Commit 071ebf0f authored by solho's avatar solho

fix:比對重複SN,有重複不可執行

parent 1648c737
......@@ -28,7 +28,7 @@ namespace WebAPI.Controllers
HttpResponseMessage result;
CommonResponseMsg response;
MessageList_ETF Outmsg;
String connString ;
String connString;
public Esn_Todos_FlowController()
{
......@@ -37,7 +37,7 @@ namespace WebAPI.Controllers
response = new CommonResponseMsg();
connString = ConfigurationManager.ConnectionStrings["eflow_cur"].ConnectionString;
}
/// <summary>
/// 取得歷史明細
/// </summary>
......@@ -137,7 +137,7 @@ namespace WebAPI.Controllers
List<ExportEHR_hisModel> Hislist = new List<ExportEHR_hisModel>();
using (SqlConnection Conn = new SqlConnection(connString))
{
ExportEHR_hisModel hisT ;
ExportEHR_hisModel hisT;
SqlCommand cmd = new SqlCommand("", Conn)
{
CommandText = @"select b.cn_name, a.* from esn_todos_SettleLog a
......@@ -152,7 +152,7 @@ namespace WebAPI.Controllers
{
id = (int)dr["id"],
SaveData = dr["SaveData"].ToString(),
update_time =(DateTime?) dr["update_time"] ,
update_time = (DateTime?)dr["update_time"],
update_user_id = dr["update_user_id"].ToString(),
Create_time = (DateTime?)dr["Create_time"],
Create_user_id = dr["Create_user_id"].ToString(),
......@@ -201,7 +201,7 @@ namespace WebAPI.Controllers
try
{
string JsonString = "";
List <ExportEHR_hisModel> Hislist = new List<ExportEHR_hisModel>();
List<ExportEHR_hisModel> Hislist = new List<ExportEHR_hisModel>();
using (SqlConnection Conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand("", Conn)
......@@ -217,7 +217,7 @@ namespace WebAPI.Controllers
{
JsonString = dr["SaveData"].ToString();
}
}
response.Code = "1";
response.Msg = JsonString;
......@@ -275,7 +275,7 @@ namespace WebAPI.Controllers
IsConfirm = 0; return_msg = "提交成功"; break;
case "RJTOp":
IsConfirm = 0; return_msg = "已轉至運營辦"; break;
case "LA":
case "LA":
IsConfirm = 1; return_msg = "請求提成完成"; break;
case "LAL":
IsConfirm = 0; return_msg = "請求提成完成"; break;
......@@ -347,137 +347,157 @@ namespace WebAPI.Controllers
#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:ss"), Tsql = "",RJTOp="";
date0 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Tsql = "", RJTOp = "";
JToken JtSn;
//List<String> sql = new List<string>();
int StepType_id_Previous, StepType_id, StepType_idHis;
Boolean SettleisClosed = false;
DataRow dsr;
//foreach (DataRow dr in ds.Tables[0].Rows)
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
if(ds.Tables[0].Rows.Count ==0)return_msg_error.Add("所有SN皆在 esn_todos無資料 ");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dsr = ds.Tables[0].Rows[i];
RJTOp = "";
StepType_id_Previous = dsr["StepType_id_Previous"] == DBNull.Value ? 0 : Convert.ToInt32(dsr["StepType_id_Previous"]);
//StepType_id_next = Convert.ToInt32(dsr["StepType_id_next"]);
StepType_id = dsr["StepType_id"] == DBNull.Value ? 0 : Convert.ToInt32(dsr["StepType_id"]);
Esn_Todos_Flow_StepTypeModel CStepTypeNext = new Esn_Todos_Flow_StepTypeModel(), CStepTypeCur = new Esn_Todos_Flow_StepTypeModel();
JtSn = obj_input.SelectToken("$.Sns[?(@.todos_sn == '" + dsr["Sn"] + "')]");
if (dsr["esn_todos_sn"] == DBNull.Value) //insert
try
{
RJTOp = "";
StepType_id_Previous = dsr["StepType_id_Previous"] == DBNull.Value ? 0 : Convert.ToInt32(dsr["StepType_id_Previous"]);
//StepType_id_next = Convert.ToInt32(dsr["StepType_id_next"]);
StepType_id = dsr["StepType_id"] == DBNull.Value ? 0 : Convert.ToInt32(dsr["StepType_id"]);
Esn_Todos_Flow_StepTypeModel CStepTypeNext = new Esn_Todos_Flow_StepTypeModel(), CStepTypeCur = new Esn_Todos_Flow_StepTypeModel();
var JtSns = obj_input.SelectTokens("$.Sns[?(@.todos_sn == '" + dsr["Sn"] + "')]");
if (JtSn["targetclass"] == null || string.IsNullOrEmpty(JtSn["targetclass"].ToString()))
JToken JtSn = JtSns.First<JToken>();
if (JtSns.Count() > 1)
{
return_msg_error.Add(dsr["esn_todos_sn"] + ":無FLOW資料時,請設定目的身分代碼(設定targetclass )");
return_msg_error.Add("有重複SN:" + dsr["Sn"] +" - "+ JtSns.Count()+"筆");
continue;
}
CStepTypeCur = AllStepType.Where(p => p.Map_Class.Contains(JtSn["validclass"].ToString())).FirstOrDefault();
CStepTypeNext = AllStepType.Where(p => p.id == AllStepType.Where(p2 => p2.Map_Class == JtSn["targetclass"].ToString()).FirstOrDefault().id).FirstOrDefault();
CStepTypeCur = AllStepType.Where(p => p.id == Convert.ToInt32(CStepTypeNext.Step_Id_previous)).FirstOrDefault();
StepType_idHis = CStepTypeCur.id;
//else
// CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).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 (" + dsr["sn"] + ",'" + CStepTypeNext.id + "'," + IsConfirm + ",'" + StepType_idHis
+ "',@Reject_Description,@Wade_User_ID,'" + date0 + "'" + ",@Wade_User_ID,'" + date0 + "'" + "); "
;
}
else //update
{
String Map_Class = dsr["Map_Class"].ToString();
#region 驗證
//if (Map_Class != JtSn["validclass"].ToString())
//{
// return_msg_error.Add(dsr["esn_todos_sn"] + ":該流程已異動, 不可變更");
//}
SettleisClosed = dsr["SettleisClosed"].ToString() == "1" ? true : false;
if (SettleisClosed)
return_msg_error.Add(dsr["esn_todos_sn"] + ":該流程 "+ Convert.ToDateTime( dsr["Settle_Date"]).ToString(" yyyy年MM月 ") + "已關帳, 不可變更");
#endregion
//String Step_Value_previous = dsr["Step_Value_previous"].ToString(), Step_Value_Next = dsr["Step_Value_Next"].ToString();
Tsql = Tsql + "update esn_todos_Flow set ";
CStepTypeCur = AllStepType.Where(p => p.id == StepType_id).FirstOrDefault();
StepType_idHis = CStepTypeCur.id;
#region 確認是否有審核資格
//2021-08-20限制全取消
if (!Confirm_Class.Contains(Map_Class))
{
//return_msg_error.Add(dsr["esn_todos_sn"] + ":無可審核該筆身分");
}
if (int.Parse(CStepTypeCur.Step_Value) > 90)
if (dsr["esn_todos_sn"] == DBNull.Value) //insert
{
//return_msg_error.Add(dsr["esn_todos_sn"] + ":審核流程已結束,不可確認");
}
#endregion
if (JtSn["targetclass"] == null || string.IsNullOrEmpty(JtSn["targetclass"].ToString()))
{
return_msg_error.Add(dsr["esn_todos_sn"] + ":無FLOW資料時,請設定目的身分代碼(設定targetclass )");
continue;
}
if (Confirm_Method == "CF" || Confirm_Method == "CFTLd")
{
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).FirstOrDefault();
}
CStepTypeCur = AllStepType.Where(p => p.Map_Class.Contains(JtSn["validclass"].ToString())).FirstOrDefault();
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();
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_previous).FirstOrDefault();
CStepTypeNext = AllStepType.Where(p => p.id == AllStepType.Where(p2 => p2.Map_Class == JtSn["targetclass"].ToString()).FirstOrDefault().id).FirstOrDefault();
CStepTypeCur = AllStepType.Where(p => p.id == Convert.ToInt32(CStepTypeNext.Step_Id_previous)).FirstOrDefault();
StepType_idHis = CStepTypeCur.id;
//else
// CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).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 (" + dsr["sn"] + ",'" + CStepTypeNext.id + "'," + IsConfirm + ",'" + StepType_idHis
+ "',@Reject_Description,@Wade_User_ID,'" + date0 + "'" + ",@Wade_User_ID,'" + date0 + "'" + "); "
;
}
else if (Confirm_Method == "RV")
else //update
{
//CStepTypeNext = AllStepType.Where(p => p.id == StepType_id_Previous).FirstOrDefault();
//CStepTypeCur.id = CStepTypeNext.id; //回復與下一步 同ID
//Tsql = Tsql + CStepTypeNext.Map_Class + "_IsConfirm =" + IsConfirm + ",";
CStepTypeNext = AllStepType.Where(p => p.id == StepType_id_Previous).FirstOrDefault();
if (JtSn["validclass"].ToString()=="PG")
{
RJTOp += String.Format(@"update esn_todos_points set date_points_settlement=null where sn=" + dsr["sn"] + ";");
RJTOp += String.Format(@"update esn_todos_Flow set Is_Settlement=0 where esn_todos_sn=" + dsr["sn"] + ";");
String Map_Class = dsr["Map_Class"].ToString();
#region 驗證
//if (Map_Class != JtSn["validclass"].ToString())
//{
// return_msg_error.Add(dsr["esn_todos_sn"] + ":該流程已異動, 不可變更");
//}
SettleisClosed = dsr["SettleisClosed"].ToString() == "1" ? true : false;
if (SettleisClosed)
return_msg_error.Add(dsr["esn_todos_sn"] + ":該流程 " + Convert.ToDateTime(dsr["Settle_Date"]).ToString(" yyyy年MM月 ") + "已關帳, 不可變更");
#endregion
//String Step_Value_previous = dsr["Step_Value_previous"].ToString(), Step_Value_Next = dsr["Step_Value_Next"].ToString();
Tsql = Tsql + "update esn_todos_Flow set ";
CStepTypeCur = AllStepType.Where(p => p.id == StepType_id).FirstOrDefault();
StepType_idHis = CStepTypeCur.id;
#region 確認是否有審核資格
//2021-08-20限制全取消
if (!Confirm_Class.Contains(Map_Class))
{
//return_msg_error.Add(dsr["esn_todos_sn"] + ":無可審核該筆身分");
}
if (int.Parse(CStepTypeCur.Step_Value) > 90)
{
//return_msg_error.Add(dsr["esn_todos_sn"] + ":審核流程已結束,不可確認");
}
}
else if (Confirm_Method == "RJTOp")
{
//Tsql = Tsql + "PG_IsConfirm =" + IsConfirm + "," + "PE_IsConfirm =" + IsConfirm + "," + "Leader_IsConfirm =" + IsConfirm + ","; //退回後,改為更新所有Flow狀態確認
//CStepTypeNext = AllStepType.Where(p => p.Step_Value == Step_Value_previous).FirstOrDefault();
RJTOp = String.Format(@"exec [dbo].esp_esn_Todos_V3_AssignStatus 'AS05' ," + dsr["sn"] + @",'',@todos_Reject_Desc_{0},'',@Wade_User_ID ;", i);
cmd.Parameters.AddWithValue(string.Format("@todos_Reject_Desc_{0}",i), "承辦人:" + JtSn["todos_Reject_Desc"].ToString() + "<br>主管:" + Reject_Description );
Reject_Description = "承辦人:" + JtSn["todos_Reject_Desc"].ToString() + "<br>主管:" + Reject_Description; //轉運營辦訊息改為與傳給SP同步
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_previous).FirstOrDefault();
}
else
{
//Tsql = Tsql + CStepTypeCur.Map_Class + "_IsConfirm =" + IsConfirm + ",";
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).FirstOrDefault();
}
//有指定蓋過預設
if (JtSn["targetclass"] != null && !string.IsNullOrEmpty(JtSn["targetclass"].ToString()))
{
CStepTypeNext = AllStepType.Where(p => p.id == AllStepType.Where(p2 => p2.Map_Class == JtSn["targetclass"].ToString()).FirstOrDefault().id).FirstOrDefault();
}
#endregion
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 =" + dsr["Flowid"] + ";"
;
}
if (Confirm_Method == "CF" || Confirm_Method == "CFTLd")
{
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).FirstOrDefault();
}
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();
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_previous).FirstOrDefault();
}
else if (Confirm_Method == "RV")
{
//CStepTypeNext = AllStepType.Where(p => p.id == StepType_id_Previous).FirstOrDefault();
//CStepTypeCur.id = CStepTypeNext.id; //回復與下一步 同ID
//Tsql = Tsql + CStepTypeNext.Map_Class + "_IsConfirm =" + IsConfirm + ",";
CStepTypeNext = AllStepType.Where(p => p.id == StepType_id_Previous).FirstOrDefault();
if (JtSn["validclass"].ToString() == "PG")
{
RJTOp += String.Format(@"update esn_todos_points set date_points_settlement=null where sn=" + dsr["sn"] + ";");
RJTOp += String.Format(@"update esn_todos_Flow set Is_Settlement=0 where esn_todos_sn=" + dsr["sn"] + ";");
}
}
else if (Confirm_Method == "RJTOp")
{
//Tsql = Tsql + "PG_IsConfirm =" + IsConfirm + "," + "PE_IsConfirm =" + IsConfirm + "," + "Leader_IsConfirm =" + IsConfirm + ","; //退回後,改為更新所有Flow狀態確認
//CStepTypeNext = AllStepType.Where(p => p.Step_Value == Step_Value_previous).FirstOrDefault();
RJTOp = String.Format(@"exec [dbo].esp_esn_Todos_V3_AssignStatus 'AS05' ," + dsr["sn"] + @",'',@todos_Reject_Desc_{0},'',@Wade_User_ID ;", i);
cmd.Parameters.AddWithValue(string.Format("@todos_Reject_Desc_{0}", i), "承辦人:" + JtSn["todos_Reject_Desc"].ToString() + "<br>主管:" + Reject_Description);
Reject_Description = "承辦人:" + JtSn["todos_Reject_Desc"].ToString() + "<br>主管:" + Reject_Description; //轉運營辦訊息改為與傳給SP同步
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_previous).FirstOrDefault();
}
else
{
//Tsql = Tsql + CStepTypeCur.Map_Class + "_IsConfirm =" + IsConfirm + ",";
CStepTypeNext = AllStepType.Where(p => p.id == CStepTypeCur.Step_Id_Next).FirstOrDefault();
}
Tsql += @"select @FlowId=id from @TempTable;
//有指定蓋過預設
if (JtSn["targetclass"] != null && !string.IsNullOrEmpty(JtSn["targetclass"].ToString()))
{
CStepTypeNext = AllStepType.Where(p => p.id == AllStepType.Where(p2 => p2.Map_Class == JtSn["targetclass"].ToString()).FirstOrDefault().id).FirstOrDefault();
}
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 =" + dsr["Flowid"] + ";"
;
}
Tsql += @"select @FlowId=id from @TempTable;
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 + "','" + StepType_idHis + "','" + CStepTypeNext.id + "',@Wade_User_ID,'" + CStepTypeCur.Map_Class + "','" + Confirm_Method + "',@Reject_Description,@Wade_User_ID,'" + date0 + "'" + ") ;";
Tsql += RJTOp;
+ " values (@FlowId,'" + date0 + "','" + StepType_idHis + "','" + CStepTypeNext.id + "',@Wade_User_ID,'" + CStepTypeCur.Map_Class + "','" + Confirm_Method + "',@Reject_Description,@Wade_User_ID,'" + date0 + "'" + ") ;";
Tsql += RJTOp;
}
catch (Exception e)
{
return_msg_error.Add(dsr["esn_todos_sn"] + ":"+e.Message);
}
}
cmd.Parameters.AddWithValue("@Reject_Description", Reject_Description);
......@@ -528,7 +548,7 @@ namespace WebAPI.Controllers
try
{
JObject obj_input = JObject.Parse(input.ToString());
JArray obj_input_data= JArray.Parse(obj_input["SaveData"].ToString());
JArray obj_input_data = JArray.Parse(obj_input["SaveData"].ToString());
using (SqlConnection Conn = new SqlConnection(connString))
{
......
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