华恒Mes鼎捷代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

628 lines
34 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using ICSSoft.Frame.Data.Entity;
  6. using ICSSoft.Base.Config.AppConfig;
  7. using ICSSoft.Base.Config.DBHelper;
  8. using System.Data;
  9. using System.Data.Sql;
  10. using System.Data.Linq;
  11. namespace ICSSoft.Frame.Data.DAL
  12. {
  13. public class ICSGaugeDAL
  14. {
  15. #region 根据工单查询子件机汇总信息
  16. public static DataSet select_(String MOCode, String TransNO, String Appconstr)
  17. {
  18. try
  19. {
  20. #region 20190627增加仓库库存数量
  21. //生产工单下 1C707AJ2017091289 有总数量
  22. string sql = @" SELECT
  23. e.MOCODE,
  24. e.MOSEQ,
  25. e.MOVER,
  26. e.ITEMCODE,
  27. b.INVNAME,
  28. b.INVSTD AS INVTYPE,
  29. c.MOBITEMCODE,
  30. d.INVNAME AS CINVNAME,
  31. d.INVSTD AS CINVTYPE,
  32. d.INVUOM,
  33. CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,6)) AS QTY,
  34. --CAST(ISNULL(c.MOBITEMQTY, 0)*e.MOPLANQTY AS DECIMAL(18,2)) AS QTY,
  35. ISNULL(f.HasQuantity, 0) AS QTYS,
  36. c.MOBITEMLOCATION AS Wh,
  37. ISNULL(z.BinQTY, 0) as QTYTotal
  38. FROM
  39. ICSMO e
  40. LEFT JOIN ICSINVENTORY b ON e.ITEMCODE = b.INVCODE
  41. LEFT JOIN ICSMOBOM c ON e.MOCODE = c.MOCODE AND c.SEQ=e.MOSEQ AND e.ITEMCODE = c.ITEMCODE
  42. LEFT JOIN ICSINVENTORY d ON c.MOBITEMCODE = d.INVCODE
  43. LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ and c.SEQ=f.SEQ
  44. LEFT JOIN (
  45. SELECT
  46. P.INVCode,
  47. P.WHCode,
  48. SUM (P.LotQty) AS BinQTY
  49. FROM
  50. ICSWareHouseLotInfo p
  51. INNER JOIN ICSStorage t ON P.WHCode = t.StorageCode
  52. WHERE
  53. P.WorkPoint = '{1}' -- AND WHCode=''
  54. GROUP BY
  55. P.INVCode,
  56. P.WHCode
  57. ) z ON z.INVCode = c.MOBITEMCODE AND z.WHCode = c.MOBITEMLOCATION
  58. WHERE e.MOCODE='{0}' AND
  59. e.WorkPoint = '{1}' AND ISNULL(d.INVCLASS, '') <> 'I09'
  60. ORDER BY c.MOBITEMCODE,e.MOSEQ,c.MOBOMLINE
  61. ";
  62. sql += @"
  63. SELECT c.MOCODE,
  64. c.MOBITEMCODE,
  65. c.CINVNAME,
  66. c.CINVTYPE,
  67. c.INVUOM,
  68. CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS QTYXBC,
  69. ISNULL(f.HasQuantity, 0) AS MOBITEMQTY
  70. FROM
  71. (
  72. SELECT
  73. a.MOCODE,
  74. a.MOBOMLINE,
  75. a.SEQ,
  76. a.MOBITEMCODE,
  77. b.INVNAME AS CINVNAME,
  78. b.INVSTD AS CINVTYPE,
  79. b.INVUOM,
  80. b.INVMACHINETYPE,
  81. SUM(a.MOBITEMQTY) AS MOBITEMQTY
  82. --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  83. FROM ICSMOBOM a
  84. LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  85. INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  86. WHERE a.MOCODE='{0}' AND
  87. a.WorkPoint = '{1}' AND ISNULL(b.INVCLASS, '') <> 'I09'
  88. GROUP BY a.MOCODE,a.MOBITEMCODE,a.MOBOMLINE, a.SEQ,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE
  89. )c
  90. LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ AND c.SEQ=f.SEQ
  91. ORDER BY c.MOBITEMCODE
  92. ";
  93. #endregion
  94. #region 20190627_bak
  95. // string sql = @" SELECT
  96. // e.MOCODE,
  97. // e.MOSEQ,
  98. // e.MOVER,
  99. // e.ITEMCODE,
  100. // b.INVNAME,
  101. // b.INVSTD AS INVTYPE,
  102. // c.MOBITEMCODE,
  103. // d.INVNAME AS CINVNAME,
  104. // d.INVSTD AS CINVTYPE,
  105. // d.INVUOM,
  106. // CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,6)) AS QTY,
  107. // --CAST(ISNULL(c.MOBITEMQTY, 0)*e.MOPLANQTY AS DECIMAL(18,2)) AS QTY,
  108. // ISNULL(f.HasQuantity, 0) AS QTYS
  109. // FROM
  110. // ICSMO e
  111. // LEFT JOIN ICSINVENTORY b ON e.ITEMCODE = b.INVCODE
  112. // LEFT JOIN ICSMOBOM c ON e.MOCODE = c.MOCODE AND c.SEQ=e.MOSEQ AND e.ITEMCODE = c.ITEMCODE
  113. // LEFT JOIN ICSINVENTORY d ON c.MOBITEMCODE = d.INVCODE
  114. // LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ and c.SEQ=f.SEQ
  115. // WHERE e.MOCODE='{0}' AND
  116. // e.WorkPoint = '{1}' AND ISNULL(d.INVCLASS, '') <> 'I09'
  117. // ORDER BY c.MOBITEMCODE,e.MOSEQ,c.MOBOMLINE
  118. // ";
  119. // sql += @"
  120. // SELECT c.MOCODE,
  121. // c.MOBITEMCODE,
  122. // c.CINVNAME,
  123. // c.CINVTYPE,
  124. // c.INVUOM,
  125. // CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS QTYXBC,
  126. // ISNULL(f.HasQuantity, 0) AS MOBITEMQTY
  127. // FROM
  128. // (
  129. // SELECT
  130. // a.MOCODE,
  131. // a.MOBOMLINE,
  132. // a.SEQ,
  133. // a.MOBITEMCODE,
  134. // b.INVNAME AS CINVNAME,
  135. // b.INVSTD AS CINVTYPE,
  136. // b.INVUOM,
  137. // b.INVMACHINETYPE,
  138. // SUM(a.MOBITEMQTY) AS MOBITEMQTY
  139. // --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  140. // FROM ICSMOBOM a
  141. // LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  142. // INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  143. // WHERE a.MOCODE='{0}' AND
  144. // a.WorkPoint = '{1}' AND ISNULL(b.INVCLASS, '') <> 'I09'
  145. // GROUP BY a.MOCODE,a.MOBITEMCODE,a.MOBOMLINE, a.SEQ,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE
  146. // )c
  147. //
  148. // LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ AND c.SEQ=f.SEQ
  149. // ORDER BY c.MOBITEMCODE
  150. // ";
  151. #endregion
  152. sql = string.Format(sql, MOCode, AppConfig.WorkPointCode, TransNO);
  153. DataSet ds = DBHelper.ExecuteDataset(Appconstr, CommandType.Text, sql);
  154. return ds;
  155. }
  156. catch (Exception ex)
  157. {
  158. throw new Exception(ex.Message);
  159. }
  160. }
  161. #endregion
  162. #region 根据工单查询子件机汇总信息
  163. public static DataSet select(String MOCode, String TransNO, String Appconstr, String WHERE)
  164. {
  165. try
  166. {
  167. #region 20190917注释ZM
  168. // string sql = @" SELECT
  169. // e.MOCODE,
  170. // e.MOSEQ,
  171. // e.MOVER,
  172. // e.ITEMCODE,
  173. // b.INVNAME,
  174. // b.INVSTD AS INVTYPE,
  175. // c.MOBITEMCODE,
  176. // d.INVNAME AS CINVNAME,
  177. // d.INVSTD AS CINVTYPE,
  178. //e.FACTORY AS Wh,
  179. //
  180. // d.INVUOM,
  181. // CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) QTY,
  182. // CAST(ISNULL(f.HasQuantity, 0) AS DECIMAL(18,2)) AS QTYS
  183. // FROM
  184. // ICSMO e
  185. // LEFT JOIN ICSINVENTORY b ON e.ITEMCODE = b.INVCODE
  186. // LEFT JOIN ICSMOBOM c ON e.MOCODE = c.MOCODE AND c.SEQ=e.MOSEQ AND e.ITEMCODE = c.ITEMCODE
  187. // LEFT JOIN ICSINVENTORY d ON c.MOBITEMCODE = d.INVCODE
  188. // LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ and c.SEQ=f.SEQ
  189. // WHERE e.MOCODE='{0}' AND
  190. // e.WorkPoint = '{1}' AND ISNULL(d.INVCLASS, '') <> 'I09'
  191. // ORDER BY c.MOBITEMCODE,e.MOSEQ,c.MOBOMLINE
  192. // ";
  193. // sql += @"
  194. // SELECT c.MOCODE,
  195. // c.MOBITEMCODE,
  196. // c.CINVNAME,
  197. // c.CINVTYPE,
  198. // c.INVUOM,
  199. // CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS QTYXBC,
  200. // CAST(ISNULL(f.HasQuantity, 0) AS DECIMAL(18,2)) MOBITEMQTY,
  201. // c.WorkPoint
  202. // FROM
  203. // (
  204. // SELECT
  205. // a.MOCODE,
  206. // a.MOBOMLINE,
  207. // a.SEQ,
  208. // a.WorkPoint,
  209. // a.MOBITEMCODE,
  210. // b.INVNAME AS CINVNAME,
  211. // b.INVSTD AS CINVTYPE,
  212. // b.INVUOM,
  213. // b.INVMACHINETYPE,
  214. // SUM(a.MOBITEMQTY) AS MOBITEMQTY
  215. // --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  216. // FROM ICSMOBOM a
  217. // LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  218. // INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  219. // WHERE a.MOCODE='{0}'
  220. // GROUP BY a.MOCODE,a.MOBITEMCODE,a.MOBOMLINE, a.SEQ,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE,a.WorkPoint
  221. // )c
  222. // LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.MOSEQ AND c.SEQ=f.SEQ
  223. // where {3} AND
  224. // c.WorkPoint = '{1}' --AND ISNULL(b.INVCLASS, '') <> 'I09'
  225. // ORDER BY c.MOBITEMCODE
  226. // ";
  227. #endregion
  228. #region delete by summer 2020.08.31
  229. // string sql = @" SELECT
  230. // e.MOCODE,
  231. // e.MOSEQ,
  232. // e.MOVER,
  233. // e.ITEMCODE,
  234. // b.INVNAME,
  235. // b.INVSTD AS INVTYPE,
  236. // c.MOBITEMCODE,
  237. // d.INVNAME AS CINVNAME,
  238. // d.INVSTD AS CINVTYPE,
  239. // --e.FACTORY AS Wh,
  240. //c.MOBITEMLOCATION AS WH,
  241. //g.StorageName AS WHName,
  242. // d.INVUOM,
  243. // CAST (
  244. // ISNULL(c.MOBITEMQTY, 0) AS DECIMAL (18, 2)
  245. // ) QTY,
  246. // CAST (
  247. // ISNULL(f.HasQuantity, 0) AS DECIMAL (18, 2)
  248. // ) AS QTYS,
  249. // CAST ( ISNULL(k.QTYTotal, 0) AS DECIMAL (18, 2)) QTYTotal
  250. //FROM
  251. // ICSMO e
  252. //LEFT JOIN ICSINVENTORY b ON e.ITEMCODE = b.INVCODE
  253. //LEFT JOIN ICSMOBOM c ON e.MOCODE = c.MOCODE
  254. //AND c.SEQ = e.MOSEQ
  255. //AND e.ITEMCODE = c.ITEMCODE
  256. //LEFT JOIN ICSINVENTORY d ON c.MOBITEMCODE = d.INVCODE
  257. // LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.SEQ=f.MOSEQ and c.MOBOMLINE=f.SEQ
  258. //LEFT JOIN ICSStorage g ON g.StorageCode=c.MOBITEMLOCATION
  259. //LEFT JOIN
  260. //(SELECT
  261. // INVCode,
  262. // SUM (LotQty) AS QTYTotal
  263. // FROM
  264. // ICSWareHouseLotInfo
  265. // WHERE
  266. // WorkPoint = '{1}'
  267. // GROUP BY
  268. // INVCode
  269. //) k ON d.INVCODE = k.INVCode
  270. //WHERE
  271. // e.MOCODE = '{0}'
  272. //AND e.WorkPoint = '{1}'
  273. //AND ISNULL(d.INVCLASS, '') <> 'I09'
  274. //
  275. //and e.MOBOM!=4
  276. //
  277. //ORDER BY
  278. // c.MOBITEMCODE,
  279. // e.MOSEQ,
  280. // c.MOBOMLINE ";
  281. #endregion
  282. #region add by summer 2020.08.31
  283. string sql = @"
  284. SELECT E.MOCODE, E.MOSEQ, E.MOVER, E.ITEMCODE, B.INVNAME, B.INVSTD AS INVTYPE, C.MOBITEMCODE,
  285. D.INVNAME AS CINVNAME, D.INVSTD AS CINVTYPE, A.WHCode AS WH, G.StorageName AS WHName, D.INVUOM,
  286. CAST(ISNULL(C.MOBITEMQTY, 0) AS DECIMAL(18, 2)) AS QTY, CAST(ISNULL(F.HasQuantity, 0) AS DECIMAL(18, 2)) AS QTYS,
  287. CAST(ISNULL(K.QTYTotal, 0) AS DECIMAL(18, 2)) AS QTYTotal
  288. FROM ICSMO E LEFT JOIN ICSINVENTORY B ON E.ITEMCODE = B.INVCODE
  289. LEFT JOIN ICSMOBOM C ON E.MOCODE = C.MOCODE AND C.SEQ = E.MOSEQ AND E.ITEMCODE = C.ITEMCODE
  290. LEFT JOIN ICSINVENTORY D ON C.MOBITEMCODE = D.INVCODE
  291. LEFT JOIN ICSMOPickLog F ON C.MOCODE = F.MOCODE AND C.SEQ = F.MOSEQ AND C.MOBOMLINE= F.SEQ
  292. LEFT JOIN (SELECT DISTINCT A.INVCode, A.WHCode FROM ICSWareHouseLotInfo A INNER JOIN Sys_EnumValues B ON A.WHCode = B.EnumText
  293. WHERE A.WorkPoint = '{1}' AND B.EnumKey = '00008' AND A.LotQty > 0) A ON D.INVCODE = A.INVCode
  294. LEFT JOIN ICSStorage G ON G.StorageCode = A.WHCode
  295. LEFT JOIN (SELECT INVCode, SUM (LotQty) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint = '{1}' GROUP BY INVCode) K ON D.INVCODE = K.INVCode
  296. WHERE E.MOCODE = '{0}' AND E.WorkPoint = '{1}' AND ISNULL(D.INVCLASS, '') <> 'I09' AND E.MOBOM != 4
  297. ORDER BY C.MOBITEMCODE, E.MOSEQ, C.MOBOMLINE ";
  298. #endregion
  299. sql += @"
  300. SELECT c.MOCODE,
  301. c.MOBITEMCODE,
  302. c.CINVNAME,
  303. c.CINVTYPE,
  304. c.INVUOM,
  305. CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS QTYXBC,
  306. CAST(ISNULL(f.HasQuantity, 0) AS DECIMAL(18,2)) MOBITEMQTY,
  307. c.WorkPoint
  308. FROM
  309. (
  310. SELECT
  311. a.MOCODE,
  312. a.MOBOMLINE,
  313. a.SEQ,
  314. a.WorkPoint,
  315. a.MOBITEMCODE,
  316. b.INVNAME AS CINVNAME,
  317. b.INVSTD AS CINVTYPE,
  318. b.INVUOM,
  319. b.INVMACHINETYPE,
  320. SUM(a.MOBITEMQTY) AS MOBITEMQTY
  321. --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  322. FROM ICSMOBOM a
  323. LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  324. INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  325. WHERE a.MOCODE='{0}' and a.MOBOM!=4
  326. GROUP BY a.MOCODE,a.MOBITEMCODE,a.MOBOMLINE, a.SEQ,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE,a.WorkPoint
  327. )c
  328. LEFT JOIN ICSMOPickLog f ON c.MOCODE=f.MOCODE AND c.MOBOMLINE=f.SEQ AND c.SEQ=f.MOSEQ
  329. where {3} AND
  330. c.WorkPoint = '{1}' --AND ISNULL(b.INVCLASS, '') <> 'I09'
  331. ORDER BY c.MOBITEMCODE
  332. ";
  333. sql = string.Format(sql, MOCode, AppConfig.WorkPointCode, TransNO, WHERE);
  334. DataSet ds = DBHelper.ExecuteDataset(Appconstr, CommandType.Text, sql);
  335. return ds;
  336. }
  337. catch (Exception ex)
  338. {
  339. throw new Exception(ex.Message);
  340. }
  341. }
  342. #endregion
  343. #region 根据工单查询拣料表信息
  344. public static DataSet GetGauge_(String MOCode, String Appconstr)
  345. {
  346. try
  347. {
  348. //--ICSStorage --ICSWareHouseInfo
  349. #region 20190705ZM
  350. string sql = @" SELECT c.MOCODE,
  351. c.MOBITEMCODE,
  352. c.CINVNAME,
  353. c.CINVTYPE,
  354. c.INVUOM,
  355. CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
  356. ISNULL(e.QTYTotal, 0) AS QTYTotal,
  357. ISNULL(f.QTYXBC, 0) AS QTYXBC,
  358. CASE WHEN ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) < 0 THEN '0' ELSE ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) END AS QTYNeed,
  359. d.WHCode,
  360. d.BinCode,
  361. d.LotNO,
  362. g.VenderLotNO AS VenderLotNO,
  363. ISNULL(d.LotQty, 0) AS QTY,
  364. d.MTIME
  365. FROM
  366. (
  367. SELECT
  368. a.MOCODE,
  369. a.MOBITEMCODE,
  370. b.INVNAME AS CINVNAME,
  371. b.INVSTD AS CINVTYPE,
  372. b.INVUOM,
  373. b.INVMACHINETYPE,
  374. SUM(a.MOBITEMQTY) AS MOBITEMQTY
  375. --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  376. FROM ICSMOBOM a
  377. LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  378. INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  379. WHERE a.MOCODE='{0}' AND
  380. a.WorkPoint = '{1}' AND ISNULL(b.INVCLASS, '') <> 'I09'
  381. GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE
  382. )c
  383. LEFT JOIN ICSWareHouseLotInfo d ON c.MOBITEMCODE=d.INVCode AND d.WorkPoint='{1}' AND d.LotQty>0
  384. LEFT JOIN ICSITEMLot g ON g.LotNO=d.LotNO
  385. LEFT JOIN (SELECT INVCode,SUM(LotQty) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode) e ON c.MOBITEMCODE=e.INVCode
  386. LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) f ON c.MOBITEMCODE=f.INVCode AND c.INVMACHINETYPE=f.WHCode
  387. ORDER BY c.MOBITEMCODE,d.MTIME,d.LotNO
  388. ";
  389. #endregion
  390. #region 20190705ZM_新
  391. // string sql = @"SELECT
  392. // c.MOCODE,
  393. // c.MOBITEMCODE,
  394. // c.CINVNAME,
  395. // c.CINVTYPE,
  396. // c.INVUOM,
  397. // CAST (
  398. // ISNULL(c.MOBITEMQTY, 0) AS DECIMAL (18, 2)
  399. // ) AS MOBITEMQTY,
  400. // ISNULL(e.QTYTotal, 0) AS QTYTotal,
  401. // ISNULL(f.QTYXBC, 0) AS QTYXBC,
  402. // CASE
  403. // WHEN ISNULL(c.MOBITEMQTY, 0) - ISNULL(f.QTYXBC, 0) < 0 THEN
  404. // '0'
  405. // ELSE
  406. // ISNULL(c.MOBITEMQTY, 0) - ISNULL(f.QTYXBC, 0)
  407. // END AS QTYNeed,
  408. // d.WHCode,
  409. // d.BinCode,
  410. // d.LotNO,
  411. // ISNULL(d.LotQty, 0) AS QTY,
  412. // d.MTIME
  413. // FROM
  414. // (
  415. // SELECT
  416. // a.MOCODE,
  417. // a.MOBITEMCODE,
  418. // b.INVNAME AS CINVNAME,
  419. // b.INVSTD AS CINVTYPE,
  420. // b.INVUOM,
  421. // b.INVMACHINETYPE,
  422. // a.MOBITEMLOCATION,
  423. // SUM (a.MOBITEMQTY) AS MOBITEMQTY --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY
  424. // FROM
  425. // ICSMOBOM a
  426. // LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE
  427. // AND a.WorkPoint = b.WorkPoint
  428. // INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE
  429. // AND a.SEQ = e.MOSEQ
  430. // AND a.WorkPoint = e.WorkPoint
  431. // WHERE
  432. // a.MOCODE='{0}' AND a.WorkPoint = '{1}'
  433. // AND ISNULL(b.INVCLASS, '') <> 'I09'
  434. // GROUP BY
  435. // a.MOCODE,
  436. // a.MOBITEMCODE,
  437. // b.INVNAME,
  438. // b.INVSTD,
  439. // b.INVUOM,
  440. // b.INVMACHINETYPE,
  441. // a.MOBITEMLOCATION
  442. // ) c
  443. // LEFT JOIN ICSWareHouseLotInfo d ON c.MOBITEMCODE = d.INVCode
  444. // AND d.WorkPoint = '6000'
  445. // AND d.LotQty > 0
  446. // LEFT JOIN (
  447. // SELECT DISTINCT
  448. // P.INVCode,
  449. // P.WHCode,
  450. // SUM (P.LotQty) AS QTYTotal
  451. // FROM
  452. // ICSWareHouseLotInfo p
  453. // LEFT JOIN ICSStorage t ON P.WHCode = t.StorageCode
  454. // WHERE
  455. // P.WorkPoint = '{1}'
  456. // GROUP BY
  457. // P.INVCode,
  458. // P.WHCode
  459. // ) e ON c.MOBITEMCODE = e.INVCode
  460. // AND e.WHCode = c.MOBITEMLOCATION
  461. // LEFT JOIN (
  462. // SELECT
  463. // INVCode,
  464. // WHCode,
  465. // SUM (LotQty) AS QTYXBC
  466. // FROM
  467. // ICSWareHouseLotInfo
  468. // WHERE
  469. // WorkPoint = '{1}'
  470. // GROUP BY
  471. // INVCode,
  472. // WHCode
  473. // ) f ON c.MOBITEMCODE = f.INVCode
  474. // AND c.INVMACHINETYPE = f.WHCode
  475. // ORDER BY
  476. // c.MOBITEMCODE,
  477. // d.MTIME,
  478. // d.LotNO";
  479. #endregion
  480. sql = string.Format(sql, MOCode, AppConfig.WorkPointCode);
  481. DataSet ds = DBHelper.ExecuteDataset(Appconstr, CommandType.Text, sql);
  482. return ds;
  483. }
  484. catch (Exception ex)
  485. {
  486. throw new Exception(ex.Message);
  487. }
  488. }
  489. #endregion
  490. #region 根据工单查询拣料表信息
  491. public static DataSet GetGauge(String MOCode, String Appconstr, String where)
  492. {
  493. try
  494. {
  495. #region 20190917ZM
  496. // string sql = @"SELECT c.MOCODE,
  497. // c.MOBITEMCODE,
  498. // c.CINVNAME,
  499. // c.CINVTYPE,
  500. // c.INVUOM,
  501. // CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
  502. // CAST( ISNULL(e.QTYTotal, 0) AS DECIMAL(18,2)) QTYTotal,
  503. // CAST(ISNULL(f.QTYXBC, 0) AS DECIMAL(18,2)) QTYXBC,
  504. //CASE WHEN ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) < 0 THEN '0' ELSE CAST(ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) AS DECIMAL(18,2) ) END AS QTYNeed,
  505. //d.WHCode,
  506. // d.BinCode,
  507. // d.LotNO,
  508. // CAST( ISNULL(d.LotQty, 0)AS DECIMAL(18,2)) QTY,
  509. // d.MTIME,
  510. // g.VenderLotNO AS VenderLotNO,
  511. // c.MOCODE,
  512. // c.WorkPoint
  513. // FROM
  514. // (
  515. // SELECT
  516. // a.MOCODE,
  517. // a.MOBITEMCODE,
  518. // b.INVNAME AS CINVNAME,
  519. // b.INVSTD AS CINVTYPE,
  520. // b.INVUOM,
  521. // b.INVMACHINETYPE,
  522. // SUM(a.MOBITEMQTY) AS MOBITEMQTY,
  523. // --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY,
  524. // a.WorkPoint
  525. // FROM ICSMOBOM a
  526. // LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  527. // INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  528. // WHERE a.MOCODE='{0}'
  529. // GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE,a.WorkPoint
  530. // )c
  531. // LEFT JOIN ICSWareHouseLotInfo d ON c.MOBITEMCODE=d.INVCode AND d.WorkPoint='{1}' AND d.LotQty>0 AND WHCode IN
  532. // (SELECT EnumText FROM Sys_EnumValues WHERE EnumKey = '00006' AND StartFlag = '1')
  533. //
  534. //LEFT JOIN ICSITEMLot g ON g.LotNO=d.LotNO
  535. //
  536. //LEFT JOIN (SELECT INVCode,SUM(LotQty) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode) e ON c.MOBITEMCODE=e.INVCode
  537. // LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) f ON c.MOBITEMCODE=f.INVCode AND c.INVMACHINETYPE=f.WHCode
  538. // where c.WorkPoint = '{1}' AND {2}
  539. // ORDER BY c.MOBITEMCODE,d.MTIME,d.LotNO
  540. // ";
  541. #endregion
  542. #region 20191023ZM
  543. string sql = @"SELECT c.MOCODE,
  544. c.MOBITEMCODE,
  545. c.CINVNAME,
  546. c.CINVTYPE,
  547. c.INVUOM,
  548. CAST(ISNULL(c.MOBITEMQTY, 0) AS DECIMAL(18,2)) AS MOBITEMQTY,
  549. CAST( ISNULL(e.QTYTotal, 0) AS DECIMAL(18,2)) QTYTotal,
  550. CAST(ISNULL(f.QTYXBC, 0) AS DECIMAL(18,2)) QTYXBC,
  551. CASE WHEN ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) < 0 THEN '0' ELSE CAST(ISNULL(c.MOBITEMQTY, 0)-ISNULL(f.QTYXBC, 0) AS DECIMAL(18,2) ) END AS QTYNeed,
  552. d.WHCode,
  553. d.BinCode,
  554. d.LotNO,
  555. CAST( ISNULL(d.LotQty, 0)AS DECIMAL(18,2)) QTY,
  556. d.MTIME,
  557. g.VenderLotNO AS VenderLotNO,
  558. c.MOCODE,
  559. c.WorkPoint
  560. FROM
  561. (
  562. SELECT
  563. a.MOCODE,
  564. a.MOBITEMCODE,
  565. b.INVNAME AS CINVNAME,
  566. b.INVSTD AS CINVTYPE,
  567. b.INVUOM,
  568. b.INVMACHINETYPE,
  569. SUM(a.MOBITEMQTY) AS MOBITEMQTY,
  570. --SUM(a.MOBITEMQTY*e.MOPLANQTY) AS MOBITEMQTY,
  571. --e.FACTORY,
  572. a.MOBITEMLOCATION AS FACTORY,
  573. a.WorkPoint
  574. FROM ICSMOBOM a
  575. LEFT JOIN ICSINVENTORY b ON a.MOBITEMCODE = b.INVCODE AND a.WorkPoint=b.WorkPoint
  576. INNER JOIN ICSMO e ON a.MOCODE = e.MOCODE AND a.SEQ=e.MOSEQ AND a.WorkPoint=e.WorkPoint
  577. WHERE a.MOCODE='{0}'
  578. GROUP BY a.MOCODE,a.MOBITEMCODE,b.INVNAME,b.INVSTD,b.INVUOM,b.INVMACHINETYPE,a.MOBITEMLOCATION,a.WorkPoint
  579. )c
  580. LEFT JOIN ICSWareHouseLotInfo d ON c.MOBITEMCODE=d.INVCode AND d.WHCode=c.FACTORY AND d.WorkPoint='{1}' AND d.LotQty>0
  581. AND WHCode IN (SELECT EnumText FROM Sys_EnumValues WHERE EnumKey = '00008' AND StartFlag = '1')
  582. LEFT JOIN ICSITEMLot g ON g.LotNO=d.LotNO
  583. LEFT JOIN (SELECT INVCode,SUM(LotQty) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode) e ON c.MOBITEMCODE=e.INVCode
  584. LEFT JOIN (SELECT INVCode,WHCode,SUM(LotQty) AS QTYXBC FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WHCode) f ON c.MOBITEMCODE=f.INVCode AND c.INVMACHINETYPE=f.WHCode
  585. where c.WorkPoint = '{1}' AND {2}
  586. ORDER BY c.MOBITEMCODE,d.MTIME,d.LotNO
  587. ";
  588. #endregion
  589. sql = string.Format(sql, MOCode, AppConfig.WorkPointCode, where);
  590. DataSet ds = DBHelper.ExecuteDataset(Appconstr, CommandType.Text, sql);
  591. return ds;
  592. }
  593. catch (Exception ex)
  594. {
  595. throw new Exception(ex.Message);
  596. }
  597. }
  598. #endregion
  599. }
  600. }