rpt.ashx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. <%@ WebHandler Language="C#" Class="rpt" %>
  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 rpt : IHttpHandler, IReadOnlySessionState
  14. {
  15. public void ProcessRequest(HttpContext context)
  16. {
  17. context.Response.ContentType = "text/plain";
  18. using (IDataAccess conn = DataAccess.Create())
  19. {
  20. //成型月度计划
  21. if (context.Request["m"].ToString() == "cx")
  22. {
  23. string sqlStr = @"
  24. SELECT
  25. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  26. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  27. ELSE
  28. T.GOODSTYPENAME
  29. END 产品类别,
  30. SUM(T.plan_qty) 成型计划数,
  31. sum(T.make_qty) 成型达成数,
  32. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  33. FROM(
  34. SELECT
  35. mg.GOODSTYPEID,
  36. TMGP.GOODSTYPENAME,
  37. mdd.plan_qty,
  38. mdd.make_qty
  39. FROM
  40. tp_mould_dailyplandetail mdd
  41. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  42. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  43. WHERE
  44. mdd.valueflag = 1
  45. AND mg.GOODSTYPEID IN (3)
  46. AND mdd.MAKE_QTY > 0
  47. AND mdd.plandate < TRUNC( SYSDATE )
  48. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  49. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME UNION ALL
  50. SELECT
  51. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  52. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  53. ELSE
  54. T.GOODSTYPENAME
  55. END 产品类别,
  56. SUM(T.plan_qty) 成型计划数,
  57. sum(T.make_qty) 成型达成数,
  58. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  59. FROM(
  60. SELECT
  61. mg.GOODSTYPEID,
  62. TMGP.GOODSTYPENAME,
  63. mdd.plan_qty,
  64. mdd.make_qty
  65. FROM
  66. tp_mould_dailyplandetail mdd
  67. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  68. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  69. WHERE
  70. mdd.valueflag = 1
  71. AND mg.GOODSTYPEID IN (18)
  72. AND mdd.MAKE_QTY > 0
  73. AND mdd.plandate < TRUNC( SYSDATE )
  74. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  75. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME UNION ALL
  76. SELECT
  77. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  78. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  79. ELSE
  80. T.GOODSTYPENAME
  81. END 产品类别,
  82. SUM(T.plan_qty) 成型计划数,
  83. sum(T.make_qty) 成型达成数,
  84. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  85. FROM(
  86. SELECT
  87. mg.GOODSTYPEID,
  88. TMGP.GOODSTYPENAME,
  89. mdd.plan_qty,
  90. mdd.make_qty
  91. FROM
  92. tp_mould_dailyplandetail mdd
  93. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  94. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  95. WHERE
  96. mdd.valueflag = 1
  97. AND mg.GOODSTYPEID IN (7)
  98. AND mdd.MAKE_QTY > 0
  99. AND mdd.plandate < TRUNC( SYSDATE )
  100. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  101. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME UNION ALL
  102. SELECT
  103. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  104. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  105. ELSE
  106. T.GOODSTYPENAME
  107. END 产品类别,
  108. SUM(T.plan_qty) 成型计划数,
  109. sum(T.make_qty) 成型达成数,
  110. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  111. FROM(
  112. SELECT
  113. mg.GOODSTYPEID,
  114. TMGP.GOODSTYPENAME,
  115. mdd.plan_qty,
  116. mdd.make_qty
  117. FROM
  118. tp_mould_dailyplandetail mdd
  119. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  120. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  121. WHERE
  122. mdd.valueflag = 1
  123. AND mg.GOODSTYPEID IN (6)
  124. AND mdd.MAKE_QTY > 0
  125. AND mdd.plandate < TRUNC( SYSDATE )
  126. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  127. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME UNION ALL
  128. SELECT
  129. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  130. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  131. ELSE
  132. T.GOODSTYPENAME
  133. END 产品类别,
  134. SUM(T.plan_qty) 成型计划数,
  135. sum(T.make_qty) 成型达成数,
  136. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  137. FROM(
  138. SELECT
  139. mg.GOODSTYPEID,
  140. TMGP.GOODSTYPENAME,
  141. mdd.plan_qty,
  142. mdd.make_qty
  143. FROM
  144. tp_mould_dailyplandetail mdd
  145. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  146. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  147. WHERE
  148. mdd.valueflag = 1
  149. AND mg.GOODSTYPEID IN (12)
  150. AND mdd.MAKE_QTY > 0
  151. AND mdd.plandate < TRUNC( SYSDATE )
  152. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  153. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME UNION ALL
  154. SELECT
  155. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  156. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  157. ELSE
  158. T.GOODSTYPENAME
  159. END 产品类别,
  160. SUM(T.plan_qty) 成型计划数,
  161. sum(T.make_qty) 成型达成数,
  162. to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
  163. FROM(
  164. SELECT
  165. mg.GOODSTYPEID,
  166. TMGP.GOODSTYPENAME,
  167. mdd.plan_qty,
  168. mdd.make_qty
  169. FROM
  170. tp_mould_dailyplandetail mdd
  171. LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
  172. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  173. WHERE
  174. mdd.valueflag = 1
  175. AND mg.GOODSTYPEID IN (13)
  176. AND mdd.MAKE_QTY > 0
  177. AND mdd.plandate < TRUNC( SYSDATE )
  178. AND mdd.plandate >= TRUNC( SYSDATE -30 )
  179. )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME";
  180. DataTable dt = conn.ExecuteDatatable(sqlStr);
  181. string jsonStr = new JsonResult(dt).ToJson();
  182. context.Response.Write(jsonStr);
  183. }
  184. //包装月度计划
  185. if (context.Request["m"].ToString() == "finish")
  186. {
  187. string sqlStr = @"
  188. SELECT
  189. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  190. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  191. ELSE
  192. T.产品类别
  193. END 产品类别,
  194. SUM(T.计划包装数) 包装计划数,
  195. SUM(T.实际生产数量) 包装达成数
  196. FROM
  197. (
  198. SELECT
  199. mg.GOODSTYPEID,
  200. TMGP.GOODSTYPENAME 产品类别,
  201. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  202. dpd.MAKE_QTY 实际生产数量
  203. FROM
  204. tp_pack_dailyplandetail dpd
  205. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  206. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  207. WHERE
  208. dpd.bz_plan_qty > 0
  209. AND mg.GOODSTYPEID IN (3 )
  210. AND dpd.VALUEFLAG = 1
  211. AND dpd.accountid = 1
  212. AND dpd.plandate < TRUNC( SYSDATE )
  213. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  214. AND dpd.MAKE_QTY > 0
  215. )T GROUP BY T.GOODSTYPEID,T.产品类别 UNION ALL
  216. SELECT
  217. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  218. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  219. ELSE
  220. T.产品类别
  221. END 产品类别,
  222. SUM(T.计划包装数) 包装计划数,
  223. SUM(T.实际生产数量) 包装达成数
  224. FROM
  225. (
  226. SELECT
  227. mg.GOODSTYPEID,
  228. TMGP.GOODSTYPENAME 产品类别,
  229. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  230. dpd.MAKE_QTY 实际生产数量
  231. FROM
  232. tp_pack_dailyplandetail dpd
  233. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  234. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  235. WHERE
  236. dpd.bz_plan_qty > 0
  237. AND mg.GOODSTYPEID IN (18)
  238. AND dpd.VALUEFLAG = 1
  239. AND dpd.accountid = 1
  240. AND dpd.plandate < TRUNC( SYSDATE )
  241. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  242. AND dpd.MAKE_QTY > 0
  243. )T GROUP BY T.GOODSTYPEID,T.产品类别 UNION ALL
  244. SELECT
  245. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  246. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  247. ELSE
  248. T.产品类别
  249. END 产品类别,
  250. SUM(T.计划包装数) 包装计划数,
  251. SUM(T.实际生产数量) 包装达成数
  252. FROM
  253. (
  254. SELECT
  255. mg.GOODSTYPEID,
  256. TMGP.GOODSTYPENAME 产品类别,
  257. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  258. dpd.MAKE_QTY 实际生产数量
  259. FROM
  260. tp_pack_dailyplandetail dpd
  261. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  262. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  263. WHERE
  264. dpd.bz_plan_qty > 0
  265. AND mg.GOODSTYPEID IN (7)
  266. AND dpd.VALUEFLAG = 1
  267. AND dpd.accountid = 1
  268. AND dpd.plandate < TRUNC( SYSDATE )
  269. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  270. AND dpd.MAKE_QTY > 0
  271. )T GROUP BY T.GOODSTYPEID,T.产品类别 UNION ALL
  272. SELECT
  273. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  274. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  275. ELSE
  276. T.产品类别
  277. END 产品类别,
  278. SUM(T.计划包装数) 包装计划数,
  279. SUM(T.实际生产数量) 包装达成数
  280. FROM
  281. (
  282. SELECT
  283. mg.GOODSTYPEID,
  284. TMGP.GOODSTYPENAME 产品类别,
  285. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  286. dpd.MAKE_QTY 实际生产数量
  287. FROM
  288. tp_pack_dailyplandetail dpd
  289. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  290. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  291. WHERE
  292. dpd.bz_plan_qty > 0
  293. AND mg.GOODSTYPEID IN (6)
  294. AND dpd.VALUEFLAG = 1
  295. AND dpd.accountid = 1
  296. AND dpd.plandate < TRUNC( SYSDATE )
  297. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  298. AND dpd.MAKE_QTY > 0
  299. )T GROUP BY T.GOODSTYPEID,T.产品类别 UNION ALL
  300. SELECT
  301. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  302. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  303. ELSE
  304. T.产品类别
  305. END 产品类别,
  306. SUM(T.计划包装数) 包装计划数,
  307. SUM(T.实际生产数量) 包装达成数
  308. FROM
  309. (
  310. SELECT
  311. mg.GOODSTYPEID,
  312. TMGP.GOODSTYPENAME 产品类别,
  313. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  314. dpd.MAKE_QTY 实际生产数量
  315. FROM
  316. tp_pack_dailyplandetail dpd
  317. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  318. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  319. WHERE
  320. dpd.bz_plan_qty > 0
  321. AND mg.GOODSTYPEID IN (12)
  322. AND dpd.VALUEFLAG = 1
  323. AND dpd.accountid = 1
  324. AND dpd.plandate < TRUNC( SYSDATE )
  325. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  326. AND dpd.MAKE_QTY > 0
  327. )T GROUP BY T.GOODSTYPEID,T.产品类别 UNION ALL
  328. SELECT
  329. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  330. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  331. ELSE
  332. T.产品类别
  333. END 产品类别,
  334. SUM(T.计划包装数) 包装计划数,
  335. SUM(T.实际生产数量) 包装达成数
  336. FROM
  337. (
  338. SELECT
  339. mg.GOODSTYPEID,
  340. TMGP.GOODSTYPENAME 产品类别,
  341. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  342. dpd.MAKE_QTY 实际生产数量
  343. FROM
  344. tp_pack_dailyplandetail dpd
  345. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  346. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  347. WHERE
  348. dpd.bz_plan_qty > 0
  349. AND mg.GOODSTYPEID IN (13)
  350. AND dpd.VALUEFLAG = 1
  351. AND dpd.accountid = 1
  352. AND dpd.plandate < TRUNC( SYSDATE )
  353. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  354. AND dpd.MAKE_QTY > 0
  355. )T GROUP BY T.GOODSTYPEID,T.产品类别
  356. ";
  357. //获取查询条件
  358. //直接获取不分页数据
  359. DataTable dt = conn.ExecuteDatatable(sqlStr);
  360. string jsonStr = new JsonResult(dt).ToJson();
  361. context.Response.Write(jsonStr);
  362. }
  363. //包装表格数据
  364. if (context.Request["m"].ToString() == "MonthTable")
  365. {
  366. string sqlStr = @"
  367. SELECT
  368. CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
  369. WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
  370. ELSE
  371. T.产品类别
  372. END 产品类别,
  373. SUM(T.计划包装数) 包装计划数,
  374. SUM(T.实际生产数量) 实际生产数,
  375. CASE WHEN SUM(T.计划包装数) = 0 THEN
  376. '100.00%' ELSE to_char( round( SUM(T.实际生产数量) / SUM(T.计划包装数), 4 ) * 100, 'fm9999999990.00' ) || '%'
  377. END AS 计划达成率
  378. FROM
  379. (
  380. SELECT
  381. TMGP.GOODSTYPEID,
  382. TMGP.GOODSTYPENAME 产品类别,
  383. CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
  384. dpd.MAKE_QTY 实际生产数量
  385. FROM
  386. tp_pack_dailyplandetail dpd
  387. LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
  388. LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID
  389. WHERE
  390. dpd.bz_plan_qty > 0
  391. AND mg.GOODSTYPEID IN ( 12, 6, 18, 3, 7, 13 )
  392. AND dpd.MAKE_QTY > 0
  393. AND ( dpd.plan_qty * 1.8 ) >= dpd.make_qty
  394. AND dpd.VALUEFLAG = 1
  395. AND dpd.accountid = 1
  396. --AND dpd.plandate >= trunc( SYSDATE )
  397. AND dpd.plandate < TRUNC( SYSDATE )
  398. AND dpd.plandate >= TRUNC( SYSDATE -30 )
  399. ORDER BY
  400. round( dpd.make_qty / dpd.plan_qty, 4 ) DESC
  401. )T GROUP BY T.产品类别,T.GOODSTYPEID ORDER BY round( SUM(T.实际生产数量) / SUM(T.计划包装数), 4 ) DESC";
  402. DataTable dt = conn.ExecuteDatatable(sqlStr);
  403. string jsonStr = new JsonResult(dt).ToJson();
  404. context.Response.Write(jsonStr);
  405. }
  406. }
  407. }
  408. public decimal toNumber(object o)
  409. {
  410. if (o != DBNull.Value)
  411. return Convert.ToDecimal(o);
  412. else
  413. return 0;
  414. }
  415. public bool IsReusable
  416. {
  417. get
  418. {
  419. return false;
  420. }
  421. }
  422. }