using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Text; using System.Collections; using System.Reflection; using System.Web.Script.Serialization; using FangYar.Model; using FangYar.BLL; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.IO; using Spire.Doc; using Spire.Doc.Documents; using System.Drawing; using Spire.Doc.Fields; using System.Timers; using System.Text.RegularExpressions; using FangYar.Common; namespace FangYar.WebUI.ashx { /// /// OaLeaveHandler 的摘要说明 /// public class OaLeaveHandler : IHttpHandler { private FangYar.BLL.OA_LEAVE bll = new FangYar.BLL.OA_LEAVE(); public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "List": returnstr = getLeaveList(context); break; case "ListAll": returnstr = getLeaveAllList(context); break; case "getOrgTree": returnstr = getOrgTreeList(context); break; case "getOrgTree2": returnstr = getOrgTreeList2(context); break; case "getOrgTree3": returnstr = getOrgTreeList3(context); break; case "getOrgList": returnstr = getOrgList(context); break; case "getOrgList2": returnstr = getOrgList2(context); break; case "getOrgLeaderTree": returnstr = getOrgLeaderTree(context); break; case "add": returnstr = addLeave(context); break; case "getLeave": returnstr = getLeave(context); break; case "editWait": returnstr = editWait(context); break; case "ApplyRegression": returnstr = ApplyRegression(context); break; case "ApprovalRegression": returnstr = ApprovalRegression(context); break; case "Del": returnstr = DelLeave(context); break; case "getAksPatrolOrgTree": returnstr = getAksPatrolOrgTree(context); break; case "leaveSta": returnstr = leaveSta(context); break; case "homeLeaveSta": returnstr = homeLeaveSta(context); break; case "leaveTypeSta": returnstr = leaveTypeSta(context); break; case "leaveOrgTypeSta": returnstr = leaveOrgTypeSta(context); break; case "leaveTypeList": returnstr = leaveTypeList(context); break; case "htmlToWord": returnstr = htmlToWord(context); break; case "leaveSta2": returnstr = leaveSta2(context); break; case "leaveAllList": returnstr = leaveAllList(context); break; } context.Response.Write(returnstr); } //查询 private string getLeaveList(HttpContext context) { string returnstr = ""; try { string userId = context.Request.Params["userId"]; string keyword = context.Request.Params["keywords"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; int pageIndex = 1; int pageSize = 10;// if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } string where = null; where = "(PPL_ID = '" + userId + "' or PPL_ID = 'u_" + userId + "') "; if (!string.IsNullOrEmpty(keyword)) { where += " and (L_OUT like '%" + keyword + "%' or L_REASON like '%" + keyword + "%') "; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { List list = bll.QueryList(pageIndex, pageSize, where, " s_time desc"); returnstr += FangYar.Common.JsonHelper.ToJson(list); } returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //查询营区内所有人员请假记录 private string getLeaveAllList(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["orgId"]; string keyword = context.Request.Params["keywords"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; string treeID = context.Request.Params["treeID"]; string type = context.Request.Params["type"]; string searchTime = context.Request.Params["searchTime"]; string is_content = context.Request.Params["is_content"]; int pageIndex = 1; int pageSize = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } string where = null; where = " PPL_ID in (select users_uid from tbl_sys_emp where IS_ADMIN='0' "; if (!string.IsNullOrEmpty(treeID) && treeID != orgId) { if (is_content == "1") { where += " and ( org_id in ( select o.org_id from fire_org o,(select get_Org_child_list('" + treeID + "') cids ) s where find_in_set(org_id,cids) ) "; where += " or DEPT_ID in ( select o.org_id from fire_org o,(select get_Org_child_list('" + treeID + "') cids ) s where find_in_set(org_id,cids) )) "; } else { where += " and ( ORG_ID = '" + treeID + "'"; where += " or DEPT_ID = '" + treeID + "')"; } } else { if (is_content == "1") { where += " and (org_id in ( select o.org_id from fire_org o,(select get_Org_child_list('" + orgId + "') cids ) s where find_in_set(org_id,cids)) "; where += " or DEPT_ID in ( select o.org_id from fire_org o,(select get_Org_child_list('" + orgId + "') cids ) s where find_in_set(org_id,cids))) "; } else { where += " and (ORG_ID = '" + orgId + "'"; where += " or DEPT_ID = '" + orgId + "')"; } } where += " and users_uid is not null )"; if (!string.IsNullOrEmpty(keyword)) { where += " and (PPL_NAME like '%" + keyword + "%' or L_OUT like '%" + keyword + "%' or L_REASON like '%" + keyword + "%') "; } if (!string.IsNullOrEmpty(searchTime)) { string startTime = "", endTime = ""; if (searchTime.IndexOf(" 到 ") != -1) { startTime = Regex.Split(searchTime, " 到 ", RegexOptions.IgnoreCase)[0]; endTime = Regex.Split(searchTime, " 到 ", RegexOptions.IgnoreCase)[1]; } where += " and (( (date_format(s_time,'%Y-%m-%d %H:%i:%s'))>=date_format('" + startTime + "','%Y-%m-%d %H:%i:%s')" + " and (date_format(s_time,'%Y-%m-%d %H:%i:%s'))<= date_format('" + endTime + "', '%Y-%m-%d %H:%i:%s') ) " + "or ( (date_format(e_time,'%Y-%m-%d %H:%i:%s'))>=date_format('" + startTime + "','%Y-%m-%d %H:%i:%s')" + " and date_format(e_time,'%Y-%m-%d %H:%i:%s')<= date_format('" + endTime + "', '%Y-%m-%d %H:%i:%s') )) "; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { List list = bll.QueryList(pageIndex, pageSize, where, " s_time desc"); returnstr += FangYar.Common.JsonHelper.ToJson(list); } returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //获取Tree 机构-部门-员工(获取UID) private string getOrgTreeList(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; string type = context.Request.Params["type"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getOrgTree(orgId); data.Columns.Add("nocheck", typeof(string)); //数据类型为文本 for (int i = 0; i < data.Rows.Count; i++) { string aaa = data.Rows[i]["TYPE"].ToString(); if (data.Rows[i]["TYPE"].ToString() == "emp") { data.Rows[i]["nocheck"] = "false"; } else { data.Rows[i]["nocheck"] = "true"; } } returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //获取Tree 机构-部门-员工(获取EMP_ID) private string getOrgTreeList2(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; string type = context.Request.Params["type"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getOrgTree2(orgId); returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //获取Tree 机构-部门-员工(获取UID) private string getOrgTreeList3(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; string type = context.Request.Params["type"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; FangYar.BLL.TRAIN.T_TRAININGPLAN tbll = new BLL.TRAIN.T_TRAININGPLAN(); DataTable data = tbll.getOrgTree(orgId); data.Columns.Add("nocheck", typeof(string)); //数据类型为文本 for (int i = 0; i < data.Rows.Count; i++) { string aaa = data.Rows[i]["TYPE"].ToString(); //if (data.Rows[i]["TYPE"].ToString() == "emp") //{ data.Rows[i]["nocheck"] = "false"; //} //else //{ // data.Rows[i]["nocheck"] = "true"; //} } returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //获取Tree 机构-部门-员工(获取UID) private string getOrgLeaderTree(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getOrgLeaderTree(orgId); data.Columns.Add("nocheck", typeof(string)); //数据类型为文本 for (int i = 0; i < data.Rows.Count; i++) { string aaa = data.Rows[i]["TYPE"].ToString(); if (data.Rows[i]["TYPE"].ToString() == "emp") { data.Rows[i]["nocheck"] = "false"; } else { data.Rows[i]["nocheck"] = "true"; } } returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //获取Tree 机构-部门-员工(获取UID) private string getAksPatrolOrgTree(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getAksPatrolOrgTree(orgId); data.Columns.Add("nocheck", typeof(string)); //数据类型为文本 for (int i = 0; i < data.Rows.Count; i++) { string aaa = data.Rows[i]["TYPE"].ToString(); if (data.Rows[i]["TYPE"].ToString() == "emp") { data.Rows[i]["nocheck"] = "false"; } else { data.Rows[i]["nocheck"] = "true"; } } returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //手机端 获取Tree 机构-部门-员工(获取UID) private string getOrgList(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getOrgTree(orgId); //List> dict = new List>(); //foreach (DataRow d in data.Rows) //{ // if (d["TYPE"].ToString() == "org" || d["TYPE"].ToString() == "dept") // { // Dictionary dictOrg = new Dictionary(); // JArray farray = new JArray(); // //JObject fobj = new JObject(); // //JProperty fname = new JProperty("name", d["NAME"].ToString()); // //fobj.Add(fname); // farray.Add(d["NAME"].ToString()); // dictOrg.Add("name", farray); // JArray empa = new JArray(); // foreach (DataRow d1 in data.Rows) // { // if (d1["TYPE"].ToString() == "emp" && d1["PID"].ToString() == d["ID"].ToString()) // { // JObject emp = new JObject(); // JProperty id = new JProperty("id", d1["ID"].ToString()); // JProperty name = new JProperty("name", d1["NAME"].ToString()); // emp.Add(id); // emp.Add(name); // empa.Add(emp); // } // } // dictOrg.Add("data", empa); // dict.Add(dictOrg); // } //} returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //手机端 获取Tree 机构-部门-员工(获取EMP_ID) private string getOrgList2(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["OrgId"]; returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; DataTable data = bll.getOrgTree2(orgId); List> dict = new List>(); foreach (DataRow d in data.Rows) { if (d["TYPE"].ToString() == "org" || d["TYPE"].ToString() == "dept") { Dictionary dictOrg = new Dictionary(); JArray fname = new JArray(); fname.Add(d["NAME"].ToString()); dictOrg.Add("name", fname); JArray empa = new JArray(); foreach (DataRow d1 in data.Rows) { if (d1["TYPE"].ToString() == "emp" && d1["PID"].ToString() == d["ID"].ToString()) { JObject emp = new JObject(); emp.Add(d1["ID"].ToString()); emp.Add(d1["NAME"].ToString()); empa.Add(emp); } } dictOrg.Add("data", empa); dict.Add(dictOrg); } } returnstr += FangYar.Common.JsonHelper.ToJson(dict); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]"; } return returnstr; } //添加请假 private string addLeave(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string leaveId = Guid.NewGuid().ToString("N"); string pplId = context.Request.Params["ppl_id"]; string pplName = context.Request.Params["ppl_name"]; string lType = context.Request.Params["l_type"]; //string lTypeName = context.Request.Params["l_typeName"]; string sTime = context.Request.Params["s_time"]; string eTime = context.Request.Params["e_time"]; string lNum = context.Request.Params["l_num"]; string lOut = context.Request.Params["l_out"]; string accPplId = context.Request.Params["acc_pplId"]; string repPplId = context.Request.Params["rep_pplId"]; string lReason = context.Request.Params["l_reason"]; string appPplId = context.Request.Params["app_pplId"]; //请假表 FangYar.Model.OA_LEAVE model = new Model.OA_LEAVE(); model.ID = leaveId; model.PPL_ID = pplId; model.PPL_NAME = pplName; model.L_TYPE = lType; model.S_TIME = sTime; model.E_TIME = eTime; model.L_OUT = lOut; model.ACC_PPL = accPplId; model.REP_PPL = repPplId; model.L_NUM = lNum; model.L_REASON = lReason; model.PHOTO = ""; model.STATE = "0"; if (bll.AddLeave(model, appPplId)) { JObject ppl_s = JsonConvert.DeserializeObject(appPplId); FangYar.BLL.TBL.SysUsersBLL ubll = new BLL.TBL.SysUsersBLL(); foreach (JObject obj in ppl_s.Value("data")) { string objpplId = (string)obj["ppl_Id"]; string objpplName = (string)obj["ppl_Name"]; Model.TBL.TBL_SYS_USERS_Model usersModel = ubll.CheckLoginByUserID(objpplId); cwsService.CwsClient cws = new cwsService.CwsClient(); cws.yqMessageSend(usersModel.USERS_MOBILE, pplName, "请假", "待审批"); break; } msg = "添加成功!"; code = 1; } else { msg = "添加失败!"; } } catch (Exception e) { msg = "添加失败!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //获取请假信息、流转记录 private string getLeave(HttpContext context) { string returnstr = ""; try { string leaveId = context.Request.Params["leaveId"]; returnstr = "{\"code\":0,\"msg\":\"\",\"leaveData\":"; List data = bll.getLeave(leaveId); returnstr += FangYar.Common.JsonHelper.ToJson(data[0]); returnstr += ",\"waitData\":"; returnstr += FangYar.Common.JsonHelper.ToJson(data[1]); returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"leaveData\":[],\"waitData\":[] }"; } return returnstr; } //请假审批 private string editWait(HttpContext context) { string returnstr = ""; int code = -1; string pplid = ""; try { string leaveId = context.Request.Params["leaveId"]; string waitId = context.Request.Params["waitId"]; string state = context.Request.Params["state"]; string sort = context.Request.Params["sort"]; string aOpinion = context.Request.Params["a_opinion"]; string isOver = context.Request.Params["isOver"]; FangYar.Model.OA_WAITPROCESSED model = new Model.OA_WAITPROCESSED(); model.ID = waitId; model.TASK_ID = leaveId; model.STATE = state; model.SORT = Convert.ToInt32(sort); model.A_OPINION = aOpinion; pplid = bll.editWait(model, isOver); if (pplid != "") { cwsService.CwsClient cws = new cwsService.CwsClient(); FangYar.BLL.TBL.SysUsersBLL ubll = new BLL.TBL.SysUsersBLL(); Model.TBL.TBL_SYS_USERS_Model usersModel = ubll.CheckLoginByUserID(pplid); string org3 = "已审批"; //发送给下一位待办人 if (state == "2" && isOver == "0") org3 = "待审批"; cws.yqMessageSend(usersModel.USERS_MOBILE, usersModel.USERS_NAME, "请假", org3); } } catch (Exception e) { } returnstr = "{\"data\":\"" + pplid + "\",\"code\":" + code + "}"; return returnstr; } //销假申请 private string ApplyRegression(HttpContext context) { string returnstr = ""; string pplid = ""; string code = "0"; string msg = "发起失败"; try { string leaveId = context.Request.Params["leaveId"]; //请假表 FangYar.Model.OA_LEAVE model = new Model.OA_LEAVE(); model.ID = leaveId; pplid = bll.Regression(model); if (pplid != "") { msg = "发起成功"; code = "1"; } } catch (Exception e) { } returnstr = "{\"code\":\"" + code + "\",\"data\":\"" + pplid + "\",\"msg\":\"" + msg + "\"}"; return returnstr; } //销假审批 private string ApprovalRegression(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string leaveId = context.Request.Params["leaveId"]; string waitId = context.Request.Params["waitId"]; string state = context.Request.Params["state"]; //待办表 FangYar.Model.OA_WAITPROCESSED model = new Model.OA_WAITPROCESSED(); model.ID = waitId; model.TASK_ID = leaveId; model.STATE = state; if (bll.ApprovalRegression(model)) { msg = "审批成功!"; code = 1; } else { msg = "审批失败!"; } } catch { msg = "审批失败!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //删除 private string DelLeave(HttpContext context) { string msg = "删除失败"; string pplId_s = ""; try { string id = context.Request.Params["id"]; string sTime = context.Request.Params["sTime"]; string data = bll.DelLeave(id, sTime); string[] data_s = data.Split('。'); msg = data_s[0]; pplId_s = data_s[1]; } catch { } return "{\"msg\":\"" + msg + "\",\"data\":\"" + pplId_s + "\" }"; } //请假统计 private string leaveSta(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; string strWhere = " 1=1"; try { string ORG_ID = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; if (!string.IsNullOrEmpty(ORG_ID)) { code = 1; strWhere += " and ORG_ID='" + ORG_ID + "'"; if (!string.IsNullOrEmpty(S_Time) && !string.IsNullOrEmpty(E_Time)) { strWhere += " and date_format('" + S_Time + "','%Y-%m-%d') < date_format(S_TIME,'%Y-%m-%d')"; strWhere += " and date_format('" + E_Time + "','%Y-%m-%d') > date_format(S_TIME,'%Y-%m-%d')"; } else { strWhere += " and date_format(now(),'%Y-%m-%d') = date_format(S_TIME,'%Y-%m-%d')"; } if (!string.IsNullOrEmpty(USERS_UID)) { strWhere += " and PPL_ID = '" + USERS_UID + "'"; } DataTable dt = bll.leaveSta(strWhere); data = FangYar.Common.JsonHelper.ToJson(dt); } } catch { msg = "获取失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //请假统计 private string leaveTypeSta(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; string strWhere = " 1=1"; try { string ORG_ID = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; if (!string.IsNullOrEmpty(ORG_ID)) { if (!string.IsNullOrEmpty(S_Time) && !string.IsNullOrEmpty(E_Time)) { strWhere += " and date(S_TIME) between '" + S_Time + "' and '" + E_Time + "' "; } else { strWhere += " and date_format(now(),'%Y-%m-%d') = date_format(S_TIME,'%Y-%m-%d') "; } if (!string.IsNullOrEmpty(USERS_UID)) { strWhere += " and PPL_ID = '" + USERS_UID + "'"; } else { strWhere += " and PPL_ID in (select USERS_UID from tbl_sys_emp where IS_ADMIN='0' and ORG_ID ='" + ORG_ID + "' and is_del = '0'" + " and users_uid is not null)"; } strWhere += " and STATE = '1'"; DataTable dt = bll.LeaveTypeSta(strWhere); data = FangYar.Common.JsonHelper.ToJson(dt); code = 1; msg = "获取成功!"; } } catch { code = -1; msg = "获取失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //请假统计 private string leaveOrgTypeSta(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; string strWhere = " 1=1"; try { string ORG_ID = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; string orgId = context.Request.Params["OrgId"]; FangYar.BLL.FIRE.FIRE_ORG orgBll = new FangYar.BLL.FIRE.FIRE_ORG(); FangYar.BLL.TBL.SysEmpBLL empBll = new FangYar.BLL.TBL.SysEmpBLL(); returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; string sql = " with t1 as ( "; sql += " select fo.ORG_NAME,fo.TYPE,fo.extendcode1,e.ORG_ID,t.*, d.title AS TITLES, d.sort from( "; sql += " select * from OA_LEAVE where date(S_TIME) between '" + S_Time + "' and '" + E_Time + "' "; sql += " and PPL_ID in (select USERS_UID from tbl_sys_emp where IS_ADMIN='0' and is_del = '0' and users_uid is not null) and STATE = '1' "; sql += " ) t left join DICTIONARY d on t.l_type = d.id LEFT JOIN tbl_sys_emp e on e.IS_ADMIN='0' and t.PPL_ID = e.USERS_UID "; sql += " LEFT JOIN fire_org fo on fo.ORG_ID=e.ORG_ID) "; sql += " ,t2 as ( SELECT * from t1,(select get_Org_child_list_OrgIds('" + ORG_ID + "') cids ) s where find_in_set(org_id,cids) and type = '0') "; sql += " ,t3 as( SELECT org_id , org_name "; sql += " ,sum(case TITLES when '事假' then L_num else 0 end) sjtianshu,sum(case TITLES when '事假' then 1 else 0 end) sjcishu "; sql += " ,sum(case TITLES when '病假' then L_num else 0 end) bjtianshu ,sum(case TITLES when '病假' then 1 else 0 end) bjcishu "; sql += " ,sum(case TITLES when '探亲假' then L_num else 0 end) tqjtianshu ,sum(case TITLES when '探亲假' then 1 else 0 end) tqjcishu "; sql += " ,sum(case TITLES when '年假' then L_num else 0 end) njtianshu ,sum(case TITLES when '年假' then 1 else 0 end) njcishu "; sql += " ,sum(case TITLES when '产假' then L_num else 0 end) cjtianshu ,sum(case TITLES when '产假' then 1 else 0 end) cjcishu "; sql += " ,sum(case TITLES when '陪护假' then L_num else 0 end) phjtianshu ,sum(case TITLES when '陪护假' then 1 else 0 end) phjcishu "; sql += " from t2 group by org_id , org_name , extendcode1) "; sql += " ,t4 as ( SELECT *,sjtianshu+bjtianshu+tqjtianshu+njtianshu+cjtianshu+phjtianshu allnumtianshu "; sql += " ,sjcishu+bjcishu+tqjcishu+njcishu+cjcishu+phjcishu allnumcishu from t3 ) SELECT * from t4 "; DataTable dt = new CommomBLL().GetTableList(sql); data += FangYar.Common.JsonHelper.ToJson(dt); code = 1; msg = "获取成功!"; } catch { code = -1; msg = "获取失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //请假列表 private string leaveTypeList(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; string strWhere = " 1=1"; try { string ORG_ID = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; if (!string.IsNullOrEmpty(ORG_ID)) { if (!string.IsNullOrEmpty(S_Time) && !string.IsNullOrEmpty(E_Time)) { strWhere += " and date(S_TIME) between '" + S_Time + "' and '" + E_Time + "' "; } else { strWhere += " and date_format(now(),'%Y-%m-%d') = date_format(S_TIME,'%Y-%m-%d')"; } if (!string.IsNullOrEmpty(USERS_UID)) { strWhere += " and PPL_ID = '" + USERS_UID + "'"; } else { strWhere += " and PPL_ID in (select USERS_UID from tbl_sys_emp where IS_ADMIN='0' and ORG_ID ='" + ORG_ID + "' and is_del = '0'" + " and users_uid is not null)"; } strWhere += " and STATE = '1'"; strWhere += " order by s_time desc "; //DataTable dt = bll.GetList(strWhere).Tables[0]; DataTable dt = bll.LeaveTypeList(strWhere); data = FangYar.Common.JsonHelper.ToJson(dt); code = 1; msg = "获取成功!"; } } catch { code = -1; msg = "获取失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //首页请假七天统计 private string homeLeaveSta(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; string strWhere = " 1=1"; try { string ORG_ID = context.Request.Params["Org_Id"]; if (!string.IsNullOrEmpty(ORG_ID)) { code = 1; strWhere += " and ORG_ID='" + ORG_ID + "'"; DataTable dt = bll.homeLeaveSta(strWhere); data = FangYar.Common.JsonHelper.ToJson(dt); } } catch { msg = "获取失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //html导出Word private string htmlToWord(HttpContext context) { string returnstr = ""; try { string Org_Id = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; string FlagUID = context.Request.Params["FlagUID"]; //实例化一个Document对象 Document doc = new Document(); doc.Watermark = null; //添加section和段落 Section section1 = doc.AddSection(); Paragraph para1 = section1.AddParagraph(); #region 获取table数据 string strWhere = " 1=1 "; if (!string.IsNullOrEmpty(S_Time) && !string.IsNullOrEmpty(E_Time)) { strWhere += " and date_format('" + S_Time + "','%Y-%m-%d') <= date_format(S_TIME,'%Y-%m-%d')"; strWhere += " and date_format('" + E_Time + "','%Y-%m-%d') >= date_format(S_TIME,'%Y-%m-%d')"; } else { strWhere += " and date_format(now(),'%Y-%m-%d') = date_format(S_TIME,'%Y-%m-%d')"; } if (!string.IsNullOrEmpty(USERS_UID)) { strWhere += " and PPL_ID = '" + USERS_UID + "'"; } else { strWhere += " and PPL_ID in (select USERS_UID from tbl_sys_emp where IS_ADMIN='0' and ORG_ID ='" + Org_Id + "' and is_del = '0'" + " and users_uid is not null)"; } if (!string.IsNullOrEmpty(FlagUID)) { strWhere += " and PPL_ID = '" + FlagUID + "'"; } strWhere += " and STATE = '1'"; String[] headerQiandi1 = { "姓名", "事假", "病假", "探亲假", "年假", "产假", "陪护假", "总数" }; //表头字段 DataTable dt1 = bll.LeaveTypeSta(strWhere); DataColumn dc = new DataColumn("Rowsall"); dt1.Columns.Add(dc); int SJall = 0, BJall = 0, TQJall = 0, NJall = 0, CJall = 0, PHJall = 0; for (int r = 0; r < dt1.Rows.Count; r++) //生成表体 { int Rowsall = 0; for (int c = 2; c < 8; c++) { Rowsall += int.Parse(dt1.Rows[r][c].ToString()); if (c == 2) { SJall += int.Parse(dt1.Rows[r][c].ToString()); } else if (c == 3) { BJall += int.Parse(dt1.Rows[r][c].ToString()); } else if (c == 4) { TQJall += int.Parse(dt1.Rows[r][c].ToString()); } else if (c == 5) { NJall += int.Parse(dt1.Rows[r][c].ToString()); } else if (c == 6) { CJall += int.Parse(dt1.Rows[r][c].ToString()); } else if (c == 7) { PHJall += int.Parse(dt1.Rows[r][c].ToString()); } } dt1.Rows[r]["Rowsall"] = Rowsall; } DataRow dr = dt1.NewRow(); dt1.Rows.Add(dr); dt1.Rows[dt1.Rows.Count - 1][0] = "总数"; dt1.Rows[dt1.Rows.Count - 1][2] = SJall; dt1.Rows[dt1.Rows.Count - 1][3] = BJall; dt1.Rows[dt1.Rows.Count - 1][4] = TQJall; dt1.Rows[dt1.Rows.Count - 1][5] = NJall; dt1.Rows[dt1.Rows.Count - 1][6] = CJall; dt1.Rows[dt1.Rows.Count - 1][7] = PHJall; dt1.Rows[dt1.Rows.Count - 1][8] = SJall + BJall + TQJall + NJall + CJall + PHJall; dt1.Columns.Remove("PPL_ID"); if (dt1.Rows.Count > 0) { #region 创建Word表格 Table tableQiandi1 = section1.AddTable(); //新建表格 tableQiandi1.ResetCells(dt1.Rows.Count + 1, headerQiandi1.Length); tableQiandi1.TableFormat.Borders.BorderType = Spire.Doc.Documents.BorderStyle.Single; TableRow rowQiandi = tableQiandi1.Rows[0]; //添加行 rowQiandi.IsHeader = true; //设为表头 rowQiandi.Height = 30; rowQiandi.HeightType = TableRowHeightType.Auto; for (int i = 0; i < headerQiandi1.Length; i++) //生成表头 { rowQiandi.Cells[i].Width = 145; rowQiandi.Height = 30; rowQiandi.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; rowQiandi.HeightType = TableRowHeightType.Auto; Paragraph p = rowQiandi.Cells[i].AddParagraph(); AddTextRange(section1, p, headerQiandi1[i], 14, true, "黑体", Spire.Doc.Documents.HorizontalAlignment.Center); } for (int r = 0; r < dt1.Rows.Count; r++) //生成表体 { TableRow dataRow = tableQiandi1.Rows[r + 1]; dataRow.RowFormat.BackColor = Color.Empty; for (int c = 0; c < dt1.Columns.Count; c++) { dataRow.Cells[c].Width = 145; dataRow.Height = 20; dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; TextRange tr = dataRow.Cells[c].AddParagraph().AppendText(dt1.Rows[r][c].ToString()); tr.CharacterFormat.FontSize = 12; } } #endregion 创建Word表格 } //添加section和段落 Section section2 = doc.AddSection(); Paragraph para2 = section2.AddParagraph(); //列表 String[] headerQiandi2 = { "姓名", "类型", "请假天数", "开始时间", "结束时间", "去向", "随行人", "顶班人", "请假事由" }; //表头字段 if (!string.IsNullOrEmpty(S_Time) && !string.IsNullOrEmpty(E_Time)) { strWhere += " and date_format('" + S_Time + "','%Y-%m-%d') <= date_format(S_TIME,'%Y-%m-%d')"; strWhere += " and date_format('" + E_Time + "','%Y-%m-%d') >= date_format(S_TIME,'%Y-%m-%d')"; } else { strWhere += " and date_format(now(),'%Y-%m-%d') = date_format(S_TIME,'%Y-%m-%d')"; } if (!string.IsNullOrEmpty(USERS_UID)) { strWhere += " and PPL_ID = '" + USERS_UID + "'"; } else { strWhere += " and PPL_ID in (select USERS_UID from tbl_sys_emp where IS_ADMIN='0' and ORG_ID ='" + Org_Id + "' and is_del = '0'" + " and users_uid is not null)"; } if (!string.IsNullOrEmpty(FlagUID)) { strWhere += " and PPL_ID = '" + FlagUID + "'"; } strWhere += " and STATE = '1'"; strWhere += " order by s_time desc "; DataTable dt2 = bll.LeaveTypeList(strWhere); #endregion 获取table数据 if (dt2.Rows.Count > 0) { #region 创建Word表格 Table tableQiandi2 = section2.AddTable(); //新建表格 tableQiandi2.ResetCells(dt2.Rows.Count + 1, headerQiandi2.Length); tableQiandi2.TableFormat.Borders.BorderType = Spire.Doc.Documents.BorderStyle.Single; TableRow rowQiandi = tableQiandi2.Rows[0]; //添加行 rowQiandi.IsHeader = true; //设为表头 rowQiandi.Height = 30; rowQiandi.HeightType = TableRowHeightType.Auto; for (int i = 0; i < headerQiandi2.Length; i++) //生成表头 { rowQiandi.Cells[i].Width = 145; rowQiandi.Height = 30; rowQiandi.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; rowQiandi.HeightType = TableRowHeightType.Auto; Paragraph p = rowQiandi.Cells[i].AddParagraph(); AddTextRange(section2, p, headerQiandi2[i], 14, true, "黑体", Spire.Doc.Documents.HorizontalAlignment.Center); } for (int r = 0; r < dt2.Rows.Count; r++) //生成表体 { TableRow dataRow = tableQiandi2.Rows[r + 1]; dataRow.RowFormat.BackColor = Color.Empty; for (int c = 0; c < dt2.Columns.Count; c++) { dataRow.Cells[c].Width = 145; dataRow.Height = 20; dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; TextRange tr = dataRow.Cells[c].AddParagraph().AppendText(dt2.Rows[r][c].ToString()); tr.CharacterFormat.FontSize = 12; } } #endregion 创建Word表格 } //保存到文档 string path = AppDomain.CurrentDomain.BaseDirectory + "\\OA\\Leave_Statistics\\"; string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".doc"; if (Directory.Exists(path) == false)//如果不存在就创建文件夹 { Directory.CreateDirectory(path); } doc.SaveToFile(path + fileName, FileFormat.Doc); returnstr = "{\"code\":0,\"msg\":\"\",\"url\":\"/OA/Leave_Statistics/" + fileName + "\"}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"msg\":\"" + e.Message + "\"}"; } return returnstr; } private Image GetImage(string fileName) { byte[] bytes = Convert.FromBase64String(fileName); using (MemoryStream ms = new MemoryStream(bytes)) { return Image.FromStream(ms); } } private void AddTextRange(Section section, Paragraph pragraph, string word, float fontSize, bool isBold, string fontName, Spire.Doc.Documents.HorizontalAlignment alignType) { TextRange textRange = pragraph.AppendText(word); textRange.CharacterFormat.FontSize = fontSize; textRange.CharacterFormat.Bold = isBold; textRange.CharacterFormat.FontName = fontName; pragraph.Format.HorizontalAlignment = alignType; } //根据日期统计请假人员 private string leaveSta2(HttpContext context) { string returnstr = ""; try { string ORG_ID = context.Request.Params["OrgId"]; string findDate = context.Request.Params["findDate"]; if (!string.IsNullOrEmpty(ORG_ID) && !string.IsNullOrEmpty(findDate)) { returnstr = "{\"code\":0,\"msg\":\"\",\"data\":"; List list = bll.leaveSta2(ORG_ID, findDate); returnstr += FangYar.Common.JsonHelper.ToJson(list); returnstr += "}"; } else { return "{\"code\":-1,\"msg\":\"参数有误\",\"data\":[]}"; } } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } return returnstr; } #region 返回所有请假信息 /// /// 公差列表 /// /// /// private string leaveAllList(HttpContext context) { JsonRetMo> retMo = new JsonRetMo>() { code = "1", data = new List(), msg = "" }; try { string ORG_ID = context.Request.Params["Org_Id"]; string USERS_UID = context.Request.Params["USERS_UID"]; string S_Time = context.Request.Params["S_Time"]; string E_Time = context.Request.Params["E_Time"]; if (!string.IsNullOrEmpty(ORG_ID)) { var listOrj = QueryOrgList(ORG_ID); var listLeave = QueryLeaveAllList(ORG_ID, USERS_UID, S_Time, E_Time); for (int i = 0; i < listOrj.Count; i++) { var ORG_IDStr = listOrj[i].ORG_ID; listOrj[i].SubData.AddRange(listLeave.Where(p => p.ORG_ID == ORG_IDStr).ToList()); } retMo.data = listOrj; } } catch (Exception ex) { retMo.code = "0"; retMo.msg = "异常:" + ex; } string returnstr = FangYar.Common.JsonHelper.ToJSON1(retMo); return returnstr; } /// /// 查询请假数据详情 /// /// /// /// /// /// private List QueryLeaveAllList(string ORG_ID, string USERS_UID, string S_Time, string E_Time) { //查询所有出公差信息 string sqlToler = @"SELECT (SELECT d.title FROM DICTIONARY d WHERE d.id = t.L_TYPE) DIC_TEXT, (SELECT d.ORG_ID FROM TBL_SYS_EMP d WHERE d.IS_ADMIN='0' and d.USERS_UID = t.PPL_ID) ORG_ID, t.* from OA_LEAVE t WHERE date_format(t.S_TIME, '%Y-%m-%d %H:%i:%s') >= date_format('" + S_Time + @" 0:0:0', '%Y-%m-%d %H:%i:%s') and date_format(t.E_TIME,'%Y-%m-%d %H:%i:%s') <= date_format('" + E_Time + @" 23:59:59', '%Y-%m-%d %H:%i:%s') and t.PPL_ID in (SELECT USERS_UID from TBL_SYS_EMP where IS_ADMIN='0' and ORG_ID in (select ORG_ID from FIRE_ORG,(select get_Org_child_list('" + ORG_ID + "') cids ) s where find_in_set(org_id,cids) ))"; //查询公差信息 DataTable dtToler = FangYar.Common.MySqlHelper.QueryTable(sqlToler); var listToler = dtToler.ToDynamicList(); if (!string.IsNullOrWhiteSpace(USERS_UID)) { listToler = listToler.Where(p => p.PPL_ID == USERS_UID).ToList(); } List retList = new List(); foreach (var item in listToler) { retList.Add(new { ID = item.ID + "", PPL_ID = item.PPL_ID + "", PPL_NAME = item.PPL_NAME + "", L_TYPE = item.L_TYPE + "", S_TIME = item.S_TIME + "", E_TIME = item.E_TIME + "", L_OUT = item.L_OUT + "", ACC_PPL = item.ACC_PPL + "", REP_PPL = item.REP_PPL + "", L_REASON = item.L_REASON + "", PHOTO = item.PHOTO + "", STATE = item.STATE + "", L_NUM = item.L_NUM + "", TITLE = item.TITLE + "", EXTEND = item.EXTEND + "", EXTEND2 = item.EXTEND2 + "", EXTEND3 = item.EXTEND3 + "", EXTEND4 = item.EXTEND4 + "", IS_RETURN = item.IS_RETURN + "", DIC_TEXT = item.DIC_TEXT + "", ORG_ID = item.ORG_ID + "" }); } return retList; } private List QueryOrgList(string ORG_ID) { //查询所有出公差信息 string sqlToler = @"select * from FIRE_ORG,(select get_Org_child_list('" + ORG_ID + "') cids ) s where type=0 and find_in_set(org_id,cids) "; //查询公差信息 DataTable dtToler = FangYar.Common.MySqlHelper.QueryTable(sqlToler); var listToler = dtToler.ToDynamicList(); List retList = new List(); foreach (var item in listToler) { retList.Add(new { ORG_ID = item.ORG_ID, PID = item.PID, ORG_NO = item.ORG_NO, ORG_NAME = item.ORG_NAME, ATTR = item.ATTR, ORG_LEVEL = item.ORG_LEVEL, ORG_TYPE = item.ORG_TYPE, ADDR = item.ADDR, DES = item.DES, AFF = item.AFF, CODE = item.CODE, CONT = item.CONT, PHONE = item.PHONE, LON = item.LON, LAT = item.LAT, CITY = item.CITY, STATE = item.STATE, A_PER = item.A_PER, A_TIME = item.A_TIME, U_PER = item.U_PER, U_TIME = item.U_TIME, EXTENDCODE1 = item.EXTENDCODE1, EXTENDCODE2 = item.EXTENDCODE2, EXTENDCODE3 = item.EXTENDCODE3, EXTENDCODE4 = item.EXTENDCODE4, EXTENDCODE5 = item.EXTENDCODE5, DUTY_PHONE = item.DUTY_PHONE, SECRET = item.SECRET, ZIP_CODE = item.ZIP_CODE, FAX = item.FAX, HEI_B = item.HEI_B, HEI = item.HEI, UNIT_PER = item.UNIT_PER, UNIT_W_PHONE = item.UNIT_W_PHONE, UNIT_M_PHONE = item.UNIT_M_PHONE, UNIT_R_PHONE = item.UNIT_R_PHONE, CONT_PER = item.CONT_PER, CONT_W_PHONE = item.CONT_W_PHONE, CONT_M_PHONE = item.CONT_M_PHONE, CONT_R_PHONE = item.CONT_R_PHONE, CONT_EMAIL = item.CONT_EMAIL, UNIT = item.UNIT, UNIT_ADDR = item.UNIT_ADDR, ALL_NUM = item.ALL_NUM, FOUND_TIME = item.FOUND_TIME, Q_LEVEL = item.Q_LEVEL, E_TIME = item.E_TIME, PLACE_ADDR = item.PLACE_ADDR, TRA_TOOL = item.TRA_TOOL, SUPPORT = item.SUPPORT, DATA_UNIT = item.DATA_UNIT, RECORD_NO = item.RECORD_NO, MAIN_DUTY = item.MAIN_DUTY, EPUIP_DES = item.EPUIP_DES, EXP_DES = item.EXP_DES, RES_EXP = item.RES_EXP, SIGNAL_MODE = item.SIGNAL_MODE, REMARKS = item.REMARKS, PIDS = item.PIDS, TYPE = item.TYPE, SORT = item.SORT, CHILDSLENGTH = item.CHILDSLENGTH, CHARGELEADER = item.CHARGELEADER, LEADER = item.LEADER, SubData = new List(), }); } return retList; } #endregion public bool IsReusable { get { return false; } } } }