testformgoods.ashx 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  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.MODELTYPE IN (-1, -4, -5)
  259. AND P.CHECKBATCHNO = 1
  260. LEFT JOIN TP_SYS_GOODSLEVELTYPE GLT ON P.GOODSLEVELTYPEID = GLT.GOODSLEVELTYPEID
  261. LEFT JOIN TP_PM_DEFECT D ON P.PRODUCTIONDATAID = D.PRODUCTIONDATAID
  262. WHERE
  263. D.VALUEFLAG = 1
  264. GROUP BY
  265. P.BARCODE
  266. ),
  267. --取入窑信息
  268. KILN AS
  269. (
  270. SELECT
  271. P.BARCODE,
  272. P.KILNCODE,
  273. P.KILNCARCODE,
  274. P.CREATETIME
  275. FROM
  276. GOODS G
  277. --3#入窑 102
  278. INNER JOIN PRODUCTIONDATA P ON G.BARCODE = P.BARCODE AND P.PROCEDUREID = 102
  279. )
  280. SELECT
  281. DISTINCT
  282. G.GUID,
  283. G.GUID AS SID,
  284. G.TESTFORMGUID,
  285. G.NAME,
  286. GR.GOODSCODE,
  287. GR.GOODSLEVELTYPENAME AS LASTLEVEL,
  288. GR.GROUTINGDATE,
  289. GR.GROUTINGLINECODE,
  290. GR.MOULDCODE,
  291. GR.DELIVERTIME,
  292. GR.SCRAPFLAG,
  293. GR.SPECIALREPAIRFLAG,
  294. P.PRODUCTIONDATAID,
  295. P.BARCODE,
  296. P.PROCEDURENAME,
  297. P.USERCODE,
  298. P.ISREFIRE,
  299. P.ISREWORKED,
  300. K.KILNCODE,
  301. K.KILNCARCODE,
  302. K.CREATETIME AS KILNCREATETIME,
  303. SC1.DEFECTNAME AS SEMICHECK1DEFECT,
  304. SC2.DEFECTNAME AS SEMICHECK2DEFECT,
  305. PC.DEFECTNAME AS CHECKDEFECT
  306. FROM
  307. GOODS G
  308. LEFT JOIN GROUTING GR ON GR.BARCODE = G.BARCODE
  309. LEFT JOIN SEMICHECK1 SC1 ON SC1.BARCODE = G.BARCODE
  310. LEFT JOIN SEMICHECK2 SC2 ON SC2.BARCODE = G.BARCODE
  311. LEFT JOIN PROCEDUREDATA P ON P.BARCODE = G.BARCODE
  312. LEFT JOIN PRODUCTIONCHECK PC ON PC.BARCODE = G.BARCODE
  313. LEFT JOIN KILN K ON K.BARCODE = G.BARCODE
  314. ";
  315. List<CDAParameter> sqlPara = new List<CDAParameter>();
  316. sqlPara.Add(new CDAParameter("TESTFORMGUID", HttpContext.Current.Request["TESTFORMGUID"]));
  317. //sqlPara.Add(new CDAParameter("ACCOUNTID", HttpContext.Current.Session["accountId"]));
  318. //sqlPara.Add(new CDAParameter("CREATEUSERID", HttpContext.Current.Session["userId"]));
  319. //暂时开放所有权限
  320. //sqlPara.Add(new CDAParameter("RIGHT", right));
  321. //if(!string.IsNullOrEmpty(form["GUID"]))
  322. //{
  323. // sqlStr += " AND m.GUID = @GUID@ ";
  324. // sqlPara.Add(new CDAParameter("GUID", form["GUID"]));
  325. //}
  326. //if(sort != "")
  327. //{
  328. // sqlStr += " ORDER BY " + sort + " " + order;
  329. //}
  330. int total = 0;
  331. DataTable dt = conn.SelectPages(page, rows,out total, sqlStr, sqlPara.ToArray());
  332. return new JsonResult(dt) { total = total}.ToJson();
  333. }
  334. }
  335. /// <summary>
  336. /// 详细 TP_PM_TESTFORM2_GOODS
  337. /// </summary>
  338. /// <returns>json</returns>
  339. private string detail()
  340. {
  341. using(IDataAccess conn= DataAccess.Create())
  342. {
  343. DataTable dt = conn.ExecuteDatatable(@"
  344. SELECT
  345. m.GUID,
  346. m.TESTFORMGUID,
  347. m.BARCODE,
  348. m.VALUEFLAG,
  349. m.ACCOUNTID,
  350. m.CREATEUSERID,
  351. m.CREATETIME,
  352. m.UPDATEUSERID,
  353. m.UPDATETIME
  354. FROM
  355. TP_PM_TESTFORM2_GOODS m
  356. LEFT JOIN
  357. TP_PM_GROUTINGDAILYDETAIL GDD
  358. ON m.BARCODE = GDD.BARCODE
  359. WHERE
  360. m.VALUEFLAG = '1'
  361. AND m.ACCOUNTID = @ACCOUNTID@
  362. AND m.GUID = @GUID@
  363. ",
  364. new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
  365. new CDAParameter("GUID",HttpContext.Current.Request["id"])
  366. );
  367. return new JsonResult(dt).ToJson();
  368. }
  369. }
  370. /// <summary>
  371. /// 插入 TP_PM_TESTFORM2_GOODS
  372. /// </summary>
  373. /// <returns>json</returns>
  374. private string insert(NameValueCollection form)
  375. {
  376. using(IDataAccess conn= DataAccess.Create())
  377. {
  378. //添加产品处理
  379. object result0 = conn.ExecuteScalar(@"
  380. SELECT DISTINCT 1 FROM TP_PM_TESTFORM2_GOODS WHERE TESTFORMGUID = @TESTFORMID@ AND BARCODE =@BARCODE@ AND VALUEFLAG = 1
  381. ",
  382. new CDAParameter("BARCODE", form["BARCODE"]),
  383. new CDAParameter("TESTFORMID", form["TESTFORMGUID"])
  384. );
  385. string str = result0 + "";
  386. if (str == "1")
  387. {
  388. return new JsonResult(JsonStatus.otherError){ success = false, message = "条码重复", total = 0, rows = "" }.ToJson();
  389. }
  390. object result1 = conn.ExecuteScalar(@"
  391. SELECT DISTINCT 1 FROM TP_PM_GROUTINGDAILYDETAIL WHERE BARCODE =@BARCODE@ AND VALUEFLAG = 1
  392. ",
  393. new CDAParameter("BARCODE", form["BARCODE"])
  394. ) ;
  395. string str1 = result1+ "";
  396. if (str1 == "")
  397. {
  398. return new JsonResult(JsonStatus.otherError){ success = false, message = "条码不存在", total = 0, rows = "" }.ToJson();
  399. }
  400. //string primaryKey = conn.GetSequenceNextval("SEQ_TP_PM_TESTFORM2_GOODS_ID").ToString();
  401. //string primaryKey = Guid.NewGuid().ToString().Replace("_", "");
  402. int result = conn.ExecuteNonQuery(@"
  403. INSERT INTO TP_PM_TESTFORM2_GOODS (
  404. TESTFORMGUID,
  405. BARCODE,
  406. ACCOUNTID,CREATEUSERID,UPDATEUSERID
  407. ) VALUES (
  408. @TESTFORMGUID@,
  409. @BARCODE@,
  410. @ACCOUNTID@,@CREATEUSERID@,@UPDATEUSERID@
  411. )
  412. ",
  413. //new CDAParameter("GUID",primaryKey),
  414. new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
  415. new CDAParameter("BARCODE",form["BARCODE"]),
  416. new CDAParameter("ACCOUNTID",HttpContext.Current.Session["accountId"]),
  417. new CDAParameter("CREATEUSERID",HttpContext.Current.Session["userId"]),
  418. new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"])
  419. );
  420. int resultup = conn.ExecuteNonQuery(@"
  421. UPDATE TP_PM_GROUTINGDAILYDETAIL
  422. SET
  423. TESTFORMFLAG =2
  424. WHERE
  425. BARCODE = @BARCODE@
  426. ",
  427. new CDAParameter("BARCODE",form["BARCODE"])
  428. );
  429. return new JsonResult(JsonStatus.success).ToJson();
  430. }
  431. }
  432. /// <summary>
  433. /// 更新 TP_PM_TESTFORM2_GOODS
  434. /// </summary>
  435. /// <returns>json</returns>
  436. private string update(NameValueCollection form)
  437. {
  438. using(IDataAccess conn=DataAccess.Create())
  439. {
  440. int result = conn.ExecuteNonQuery(@"
  441. UPDATE TP_PM_TESTFORM2_GOODS
  442. SET
  443. TESTFORMGUID = @TESTFORMGUID@,
  444. BARCODE = @BARCODE@,
  445. UPDATEUSERID = @UPDATEUSERID@,
  446. UPDATETIME = sysdate
  447. WHERE
  448. GUID = @GUID@
  449. ",
  450. new CDAParameter("TESTFORMGUID",form["TESTFORMGUID"]),
  451. new CDAParameter("BARCODE",form["BARCODE"]),
  452. new CDAParameter("UPDATEUSERID",HttpContext.Current.Session["userId"]),
  453. new CDAParameter("GUID",HttpContext.Current.Request["id"])
  454. );
  455. return new JsonResult(JsonStatus.success).ToJson();
  456. }
  457. }
  458. /// <summary>
  459. /// 删除 TP_PM_TESTFORM2_GOODS
  460. /// </summary>
  461. /// <returns>json</returns>
  462. private string delete()
  463. {
  464. using(IDataAccess conn= DataAccess.Create())
  465. {
  466. if (HttpContext.Current.Request["id"] is object)
  467. {
  468. string guidStr = "'" + HttpContext.Current.Request["id"].Replace(",", "','") + "'";
  469. DataTable dt = conn.ExecuteDatatable(@"
  470. SELECT
  471. BARCODE
  472. FROM
  473. TP_PM_TESTFORM2_GOODS
  474. WHERE
  475. GUID IN ( {GUID} )
  476. ".Replace("{GUID}", guidStr)
  477. );
  478. for (int i = 0; i < dt.Rows.Count; i++)
  479. {
  480. int resultup = conn.ExecuteNonQuery(@"
  481. UPDATE TP_PM_GROUTINGDAILYDETAIL
  482. SET
  483. TESTFORMFLAG =0
  484. WHERE
  485. BARCODE = @BARCODE@
  486. ",
  487. new CDAParameter("BARCODE", dt.Rows[i]["BARCODE"])
  488. );
  489. }
  490. //int result = conn.ExecuteNonQuery(@"
  491. // DELETE
  492. // TP_PM_TESTFORM2_GOODS
  493. // WHERE
  494. // INSTR(',' || @GUID@ || ',' , ',' || GUID || ',') > 0
  495. // ",
  496. // new CDAParameter("GUID", HttpContext.Current.Request["id"])
  497. //);
  498. int result = conn.ExecuteNonQuery(@"
  499. DELETE
  500. TP_PM_TESTFORM2_GOODS
  501. WHERE
  502. GUID IN ( {GUID} )
  503. ".Replace("{GUID}", guidStr)
  504. );
  505. return new JsonResult(JsonStatus.success).ToJson();
  506. }
  507. else
  508. {
  509. return new JsonResult(JsonStatus.otherError).ToJson();
  510. }
  511. }
  512. }
  513. /// <summary>
  514. /// 导出 TP_PM_TESTFORM2_GOODS
  515. /// </summary>
  516. /// <returns>json</returns>
  517. private string export()
  518. {
  519. return search(new NameValueCollection());
  520. }
  521. private class Button
  522. {
  523. public bool testformgoodsButtonIndex = false;
  524. public bool testformgoodsButtonInsert = false;
  525. public bool testformgoodsButtonInsertBatch = false;
  526. public bool testformgoodsButtonCopy = false;
  527. public bool testformgoodsButtonUpdate = false;
  528. public bool testformgoodsButtonDelete = false;
  529. public bool testformgoodsButtonCancel = false;
  530. public bool testformgoodsButtonSearch = false;
  531. public bool testformgoodsButtonDetail = false;
  532. public bool testformgoodsButtonCheckbox = false;
  533. public bool testformgoodsButtonExport = false;
  534. public bool testformgoodsButtonReload = false;
  535. }
  536. private class xRecord
  537. {
  538. public string sid { get; set; }
  539. public string TESTFORMGUID { get; set; }
  540. public string BARCODE { get; set; }
  541. }
  542. public bool IsReusable
  543. {
  544. get
  545. {
  546. return false;
  547. }
  548. }
  549. }