using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.IO; using System.Web; namespace FangYar.WebUI.ashx { /// /// OaLeaveHandler 的摘要说明 /// public class OaPatrolTaskHandler : IHttpHandler { private FangYar.BLL.OA_PATROL_TASK bll = new FangYar.BLL.OA_PATROL_TASK(); public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "List": returnstr = getTasklist(context); break; case "Add": returnstr = AddTask(context); break; case "Edit": returnstr = EditTask(context); break; case "UserIdList": returnstr = getUserIdTasklist(context); break; case "Del": returnstr = DelTask(context); break; case "upPatrolTaskPer": returnstr = upPatrolTaskPer(context); break; case "getFreeTaskByUserId": returnstr = getFreeTaskByUserId(context); break; case "AppAddTask": returnstr = AppAddTask(context); break; case "AppUpdateTask": returnstr = AppUpdateTask(context); break; case "patrolSta": returnstr = patrolSta(context); break; case "getList": returnstr = getList(context); break; case "htmlToWord": returnstr = HtmlToWord(context); break; } context.Response.Write(returnstr); } //查询 private string getTasklist(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"]; 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 = "ORG_ID = '" + orgId + "' "; if (!string.IsNullOrEmpty(keyword)) { where += " and NAME like '%" + keyword + "%' or EMP_NAME 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; } //根据User_ID查询 private string getUserIdTasklist(HttpContext context) { string returnstr = ""; try { string userid = context.Request.Params["userId"]; string state = context.Request.Params["state"]; string keywords = context.Request.Params["keywords"]; //FangYar.BLL.TBL.SysEmpBLL ebll = new FangYar.BLL.TBL.SysEmpBLL(); //FangYar.Model.TBL.TBL_SYS_EMP_Model empModel = ebll.GetModelByUserID(orgId, userid); 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 = " 1=1"; if (!string.IsNullOrEmpty(userid)) { where += " and instr(',' || EMP_ID || ',',',' || '" + userid + "' || ',')<> 0 "; } else { return "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } if (!String.IsNullOrWhiteSpace(keywords)) { where += " and (EMP_NAME like'%" + keywords + "%'" + " or EXTENDCODE2 like '%" + keywords + "%')"; } if (!string.IsNullOrEmpty(state)) { if (state.Contains(",")) { string[] state_s = state.Split(','); string states = ""; for (int i = 0; i < state_s.Length; i++) { if (i == 0) { states = "('" + state_s[i] + "'"; } states += ",'" + state_s[i] + "'"; } states += ")"; where += " and state in " + states + " "; } else { where += " and state = '" + state + "' "; } } 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 (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } return returnstr; } //添加巡查任务 private string AddTask(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string taskId = Guid.NewGuid().ToString("N"); string USER_ID = context.Request.Params["UserId"]; string orgId = context.Request.Params["orgId"]; string PLAN_ID = context.Request.Params["PLAN_ID"]; string NAME = context.Request.Params["NAME"]; string S_TIME = context.Request.Params["S_TIME"]; string E_TIME = context.Request.Params["E_TIME"]; string EMP_ID = context.Request.Params["EMP_ID"]; string EMP_NAME = context.Request.Params["EMP_NAME"]; string SPOT_IDS = context.Request.Params["SPOT_IDS"]; string SPOT_NAMES = context.Request.Params["SPOT_NAMES"]; string STATE = context.Request.Params["STATE"]; //巡查任务表 FangYar.Model.OA_PATROL_TASK model = new Model.OA_PATROL_TASK(); model.ID = taskId; model.PLAN_ID = PLAN_ID; model.NAME = NAME; model.S_TIME = S_TIME; model.E_TIME = E_TIME; model.EMP_ID = EMP_ID; model.EMP_NAME = EMP_NAME; model.SPOT_IDS = SPOT_IDS; model.SPOT_NAMES = SPOT_NAMES; model.A_PER = USER_ID; model.ORG_ID = orgId; model.STATE = STATE; if (bll.Add(model)) { msg = "添加成功!"; code = 1; } else { msg = "添加失败!"; } } catch { msg = "添加失败!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //修改巡查任务 private string EditTask(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string ID = context.Request.Params["ID"]; string USER_ID = context.Request.Params["UserId"]; string orgId = context.Request.Params["orgId"]; string PLAN_ID = context.Request.Params["PLAN_ID"]; string NAME = context.Request.Params["NAME"]; string S_TIME = context.Request.Params["S_TIME"]; string E_TIME = context.Request.Params["E_TIME"]; string EMP_ID = context.Request.Params["EMP_ID"]; string EMP_NAME = context.Request.Params["EMP_NAME"]; string SPOT_IDS = context.Request.Params["SPOT_IDS"]; string SPOT_NAMES = context.Request.Params["SPOT_NAMES"]; string STATE = context.Request.Params["STATE"]; //巡查任务表 FangYar.Model.OA_PATROL_TASK model = new Model.OA_PATROL_TASK(); model.ID = ID; model.NAME = NAME; model.PLAN_ID = PLAN_ID; model.S_TIME = S_TIME; model.E_TIME = E_TIME; model.EMP_ID = EMP_ID; model.EMP_NAME = EMP_NAME; model.SPOT_IDS = SPOT_IDS; model.SPOT_NAMES = SPOT_NAMES; model.ORG_ID = orgId; model.STATE = STATE; model.U_PER = USER_ID; if (bll.Update(model)) { msg = "修改成功!"; code = 1; } else { msg = "修改失败!"; } } catch { msg = "修改失败!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //删除巡查任务 private string DelTask(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string TaskList = context.Request.Params["TaskList"]; string[] TaskArray = TaskList.Split(','); string TaskListString = ""; for (int i = 0; i < TaskArray.Length; i++) { if (i == 0) { TaskListString = "'" + TaskArray[i] + "'"; } else { TaskListString += ",'" + TaskArray[i] + "'"; } } if (bll.DeleteList(TaskListString)) { msg = "删除成功!"; code = 1; } else { msg = "删除失败!"; } } catch { msg = "删除失败!"; } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; return returnstr; } //修改 此次巡查任务是由谁巡查的 private string upPatrolTaskPer(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string taskId = context.Request.Params["taskId"]; //巡查任务ID string personName = context.Request.Params["personName"]; //巡查员姓名 //巡查任务表 FangYar.Model.OA_PATROL_TASK model = bll.GetModel(taskId); model.EXTENDCODE2 = personName; DateTime t1 = Convert.ToDateTime(model.E_TIME); DateTime t2 = DateTime.Now; if (t1 < t2) { msg = "任务已超时无法在巡查!"; } else { if (personName != "" && personName != null) { if (bll.Update(model)) { FangYar.BLL.OA_PATROL_TRAJECTORY ptbll = new FangYar.BLL.OA_PATROL_TRAJECTORY(); DataTable data = ptbll.GetTraList(taskId); foreach (DataRow dr in data.Rows) { string state = dr["STATE"].ToString(); if (state == "0") { string id = dr["ID"].ToString(); ptbll.UpdateByIdYToState(id, personName); } } msg = "任务开始成功!"; code = 1; } else { msg = "任务开始失败!"; } } } } catch (Exception e) { msg = "任务开始失败!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //查询巡查任务(手机端查询 正在巡查的自由巡检任务) private string getFreeTaskByUserId(HttpContext context) { string returnstr = ""; try { string userId = context.Request.Params["userId"]; if (bll.ExistsFreeTask(userId)) { FangYar.Model.OA_PATROL_TASK data = bll.GetModelByUserId(userId); returnstr = "{\"code\":\"1\",\"msg\":\"" + data.NAME + "\",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(data); returnstr += "}"; } else { returnstr = "{\"code\":\"0\",\"msg\":\"暂无自由巡检任务\",\"data\":\"\"}"; } } catch { returnstr = "{\"code\":\"-1\",\"msg\":\"error\",\"data\":\"\"}"; } return returnstr; } //添加巡查任务(手机端创建自由巡检任务) private string AppAddTask(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string task_id = "", task_name = "", personName = ""; try { string taskId = Guid.NewGuid().ToString("N"); string orgId = context.Request.Params["orgId"]; string NAME = context.Request.Params["NAME"]; string EMP_ID = context.Request.Params["EMP_ID"]; string EMP_NAME = context.Request.Params["EMP_NAME"]; string EXTENDCODE2 = context.Request.Params["PATROL_NAME"]; FangYar.Model.OA_PATROL_TASK oa_patro_task = bll.GetModelByUserId(EMP_ID); if (oa_patro_task != null) { code = 0; task_id = oa_patro_task.ID; task_name = oa_patro_task.NAME; personName = oa_patro_task.EXTENDCODE2; } else { //巡查任务表 FangYar.Model.OA_PATROL_TASK model = new Model.OA_PATROL_TASK(); model.ID = taskId; model.NAME = NAME; model.EMP_ID = EMP_ID; model.EMP_NAME = EMP_NAME; model.A_PER = EMP_ID; model.ORG_ID = orgId; model.EXTENDCODE2 = EXTENDCODE2; model.EXTENDCODE3 = "1"; model.STATE = "0"; if (bll.AddFreeTask(model)) { msg = "开始巡查!"; code = 1; task_id = model.ID; task_name = model.NAME; personName = model.EXTENDCODE2; } else { msg = "网络原因,请稍后重试!"; } } } catch (Exception e) { code = -1; msg = "网络原因,请稍后重试!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + ",\"taskId\":\"" + task_id + "\",\"taskName\":\"" + task_name + "\",\"personName\":\"" + personName + "\"}"; return returnstr; } //修改巡查任务(手机端修改自由巡检任务状态) private string AppUpdateTask(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string taskId = context.Request.Params["taskId"]; string userId = context.Request.Params["userId"]; //巡查任务表 FangYar.Model.OA_PATROL_TASK model = new Model.OA_PATROL_TASK(); model.ID = taskId; model.U_PER = userId; model.STATE = "1"; model.E_TIME = DateTime.Now.ToString(); if (bll.UpdateTaskState(model)) { msg = "结束巡查!"; code = 1; } else { msg = "网络原因,请稍后重试!"; } } catch { msg = "网络原因,请稍后重试!"; } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; return returnstr; } //巡更任务统计 private string patrolSta(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; try { string org_id = context.Request.Params["org_id"]; string s_time = context.Request.Params["s_time"]; if (string.IsNullOrEmpty(s_time)) { s_time = DateTime.Now.ToString("yyyy-MM-dd"); } DataTable dt = bll.patrolSta(org_id, s_time).Tables[0]; code = 1; data = FangYar.Common.JsonHelper.ToJson(dt); } catch { msg = "网络原因,请稍后重试!"; } returnstr = "{\"code\":\"" + code + "\",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } //导出word private string HtmlToWord(HttpContext context) { string returnstr = ""; try { string by1 = context.Request.Params["by1"]; string by2 = context.Request.Params["by2"]; //实例化一个Document对象 Document doc = new Document(); doc.Watermark = null; //添加section和段落 Section section = doc.AddSection(); Paragraph para = section.AddParagraph(); //加载图片到System.Drawing.Image对象, 使用AppendPicture方法将图片插入到段落 if (by1 != null && by1 != "") { by1 = HttpUtility.UrlDecode(by1); Image image1 = GetImage(by1.Replace("data:image/png;base64,", "")); Spire.Doc.Fields.DocPicture picture1 = doc.Sections[0].Paragraphs[0].AppendPicture(image1); //设置图片大小 picture1.Width = 600; } if (by2 != null && by2 != "") { by2 = HttpUtility.UrlDecode(by2); Image image2 = GetImage(by2.Replace("data:image/png;base64,", "")); Spire.Doc.Fields.DocPicture picture2 = doc.Sections[0].Paragraphs[0].AppendPicture(image2); //设置图片大小 picture2.Width = 600; } String[] headerQiandi = { "巡更任务", "巡更人员", "完成情况", "总巡查点", "未巡查点", "已巡查点", "巡查隐患" }; //表头字段 #region 获取table数据 string orgId = context.Request.Params["orgId"]; //int pageIndex = 1; //int pageSize = 99999; string where = null; string org_id = context.Request.Params["org_id"]; string s_time = context.Request.Params["s_time"]; if (string.IsNullOrEmpty(s_time)) { s_time = DateTime.Now.ToString("yyyy-MM-dd"); } DataTable dt = bll.patrolSta(org_id, s_time).Tables[0]; #endregion 获取table数据 if (dt.Rows.Count > 0) { string[][] arrQiandiData = new string[dt.Rows.Count][]; for (int i = 0; i < dt.Rows.Count; i++) { var state = "未知"; switch (dt.Rows[i][3].ToString()) { case "0": state = "巡检中"; break; case "1": state = "已完成"; break; case "2": state = "未完成"; break; } arrQiandiData[i] = new string[] { dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), state, (Convert.ToInt32(dt.Rows[i][4])+Convert.ToInt32(dt.Rows[i][5])+Convert.ToInt32(dt.Rows[i][6])).ToString(), dt.Rows[i][4].ToString(), dt.Rows[i][5].ToString(), dt.Rows[i][6].ToString() }; } #region 创建Word表格 Table tableQiandi = section.AddTable(); //新建表格 tableQiandi.ResetCells(dt.Rows.Count + 1, headerQiandi.Length); tableQiandi.TableFormat.Borders.BorderType = Spire.Doc.Documents.BorderStyle.Single; TableRow rowQiandi = tableQiandi.Rows[0]; //添加行 rowQiandi.IsHeader = true; //设为表头 rowQiandi.Height = 30; rowQiandi.HeightType = TableRowHeightType.Auto; for (int i = 0; i < headerQiandi.Length; i++) //生成表头 { if (i == 0) { rowQiandi.Cells[i].Width = 200; } else { rowQiandi.Cells[i].Width = 100; } rowQiandi.Height = 30; rowQiandi.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; rowQiandi.HeightType = TableRowHeightType.Auto; Paragraph p = rowQiandi.Cells[i].AddParagraph(); AddTextRange(section, p, headerQiandi[i], 14, true, "黑体", Spire.Doc.Documents.HorizontalAlignment.Center); } for (int r = 0; r < arrQiandiData.Length; r++) //生成表体 { TableRow dataRow = tableQiandi.Rows[r + 1]; dataRow.RowFormat.BackColor = Color.Empty; for (int c = 0; c < arrQiandiData[r].Length; c++) { if (c == 0) { dataRow.Cells[c].Width = 200; } else { dataRow.Cells[c].Width = 100; } dataRow.Height = 20; dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; Paragraph p = dataRow.Cells[c].AddParagraph(); dataRow.Cells[c].Paragraphs[0].Format.HorizontalAlignment = HorizontalAlignment.Center; TextRange tr = p.AppendText(arrQiandiData[r][c]); tr.CharacterFormat.FontSize = 12; } } #endregion 创建Word表格 } //保存到文档 string path = AppDomain.CurrentDomain.BaseDirectory + "\\OA\\VehicleAccess_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/VehicleAccess_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 getList(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; string data = ""; try { string org_id = context.Request.Params["org_id"]; string s_time = context.Request.Params["s_time"]; if (string.IsNullOrEmpty(s_time)) { s_time = DateTime.Now.ToString("yyyy-MM-dd"); } DataTable dt = bll.patrolIsState(org_id, s_time).Tables[0]; code = 1; data = FangYar.Common.JsonHelper.ToJson(dt); } catch { msg = "网络原因,请稍后重试!"; } returnstr = "{\"code\":\"" + code + "\",\"msg\":\"" + msg + "\",\"data\":" + data + "}"; return returnstr; } public bool IsReusable { get { return false; } } } }