| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085 |
- 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;
- }
- else if (!string.IsNullOrEmpty(input.Maintenancer) && !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;
- }
- 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;
- }
-
- 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_Maintenancer == User.F_UserCode)
- {
- model.F_UpdateTime = DateTime.Now;
- model.F_Maintenancer = User.F_UserCode;
- model.F_WorkOrderState = (int)EnumFaultRepairWorkOrderState.dealing;
- 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;
- 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;
-
- //是返修的工单
- 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_Maintenancer='"+User.F_UserCode+"',F_MaintenanceDept='"+User.F_DeptId+"' where F_ProcessId='"+procid+"'";
- if (DbHelperSQL.ExecuteSql(updatesql) > 0)
- {
- 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)
- {
- 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)
- {
- 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)
- {
- 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",
- "*",
- 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 ('" + dr["F_InternalWorkOrderCode"].ToString() + "') or F_WorkOrderCode in('" + dr["F_ExternalWorkOrderCode"].ToString() + "')");
- 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)
- {
- 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.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",
- "*",
- 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;
- AddOperatorLog("转派工单给" + ToUserCode, (int)EnumOperatorType.transfer, WorkOrderCode);
- }
- 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
- }
- }
|