人民医院API

WorkOrderBase.cs 9.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using RMYY_CallCenter_Api.Models.Enum;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web;
  6. using RMYY_CallCenter_Api.Utility;
  7. using RMYY_CallCenter_Api.Models.Dto;
  8. namespace RMYY_CallCenter_Api
  9. {
  10. public class WorkOrderBase
  11. {
  12. private static Bll.T_Dis_WorkOrderItem itembll = new Bll.T_Dis_WorkOrderItem();
  13. public delegate string TranslationDelegate(int F_Id, string F_UserCode);
  14. public static string GetDisStateName(int F_Id, string F_UserCode)
  15. {
  16. 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);
  17. }
  18. public static string GetStateName(TranslationDelegate delegats, int F_Id, string F_UserCode)
  19. {
  20. return delegats.Invoke(F_Id, F_UserCode);
  21. }
  22. /// <summary>
  23. /// 获取工单状态
  24. /// </summary>
  25. /// <param name="type"></param>
  26. /// <returns></returns>
  27. public static List<TypeState> GetTypeState(int type, int ftype = 0)
  28. {
  29. List<TypeState> wlist = Common.GetGongDanState<EnumWorkOrderState>();
  30. List<TypeState> tlist = Common.GetGongDanState<EnumDisWorkOrderState>();
  31. List<TypeState> qlist = Common.GetGongDanState<EnumMatWorkOrderState>();
  32. List<TypeState> dlit = Common.GetGongDanState<EnumDevWorkOrderState>();
  33. List<TypeState> alit = Common.GetGongDanState<EnumAccWorkOrderState>();
  34. List<TypeState> hlit = Common.GetGongDanState<EnumHosWorkOrderState>();
  35. List<TypeState> newlist = new List<TypeState>();
  36. int parentid = ParentType(type);
  37. if (parentid != 0)
  38. ftype = parentid;
  39. if (ftype == 3000)
  40. {
  41. newlist.Add(new TypeState { StateId = "-1", StateValue = "", StateRemark = "全部" });
  42. newlist.Add(new TypeState { StateId = "0", StateValue = "", StateRemark = "代派工" });
  43. newlist.Add(new TypeState { StateId = "1", StateValue = "", StateRemark = "已转派" });
  44. newlist.Add(new TypeState { StateId = "2", StateValue = "", StateRemark = "已处理" });
  45. newlist.Add(new TypeState { StateId = "3", StateValue = "", StateRemark = "已完结" });
  46. newlist.Add(new TypeState { StateId = "4", StateValue = "", StateRemark = "异常结束" });
  47. newlist.Add(new TypeState { StateId = "5", StateValue = "", StateRemark = "已拒单" });
  48. newlist.Add(new TypeState { StateId = "6", StateValue = "", StateRemark = "外协作单子" });
  49. }
  50. else if (ftype == 1000 || ftype == 4000)
  51. {
  52. newlist = wlist;
  53. }
  54. else
  55. {
  56. switch (type)
  57. {
  58. case (int)EnumWorkOrder.RedDis:
  59. tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.dealing + "','" + (int)EnumDisWorkOrderState.takeblood + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
  60. newlist = tlist;
  61. break;
  62. case (int)EnumWorkOrder.OrtherDis:
  63. case (int)EnumWorkOrder.UrgDis:
  64. tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.stayred + "','" + (int)EnumDisWorkOrderState.staydrug + "','" + (int)EnumDisWorkOrderState.takeblood + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
  65. newlist = tlist;
  66. break;
  67. case (int)EnumWorkOrder.BloodDis:
  68. tlist.RemoveAll(p => ("'" + (int)EnumDisWorkOrderState.stayred + "','" + (int)EnumDisWorkOrderState.staydrug + "','" + (int)EnumDisWorkOrderState.dealing + "','" + (int)EnumDisWorkOrderState.send + "'").Contains(p.StateId));
  69. newlist = tlist;
  70. break;
  71. case (int)EnumWorkOrder.Mat:
  72. newlist = qlist;
  73. break;
  74. case (int)EnumWorkOrder.Dev:
  75. newlist = dlit;
  76. break;
  77. case (int)EnumWorkOrder.Hos:
  78. newlist = hlit;
  79. break;
  80. case (int)EnumWorkOrder.Serve:
  81. alit.RemoveAll(p => ("'" + (int)EnumAccWorkOrderState.dealing + "'").Contains(p.StateId));
  82. newlist = alit;
  83. break;
  84. case (int)EnumWorkOrder.TakeBlood:
  85. alit.RemoveAll(p => ("'" + (int)EnumAccWorkOrderState.arrive + "','" + (int)EnumAccWorkOrderState.keep + "'").Contains(p.StateId));
  86. newlist = alit;
  87. break;
  88. case (int)EnumWorkOrder.consultation:
  89. case (int)EnumWorkOrder.complaint:
  90. case (int)EnumWorkOrder.externalcons:
  91. case (int)EnumWorkOrder.appointment:
  92. case (int)EnumWorkOrder.maintain:
  93. newlist = wlist;
  94. break;
  95. }
  96. }
  97. return newlist;
  98. //return newlist.OrderBy(p => Convert.ToInt32(p.StateId));
  99. }
  100. /// <summary>
  101. /// 工单指派记录
  102. /// </summary>
  103. /// <param name="woid"></param>
  104. /// <param name="wostate"></param>
  105. /// <param name="type"></param>
  106. /// <param name="content"></param>
  107. /// <param name="itemtype"></param>
  108. /// <param name="opttype"></param>
  109. /// <param name="nextuser"></param>
  110. /// <param name="nextusername"></param>
  111. /// <param name="nextuserphon"></param>
  112. /// <param name="nextusertalkie"></param>
  113. /// <param name="nextdept"></param>
  114. /// <param name="nowUser"></param>
  115. /// <param name="F_IsUsed"></param>
  116. /// <returns></returns>
  117. 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)
  118. {
  119. Model.T_Dis_WorkOrderItem itemModel = new Model.T_Dis_WorkOrderItem();
  120. #region
  121. //处理当前工单的记录之前的记录过期
  122. 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 + ")");
  123. if (F_IsUsed == 0)
  124. {
  125. if (itemlast.Count > 0)
  126. {
  127. foreach (var it in itemlast)
  128. {
  129. it.F_IsUsed = 1;
  130. itembll.Update(it);
  131. }
  132. }
  133. }
  134. #endregion
  135. itemModel.F_WoID = woid;
  136. itemModel.F_WoState = wostate;
  137. itemModel.F_WoType = (int)(EnumWorkOrder)(type);//工单类型
  138. itemModel.F_ItemType = itemtype;
  139. itemModel.F_OptType = opttype;
  140. itemModel.F_OptContent = content;
  141. itemModel.F_NextUser = nextuser;
  142. itemModel.F_NextUserName = nextusername;
  143. itemModel.F_NextUserTalkie = nextusertalkie;
  144. itemModel.F_NexUserPhon = nextuserphon;
  145. itemModel.F_NextDept = nextdept;
  146. itemModel.F_IsUsed = F_IsUsed;
  147. itemModel.F_CreateTime = DateTime.Now;
  148. itemModel.F_CreateUser = nowUser.F_UserCode;
  149. var res = itembll.Add(itemModel);
  150. return res;
  151. }
  152. public static string GetWoTypeName(int wotype)
  153. {
  154. if (wotype > 0)
  155. {
  156. return ParentTypeName(wotype);
  157. }
  158. else return "";
  159. }
  160. /// <summary>
  161. /// 获取最大工单分类
  162. /// </summary>
  163. /// <param name="typeid"></param>
  164. /// <returns></returns>
  165. public static int ParentType(int typeid)
  166. {
  167. var model = new Bll.T_Sys_GongDan().GetModel(typeid);
  168. if (model.F_ParentID == 0)
  169. {
  170. return model.F_GDId;
  171. }
  172. else
  173. {
  174. return ParentType(Convert.ToInt32(model.F_ParentID));
  175. }
  176. }
  177. /// <summary>
  178. /// 获取工单类型名称
  179. /// </summary>
  180. /// <param name="typeid"></param>
  181. /// <returns></returns>
  182. private static string typename = "";
  183. public static string ParentTypeName(int typeid)
  184. {
  185. string restr = "";
  186. var model = new Bll.T_Sys_GongDan().GetModel(typeid);
  187. if (model != null)
  188. {
  189. typename = $"{model.F_Name}/" + typename;
  190. if (model.F_ParentID != 0)
  191. {
  192. typename=ParentTypeName(Convert.ToInt32(model.F_ParentID));
  193. }
  194. }
  195. restr = typename;
  196. typename = "";
  197. return restr;
  198. }
  199. }
  200. }