using Dapper; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using VueWebCoreApi.Models; using VueWebCoreApi.Tools; namespace VueWebCoreApi.DLL.DAL { public class AppAnDonDAL { public static DataTable dt; //定义全局变量dt public static bool res; //定义全局变量dt public static ToMessage mes = new ToMessage(); //定义全局返回信息对象 public static string strProcName = ""; //定义全局sql变量 public static List listStr = new List(); //定义全局参数集合 public static SqlParameter[] parameters; //定义全局SqlParameter参数数组 #region[安灯呼叫扫描工位] public static ToMessage AppAnDonCallScanSearch(string eqpcode) { string sql = ""; var dynamicParams = new DynamicParameters(); try { //获取对应设备及所属车间 sql = @"select A.code,A.name,T.torg_code as wksp_code,T.torg_name as wksp_name,E.eqpchkmain_code from TEqpInfo A left join TOrganization T on A.torg_code=T.torg_code left join TEqpchk_Eqp E on A.code=E.eqp_code where A.code=@eqpcode and A.enable='Y'"; dynamicParams.Add("@eqpcode", eqpcode); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { mes.code = "200"; mes.message = "查询成功!"; mes.data = data; } else { mes.code = "300"; mes.message = "当前设备/工位不存在或异常!"; mes.data = data; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.message = e.Message; mes.data = null; } return mes; } #endregion #region[安灯呼叫,选择扫描工位带出呼叫类型选项及对应人员数据] public static ToMessage AppAnDonCallItemSearch(string eqpcode, string wkshpcode) { string sql = ""; var dynamicParams = new DynamicParameters(); List list = new List(); try { //根据车间代码查找呼叫类型数据 sql = @"select A.id,B.code,B.name,(case when F.type is null then 'N' else 'Y' end) flag from TAnDon_Roul_ConFig A inner join TAnDonType B on A.andotype_code=B.code inner join TEqpInfo E on A.wkshp_code=e.torg_code left join( select type,wkshp_code,eqp_code from TAnDon_Task_Info where eqp_code=@eqpcode and wkshp_code=@wkshpcode and status='START' ) F on A.wkshp_code=F.wkshp_code and E.code=F.eqp_code and B.code=F.type where A.wkshp_code=@wkshpcode and E.code=@eqpcode and A.enable='N'"; dynamicParams.Add("@wkshpcode", wkshpcode); dynamicParams.Add("@eqpcode", eqpcode); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { for (int i = 0; i < data.Rows.Count; i++) { AnDnDate mn = new AnDnDate(); mn.code = data.Rows[i]["CODE"].ToString(); mn.name = data.Rows[i]["NAME"].ToString(); mn.flag = data.Rows[i]["FLAG"].ToString(); mn.children = new List(); //根据呼叫类型id查找绑定人员 sql = @"select U.usercode,U.username,U.rid from TAnDon_Roul_ConFigUser A inner join TUser U on A.usercode=U.usercode where A.ando_cogfigid=@id"; dynamicParams.Add("@id", data.Rows[i]["ID"].ToString()); var data0 = DapperHelper.selectdata(sql, dynamicParams); if (data0.Rows.Count > 0) { for (int j = 0; j < data0.Rows.Count; j++) { AnDnDateSub sn = new AnDnDateSub(); sn.rid = data0.Rows[j]["RID"].ToString();//rid sn.alias = data0.Rows[j]["RID"].ToString() + data0.Rows[j]["USERCODE"].ToString(); //别名 sn.usercode = data0.Rows[j]["USERCODE"].ToString(); sn.username = data0.Rows[j]["USERNAME"].ToString(); mn.children.Add(sn); } } list.Add(mn); } mes.code = "200"; mes.message = "查询成功!"; mes.data = list; } else { mes.code = "300"; mes.message = "当前设备未设置安灯呼叫类型或者呼叫类型已关闭!"; mes.data = data; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.message = e.Message; mes.data = null; } return mes; } #endregion #region[安灯呼叫提交] public static ToMessage AppAnDonCallSave(User us, string eqpcode, string wkshpcode, List json) { string sql = ""; int AnDnID = 0; //最大id var dynamicParams = new DynamicParameters(); List list = new List(); List list1 = new List(); try { list.Clear(); //获取主表最大ID AnDnID = DapperHelper.insertReturnId("TAnDon_Task_Info"); for (int i = 0; i < json.Count; i++) { AnDnID = AnDnID + 1;//自增1 string code = json[i].code.ToString(); string name = json[i].name.ToString(); sql = @"select * from TAnDon_Task_Info where wkshp_code=@wkshpcode and eqp_code=@eqpcode and type=@typecode and status='START'"; dynamicParams.Add("@wkshpcode", wkshpcode); dynamicParams.Add("@eqpcode", eqpcode); dynamicParams.Add("@typecode", code); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { mes.code = "300"; mes.message = "当前设备已经呼叫【" + name + "】,请先响应!"; mes.data = null; return mes; } else { //写入安灯呼叫表 sql = @"insert into TAnDon_Task_Info(wkshp_code,eqp_code,type,start_date,start_user,status) values(@wkshp_code,@eqp_code,@type,@start_date,@start_user,@status)"; list.Add(new { str = sql, parm = new { wkshp_code = wkshpcode, eqp_code = eqpcode, type = code, start_date = DateTime.Now.ToString(), start_user = us.usercode, status = "START" } }); //for (int j = 0; j < json[i].children.Count; j++) //{ // //写入安灯记录推送人员表 // sql = @"insert into TAnDnMessagePush(m_id,wkshp_code,eqp_code,type,resp_user,status) // values(@m_id,@wkshp_code,@eqp_code,@type,@resp_user,@status)"; // list.Add(new // { // str = sql, // parm = new // { // m_id = AnDnID, // //m_id = int.Parse(dt.Rows[0]["ID"].ToString()), // wkshp_code = wkshpcode, // eqp_code = eqpcode, // type = code, // resp_user = json[i].children[j].usercode, // alias = json[i].children[j].alias, // status = "N" // } // }); //} } } //极光推送 //mes = JPushManage.ExecutePushByUserId(us.usercode, wkshpcode, eqpcode, json); bool aa = DapperHelper.DoTransaction(list); if (aa) { //写入操作记录表 LogHelper.DbOperateLog(us.usercode, "安灯呼叫", "呼叫了:" + string.Join(",", json.Select(item => item.name)), us.usertype); mes.code = "200"; mes.count = 0; mes.message = "呼叫成功!"; mes.data = null; } else { mes.code = "300"; mes.count = 0; mes.message = "呼叫失败!"; mes.data = null; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.message = e.Message; mes.data = null; } return mes; } #endregion #region[安灯响应扫描工位/设备] public static ToMessage AppAnDonLampResponseScanSearch(string eqpcode) { string sql = ""; var dynamicParams = new DynamicParameters(); try { //获取对应设备及所属车间的安灯呼叫记录 sql = @"select A.eqp_code,B.name as eqp_name,T.torg_code as wksp_code,T.torg_name as wksp_name,A.type as typecode,D.name as typename from TAnDon_Task_Info A left join TEqpInfo B on A.eqp_code=B.code left join TOrganization T on B.torg_code=T.torg_code left join TAnDonType D on A.type=D.code where A.eqp_code=@eqpcode and A.status='START' and B.enable='Y'"; dynamicParams.Add("@eqpcode", eqpcode); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { mes.code = "200"; mes.message = "查询成功!"; mes.data = data; } else { mes.code = "300"; mes.message = "当前设备/工位未安灯呼叫!"; mes.data = data; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.message = e.Message; mes.data = null; } return mes; } #endregion #region[安灯响应提交] public static ToMessage AppAnDonLampResponseSave(User us, string eqpcode, string wkshpcode, List json) { string sql = ""; var dynamicParams = new DynamicParameters(); List list = new List(); try { list.Clear(); for (int i = 0; i < json.Count; i++) { string code = json[i].code.ToString(); string name = json[i].name.ToString(); //更新安灯呼叫表 sql = @"update TAnDon_Task_Info set resp_user=@resp_user,resp_date=@resp_date,status='CLOSED',taking=cast ( cast ( datediff ( ss, start_date, @resp_date) / ( 60 * 60 * 24 ) as int ) as varchar ) + '天' + cast ( cast ( datediff ( ss, start_date, @resp_date ) % 86400 / 3600 as int ) as varchar ) + '小时' + cast ( cast ( datediff ( ss, start_date, @resp_date ) % 3600 / 60 as int ) as varchar ) + '分' + cast ( cast ( datediff ( ss, start_date, @resp_date ) % 60 as int ) as varchar ) + '秒' where wkshp_code=@wkshp_code and eqp_code=@eqp_code and type=@type and status='START'"; list.Add(new { str = sql, parm = new { wkshp_code = wkshpcode, eqp_code = eqpcode, type = code, resp_date = DateTime.Now.ToString(), resp_user = us.usercode, status = "START" } }); } bool aa = DapperHelper.DoTransaction(list); if (aa) { LogHelper.DbOperateLog(us.usercode, "安灯响应", "响应了:" + string.Join(",", json.Select(item => item.name)), us.usertype); mes.code = "200"; mes.count = 0; mes.message = "响应成功!"; mes.data = null; } else { mes.code = "300"; mes.count = 0; mes.message = "响应失败!"; mes.data = null; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.message = e.Message; mes.data = null; } return mes; } #endregion } }