testformgoods.ashx 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. <%@ WebHandler Language="C#" Class="testformgoods" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Collections.Generic;
  6. using System.Collections.Specialized;
  7. using System.Data;
  8. using Curtain.DataAccess;
  9. using DK.XuWei.WebMes;
  10. /// <summary>
  11. /// TP_PM_TESTFORM2_GOODS
  12. /// xuwei create 2021-08-31
  13. /// </summary>
  14. public class testformgoods : IHttpHandler, IReadOnlySessionState
  15. {
  16. public void ProcessRequest(HttpContext context)
  17. {
  18. context.Response.ContentType = "text/plain";
  19. if (mes.LoginCheck() && context.Request["m"] is object)
  20. {
  21. Button b = new Button();
  22. if(mes.RightCheck(""))
  23. {
  24. b.testformgoodsButtonIndex = true;
  25. b.testformgoodsButtonInsert = true;
  26. b.testformgoodsButtonInsertBatch = true;
  27. b.testformgoodsButtonCopy = true;
  28. b.testformgoodsButtonUpdate = true;
  29. b.testformgoodsButtonDelete = true;
  30. b.testformgoodsButtonCancel = true;
  31. b.testformgoodsButtonSearch = true;
  32. b.testformgoodsButtonDetail = true;
  33. b.testformgoodsButtonCheckbox = true;
  34. b.testformgoodsButtonExport = true;
  35. b.testformgoodsButtonReload = true;
  36. };
  37. switch (context.Request["m"].ToString().ToLower())
  38. {
  39. case "b":
  40. {
  41. //按钮
  42. context.Response.Write(new JsonResult(b).ToJson());
  43. break;
  44. }
  45. case "a":
  46. {
  47. //添加
  48. //if (b.testformgoodsButtonDetail && context.Request["id"] is object)
  49. if (b.testformgoodsButtonDetail)
  50. context.Response.Write(detail());
  51. else
  52. {
  53. List<xRecord> list = new List<xRecord>();
  54. xRecord r = new xRecord();
  55. list.Add(r);
  56. context.Response.Write(new JsonResult(list).ToJson());
  57. }
  58. break;
  59. }
  60. case "s":
  61. {
  62. //搜索
  63. if (b.testformgoodsButtonIndex)
  64. context.Response.Write(search(context.Request.Form));
  65. else
  66. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  67. break;
  68. }
  69. case "t":
  70. {
  71. //详细
  72. if (b.testformgoodsButtonDetail)
  73. context.Response.Write(detail());
  74. else
  75. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  76. break;
  77. }
  78. case "i":
  79. {
  80. //插入
  81. if (b.testformgoodsButtonInsert)
  82. context.Response.Write(insert(context.Request.Form));
  83. else
  84. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  85. break;
  86. }
  87. case "u":
  88. {
  89. //修改
  90. if (b.testformgoodsButtonUpdate)
  91. context.Response.Write(update(context.Request.Form));
  92. else
  93. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  94. break;
  95. }
  96. case "d":
  97. {
  98. //删除
  99. if (b.testformgoodsButtonDelete)
  100. context.Response.Write(delete());
  101. else
  102. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  103. break;
  104. }
  105. case "e":
  106. {
  107. //导出
  108. if (b.testformgoodsButtonExport)
  109. {
  110. context.Response.Write(export());
  111. }
  112. else
  113. {
  114. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  115. }
  116. break;
  117. }
  118. default:
  119. {
  120. break;
  121. }
  122. }
  123. }
  124. else
  125. {
  126. context.Response.Write(new JsonResult(JsonStatus.loginError).ToJson());
  127. }
  128. }
  129. /// <summary>
  130. /// TP_PM_TESTFORM2_GOODS 查询
  131. /// </summary>
  132. /// <returns>json</returns>
  133. private string search(NameValueCollection form)
  134. {
  135. using(IDataAccess conn=DataAccess.Create())
  136. {
  137. int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
  138. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
  139. string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "";
  140. string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
  141. //暂时开放所有权限
  142. string right = "ALL";
  143. string sqlStr = @"
  144. WITH
  145. --取测试产品
  146. GOODS AS
  147. (
  148. SELECT
  149. TF.NAME,
  150. TFG.GUID,
  151. TFG.TESTFORMGUID,
  152. TFG.BARCODE,
  153. TFG.CREATEUSERID,
  154. TFG.CREATETIME
  155. FROM
  156. TP_PM_TESTFORM2_GOODS TFG
  157. INNER JOIN TP_PM_TESTFORM2 TF ON TFG.TESTFORMGUID = TF.ID
  158. WHERE
  159. TFG.VALUEFLAG = 1
  160. AND TF.VALUEFLAG = 1
  161. AND TFG.TESTFORMGUID = @TESTFORMGUID@
  162. ),
  163. --取注浆信息
  164. GROUTING AS
  165. (
  166. SELECT
  167. GDD.BARCODE,
  168. GDD.GOODSCODE,
  169. GLT.GOODSLEVELTYPENAME,
  170. GDD.GROUTINGDATE,
  171. GDD.GROUTINGLINECODE,
  172. GDD.MOULDCODE,
  173. GDD.USERCODE,
  174. GDD.DELIVERTIME,
  175. GDD.SCRAPFLAG,
  176. GDD.SPECIALREPAIRFLAG
  177. FROM
  178. GOODS
  179. LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GOODS.BARCODE = GDD.BARCODE
  180. LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT ON GDD.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID
  181. ),
  182. --取生产数据
  183. PRODUCTIONDATA AS
  184. (
  185. SELECT
  186. P.*
  187. FROM
  188. GOODS G
  189. LEFT JOIN TP_PM_PRODUCTIONDATA P ON P.BARCODE = G.BARCODE
  190. WHERE
  191. P.VALUEFLAG = 1
  192. ),
  193. --取工序信息
  194. PROCEDUREDATA AS
  195. (
  196. SELECT
  197. P.PRODUCTIONDATAID,
  198. P.BARCODE,
  199. P.PROCEDURENAME,
  200. P.USERCODE,
  201. P.ISREFIRE,
  202. P.ISREWORKED
  203. FROM
  204. PRODUCTIONDATA P
  205. WHERE
  206. P.PRODUCTIONDATAID IN (SELECT MAX( MID.PRODUCTIONDATAID ) FROM PRODUCTIONDATA MID GROUP BY MID.BARCODE)
  207. GROUP BY
  208. P.PRODUCTIONDATAID,
  209. P.BARCODE,
  210. P.PROCEDURENAME,
  211. P.USERCODE,
  212. P.ISREFIRE,
  213. P.ISREWORKED
  214. ),
  215. --取半检信息(一检 88:3#交坯 91:3#毛坯库入)
  216. SEMICHECK1 AS
  217. (
  218. SELECT
  219. S.BARCODE,
  220. LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY S.BARCODE) AS DEFECTNAME
  221. FROM
  222. GOODS G
  223. LEFT JOIN TP_PM_SEMICHECK S ON S.BARCODE = G.BARCODE
  224. LEFT JOIN TP_PM_SEMICHECKDEFECT D ON D.SEMICHECKID = S.SEMICHECKID
  225. WHERE
  226. S.VALUEFLAG = 1
  227. AND D.VALUEFLAG = 1
  228. AND S.PROCEDUREID IN (88,91)
  229. GROUP BY
  230. S.BARCODE
  231. ),
  232. --取半检信息(二检 117:3#二检[半检])
  233. SEMICHECK2 AS
  234. (
  235. SELECT
  236. S.BARCODE,
  237. LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY S.BARCODE) AS DEFECTNAME
  238. FROM
  239. GOODS G
  240. LEFT JOIN TP_PM_SEMICHECK S ON S.BARCODE = G.BARCODE
  241. LEFT JOIN TP_PM_SEMICHECKDEFECT D ON D.SEMICHECKID = S.SEMICHECKID
  242. WHERE
  243. S.VALUEFLAG = 1
  244. AND D.VALUEFLAG = 1
  245. AND S.PROCEDUREID IN (117)
  246. GROUP BY
  247. S.BARCODE
  248. ),
  249. --取成检信息
  250. PRODUCTIONCHECK AS
  251. (
  252. SELECT
  253. P.BARCODE,
  254. LISTAGG(TO_CHAR(D.DEFECTNAME) || '_' ||TO_CHAR(D.DEFECTPOSITIONNAME), ',') WITHIN GROUP (ORDER BY P.BARCODE) AS DEFECTNAME
  255. FROM
  256. GOODS G
  257. --3#质量登记 105
  258. INNER JOIN PRODUCTIONDATA P ON G.BARCODE = P.BARCODE AND P.PROCEDUREID = 105
  259. LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT ON P.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID
  260. LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
  261. WHERE
  262. D.VALUEFLAG = 1
  263. GROUP BY
  264. P.BARCODE
  265. ),
  266. --取入窑信息
  267. KILN AS
  268. (
  269. SELECT
  270. P.BARCODE,
  271. P.KILNCODE,
  272. P.KILNCARCODE,
  273. P.CREATETIME
  274. FROM
  275. GOODS G
  276. --3#入窑 102
  277. INNER JOIN PRODUCTIONDATA P ON G.BARCODE = P.BARCODE AND P.PROCEDUREID = 102
  278. )
  279. SELECT
  280. DISTINCT
  281. G.GUID,
  282. G.GUID AS SID,
  283. G.TESTFORMGUID,
  284. G.NAME,
  285. GR.GOODSCODE,
  286. GR.GOODSLEVELTYPENAME AS LASTLEVEL,
  287. GR.GROUTINGDATE,
  288. GR.GROUTINGLINECODE,
  289. GR.MOULDCODE,
  290. GR.DELIVERTIME,
  291. GR.SCRAPFLAG,
  292. GR.SPECIALREPAIRFLAG,
  293. P.PRODUCTIONDATAID,
  294. P.BARCODE,
  295. P.PROCEDURENAME,
  296. P.USERCODE,
  297. P.ISREFIRE,
  298. P.ISREWORKED,
  299. K.KILNCODE,
  300. K.KILNCARCODE,
  301. K.CREATETIME AS KILNCREATETIME,
  302. SC1.DEFECTNAME AS SEMICHECK1DEFECT,
  303. SC2.DEFECTNAME AS SEMICHECK2DEFECT,
  304. PC.DEFECTNAME AS CHECKDEFECT
  305. FROM
  306. GOODS G
  307. LEFT JOIN GROUTING GR ON GR.BARCODE = G.BARCODE
  308. LEFT JOIN SEMICHECK1 SC1 ON SC1.BARCODE = G.BARCODE
  309. LEFT JOIN SEMICHECK2 SC2 ON SC2.BARCODE = G.BARCODE
  310. LEFT JOIN PROCEDUREDATA P ON P.BARCODE = G.BARCODE
  311. LEFT JOIN PRODUCTIONCHECK PC ON PC.BARCODE = G.BARCODE
  312. LEFT JOIN KILN K ON K.BARCODE = G.BARCODE
  313. ";
  314. List<CDAParameter> sqlPara = new List<CDAParameter>();
  315. sqlPara.Add(new CDAParameter("TESTFORMGUID", HttpContext.Current.Request["TESTFORMGUID"]));
  316. //sqlPara.Add(new CDAParameter("ACCOUNTID", HttpContext.Current.Session["accountId"]));
  317. //sqlPara.Add(new CDAParameter("CREATEUSERID", HttpContext.Current.Session["userId"]));
  318. //暂时开放所有权限
  319. //sqlPara.Add(new CDAParameter("RIGHT", right));
  320. //if(!string.IsNullOrEmpty(form["GUID"]))
  321. //{
  322. // sqlStr += " AND m.GUID = @GUID@ ";
  323. // sqlPara.Add(new CDAParameter("GUID", form["GUID"]));
  324. //}
  325. //if(sort != "")
  326. //{
  327. // sqlStr += " ORDER BY " + sort + " " + order;
  328. //}
  329. int total = 0;
  330. DataTable dt = conn.SelectPages(page, rows,out total, sqlStr, sqlPara.ToArray());
  331. return new JsonResult(dt) { total = total}.ToJson();
  332. }
  333. }
  334. /// <summary>
  335. /// 详细 TP_PM_TESTFORM2_GOODS
  336. /// </summary>
  337. /// <returns>json</returns>
  338. private string detail()
  339. {
  340. using(IDataAccess conn= DataAccess.Create())
  341. {
  342. DataTable dt = conn.ExecuteDatatable(@"
  343. SELECT
  344. m.GUID,
  345. m.TESTFORMGUID,
  346. m.BARCODE,
  347. m.VALUEFLAG,
  348. m.ACCOUNTID,
  349. m.CREATEUSERID,
  350. m.CREATETIME,
  351. m.UPDATEUSERID,
  352. m.UPDATETIME
  353. FROM
  354. TP_PM_TESTFORM2_GOODS m
  355. LEFT JOIN
  356. TP_PM_GROUTINGDAILYDETAIL GDD
  357. ON m.BARCODE = GDD.BARCODE
  358. WHERE
  359. m.VALUEFLAG = '1'
  360. AND m.ACCOUNTID = @ACCOUNTID@
  361. AND m.GUID = @GUID@
  362. ",
  363. new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
  364. new CDAParameter("GUID",HttpContext.Current.Request["id"])
  365. );
  366. return new JsonResult(dt).ToJson();
  367. }
  368. }
  369. /// <summary>
  370. /// 插入 TP_PM_TESTFORM2_GOODS
  371. /// </summary>
  372. /// <returns>json</returns>
  373. private string insert(NameValueCollection form)
  374. {
  375. using(IDataAccess conn= DataAccess.Create())
  376. {
  377. //添加产品处理
  378. object result0 = conn.ExecuteScalar(@"
  379. SELECT DISTINCT 1 FROM TP_PM_TESTFORM2_GOODS WHERE TESTFORMGUID = @TESTFORMID@ AND BARCODE =@BARCODE@ AND VALUEFLAG = 1
  380. ",
  381. new CDAParameter("BARCODE", form["BARCODE"]),
  382. new CDAParameter("TESTFORMID", form["TESTFORMGUID"])
  383. );
  384. string str = result0 + "";
  385. if (str == "1")
  386. {
  387. return new JsonResult(JsonStatus.otherError){ success = false, message = "条码重复", total = 0, rows = "" }.ToJson();
  388. }
  389. object result1 = conn.ExecuteScalar(@"
  390. SELECT DISTINCT 1 FROM TP_PM_GROUTINGDAILYDETAIL WHERE BARCODE =@BARCODE@ AND VALUEFLAG = 1
  391. ",
  392. new CDAParameter("BARCODE", form["BARCODE"])
  393. ) ;
  394. string str1 = result1+ "";
  395. if (str1 == "")
  396. {
  397. return new JsonResult(JsonStatus.otherError){ success = false, message = "条码不存在", total = 0, rows = "" }.ToJson();
  398. }
  399. //string primaryKey = conn.GetSequenceNextval("SEQ_TP_PM_TESTFORM2_GOODS_ID").ToString();
  400. //string primaryKey = Guid.NewGuid().ToString().Replace("_", "");
  401. int result = conn.ExecuteNonQuery(@"
  402. INSERT INTO TP_PM_TESTFORM2_GOODS (
  403. TESTFORMGUID,
  404. BARCODE,
  405. ACCOUNTID,CREATEUSERID,UPDATEUSERID
  406. ) VALUES (
  407. @TESTFORMGUID@,
  408. @BARCODE@,
  409. @ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  410. )
  411. ",
  412. //new CDAParameter("GUID",primaryKey),
  413. new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
  414. new CDAParameter("BARCODE",form["BARCODE"]),
  415. new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
  416. new CDAParameter("CREATEUSERID",HttpContext.Current.Session["userId"]),
  417. new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"])
  418. );
  419. int resultup = conn.ExecuteNonQuery(@"
  420. UPDATE TP_PM_GROUTINGDAILYDETAIL
  421. SET
  422. TESTFORMFLAG =2
  423. WHERE
  424. BARCODE = @BARCODE@
  425. ",
  426. new CDAParameter("BARCODE",form["BARCODE"])
  427. );
  428. return new JsonResult(JsonStatus.success).ToJson();
  429. }
  430. }
  431. /// <summary>
  432. /// 更新 TP_PM_TESTFORM2_GOODS
  433. /// </summary>
  434. /// <returns>json</returns>
  435. private string update(NameValueCollection form)
  436. {
  437. using(IDataAccess conn=DataAccess.Create())
  438. {
  439. int result = conn.ExecuteNonQuery(@"
  440. UPDATE TP_PM_TESTFORM2_GOODS
  441. SET
  442. TESTFORMGUID = @TESTFORMGUID@,
  443. BARCODE = @BARCODE@,
  444. UPDATEUSERID = @UPDATEUSERID@,
  445. UPDATETIME = sysdate
  446. WHERE
  447. GUID = @GUID@
  448. ",
  449. new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
  450. new CDAParameter("BARCODE",form["BARCODE"]),
  451. new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"]),
  452. new CDAParameter("GUID",HttpContext.Current.Request["id"])
  453. );
  454. return new JsonResult(JsonStatus.success).ToJson();
  455. }
  456. }
  457. /// <summary>
  458. /// 删除 TP_PM_TESTFORM2_GOODS
  459. /// </summary>
  460. /// <returns>json</returns>
  461. private string delete()
  462. {
  463. using(IDataAccess conn= DataAccess.Create())
  464. {
  465. if (HttpContext.Current.Request["id"] is object)
  466. {
  467. string guidStr = "'" + HttpContext.Current.Request["id"].Replace(",", "','") + "'";
  468. DataTable dt = conn.ExecuteDatatable(@"
  469. SELECT
  470. BARCODE
  471. FROM
  472. TP_PM_TESTFORM2_GOODS
  473. WHERE
  474. GUID IN ( {GUID} )
  475. ".Replace("{GUID}", guidStr)
  476. );
  477. for (int i = 0; i < dt.Rows.Count; i++)
  478. {
  479. int resultup = conn.ExecuteNonQuery(@"
  480. UPDATE TP_PM_GROUTINGDAILYDETAIL
  481. SET
  482. TESTFORMFLAG =0
  483. WHERE
  484. BARCODE = @BARCODE@
  485. ",
  486. new CDAParameter("BARCODE", dt.Rows[i]["BARCODE"])
  487. );
  488. }
  489. //int result = conn.ExecuteNonQuery(@"
  490. // DELETE
  491. // TP_PM_TESTFORM2_GOODS
  492. // WHERE
  493. // INSTR(',' || @GUID@ || ',' , ',' || GUID || ',') > 0
  494. // ",
  495. // new CDAParameter("GUID", HttpContext.Current.Request["id"])
  496. //);
  497. int result = conn.ExecuteNonQuery(@"
  498. DELETE
  499. TP_PM_TESTFORM2_GOODS
  500. WHERE
  501. GUID IN ( {GUID} )
  502. ".Replace("{GUID}", guidStr)
  503. );
  504. return new JsonResult(JsonStatus.success).ToJson();
  505. }
  506. else
  507. {
  508. return new JsonResult(JsonStatus.otherError).ToJson();
  509. }
  510. }
  511. }
  512. /// <summary>
  513. /// 导出 TP_PM_TESTFORM2_GOODS
  514. /// </summary>
  515. /// <returns>json</returns>
  516. private string export()
  517. {
  518. return search(new NameValueCollection());
  519. }
  520. private class Button
  521. {
  522. public bool testformgoodsButtonIndex = false;
  523. public bool testformgoodsButtonInsert = false;
  524. public bool testformgoodsButtonInsertBatch = false;
  525. public bool testformgoodsButtonCopy = false;
  526. public bool testformgoodsButtonUpdate = false;
  527. public bool testformgoodsButtonDelete = false;
  528. public bool testformgoodsButtonCancel = false;
  529. public bool testformgoodsButtonSearch = false;
  530. public bool testformgoodsButtonDetail = false;
  531. public bool testformgoodsButtonCheckbox = false;
  532. public bool testformgoodsButtonExport = false;
  533. public bool testformgoodsButtonReload = false;
  534. }
  535. private class xRecord
  536. {
  537. public string sid { get; set; }
  538. public string TESTFORMGUID { get; set; }
  539. public string BARCODE { get; set; }
  540. }
  541. public bool IsReusable
  542. {
  543. get
  544. {
  545. return false;
  546. }
  547. }
  548. }