| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122 |
- using RMYY_CallCenter_Api.DB;
- using RMYY_CallCenter_Api.Models;
- using RMYY_CallCenter_Api.Models.Enum;
- using RMYY_CallCenter_Api.Models.Input;
- using RMYY_CallCenter_Api.Utility;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace RMYY_CallCenter_Api.Controllers
- {
- public class FaultRepairController : BaseController
- {
- private BLL .T_FaultRepair_Base baseBll = new BLL.T_FaultRepair_Base();
- private BLL.T_FaultRepair_Evaluate evaBll = new BLL.T_FaultRepair_Evaluate();
- private BLL.T_FaultRepair_OperationLog logBll = new BLL.T_FaultRepair_OperationLog();
- private BLL.T_FaultRepair_Process dealBll = new BLL.T_FaultRepair_Process();
- Bll.T_Sys_GongDan gdbll = new Bll.T_Sys_GongDan();
- private Bll.T_Sys_SystemConfig configBll = new Bll.T_Sys_SystemConfig();
- private Bll.T_Sys_DictionaryValue dictionaryValueBLL = new Bll.T_Sys_DictionaryValue();
-
- /// <summary>
- /// 上传附件
- /// </summary>
- /// <returns></returns>
- //[Authority]
- public ActionResult UploadFile()
- {
- #region 多个上传
- HttpFileCollectionBase files = Request.Files;
- if (files.Count > 0)
- {
- List<Model.T_Sys_Accessories> acs = new List<Model.T_Sys_Accessories>();
- string path = "/Upload/Files/" + DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd") + "/";
- for (int i = 0; i < files.Count; i++)
- {
- HttpPostedFileBase file = files[i];
- string name = FileHelper.Upload(file, path);
- Model.T_Sys_Accessories model_T_Sys_Accessories = new Model.T_Sys_Accessories();
- model_T_Sys_Accessories.F_AddTime = DateTime.Now;//上传时间
- model_T_Sys_Accessories.F_FileName = name;//附件名称
- model_T_Sys_Accessories.F_FileType = Path.GetExtension(file.FileName);//附件类型
- model_T_Sys_Accessories.F_FileUrl = path + name;//附件地址
- model_T_Sys_Accessories.F_Size = file.ContentLength;
- model_T_Sys_Accessories.F_UserCode = User.F_UserCode;//上传人
- int id = new Bll.T_Sys_Accessories().Add(model_T_Sys_Accessories);
- model_T_Sys_Accessories.F_FileId = id;
- acs.Add(model_T_Sys_Accessories);
- }
- return Success("成功", acs);
- }
- else
- {
- return Error("请选择要上传的文件");
- }
- #endregion
- }
- //添加工单
- /// <summary>
- ///添加
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public ActionResult AddFaultRepairWorkOrder(T_FaultRepairBaseinput input)
- {
- Model.T_FaultRepair_Base model = new Model.T_FaultRepair_Base();
- model.F_Applicant = input.Applicant;
- model.F_ApplicationDept = input.ApplicationDept.Trim();
- model.F_Phone = input.Phone;
- model.F_Applicantsphone = input.Applicantsphone;
- model.F_WorkOrderCategory = input.WorkOrderCategory.Trim();
- model.F_Content = input.Content;
- model.F_PlaceOfRepair = input.PlaceOfRepair;
- model.F_File = input.File;
- model.F_WorkOrderCode = DateTime.Now.ToString("yyyyMMddHHmmssfff");//工单编号
- if (input.IsEnd == 1)
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.finish;
- model.F_MaintenanceDept = User.F_DeptId.ToString();
- model.F_Maintenancer = User.F_UserCode;
- model.F_Endtime = DateTime.Now;
- }
- else if (!string.IsNullOrEmpty(input.MaintenanceDept))
- {
- model.F_MaintenanceDept = input.MaintenanceDept;
- if (!string.IsNullOrEmpty(input.Maintenancer))
- {
- model.F_Maintenancer = input.Maintenancer;
- model.F_AssignTime = DateTime.Now;
- List<Model.T_Sys_GongDan> listgd = gdbll.GetModelList(" F_ParentID=0 and F_Name='故障报修'");
- int timeout = listgd.First().F_TimeOut;
- model.F_Deadline = DateTime.Now.AddHours(timeout);
- }
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.receive;
- }
- else
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.neworder;
- }
- model.F_CreateTime = DateTime.Now;
- model.F_CreateUser = User.F_UserCode;
- model.F_CreateUserDept = User.F_DeptId.ToString();
- if (baseBll.Add(model) > 0)
- {
- AddAddlog(model.F_WorkOrderCode);
-
- if ( !string.IsNullOrEmpty(input.MaintenanceDept))
- {
- AddAssignlog(model.F_WorkOrderCode, input.MaintenanceDept);
-
- }
- if (input.IsEnd == 1)
- {
- AddOperatorLog("完结了工单", (int)EnumOperatorType.dealed, model.F_WorkOrderCode);
- }
- return Success("添加成功!");
- }
- else return Error("添加失败!");
- }
- //编辑工单
- /// <summary>
- ///编辑
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public ActionResult UpdateFaultRepairWorkOrder(T_FaultRepairBaseinput input)
- {
- Model.T_FaultRepair_Base model= baseBll.GetModel(input.WorkOrderCode);
-
- model.F_Applicant = input.Applicant;
- model.F_ApplicationDept = input.ApplicationDept;
- model.F_Phone = input.Phone;
- model.F_Applicantsphone = input.Applicantsphone;
- model.F_WorkOrderCategory = input.WorkOrderCategory;
- model.F_Content = input.Content;
- model.F_PlaceOfRepair = input.PlaceOfRepair;
- model.F_File = input.File;
- bool addassignlog = false;
- if (input.IsEnd == 1)
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.finish;
- model.F_MaintenanceDept = User.F_DeptId.ToString();
- model.F_Endtime = DateTime.Now;
- model.F_Maintenancer = User.F_UserCode;
- }
-
- else if (string.IsNullOrEmpty(model.F_MaintenanceDept))
- {
- if (!string.IsNullOrEmpty(input.MaintenanceDept))
- {
- model.F_AssignTime = DateTime.Now;
- List<Model.T_Sys_GongDan> listgd = gdbll.GetModelList(" F_ParentID=0 and F_Name='故障报修'");
- int timeout = listgd.First().F_TimeOut;
- model.F_Deadline = DateTime.Now.AddHours(timeout);
- model.F_MaintenanceDept = input.MaintenanceDept;
- model.F_Maintenancer = input.Maintenancer;
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.receive;
- addassignlog = true;
- }
- }
- else
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.neworder;
- }
- model.F_UpdateTime = DateTime.Now;
-
- if (baseBll.Update(model) )
- {
- if (addassignlog)
- {
- AddAssignlog(model.F_WorkOrderCode, input.MaintenanceDept);
- }
- if (input.IsEnd == 1)
- {
- AddOperatorLog("完结了工单", (int)EnumOperatorType.dealed, model.F_WorkOrderCode);
- }
- return Success("编辑成功!");
- }
- else return Error("编辑失败!");
- }
- //查收
- public ActionResult CheckWorkOrder(string WorkOrderCode)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- if (model != null)
- {
- if (model.F_MaintenanceDept == User.F_DeptId.ToString())
- {
- if (!string.IsNullOrEmpty(model.F_Maintenancer) && User.F_UserCode!=model.F_Maintenancer)
- {
- return Error("你没有权限查收!");
- }
- model.F_UpdateTime = DateTime.Now;
- model.F_Maintenancer = User.F_UserCode;
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.dealing;
- baseBll.Update(model);
- AddOperatorLog("查收了工单", (int)EnumOperatorType.check, model.F_WorkOrderCode);
- return Success(" 查收成功!");
- }
- else
- {
- return Error("你没有权限查收!");
- }
- }
- return Error("工单不存在!");
- }
- //退单
- public ActionResult BackWorkOrder(string WorkOrderCode,string BackReason)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- if (model != null)
- {
- if (model.F_MaintenanceDept == User.F_DeptId.ToString())
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.neworder;
- model.F_Maintenancer = "";
- model.F_MaintenanceDept = "";
- model.F_AssignTime = null;
- model.F_UpdateTime = DateTime.Now;
- model.F_Deadline = null;
- baseBll.Update(model);
- string s = "";
- if (!string.IsNullOrEmpty(BackReason))
- {
- s += ",退回原因:" + BackReason;
- }
- AddOperatorLog("退回了工单" + s, (int)EnumOperatorType.back, model.F_WorkOrderCode);
- return Success(" 退回成功!");
- }
- else
- {
- return Error("你没有权限退回!");
- }
- }
- return Error("工单不存在!");
- }
- //处理完成 、异常完结 Type=0 正常完成 Type=1异常完结 判断是不是返修的工单
- public ActionResult DealWorkOrder(string WorkOrderCode, int Type, string Result,string File)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- //判断是不是返修的,
- string sql = "select * from T_FaultRepair_Process where F_WorkOrderCode='" + WorkOrderCode + "' and F_ReturnReason is not null and F_Maintenancer='" + User.F_UserCode + "'";
- DataTable dt = DbHelperSQL.Query(sql).Tables[0];
- if (model != null)
- {
- if (Type == 0)
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.dealed;
- model.F_Endtime = DateTime.Now;
- //是返修的工单
- if (dt != null && dt.Rows.Count > 0)
- {
- int procid= Convert.ToInt32( dt.Rows[0]["F_ProcessId"].ToString());
- string updatesql = "UPDATE T_FaultRepair_Process set F_ProcessingTime=GETDATE() ,F_Result='"+ Result + "' ,F_File='"+ File + "',F_Maintenancer='"+User.F_UserCode+"',F_MaintenanceDept='"+User.F_DeptId+"' where F_ProcessId='"+procid+"'";
- if (DbHelperSQL.ExecuteSql(updatesql) > 0)
- {
- baseBll.Update(model);
- AddOperatorLog("完结了工单", (int)EnumOperatorType.dealed, WorkOrderCode);
- return Success("处理完成");
- }
- else
- return Error("处理失败");
- }
- Model.T_FaultRepair_Process promodel = new Model.T_FaultRepair_Process();
- promodel.F_Isdelete = 0;
- promodel.F_MaintenanceDept = model.F_MaintenanceDept;
- promodel.F_Maintenancer = model.F_Maintenancer;
- promodel.F_ProcessingTime = DateTime.Now;
- promodel.F_Result = Result;
- promodel.F_File = File;
- promodel.F_WorkOrderCode = WorkOrderCode;
- if (dealBll.Add(promodel) > 0)
- {
- baseBll.Update(model);
- AddOperatorLog("完结了工单", (int)EnumOperatorType.dealed, WorkOrderCode);
- return Success("处理完成");
- }
- else
- return Error("处理失败");
- }
- else
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.exceptionended;
- //是返修的工单
- if (dt != null && dt.Columns.Count > 0)
- {
- int procid = Convert.ToInt32(dt.Rows[0]["F_ProcessId"].ToString());
- string updatesql = "UPDATE T_FaultRepair_Process set F_ProcessingTime=GETDATE() ,F_Result='" + Result + "' ,F_File='" + File + "',F_UpdateTime= GETDATE() where F_ProcessId='" + procid + "'";
- if (DbHelperSQL.ExecuteSql(updatesql) > 0)
- {
- baseBll.Update(model);
- AddOperatorLog("异常完结了工单", (int)EnumOperatorType.exceptionended, WorkOrderCode);
- return Success("异常完结");
- }
- else
- return Error("异常完结失败");
- }
- Model.T_FaultRepair_Process promodel = new Model.T_FaultRepair_Process();
- promodel.F_Isdelete = 0;
- promodel.F_MaintenanceDept = model.F_MaintenanceDept;
- promodel.F_Maintenancer = model.F_Maintenancer;
- promodel.F_ProcessingTime = DateTime.Now;
- promodel.F_Result = Result;
- promodel.F_File = File;
- promodel.F_WorkOrderCode = WorkOrderCode;
- if (dealBll.Add(promodel) > 0)
- {
- baseBll.Update(model);
- AddOperatorLog("异常完结了工单", (int)EnumOperatorType.exceptionended, WorkOrderCode);
- return Success("异常完结");
- }
- else
- return Error("异常完结失败");
- }
- }
- return Error("工单不存在");
- }
- //协助.内外协助都生成新工单 Type 0是内部协助 1是外部协助
- public ActionResult AssistWorkOrder(string WorkOrderCode,string WorkOrderCategory, string Maintenancer,string Content,int Type)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- Model.T_FaultRepair_Base newmodel = new Model.T_FaultRepair_Base();
- if (Type == 0)
- {
- if (string.IsNullOrEmpty(Maintenancer))
- {
- return Error("请选择维修人");
- }
- newmodel.F_Applicant = model.F_Applicant;
- newmodel.F_Applicantsphone = model.F_Applicantsphone;
- newmodel.F_ApplicationDept = model.F_ApplicationDept;
- newmodel.F_Phone = model.F_Phone;
- newmodel.F_WorkOrderCategory = WorkOrderCategory;
- newmodel.F_Content = Content;
- newmodel.F_PlaceOfRepair = model.F_PlaceOfRepair;
- newmodel.F_Maintenancer = Maintenancer;
- newmodel.F_MaintenanceDept = model.F_MaintenanceDept;
- newmodel.F_AssignTime = DateTime.Now;
- newmodel.F_File = model.F_File;
- List<Model.T_Sys_GongDan> listgd = gdbll.GetModelList(" F_ParentID=0 and F_Name='故障报修'");
- int timeout = listgd.First().F_TimeOut;
- newmodel.F_Deadline = DateTime.Now.AddHours(timeout);
- newmodel.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.receive;
- newmodel.F_WorkOrderCode = DateTime.Now.ToString("yyyyMMddHHmmssfff");//工单编号
- newmodel.F_CreateTime = DateTime.Now;
- newmodel.F_CreateUser = User.F_UserCode;
- newmodel.F_CreateUserDept = User.F_DeptId.ToString();
- if (baseBll.Add(newmodel) > 0)
- {
- AddAddlog(newmodel.F_WorkOrderCode);
-
- if (!string.IsNullOrEmpty(Maintenancer))
- {
- AddAssignlog(newmodel.F_WorkOrderCode, Maintenancer);
- }
- //更新model
- if (!string.IsNullOrEmpty(model.F_InternalWorkOrderCode))
- {
- model.F_InternalWorkOrderCode +=","+ newmodel.F_WorkOrderCode;
- }
- else
- {
- model.F_InternalWorkOrderCode = newmodel.F_WorkOrderCode;
- }
- model.F_UpdateTime = DateTime.Now;
- baseBll.Update(model);
-
- AddInternalasslog(model.F_WorkOrderCode, newmodel.F_WorkOrderCode);
- return Success("添加成功!");
- }
- else return Error("添加失败!");
- }
- //外协作
- else
- {
- newmodel.F_Applicant = model.F_Applicant;
- newmodel.F_Applicantsphone = model.F_Applicantsphone;
- newmodel.F_ApplicationDept = model.F_ApplicationDept;
- newmodel.F_Phone = model.F_Phone;
- newmodel.F_WorkOrderCategory = WorkOrderCategory;
- newmodel.F_Content = Content;
- newmodel.F_PlaceOfRepair = model.F_PlaceOfRepair;
- //newmodel.F_Maintenancer = Maintenancer;
- //newmodel.F_MaintenanceDept = model.F_MaintenanceDept;
-
- newmodel.F_File = model.F_File;
- newmodel.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.neworder;
- newmodel.F_WorkOrderCode = DateTime.Now.ToString("yyyyMMddHHmmssfff");//工单编号
- newmodel.F_CreateTime = DateTime.Now;
- newmodel.F_CreateUser = User.F_UserCode;
- newmodel.F_CreateUserDept = User.F_DeptId.ToString();
- if (baseBll.Add(newmodel) > 0)
- {
- AddOperatorLog("创建了工单", (int)EnumOperatorType.add, newmodel.F_WorkOrderCode);
- //更新原来的工单model
- if (!string.IsNullOrEmpty(model.F_ExternalWorkOrderCode))
- {
- model.F_ExternalWorkOrderCode += "," + newmodel.F_WorkOrderCode;
- }
- else
- {
- model.F_ExternalWorkOrderCode = newmodel.F_WorkOrderCode;
- }
- model.F_UpdateTime = DateTime.Now;
- baseBll.Update(model);
- AddExternalasslog(model.F_WorkOrderCode, newmodel.F_WorkOrderCode);
- return Success("添加成功!");
- }
- else return Error("添加失败!");
- }
-
-
- }
- //维修员的列表 待接单 待完成 已完成
- public ActionResult MaintenancerList( )
- {
- string sql = " and F_IsDelete=0 ";
- //待接单1 待完成 2 已完成 3
- string strpageindex = RequestString.GetQueryString("page");
- int pageindex = 1;
- string strpagesize = RequestString.GetQueryString("pagesize");
- int pagesize = 10;
- int strstate = RequestString.GetInt("state", -1);
- string strname = HttpUtility.UrlDecode(RequestString.GetQueryString("name"));
-
- string strtel = HttpUtility.UrlDecode(RequestString.GetQueryString("tel"));
-
- string strstarttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
- string strendtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
- string strworkcode = HttpUtility.UrlDecode(RequestString.GetQueryString("workordercode"));
- //当前登录人只能看到当前部门的工单。管理员可以查看所有的工单
- if (User.F_RoleCode != "GLY")
- {
- sql += " and F_MaintenanceDept='" + User.F_DeptId + "'";
- }
- #region 搜索条件
- if (strpageindex.Trim() != "")
- {
- pageindex = Convert.ToInt32(strpageindex);
- }
- if (strpagesize.Trim() != "")
- {
- pagesize = Convert.ToInt32(strpagesize);
- }
- if (strname.Trim() != "" && strname != "undefined")
- {
- sql += " and F_Applicant = '" + strname + "' ";
- }
- if (strtel.Trim() != "" && strtel != "undefined")
- {
- sql += " and (F_Applicantsphone like '%" + strtel + "%' or F_Phone like '%" + strtel + "%') ";
- }
- if (strworkcode.Trim() != "" && strworkcode != "undefined")
- {
- sql += " and F_WorkOrderCode='" + strworkcode + "'";
- }
- if (strstarttime.Trim() != "" && strstarttime != "undefined")
- {
- if (strendtime.Trim() != "" && strendtime != "undefined")
- {
- sql += " and F_CreateTime between '" + strstarttime +
- "' AND '" + strendtime + "'";
- }
- else
- {
- sql += " and F_CreateTime>='" + strstarttime + "' ";
- }
- }
- else
- {
- if (strendtime.Trim() != "" && strendtime != "undefined")
- {
- sql += " and F_CreateTime<='" + strendtime + "' ";
- }
- }
- #endregion
- switch (strstate)
- {
- case 1:
- sql += " and F_WorkOrderState=1";
- break;
- case 2:
- sql += " and F_WorkOrderState=2";
- break;
- case 3:
- sql += " and F_WorkOrderState>3";
- break;
- }
- int recordCount = 0;
- DataTable datatable = Bll.PagerBll.GetListPager
- ("T_FaultRepair_Base ",
- "F_WorkOrderId",
- "*,[dbo].[GetUserName](F_Maintenancer) Maintenancer",
- sql,
- "order by F_WorkOrderId desc",
- pagesize,
- pageindex,
- true,
- out recordCount
- );
- datatable.Columns.Add("GapTime", typeof(string));//执行时限
- datatable.Columns.Add("AssistanceState", typeof(string));//协作工单的状态
- datatable.Columns.Add("StateName", typeof(string));//协作工单的状态
- datatable.Columns.Add("Buttons", typeof(object));//操作按钮
- foreach (DataRow dr in datatable.Rows)
- {
- #region 执行时限 不是已完成的工单 展示这个字段
- if (Convert.ToInt32(dr["F_WorkOrderState"]) < 3)
- {
- if (!string.IsNullOrEmpty(dr["F_Deadline"].ToString()))
- {
- DateTime deadline = Convert.ToDateTime(dr["F_Deadline"]);
- TimeSpan ts = deadline.Subtract(DateTime.Now);
- double tss = double.Parse(Math.Round(ts.TotalSeconds, 0).ToString());
- if (tss < 0) { tss = -tss; }
- string gshsj = DateTimeConvert.parseTimeSeconds(tss, 1);
- if (deadline > DateTime.Now)
- {
- dr["GapTime"] = "剩余" + gshsj;
- }
- else
- {
- dr["GapTime"] = "超时" + gshsj;
- }
- }
- }
- #endregion
- #region 协作工单的状态
- if (!string.IsNullOrEmpty(dr["F_InternalWorkOrderCode"].ToString()) || !string.IsNullOrEmpty(dr["F_ExternalWorkOrderCode"].ToString()))
- {
- List<Model.T_FaultRepair_Base> modellist = baseBll.GetModelList("F_WorkOrderCode in " +
- "(select col from [dbo].[SplitToNvarchar]('" + dr["F_InternalWorkOrderCode"].ToString() + "',',' )) or F_WorkOrderCode in(select col from [dbo].[SplitToNvarchar]('" + dr["F_ExternalWorkOrderCode"].ToString() + "',',' ) )");
- if (modellist.Count != 0)
- {
- List<Model.T_FaultRepair_Base> modellistnew = modellist.Where(x => x.F_WorkOrderState < 3).ToList();
- if (modellistnew != null && modellistnew.Count > 0)
- {
- dr["AssistanceState"] = "未完成";
- }
- else
- {
- dr["AssistanceState"] = "已完成";
- }
- }
- }
- #endregion
- #region 展示的工单状态
- if (Convert.ToInt32(dr["F_WorkOrderState"]) ==(int) EnumFaultRepairWorkOrderState.receive || Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.neworder)
- {
- dr["StateName"] = "待接单";
- }
- else if (Convert.ToInt32( dr["F_WorkOrderState"] ) ==(int) EnumFaultRepairWorkOrderState.dealing)
- {
- dr["StateName"] = "待完成";
- }
- else
- {
- dr["StateName"] = "已完成";
- }
- #endregion
- #region 操作按钮
-
- var btns = new List<FaultButtonGroup.button>();
- //创建完工单没有转派到部门的话,只有调度中心可以转派
- //if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.neworder)
- //{
- // btns.Add(FaultButtonGroup.assign());
-
- //}
- //待查收 -查收 退回
- if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.receive)
- {
- btns.Add(FaultButtonGroup.check());
- btns.Add(FaultButtonGroup.back());
- }
- if (dr["F_Maintenancer"].ToString() == User.F_UserCode)
- {
- //待完成 -协作 完成
- if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.dealing)
- {
- //没有协作
- if (string.IsNullOrEmpty(dr["AssistanceState"].ToString()))
- {
- btns.Add(FaultButtonGroup.assistance());
- btns.Add(FaultButtonGroup.assign());
- btns.Add(FaultButtonGroup.finish());
- }
- else if (dr["AssistanceState"].ToString() == "未完成")
- {
- btns.Add(FaultButtonGroup.assistance());
- btns.Add(FaultButtonGroup.assign());
- }
- else
- {
- btns.Add(FaultButtonGroup.finish());
- }
- }
-
- }
- dr["Buttons"] = btns;
- #endregion
- }
- var obj = new
- {
- state = "success",
- message = "成功",
- rows = datatable,
- total = recordCount
- };
- return Content(obj.ToJson());
-
- }
- //报修人的列表 已上报 待评价 已完结
- public ActionResult MyCreateList()
- {
- DataTable dt = new DataTable();
- string sql = " and F_IsDelete=0 and F_CreateUser='"+User.F_UserCode+"'";
-
- string strpageindex = RequestString.GetQueryString("page");
- int pageindex = 1;
- string strpagesize = RequestString.GetQueryString("pagesize");
- int pagesize = 10;
- //待处理传2 已处理传3
- int strstate = RequestString.GetInt("state", -1);
- string strname = HttpUtility.UrlDecode(RequestString.GetQueryString("name"));
- string strtel = HttpUtility.UrlDecode(RequestString.GetQueryString("tel"));
- string strstarttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime"));
- string strendtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime"));
- string strworkcode = HttpUtility.UrlDecode(RequestString.GetQueryString("workordercode"));
-
- #region 搜索条件
- if (strpageindex.Trim() != "")
- {
- pageindex = Convert.ToInt32(strpageindex);
- }
- if (strpagesize.Trim() != "")
- {
- pagesize = Convert.ToInt32(strpagesize);
- }
- if (strname.Trim() != "" && strname != "undefined")
- {
- sql += " and F_Applicant = '" + strname + "' ";
- }
- if (strtel.Trim() != "" && strtel != "undefined")
- {
- sql += " and (F_Applicantsphone like '%" + strtel + "%' or F_Phone like '%" + strtel + "%') ";
- }
- if (strworkcode.Trim() != "" && strworkcode != "undefined")
- {
- sql += " and F_WorkOrderCode='" + strworkcode + "'";
- }
- if (strstarttime.Trim() != "" && strstarttime != "undefined")
- {
- if (strendtime.Trim() != "" && strendtime != "undefined")
- {
- sql += " and F_CreateTime between '" + strstarttime +
- "' AND '" + strendtime + "'";
- }
- else
- {
- sql += " and F_CreateTime>='" + strstarttime + "' ";
- }
- }
- else
- {
- if (strendtime.Trim() != "" && strendtime != "undefined")
- {
- sql += " and F_CreateTime<='" + strendtime + "' ";
- }
- }
- #endregion
- switch (strstate)
- {
- case 2:
- sql += " and F_WorkOrderState<=2";
- break;
-
- case 3:
- sql += " and F_WorkOrderState>3";
- break;
- }
- int recordCount = 0;
- dt= Bll.PagerBll.GetListPager
- ("T_FaultRepair_Base ",
- "F_WorkOrderId",
- "*,,[dbo].[GetUserName](F_Maintenancer) Maintenancer",
- sql,
- "order by F_WorkOrderId desc",
- pagesize,
- pageindex,
- true,
- out recordCount
- );
- dt.Columns.Add("GapTime", typeof(string));//执行时限
- dt.Columns.Add("AssistanceState", typeof(string));//协作工单的状态
- dt.Columns.Add("StateName", typeof(object));//展示的工单状态值
- dt.Columns.Add("Buttons", typeof(object));//操作按钮
- foreach (DataRow dr in dt.Rows)
- {
- #region 执行时限 不是已完成的工单 展示这个字段
- if (Convert.ToInt32(dr["F_WorkOrderState"]) < 3)
- {
- if (!string.IsNullOrEmpty(dr["F_Deadline"].ToString()))
- {
- DateTime deadline = Convert.ToDateTime(dr["F_Deadline"]);
- TimeSpan ts = deadline.Subtract(DateTime.Now);
- double tss = double.Parse(Math.Round(ts.TotalSeconds, 0).ToString());
- if (tss < 0) { tss = -tss; }
- string gshsj = DateTimeConvert.parseTimeSeconds(tss, 1);
- if (deadline > DateTime.Now)
- {
- dr["GapTime"] = "剩余" + gshsj;
- }
- else
- {
- dr["GapTime"] = "超时" + gshsj;
- }
- }
- }
- #endregion
- #region 展示的工单状态
- if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.neworder || Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.receive)
- {
- dr["StateName"] = "待接单";
- }
- else if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.dealing)
- {
- dr["StateName"] = "已接单";
- }
- else if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.dealed)
- {
- dr["StateName"] = "待评价";
- }
- else {
- dr["StateName"] = "已完成";
- }
- #endregion
-
- #region 操作按钮
- var btns = new List<FaultButtonGroup.button>();
- //待接单 已接单 -自行解决
- if ( Convert.ToInt32( dr["F_WorkOrderState"]) ==(int)EnumFaultRepairWorkOrderState.neworder ||
- Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.receive ||
- Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.dealing
- )
- {
- btns.Add(FaultButtonGroup.solve());
-
- }
- //待评价 评价
- if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.dealed)
- {
- btns.Add(FaultButtonGroup.evaluate());
- }
- if (Convert.ToInt32(dr["F_WorkOrderState"]) == (int)EnumFaultRepairWorkOrderState.exceptionended)
- {
- btns.Add(FaultButtonGroup.evaluate());
- }
- dr["Buttons"] = btns;
- #endregion
- }
- var obj = new
- {
- state = "success",
- message = "成功",
- rows = dt,
- total = recordCount
- };
- return Content(obj.ToJson());
- }
- //工单详情
- public ActionResult GetWorkOrder()
- {
- string strworkorderid = HttpUtility.UrlDecode(RequestString.GetQueryString("WorkOrderCode"));
- Model.T_FaultRepair_Base model = baseBll.GetModel(strworkorderid);
- int type = RequestString.GetInt("type", 0);//0基本信息1处理结果2协作工单3工单流程4维修记录5评价
- if (!string.IsNullOrEmpty(strworkorderid))
- {
- switch (type)
- {
- case 0:
- //基本信息
- string sql = "select * from T_FaultRepair_Base where F_WorkOrderCode='" + strworkorderid + "'";
- DataTable dtbase = DbHelperSQL.Query(sql).Tables[0];
-
- return Success("获取成功", dtbase);
- case 1://处理结果
- string sqlcl = "select * from T_FaultRepair_Process where F_WorkOrderCode='" + strworkorderid + "'";
- DataTable dtcl = DbHelperSQL.Query(sqlcl).Tables[0];
-
- return Success("获取处理结果成功", dtcl);
- case 2://协作工单
-
- var internallist= baseBll.GetModelList(" F_WorkOrderCode in ('" + model.F_InternalWorkOrderCode + "')");
- var externallist = baseBll.GetModelList(" F_WorkOrderCode in ('" + model.F_ExternalWorkOrderCode + "')");
- var obj3 = new
- {
- internaldata = internallist,
- externaldata= externallist
- };
- return Success("获取协作工单成功", obj3);
- case 3://工单流程
- //var loglist= logBll.GetModelList(" F_WorkOrderCode='" + strworkorderid + "'" + " order by F_OperationTime desc");
- var sqllog = "select *,[dbo].[GetUserName] username from T_FaultRepair_OperationLog where F_WorkOrderCode = '" + strworkorderid + "' " + " order by F_OperationTime desc";
- DataTable dtlog = DbHelperSQL.Query(sqllog).Tables[0];
- return Success("获取工单流程成功", dtlog);
-
- case 4://维修记录
- string sqlcl2 = "select * from T_FaultRepair_Process where F_WorkOrderCode='" + strworkorderid + "'";
- DataTable dtcl2 = DbHelperSQL.Query(sqlcl2).Tables[0];
-
- return Success("获取处理结果成功", dtcl2);
- case 5://评价
- string sqle = "select * from T_FaultRepair_Evaluate where F_WorkOrderCode='" + strworkorderid + "'";
- DataTable dte = DbHelperSQL.Query(sqle).Tables[0];
- return Success("获取处理结果成功", dte);
-
- }
-
- }
- return Error("没传参数");
-
- }
- //转派 ,派给自己的工单 转给同部门的别的人
- public ActionResult Transfer(string WorkOrderCode,string ToUserCode)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- if (model != null && model.F_Maintenancer == User.F_UserCode)
- {
- model.F_Maintenancer = ToUserCode;
- model.F_UpdateTime = DateTime.Now;
- AddOperatorLog("转派工单给" + ToUserCode, (int)EnumOperatorType.transfer, WorkOrderCode);
- baseBll.Update(model);
- return Success("转派成功");
- }
- return Error("暂时没有权限操作");
- }
- // 返修
- public ActionResult ReturnWorkOrder(string WorkOrderCode, string ReturnReason)
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- if (model != null && model.F_CreateUser==User.F_UserCode)
- {
- //判断返工是不是规定的时间内,工单状态是已完结的工单
- Model.T_FaultRepair_Process promodel = new Model.T_FaultRepair_Process();
- promodel.F_Isdelete = 0;
- promodel.F_MaintenanceDept = model.F_MaintenanceDept;
- promodel.F_Maintenancer = model.F_Maintenancer;
- promodel.F_ReturnReason = ReturnReason;
- promodel.F_WorkOrderCode = WorkOrderCode;
- if (dealBll.Add(promodel) > 0)
- {
- AddOperatorLog("提交了返工", (int)EnumOperatorType.submitreturn, WorkOrderCode);
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.dealing;
- model.F_ReturnNum += model.F_ReturnNum + 1;
- model.F_UpdateTime = DateTime.Now;
- baseBll.Update(model);
- return Success("返工成功");
- }
- return Error("返工失败");
- }
- return Error("暂时没有权限操作");
- }
- //评价
- public ActionResult EvaluateWorkOrder(string WorkOrderCode, int Attitude, int Quality, string EvaluateContent )
- {
- Model.T_FaultRepair_Base model = baseBll.GetModel(WorkOrderCode);
- Model.T_FaultRepair_Evaluate evamodel = new Model.T_FaultRepair_Evaluate();
- if (model != null)
- {
- if (model.F_CreateUser == User.F_UserCode)
- {
- evamodel.F_EvaluateContent = EvaluateContent;
- evamodel.F_Quality = Quality;
- evamodel.F_Attitude = Attitude;
- evamodel.F_Evaluator = User.F_UserCode;
- evamodel.F_EvaluationTime = DateTime.Now;
- evamodel.F_Isdelete = 0;
- evamodel.F_WorkOrderCode = WorkOrderCode;
- BLL.T_FaultRepair_Evaluate evabll = new BLL.T_FaultRepair_Evaluate();
- if (evabll.Add(evamodel) > 0)
- {
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.finish;
- model.F_UpdateTime = DateTime.Now;
- baseBll.Update(model);
- AddOperatorLog("评价了工单", (int)EnumOperatorType.evaluate, model.F_WorkOrderCode);
- return Success("评价成功");
- }
- return Error("评价失败");
- }
- else
- {
- return Error("没有权限评价");
- }
- }
- return Error("评价失败");
- }
- #region 添加操作记录
- public bool AddOperatorLog(string content,int type,string workordercode)
- {
- Model.T_FaultRepair_OperationLog model = new Model.T_FaultRepair_OperationLog();
- model.F_LogContent = content;
- model.F_OperationTime = DateTime.Now;
- model.F_OperationType = type;
- model.F_Operator = User.F_UserCode;
- model.F_WorkOrderCode = workordercode;
- logBll.Add(model);
- return true;
- }
- public void AddAddlog(string workordercode)
- {
- AddOperatorLog("创建报修工单", (int)EnumOperatorType.add, workordercode);
- }
- public void AddAssignlog(string workordercode,string maintenancer)
- {
- AddOperatorLog("指派工单给" + maintenancer, (int)EnumOperatorType.assign, workordercode);
-
- }
- public void AddInternalasslog(string workordercode, string newworkordercode)
- {
-
- AddOperatorLog("创建内协作工单" + newworkordercode, (int)EnumOperatorType.internalassistance, workordercode);
- }
- public void AddExternalasslog(string workordercode, string newworkordercode)
- {
- AddOperatorLog("创建外协作工单" + newworkordercode, (int)EnumOperatorType.externalassistance, workordercode);
-
- }
- #endregion
- }
- }
|