| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- using RMYY_CallCenter_Api.Models.Enum;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using RMYY_CallCenter_Api.Utility;
- using RMYY_CallCenter_Api.Models.Dto;
- namespace RMYY_CallCenter_Api
- {
- public class WorkOrderBase
- {
- private static Bll.T_Dis_WorkOrderItem itembll = new Bll.T_Dis_WorkOrderItem();
- public delegate string TranslationDelegate(int F_Id, string F_UserCode);
- public static string GetDisStateName(int F_Id, string F_UserCode)
- {
- return EnumHelper.GetDescription((EnumDisWorkOrderState)itembll.GetModelList("F_WoID=" + F_Id + " and (F_CreateUser=" + F_UserCode + " or F_NextUser=" + F_UserCode + ")").OrderByDescending(pp => pp.F_ID).FirstOrDefault().F_OptType);
- }
- public static string GetStateName(TranslationDelegate delegats, int F_Id, string F_UserCode)
- {
- return delegats.Invoke(F_Id, F_UserCode);
- }
- /// <summary>
- /// 获取工单状态
- /// </summary>
- /// <param name="type"></param>
- /// <returns></returns>
- public static List<TypeState> GetTypeState(int type, int ftype = 0)
- {
- List<TypeState> wlist = Common.GetGongDanState<EnumWorkOrderState>();
- List<TypeState> tlist = Common.GetGongDanState<EnumDisWorkOrderState>();
- List<TypeState> qlist = Common.GetGongDanState<EnumMatWorkOrderState>();
- List<TypeState> dlit = Common.GetGongDanState<EnumDevWorkOrderState>();
- List<TypeState> alit = Common.GetGongDanState<EnumAccWorkOrderState>();
- List<TypeState> hlit = Common.GetGongDanState<EnumHosWorkOrderState>();
- List<TypeState> newlist = new List<TypeState>();
- int parentid = ParentType(type);
- if (parentid != 0)
- ftype = parentid;
- if (ftype == 3000)
- {
- newlist.Add(new TypeState { StateId = "-1", StateValue = "", StateRemark = "全部" });
- newlist.Add(new TypeState { StateId = "0", StateValue = "", StateRemark = "代派工" });
- newlist.Add(new TypeState { StateId = "1", StateValue = "", StateRemark = "已转派" });
- newlist.Add(new TypeState { StateId = "2", StateValue = "", StateRemark = "已处理" });
- newlist.Add(new TypeState { StateId = "3", StateValue = "", StateRemark = "已完结" });
- newlist.Add(new TypeState { StateId = "4", StateValue = "", StateRemark = "异常结束" });
- newlist.Add(new TypeState { StateId = "5", StateValue = "", StateRemark = "已拒单" });
- newlist.Add(new TypeState { StateId = "6", StateValue = "", StateRemark = "外协作单子" });
- }
- else if (ftype == 1000 || ftype == 4000)
- {
- newlist = wlist;
- }
- else
- {
- switch (type)
- {
- case (int)EnumWorkOrder.RedDis:
- tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.dealing + "','" + (int)EnumDisWorkOrderState.takeblood + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
- newlist = tlist;
- break;
- case (int)EnumWorkOrder.OrtherDis:
- case (int)EnumWorkOrder.UrgDis:
- tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.stayred + "','" + (int)EnumDisWorkOrderState.staydrug + "','" + (int)EnumDisWorkOrderState.takeblood + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
- newlist = tlist;
- break;
- case (int)EnumWorkOrder.BloodDis:
- tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.stayred + "','" + (int)EnumDisWorkOrderState.staydrug + "','" + (int)EnumDisWorkOrderState.dealing + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
- newlist = tlist;
- break;
- case (int)EnumWorkOrder.Mat:
- newlist = qlist;
- break;
- case (int)EnumWorkOrder.Dev:
- newlist = dlit;
- break;
- case (int)EnumWorkOrder.Hos:
- newlist = hlit;
- break;
- case (int)EnumWorkOrder.Serve:
- alit.RemoveAll(p => ("'" + (int)EnumAccWorkOrderState.dealing + "'").Contains(p.StateId));
- newlist = alit;
- break;
- case (int)EnumWorkOrder.TakeBlood:
- alit.RemoveAll(p => ("'" + (int)EnumAccWorkOrderState.arrive + "','" + (int)EnumAccWorkOrderState.keep + "'").Contains(p.StateId));
- newlist = alit;
- break;
- case (int)EnumWorkOrder.consultation:
- case (int)EnumWorkOrder.complaint:
- case (int)EnumWorkOrder.externalcons:
- case (int)EnumWorkOrder.appointment:
- case (int)EnumWorkOrder.maintain:
- newlist = wlist;
- break;
- }
- }
- return newlist;
- //return newlist.OrderBy(p => Convert.ToInt32(p.StateId));
- }
- /// <summary>
- /// 工单指派记录
- /// </summary>
- /// <param name="woid"></param>
- /// <param name="wostate"></param>
- /// <param name="type"></param>
- /// <param name="content"></param>
- /// <param name="itemtype"></param>
- /// <param name="opttype"></param>
- /// <param name="nextuser"></param>
- /// <param name="nextusername"></param>
- /// <param name="nextuserphon"></param>
- /// <param name="nextusertalkie"></param>
- /// <param name="nextdept"></param>
- /// <param name="nowUser"></param>
- /// <param name="F_IsUsed"></param>
- /// <returns></returns>
- public static long AddLogTrans(int woid, int wostate, int type, string content, int itemtype, int opttype, string nextuser, string nextusername, string nextuserphon, string nextusertalkie, int nextdept, Model.T_Sys_UserAccount nowUser, int F_IsUsed = 0)
- {
- Model.T_Dis_WorkOrderItem itemModel = new Model.T_Dis_WorkOrderItem();
- #region
- //处理当前工单的记录之前的记录过期
- var itemlast = itembll.GetModelList(" isnull(F_IsUsed,'0')='0' and F_OptType !=" + (int)EnumDisItemOpt.assign + " and F_ItemType=" + itemtype + " and F_WoID=" + woid + " and (F_CreateUser=" + nowUser.F_UserCode + ")");
- if (F_IsUsed == 0)
- {
- if (itemlast.Count > 0)
- {
- foreach (var it in itemlast)
- {
- it.F_IsUsed = 1;
- itembll.Update(it);
- }
- }
- }
- #endregion
- itemModel.F_WoID = woid;
- itemModel.F_WoState = wostate;
- itemModel.F_WoType = (int)(EnumWorkOrder)(type);//工单类型
- itemModel.F_ItemType = itemtype;
- itemModel.F_OptType = opttype;
- itemModel.F_OptContent = content;
- itemModel.F_NextUser = nextuser;
- itemModel.F_NextUserName = nextusername;
- itemModel.F_NextUserTalkie = nextusertalkie;
- itemModel.F_NexUserPhon = nextuserphon;
- itemModel.F_NextDept = nextdept;
- itemModel.F_IsUsed = F_IsUsed;
- itemModel.F_CreateTime = DateTime.Now;
- itemModel.F_CreateUser = nowUser.F_UserCode;
- var res = itembll.Add(itemModel);
- return res;
- }
- public static string GetWoTypeName(int wotype)
- {
- if (wotype > 0)
- {
- return ParentTypeName(wotype);
- }
- else return "";
- }
- /// <summary>
- /// 获取最大工单分类
- /// </summary>
- /// <param name="typeid"></param>
- /// <returns></returns>
- public static int ParentType(int typeid)
- {
- var model = new Bll.T_Sys_GongDan().GetModel(typeid);
- if (model.F_ParentID == 0)
- {
- return model.F_GDId;
- }
- else
- {
- return ParentType(Convert.ToInt32(model.F_ParentID));
- }
- }
- /// <summary>
- /// 获取工单类型名称
- /// </summary>
- /// <param name="typeid"></param>
- /// <returns></returns>
- private static string typename = "";
- public static string ParentTypeName(int typeid)
- {
- string restr = "";
- var model = new Bll.T_Sys_GongDan().GetModel(typeid);
- if (model != null)
- {
- typename = $"{model.F_Name}/" + typename;
- if (model.F_ParentID != 0)
- {
- typename=ParentTypeName(Convert.ToInt32(model.F_ParentID));
- }
- }
- restr = typename;
- typename = "";
- return restr;
- }
- }
- }
|