GetWorkStationUserReg.ashx 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <%@ WebHandler Language="C#" Class="GetWorkStationUserReg" %>
  2. using System.Web;
  3. using System.Data;
  4. using System.Web.SessionState;
  5. using System.Web.Configuration;
  6. using Newtonsoft.Json.Linq;
  7. using Curtain.DataAccess;
  8. using Curtain.Log;
  9. using DK.XuWei.WebMes;
  10. /// <summary>
  11. /// 关联员工打卡
  12. /// </summary>
  13. public class GetWorkStationUserReg : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. using (IDataAccess conn = DataAccess.Create())
  18. {
  19. conn.BeginTransaction();
  20. //更新模板数据 TP_MST_USERSTAFF
  21. string[] staffIds = context.Request["StaffId"].ToString().Split(',');
  22. //取选择的工种 xuwei modify 2020-07-28
  23. string[] jobIds = context.Request["JobId"].ToString().Split(',');
  24. //2021年11月18日14:05:39 by fy modify 按工种打卡(验证处理),做变量 JobReg = 1 执行按工种打卡,JobReg = 0 一般打卡
  25. if (context.Request["JobReg"] == null || context.Request["JobReg"].ToString() == "1") {
  26. string jobStr = "'";
  27. if (jobIds != null) {
  28. for (int i=0;i<jobIds.Length;i++) {
  29. jobStr += jobIds[i] +"'";
  30. if (i < jobIds.Length - 1) {
  31. jobStr += ",'";
  32. }
  33. }
  34. }
  35. //查询工号工种
  36. DataTable dt0 = conn.ExecuteDatatable(@"
  37. SELECT
  38. j.JOBSID,
  39. j.JOBSNAME
  40. FROM
  41. TP_MST_USERJOBS uj
  42. INNER JOIN TP_MST_JOBS j ON j.JOBSID = uj.JOBSID
  43. INNER JOIN TP_MST_USER u ON u.USERID = uj.USERID
  44. WHERE
  45. j.VALUEFLAG = '1'
  46. AND u.VALUEFLAG = '1'
  47. AND u.USERCODE = @USERCODE@
  48. AND uj.JOBSID NOT IN ({JOBSTR})
  49. ".Replace("{JOBSTR}",jobStr),
  50. new CDAParameter("USERCODE",context.Request["UserCode"])
  51. );
  52. if (dt0 != null && dt0.Rows != null && dt0.Rows.Count > 0) {
  53. string noHaveStr = "";
  54. for (int j=0;j<dt0.Rows.Count;j++) {
  55. noHaveStr += dt0.Rows[j]["JOBSNAME"];
  56. if (j < dt0.Rows.Count - 1) {
  57. noHaveStr += ",";
  58. }
  59. }
  60. context.Response.Write(new JsonResult( JsonStatus.otherError){ message="以下工种没有员工打卡:"+noHaveStr}.ToJson());
  61. return;
  62. }
  63. }
  64. //取用户ID和工种ID
  65. DataTable dt = conn.ExecuteDatatable(@"
  66. SELECT
  67. u.USERID,
  68. u.USERCODE,
  69. u.ACCOUNTID,
  70. w.UJOBSID
  71. FROM
  72. TP_MST_WORKSTATION w
  73. LEFT JOIN TP_MST_WORKSTATIONUSER wu ON wu.WORKSTATIONID = w.WORKSTATIONID
  74. LEFT JOIN TP_MST_USER u ON wu.USERID = u.USERID
  75. WHERE
  76. w.VALUEFLAG = '1'
  77. AND u.USERCODE = @USERCODE@
  78. AND w.WORKSTATIONID = @WORKSTATIONID@
  79. ",
  80. new CDAParameter("USERCODE", context.Request["UserCode"]),
  81. new CDAParameter("WORKSTATIONID", context.Request["WorkstationId"])
  82. );
  83. string userId = dt.Rows[0]["USERID"].ToString();
  84. string userCode = dt.Rows[0]["USERCODE"].ToString();
  85. string accountId = dt.Rows[0]["ACCOUNTID"].ToString();
  86. //删除模板数据 xuwei 2020-10-13 fix
  87. conn.ExecuteNonQuery(@"
  88. DELETE
  89. TP_MST_USERSTAFF
  90. WHERE
  91. USERID = @USERID@
  92. ",
  93. new CDAParameter("USERID", userId)
  94. );
  95. //写入模板数据
  96. for(int i = 0; i < staffIds.Length; i++)
  97. {
  98. //读取详细信息
  99. DataTable dtStaff = conn.ExecuteDatatable(@"
  100. SELECT U.USERID
  101. ,U.USERCODE
  102. ,D.STAFFID
  103. ,D.STAFFSTATUS
  104. ,US.UJOBSID
  105. FROM TP_MST_WORKSTATION W
  106. LEFT JOIN TP_MST_WORKSTATIONUSER WU
  107. ON WU.WORKSTATIONID = W.WORKSTATIONID
  108. LEFT JOIN TP_MST_USER U
  109. ON WU.USERID = U.USERID
  110. LEFT JOIN TP_MST_WORKSTATIONUSERDETAIL D
  111. ON U.USERID = D.USERID
  112. LEFT JOIN TP_MST_USERSTAFF US
  113. ON US.USERID = U.USERID
  114. WHERE W.VALUEFLAG = '1'
  115. AND u.USERCODE = @USERCODE@
  116. AND w.WORKSTATIONID = @WORKSTATIONID@
  117. AND d.STAFFID = @STAFFID@
  118. ",
  119. new CDAParameter("USERCODE", context.Request["UserCode"]),
  120. new CDAParameter("WORKSTATIONID", context.Request["WorkstationId"]),
  121. new CDAParameter("STAFFID", staffIds[i])
  122. );
  123. //添加数据
  124. conn.ExecuteNonQuery(@"
  125. INSERT INTO TP_MST_USERSTAFF (
  126. USERID,
  127. UJOBSID,
  128. STAFFID,
  129. ACCOUNTID,CREATEUSERID,UPDATEUSERID
  130. ) VALUES (
  131. @USERID@,
  132. @UJOBSID@,
  133. @STAFFID@,
  134. @ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  135. )
  136. ",
  137. new CDAParameter("USERID", userId),
  138. //取选择的工种 xuwei modify 2020-07-28
  139. new CDAParameter("UJOBSID", jobIds[i]),
  140. new CDAParameter("STAFFID", staffIds[i]),
  141. new CDAParameter("ACCOUNTID", accountId),
  142. new CDAParameter("CREATEUSERID", userId),
  143. new CDAParameter("UPDATEUSERID", userId)
  144. );
  145. // 更新工位工号明细工种 add by fubin 2020/7/28
  146. conn.ExecuteNonQuery(@"
  147. UPDATE TP_MST_WORKSTATIONUSERDETAIL WSD
  148. SET WSD.UJOBSID = @UJOBSID@
  149. ,WSD.UPDATEUSERID = @USERID@
  150. WHERE WSD.USERID = @USERID@
  151. AND WSD.STAFFID = @STAFFID@",
  152. new CDAParameter("UJOBSID", jobIds[i]),
  153. new CDAParameter("USERID", userId),
  154. new CDAParameter("STAFFID", staffIds[i])
  155. );
  156. }
  157. //更新班次配置 TP_PC_CLASSESSETTING
  158. string classesSettingid = conn.GetSequenceNextval("SEQ_PC_CLASSESSETTING_ID").ToString();
  159. conn.ExecuteNonQuery(@"
  160. INSERT INTO TP_PC_CLASSESSETTING (
  161. CLASSESSETTINGID,USERID,USERCODE,
  162. ACCOUNTDATE,ACCOUNTID,CREATEUSERID,UPDATEUSERID
  163. ) VALUES (
  164. @CLASSESSETTINGID@,@USERID@,@USERCODE@,
  165. TRUNC(SYSDATE),@ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  166. )
  167. ",
  168. new CDAParameter("CLASSESSETTINGID", classesSettingid),
  169. new CDAParameter("USERID", userId),
  170. new CDAParameter("USERCODE", userCode),
  171. new CDAParameter("ACCOUNTID", accountId),
  172. new CDAParameter("CREATEUSERID", userId),
  173. new CDAParameter("UPDATEUSERID", userId)
  174. );
  175. //更新班次配置明细 TP_PC_CLASSESDETAIL
  176. for(int j=0;j<staffIds.Length;j++)
  177. {
  178. //读取详细信息
  179. DataTable dtStaff = conn.ExecuteDatatable(@"
  180. SELECT
  181. d.USERID,
  182. d.USERCODE,
  183. w.UJOBSID,
  184. u.ORGANIZATIONID AS UORGANIZATIONID,
  185. d.STAFFSTATUS,
  186. s.JOBS AS SJOBSID,
  187. s.ORGANIZATIONID AS SORGANIZATIONID
  188. FROM
  189. TP_MST_WORKSTATION w
  190. LEFT JOIN TP_MST_WORKSTATIONUSER wu ON wu.WORKSTATIONID = w.WORKSTATIONID
  191. LEFT JOIN TP_MST_USER u ON wu.USERID = u.USERID
  192. LEFT JOIN TP_MST_WORKSTATIONUSERDETAIL d ON u.USERID = d.USERID
  193. LEFT JOIN TP_HR_STAFF s ON s.STAFFID = d.STAFFID
  194. WHERE
  195. d.VALUEFLAG = '1'
  196. AND d.USERCODE = @USERCODE@
  197. AND w.WORKSTATIONID = @WORKSTATIONID@
  198. AND d.STAFFID = @STAFFID@
  199. ",
  200. new CDAParameter("USERCODE", context.Request["UserCode"]),
  201. new CDAParameter("WORKSTATIONID", context.Request["WorkstationId"]),
  202. new CDAParameter("STAFFID", staffIds[j])
  203. );
  204. conn.ExecuteNonQuery(@"
  205. INSERT INTO TP_PC_CLASSESDETAIL (
  206. CLASSESSETTINGID,
  207. ACCOUNTDATE,
  208. USERID,
  209. USERCODE,
  210. STAFFID,
  211. STAFFSTATUS,
  212. UJOBSID,
  213. SJOBSID,
  214. UORGANIZATIONID,
  215. SORGANIZATIONID,
  216. UJOBSNUM,
  217. ACCOUNTID,CREATEUSERID,UPDATEUSERID
  218. ) VALUES (
  219. @CLASSESSETTINGID@,
  220. TRUNC(SYSDATE),
  221. @USERID@,
  222. @USERCODE@,
  223. @STAFFID@,
  224. @STAFFSTATUS@,
  225. @UJOBSID@,
  226. @SJOBSID@,
  227. @UORGANIZATIONID@,
  228. @SORGANIZATIONID@,
  229. @UJOBSNUM@,
  230. @ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  231. )
  232. ",
  233. new CDAParameter("CLASSESSETTINGID", classesSettingid),
  234. new CDAParameter("USERID", dtStaff.Rows[0]["USERID"]),
  235. new CDAParameter("USERCODE", dtStaff.Rows[0]["USERCODE"]),
  236. new CDAParameter("STAFFID", staffIds[j]),
  237. new CDAParameter("STAFFSTATUS", dtStaff.Rows[0]["STAFFSTATUS"]),
  238. //取选择的工种 xuwei modify 2020-07-28
  239. new CDAParameter("UJOBSID", jobIds[j]),
  240. new CDAParameter("SJOBSID", dtStaff.Rows[0]["SJOBSID"]),
  241. new CDAParameter("UORGANIZATIONID", dtStaff.Rows[0]["UORGANIZATIONID"]),
  242. new CDAParameter("SORGANIZATIONID", dtStaff.Rows[0]["SORGANIZATIONID"]),
  243. new CDAParameter("UJOBSNUM", 0),
  244. new CDAParameter("ACCOUNTID", accountId),
  245. new CDAParameter("CREATEUSERID", userId),
  246. new CDAParameter("UPDATEUSERID", userId)
  247. );
  248. }
  249. //删除当前工号在任何一个工位,以确保当前工号在工位中唯一
  250. conn.ExecuteNonQuery(@"
  251. UPDATE TP_MST_WORKSTATION
  252. SET
  253. USERCODE = NULL
  254. WHERE
  255. USERCODE = @USERCODE@
  256. ",
  257. new CDAParameter("USERCODE", context.Request["UserCode"])
  258. );
  259. //更新工位当前工号
  260. conn.ExecuteNonQuery(@"
  261. UPDATE TP_MST_WORKSTATION
  262. SET
  263. USERCODE = @USERCODE@,
  264. UPDATEUSERID = @UPDATEUSERID@,
  265. UPDATETIME = SYSDATE
  266. WHERE
  267. WORKSTATIONID = @WORKSTATIONID@
  268. ",
  269. new CDAParameter("USERCODE", context.Request["UserCode"]),
  270. new CDAParameter("UPDATEUSERID", userId),
  271. new CDAParameter("WORKSTATIONID", context.Request["WorkstationId"])
  272. );
  273. //xuwei add 2020-10-20
  274. //打卡时更新 TP_MST_HGWS_USERSINFO
  275. //Classsettingid 班次ID
  276. //Classsettingstaffcount 打卡人数
  277. //Updatetime 打卡时间
  278. conn.ExecuteNonQuery(@"
  279. UPDATE TP_MST_HGWS_USERSINFO
  280. SET
  281. CLASSSETTINGID = @CLASSSETTINGID@,
  282. CLASSSETTINGSTAFFCOUNT = @CLASSSETTINGSTAFFCOUNT@,
  283. UPDATETIME = SYSDATE
  284. WHERE
  285. USERID = @USERID@
  286. ",
  287. new CDAParameter("CLASSSETTINGID",classesSettingid),
  288. new CDAParameter("CLASSSETTINGSTAFFCOUNT",staffIds.Length),
  289. new CDAParameter("USERID",userId)
  290. );
  291. conn.Commit();
  292. context.Response.Write(new JsonResult( JsonStatus.success).ToJson());
  293. }
  294. }
  295. public bool IsReusable
  296. {
  297. get
  298. {
  299. return false;
  300. }
  301. }
  302. }