warehouse.ashx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. <%@ WebHandler Language="C#" Class="warehouse" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Data;
  6. using System.Text;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. using Curtain.DataAccess;
  12. using DK.XuWei.WebMes;
  13. public class warehouse : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. int h = Convert.ToInt32(DateTime.Now.ToString("HH"));
  19. string StartTime;
  20. string EndTime;
  21. if (h > 7)
  22. {
  23. int d = Convert.ToInt32(DateTime.Now.ToString("dd"));
  24. StartTime = DateTime.Now.ToString("yyyy-MM-dd") +" "+"07:00:00";
  25. EndTime = DateTime.Now.ToString("yyyy-MM") +"-"+(d + 1).ToString() +" "+ "06:59:59";
  26. }
  27. else
  28. {
  29. int d = Convert.ToInt32(DateTime.Now.ToString("dd"));
  30. StartTime = DateTime.Now.ToString("yyyy-MM") +"-"+(d - 1) +" "+ "07:00:00";
  31. EndTime = DateTime.Now.ToString("yyyy-MM-dd") +" "+"06:59:59";
  32. }
  33. using (IDataAccess conn = DataAccess.Create())
  34. {
  35. if (context.Request["m"].ToString() == "hx")
  36. {
  37. string sqlStr = @"SELECT
  38. T.CREATETIME AS 日期,
  39. CASE
  40. WHEN TT.包装数量 IS NULL THEN
  41. 0
  42. ELSE
  43. TT.包装数量
  44. END AS 包装数量
  45. FROM
  46. (
  47. SELECT
  48. ROWNUM id,
  49. C.包装数量,
  50. C.CREATETIME
  51. FROM(
  52. SELECT
  53. 0 包装数量,
  54. '19' AS CREATETIME
  55. FROM
  56. DUAL UNION ALL
  57. SELECT
  58. 0 包装数量,
  59. '20' AS CREATETIME
  60. FROM
  61. DUAL UNION ALL
  62. SELECT
  63. 0 包装数量,
  64. '21' AS CREATETIME
  65. FROM
  66. DUAL UNION ALL
  67. SELECT
  68. 0 包装数量,
  69. '22' AS CREATETIME
  70. FROM
  71. DUAL UNION ALL
  72. SELECT
  73. 0 包装数量,
  74. '23' AS CREATETIME
  75. FROM
  76. DUAL UNION ALL
  77. SELECT
  78. 0 包装数量,
  79. '00' AS CREATETIME
  80. FROM
  81. DUAL UNION ALL
  82. SELECT
  83. 0 包装数量,
  84. '01' AS CREATETIME
  85. FROM
  86. DUAL UNION ALL
  87. SELECT
  88. 0 包装数量,
  89. '02' AS CREATETIME
  90. FROM
  91. DUAL UNION ALL
  92. SELECT
  93. 0 包装数量,
  94. '03' AS CREATETIME
  95. FROM
  96. DUAL UNION ALL
  97. SELECT
  98. 0 包装数量,
  99. '04' AS CREATETIME
  100. FROM
  101. DUAL UNION ALL
  102. SELECT
  103. 0 包装数量,
  104. '05' AS CREATETIME
  105. FROM
  106. DUAL UNION ALL
  107. SELECT
  108. 0 包装数量,
  109. '06' AS CREATETIME
  110. FROM
  111. DUAL )C
  112. ) T
  113. FULL JOIN (
  114. SELECT
  115. T2.CREATETIME,
  116. COUNT( * ) 包装数量
  117. FROM
  118. (
  119. SELECT
  120. SUBSTR( TO_CHAR( TPP.CREATETIME, 'yyyy-mm-dd hh24:mi:ss' ), 12, 2 ) AS CREATETIME
  121. FROM
  122. TP_PM_PRODUCTIONDATA TPP
  123. WHERE
  124. TPP.PROCEDUREID IN ( 107 )
  125. AND TPP.VALUEFLAG = 1
  126. AND TPP.CREATETIME >= trunc(sysdate)-1+18/24
  127. AND TPP.CREATETIME <= trunc(sysdate)+7/24
  128. ) T2
  129. GROUP BY
  130. T2.CREATETIME
  131. ORDER BY
  132. T2.CREATETIME
  133. ) TT ON T.CREATETIME = TT.CREATETIME WHERE T.CREATETIME IS NOT NULL ORDER BY T.id ASC";
  134. //直接获取不分页数据
  135. DataTable dt = conn.ExecuteDatatable(sqlStr);
  136. string jsonStr = new JsonResult(dt).ToJson();
  137. context.Response.Write(jsonStr);
  138. }
  139. if (context.Request["m"].ToString() == "h")
  140. {
  141. string sqlStr = @"SELECT
  142. T.CREATETIME AS 日期,
  143. CASE
  144. WHEN TT.包装数量 IS NULL THEN
  145. 0
  146. ELSE
  147. TT.包装数量
  148. END AS 包装数量
  149. FROM
  150. (
  151. SELECT
  152. 0 包装数量,
  153. '07' AS CREATETIME
  154. FROM
  155. DUAL UNION ALL
  156. SELECT
  157. 0 包装数量,
  158. '08' AS CREATETIME
  159. FROM
  160. DUAL UNION ALL
  161. SELECT
  162. 0 包装数量,
  163. '09' AS CREATETIME
  164. FROM
  165. DUAL UNION ALL
  166. SELECT
  167. 0 包装数量,
  168. '10' AS CREATETIME
  169. FROM
  170. DUAL UNION ALL
  171. SELECT
  172. 0 包装数量,
  173. '11' AS CREATETIME
  174. FROM
  175. DUAL UNION ALL
  176. SELECT
  177. 0 包装数量,
  178. '12' AS CREATETIME
  179. FROM
  180. DUAL UNION ALL
  181. SELECT
  182. 0 包装数量,
  183. '13' AS CREATETIME
  184. FROM
  185. DUAL UNION ALL
  186. SELECT
  187. 0 包装数量,
  188. '14' AS CREATETIME
  189. FROM
  190. DUAL UNION ALL
  191. SELECT
  192. 0 包装数量,
  193. '15' AS CREATETIME
  194. FROM
  195. DUAL UNION ALL
  196. SELECT
  197. 0 包装数量,
  198. '16' AS CREATETIME
  199. FROM
  200. DUAL UNION ALL
  201. SELECT
  202. 0 包装数量,
  203. '17' AS CREATETIME
  204. FROM
  205. DUAL UNION ALL
  206. SELECT
  207. 0 包装数量,
  208. '18' AS CREATETIME
  209. FROM
  210. DUAL
  211. ) T
  212. FULL JOIN (
  213. SELECT
  214. T2.CREATETIME,
  215. COUNT( * ) 包装数量
  216. FROM
  217. (
  218. SELECT
  219. SUBSTR( TO_CHAR( TPP.CREATETIME, 'yyyy-mm-dd hh24:mi:ss' ), 12, 2 ) AS CREATETIME
  220. FROM
  221. TP_PM_PRODUCTIONDATA TPP
  222. WHERE
  223. TPP.PROCEDUREID IN ( 107 )
  224. AND TPP.VALUEFLAG = 1
  225. AND TPP.CREATETIME >= trunc(sysdate)+7/24
  226. AND TPP.CREATETIME <= trunc(sysdate)+18/24
  227. ) T2
  228. GROUP BY
  229. T2.CREATETIME
  230. ORDER BY
  231. T2.CREATETIME
  232. ) TT ON T.CREATETIME = TT.CREATETIME WHERE T.CREATETIME IS NOT NULL ORDER BY 日期 ASC";
  233. //直接获取不分页数据
  234. DataTable dt = conn.ExecuteDatatable(sqlStr);
  235. string jsonStr = new JsonResult(dt).ToJson();
  236. context.Response.Write(jsonStr);
  237. }
  238. if (context.Request["m"].ToString() == "defectw")
  239. {
  240. string sqlStr = @"SELECT T.name AS 缺陷位置,T.count AS 缺陷数量 FROM(
  241. SELECT
  242. TMDP.S_NAME name,
  243. COUNT( * ) count
  244. FROM
  245. TP_PM_DEFECT TPD
  246. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  247. LEFT JOIN TP_MST_DEFECTPOSITION TMDP ON TPD.DEFECTPOSITIONID = TMDP.DEFECTPOSITIONID
  248. WHERE
  249. TPD.CREATETIME >= TRUNC( SYSDATE )
  250. AND TPD.VALUEFLAG = 1
  251. AND TPD.PROCEDUREID IN (125)
  252. GROUP BY
  253. TMDP.S_NAME
  254. ORDER BY
  255. COUNT( * ) DESC)T WHERE ROWNUM < 4";
  256. //直接获取不分页数据
  257. DataTable dt = conn.ExecuteDatatable(sqlStr);
  258. string jsonStr = new JsonResult(dt).ToJson();
  259. context.Response.Write(jsonStr);
  260. }
  261. //成检缺陷位置扇形图
  262. if (context.Request["m"].ToString() == "defectw")
  263. {
  264. string sqlStr = @"SELECT T.name AS 缺陷位置,T.count AS 缺陷数量 FROM(
  265. SELECT
  266. TMDP.S_NAME name,
  267. COUNT( * ) count
  268. FROM
  269. TP_PM_DEFECT TPD
  270. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  271. LEFT JOIN TP_MST_DEFECTPOSITION TMDP ON TPD.DEFECTPOSITIONID = TMDP.DEFECTPOSITIONID
  272. WHERE
  273. TPD.CREATETIME >= TRUNC( SYSDATE )
  274. AND TPD.VALUEFLAG = 1
  275. AND TPD.PROCEDUREID IN (125)
  276. GROUP BY
  277. TMDP.S_NAME
  278. ORDER BY
  279. COUNT( * ) DESC)T WHERE ROWNUM < 4";
  280. //直接获取不分页数据
  281. DataTable dt = conn.ExecuteDatatable(sqlStr);
  282. string jsonStr = new JsonResult(dt).ToJson();
  283. context.Response.Write(jsonStr);
  284. }
  285. //包装工单
  286. if (context.Request["m"].ToString() == "gd")
  287. {
  288. string sqlStr = @" SELECT
  289. SUBSTR( T.CREATETIME, 5, 2 )||'.'||SUBSTR( T.CREATETIME, 7, 2 ) 时间,
  290. SUM(T.实际生产数量) 实际生产量,
  291. TO_CHAR(SUM(T.实际生产数量)/SUM(T.计划包装数) * 100,'9,990.00') || '%' 完成率
  292. FROM(
  293. SELECT
  294. to_char( dp.plandate, 'yyyymmdd' ) CREATETIME,
  295. CASE
  296. WHEN dpd.out_qty = 0 THEN
  297. NULL ELSE dpd.plan_qty
  298. END 计划包装数,
  299. dpd.MAKE_QTY 实际生产数量
  300. FROM
  301. tp_pack_dailyplandetail dpd
  302. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  303. LEFT JOIN tp_pack_dailyplan dp ON dpd.planid = dp.planid
  304. WHERE
  305. dpd.bz_plan_qty > 0
  306. AND dpd.MAKE_QTY > 0
  307. AND (dpd.plan_qty * 1.2) >= dpd.make_qty
  308. AND dpd.planid IN (
  309. SELECT
  310. dp.planid AS sid
  311. FROM
  312. tp_pack_dailyplan dp
  313. WHERE
  314. dp.valueflag = 1
  315. AND dp.accountid = 1
  316. AND dp.plandate >= TRUNC( SYSDATE-6 )
  317. )
  318. GROUP BY to_char( dp.plandate, 'yyyymmdd' ),dpd.out_qty,dpd.plan_qty,dpd.MAKE_QTY
  319. ORDER BY
  320. round( dpd.make_qty / dpd.plan_qty, 4 ) DESC )T GROUP BY T.CREATETIME ORDER BY T.CREATETIME ASC";
  321. //直接获取不分页数据
  322. DataTable dt = conn.ExecuteDatatable(sqlStr);
  323. string jsonStr = new JsonResult(dt).ToJson();
  324. context.Response.Write(jsonStr);
  325. }
  326. //成检缺陷扇形图
  327. if (context.Request["m"].ToString() == "defect")
  328. {
  329. string sqlStr = @"SELECT
  330. T.PACKINGDEFECT 缺陷名称,
  331. T.count 数量
  332. FROM(
  333. SELECT
  334. PACKINGDEFECT,
  335. COUNT( * ) count
  336. FROM
  337. TP_PM_PINGUANINSPECTION
  338. WHERE CREATETIME >= TRUNC( SYSDATE ) and
  339. PACKINGDEFECT IS NOT NULL
  340. GROUP BY
  341. PACKINGDEFECT
  342. ORDER BY
  343. count DESC) T WHERE ROWNUM < 4";
  344. //直接获取不分页数据
  345. DataTable dt = conn.ExecuteDatatable(sqlStr);
  346. string jsonStr = new JsonResult(dt).ToJson();
  347. context.Response.Write(jsonStr);
  348. }
  349. //车间设备状态扇形图
  350. if (context.Request["m"].ToString() == "defectb")
  351. {
  352. string sqlStr = @"SELECT
  353. T.S_NAME AS 缺陷名称,
  354. T.数量
  355. FROM
  356. (
  357. SELECT
  358. TMD.S_NAME,
  359. count( * ) AS 数量
  360. FROM
  361. TP_PM_DEFECT TPD
  362. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
  363. WHERE
  364. TPD.CREATETIME >= TRUNC( SYSDATE )
  365. AND TMD.DEFECTTYPEID IN ( 15,16,18,4 )
  366. GROUP BY
  367. TMD.S_NAME
  368. ORDER BY
  369. count( * ) DESC
  370. ) T
  371. WHERE
  372. ROWNUM < 4";
  373. //直接获取不分页数据
  374. DataTable dt = conn.ExecuteDatatable(sqlStr);
  375. string jsonStr = new JsonResult(dt).ToJson();
  376. context.Response.Write(jsonStr);
  377. }
  378. //本烧合格率折线图
  379. if (context.Request["m"].ToString() == "zx")
  380. {
  381. string sqlStr = @"SELECT
  382. TO_CHAR( TRUNC( T4.本烧合格 / T4.本烧数量,4) * 100, '9,999.99' ) || '%' AS 合格率,
  383. T4.本烧合格 as 本烧合格数,
  384. SUBSTR(T4.CREATETIME,5,2 )||'.'||SUBSTR(T4.CREATETIME,7,2 ) AS 日期
  385. FROM
  386. (
  387. SELECT
  388. T1.本烧数量,
  389. T2.本烧不合格数量,
  390. T1.本烧数量 - T2.本烧不合格数量 AS 本烧合格,
  391. T1.CREATETIME
  392. FROM
  393. (
  394. SELECT DISTINCT--本烧数量
  395. COUNT( TPPD.BARCODE ) 本烧数量,
  396. to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME
  397. FROM
  398. TP_PM_PRODUCTIONDATA TPPD
  399. INNER JOIN TP_PM_GROUTINGDAILYDETAIL PGD ON PGD.BARCODE = TPPD.BARCODE
  400. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPGL.GROUTINGLINEID = PGD.GROUTINGLINEID
  401. WHERE
  402. TPPD.PROCEDUREID IN ( 104 )
  403. AND TPPD.ISREFIRE = 0
  404. AND PGD.TESTFLAG = 0
  405. AND TPPD.VALUEFLAG = 1
  406. --AND TPPD.checkflag = '1'
  407. AND TPPD.CREATETIME >= trunc( SYSDATE - 6 )
  408. GROUP BY
  409. to_char( TPPD.CREATETIME, 'yyyymmdd' )
  410. ORDER BY
  411. to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC
  412. ) T1
  413. LEFT JOIN (
  414. SELECT
  415. to_char( T1.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
  416. COUNT( T1.BARCODE ) AS 本烧不合格数量
  417. FROM
  418. (
  419. SELECT DISTINCT
  420. T.BARCODE,
  421. TPPD.CREATETIME
  422. FROM
  423. TP_PM_PRODUCTIONDATA TPPD
  424. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  425. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  426. LEFT JOIN (
  427. SELECT
  428. DISTINCT
  429. TPPD.BARCODE
  430. FROM
  431. TP_PM_PRODUCTIONDATA TPPD
  432. LEFT JOIN TP_PC_GROUTINGLINE TPGL ON TPPD.GROUTINGLINEID = TPGL.GROUTINGLINEID
  433. LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
  434. LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTCODE = TMD.DEFECTCODE
  435. WHERE
  436. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  437. AND TPPD.GOODSLEVELID IN ( 6, 7 )
  438. AND TPPD.CHECKBATCHNO = 1
  439. AND TPGL.TESTFLAG = 0
  440. AND TMD.DEFECTTYPEID <> 14
  441. AND TPPD.VALUEFLAG = 1
  442. AND TPD.DEFECTNAME IS NOT NULL
  443. --AND TPPD.ISREFIRE = 0
  444. ) T ON T.BARCODE = TPPD.BARCODE
  445. WHERE
  446. TPPD.CHECKTIME >= trunc( SYSDATE - 6 )
  447. AND TPPD.PROCEDUREID IN ( 104 )
  448. AND length( TPPD.kilncarbatchno ) > 0
  449. AND TPGL.TESTFLAG = 0
  450. AND TPPD.VALUEFLAG = 1
  451. AND TPPD.ISREFIRE = 0
  452. AND TPD.DEFECTNAME IS NOT NULL
  453. ) T1
  454. GROUP BY
  455. to_char( T1.CREATETIME, 'yyyymmdd' )
  456. ORDER BY
  457. to_char( T1.CREATETIME, 'yyyymmdd' ) DESC
  458. ) T2 ON T2.CREATETIME = T1.CREATETIME
  459. ORDER BY
  460. CREATETIME DESC)T4 ORDER BY T4.CREATETIME";
  461. //直接获取不分页数据
  462. DataTable dt = conn.ExecuteDatatable(sqlStr);
  463. string jsonStr = new JsonResult(dt).ToJson();
  464. context.Response.Write(jsonStr);
  465. }
  466. //包装产线table
  467. if (context.Request["m"].ToString() == "MonthTable")
  468. {
  469. string sqlStr = @"SELECT
  470. TMG.MATERIALREMARK 物料描述,
  471. COUNT( * ) 产量
  472. FROM
  473. TP_PM_PRODUCTIONDATA TPP
  474. LEFT JOIN TP_MST_GOODS TMG ON TPP.GOODSCODE = TMG.GOODSCODE
  475. WHERE
  476. TPP.CREATETIME >= TRUNC( SYSDATE )
  477. AND TPP.PROCEDUREID = 125
  478. GROUP BY
  479. TMG.MATERIALREMARK
  480. ORDER BY
  481. 产量 DESC
  482. ";
  483. //直接获取不分页数据
  484. DataTable dt = conn.ExecuteDatatable(sqlStr);
  485. string jsonStr = new JsonResult(dt).ToJson();
  486. context.Response.Write(jsonStr);
  487. }
  488. }
  489. //取产品库存列表
  490. if(context.Request["m"]=="isfull" && context.Request["isfull"] is object)
  491. {
  492. string jsonStr = QianRunApi.GetGoodsCode("","",context.Request["isfull"]);
  493. jsonStr = jsonStr.Replace("\"GoodsType\"", "\"产品型号\"");
  494. jsonStr = jsonStr.Replace("\"GoodsSeries\"", "\"产品类型\"");
  495. jsonStr = jsonStr.Replace("\"GoodsCount\"", "\"产品数量\"");
  496. context.Response.Write(jsonStr);
  497. }
  498. //取产品库位列表
  499. if(context.Request["m"]=="all")
  500. {
  501. int isFull = context.Request["allFull"] is object ? Convert.ToInt32(context.Request["allFull"].ToString()) : 0;
  502. string jsonStr = QianRunApi.GetStorageStatus(isFull);
  503. context.Response.Write(jsonStr);
  504. }
  505. //获取正在出库的产品
  506. if(context.Request["m"] == "outing")
  507. {
  508. using (IDataAccess conn = DataAccess.Create())
  509. {
  510. DataTable dt = conn.ExecuteDatatable(@"
  511. SELECT
  512. G.GOODSCODE,
  513. B.MATNR,
  514. F.STATUS
  515. FROM
  516. TP_MST_PACKINGFORM F
  517. LEFT JOIN TP_MST_PACKINGBOM B ON B.PACKINGBOMID = F.PACKINGBOMID
  518. LEFT JOIN TP_MST_GOODS G ON G.GOODSID = B.GOODSID
  519. WHERE
  520. STATUS = '1'
  521. OR STATUS = '0'
  522. ORDER BY
  523. STATUS ASC
  524. ");
  525. context.Response.Write(new JsonResult(dt).ToJson());
  526. }
  527. }
  528. }
  529. public bool IsReusable
  530. {
  531. get
  532. {
  533. return false;
  534. }
  535. }
  536. }