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.

315 lines
13 KiB

3 weeks ago
  1. using NFine.Code;
  2. using NFine.Data.Extensions;
  3. using NFine.Domain._03_Entity.SRM;
  4. using NFine.Repository;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.Common;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace NFine.Application.DHAY
  13. {
  14. public class FullProcessTraceabilityApp : RepositoryFactory<ICSVendor>
  15. {
  16. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  17. {
  18. DataTable dt = new DataTable();
  19. var queryParam = queryJson.ToJObject();
  20. List<DbParameter> parameter = new List<DbParameter>();
  21. #region [SQL]
  22. string sql = @"select distinct a.MOCode,a.InvCode,inv.InvName,inv.InvStd,b.BatchCode,b.RKMtime,b.RKQTY,c.CKMtime,c.CKQTY from dbo.ICSMO a
  23. left join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint
  24. left join (select a.TransCode,c.BatchCode,a.WorkPoint, FORMAT(a.MTIME, 'yyyy-MM-dd') as RKMtime,sum(a.Quantity) as RKQTY from dbo.ICSWareHouseLotInfoLog a
  25. left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  26. left join dbo.ICSExtension c on b.ExtensionID=c.ID and a.WorkPoint=c.WorkPoint
  27. where a.BusinessCode='17'
  28. group by a.TransCode,c.BatchCode,a.WorkPoint,format(a.MTIME, 'yyyy-MM-dd') )b on a.MOCode=b.TransCode and a.WorkPoint=b.WorkPoint
  29. left join (select d.TransCode,c.BatchCode,a.WorkPoint, FORMAT(a.MTIME, 'yyyy-MM-dd') as CKMtime,sum(a.Quantity) as CKQTY from dbo.ICSWareHouseLotInfoLog a
  30. left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  31. left join dbo.ICSInventoryLotDetail d on b.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  32. left join dbo.ICSExtension c on b.ExtensionID=c.ID and a.WorkPoint=c.WorkPoint
  33. where a.BusinessCode='19'
  34. group by d.TransCode,c.BatchCode,a.WorkPoint,format(a.MTIME, 'yyyy-MM-dd') )c on a.MOCode=c.TransCode and a.WorkPoint=c.WorkPoint and b.BatchCode=c.BatchCode
  35. where a.MOCode='" + queryParam["Code"].ToString() + "'";
  36. #endregion
  37. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  38. }
  39. public DataTable GetGridJso2(string queryJson, ref Pagination jqgridparam)
  40. {
  41. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  42. //DataTable dt = new DataTable();
  43. var queryParam = queryJson.ToJObject();
  44. List<DbParameter> parameter = new List<DbParameter>();
  45. #region [旧SQL]
  46. // string sql = @"
  47. //select b.TransCode,a.InvCode,sum(a.Quantity) as RKQTY ,isnull(cc.BatchCode,'') BatchCode,a.lotno
  48. //INTO #TempMoPickFL
  49. //from dbo.ICSInventoryLot a
  50. //left join dbo.ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  51. //left join dbo.ICSExtension cc on a.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
  52. //group by b.TransCode,a.InvCode,cc.BatchCode,a.lotno
  53. //--查询工单领料的所有条码
  54. //select ROW_NUMBER() OVER (partition by a.ID ORDER BY a.Sequence) AS SortSeq,c.LotNo,isnull(cc.BatchCode,'') BatchCode, b.InvCode, c.LLQTY as LLQTY ,a.MOCode,po.POCode PODocNo,o.InCode
  55. //INTO #TempMoPickInv
  56. //from dbo.ICSMO a
  57. //left join dbo.ICSMOPick b on a.MODetailID= b.MODetailID and a.WorkPoint=b.WorkPoint
  58. //left join (
  59. // select a.TransCode,a.TransSequence,a.LotNo,sum(a.Quantity) as LLQTY from dbo.ICSWareHouseLotInfoLog a
  60. // where a.BusinessCode='13'
  61. // group by a.TransCode,a.TransSequence,a.LotNo) c on a.MOCode=c.TransCode and a.Sequence+'~'+b.Sequence =c.TransSequence
  62. //left join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint
  63. //left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint
  64. //left join dbo.ICSExtension cc on lot.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
  65. //left join dbo.ICSInventoryLotDetail dd on C.LotNo=dd.LotNo
  66. //left join dbo.ICSPurchaseOrder po on dd.TransCode=po.POCode and dd.TransSequence = po.Sequence and a.WorkPoint=po.WorkPoint
  67. // LEFT JOIN ICSOtherIn o ON dd.TransCode = o.InCode AND dd.TransSequence = o.Sequence
  68. // where c.LotNo is not null
  69. //;
  70. //select a.lotno Cominlotno,c.lotno IssueLotNo,C.SortSeq,C.MOCODE,c.InvCode ,c.BatchCode
  71. //into #Temp3333 from #TempMoPickInv c 
  72. //inner join #TempMoPickFL a on a.TransCode=c.mocode
  73. //;
  74. //WITH ICSMoALL AS
  75. //(
  76. //         select
  77. // 1 AS [Level],
  78. // CAST(ii.SortSeq AS nvarchar(MAX)) AS SortSeq,
  79. //    CAST(REPLICATE('0',5-len(ii.SortSeq))+ii.SortSeq  AS nvarchar(MAX)) AS Sort,
  80. // ii.mocode tmocode,
  81. // cast( ii.mocode as nvarchar(400)) Pmocode,
  82. // cast( rr.TransCode as nvarchar(400)) mocode,
  83. // ii.invcode tinvcode,
  84. // ii.invcode Pivcode,
  85. // ii.invcode invcode,
  86. // ii.BatchCode tBatchCode,
  87. // ii.BatchCode PBatchCode,
  88. // ii.BatchCode BatchCode,
  89. //                 ii.lotno Tlotno,
  90. //ii.LOTNO PLOTNO,
  91. // ii.lotno
  92. //         FROM #TempMoPickInv ii
  93. //left join #TempMoPickFL rr on ii.lotno=rr.lotno where ii.mOCode='{0}'
  94. //UNION ALL
  95. //         select
  96. // b.[Level]+1 AS [Level],
  97. // CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(c.SortSeq AS nvarchar(MAX)) AS SortSeq,
  98. // CAST(b.Sort+'.'+REPLICATE('0',5-len(c.SortSeq))+CAST(c.SortSeq AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort,
  99. // b.tmocode,
  100. // cast(B.MOCODE as nvarchar(400)) PMOCODE,
  101. // cast(C.MOCODE as nvarchar(400)) MOCODE,
  102. // b.tinvcode,
  103. // B.invcode Pinvcode,
  104. // C.invcode,
  105. // b.tBatchCode,
  106. // B.BatchCode PBatchCode,
  107. // C.BatchCode,
  108. //b.tlotno,  
  109. //C.Cominlotno PLOTNO,
  110. // C.IssueLotNo lotno
  111. //         FROM #Temp3333 c --工单入---工单领加
  112. //         INNER JOIN ICSMoALL b ON b.lotno=C.Cominlotno --上层领料=c.入条码
  113. //where b.[Level]<10
  114. //)
  115.  
  116. //SELECT * into #Temp444
  117. //FROM ICSMoALL a
  118. // select ff.invcode ,ff.lotno,ii.LLQTY , ff.BatchCode,ii.PODocNo,ii.InCode,ii2. mocode,ii3.RKQTY,ff.SortSeq,ff.Sort
  119. // into #Tempgggg
  120. //from #Temp444 ff left join #TempMoPickInv ii on ii.lotno=ff.lotno
  121. //left join #Temp3333 ii2 on ii2.Cominlotno=ff.lotno
  122. //left join #TempMoPickFL ii3 on ii3.lotno=ff.lotno
  123. //select aa.invcode ,aa.BatchCode,aa.sortseq,aa.sort,inv.InvName,inv.InvStd ,bb.llqty,bb2.RKQTY,
  124. //STUFF((select',' + PODocNo from (SELECT DISTINCT PODocNo FROM #Tempgggg gg
  125. //where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') PODocNo
  126. //,
  127. //STUFF((select',' + InCode from (SELECT DISTINCT InCode FROM #Tempgggg gg
  128. //where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') InCode
  129. //,
  130. //STUFF((select',' + mocode from (SELECT DISTINCT mocode FROM #Tempgggg gg
  131. //where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') mocode
  132. //from ( select invcode ,BatchCode, sortseq,Sort from #Temp444 ) aa
  133. //left join ( select invcode ,BatchCode,sortseq,sum(llqty) llqty from (select * from #Tempgggg ) hh group by invcode,BatchCode,sortseq ) bb
  134. //on aa.invcode=bb.invcode and aa.BatchCode=bb.BatchCode and aa.sortseq=bb.sortseq
  135. //left join ( select invcode ,BatchCode,sortseq,sum(RKQTY) RKQTY from (select * from #Tempgggg ) hh group by invcode,BatchCode,sortseq ) bb2
  136. //on aa.invcode=bb2.invcode and aa.BatchCode=bb2.BatchCode and aa.sortseq=bb2.sortseq
  137. //left join dbo.ICSInventory inv on inv.InvCode=aa.invcode
  138. //order by aa.sort
  139. //DROP TABLE #TempMoPickInv
  140. //DROP TABLE #TempMoPickFL
  141. //DROP table #Temp444
  142. //DROP table #Temp3333
  143. //DROP table #Tempgggg
  144. //";
  145. //string sql2 = string.Format(sql, queryParam["Code"].ToString());
  146. #endregion
  147. #region {SQL}
  148. string sql = @"select b.TransCode,a.InvCode,sum(a.Quantity) as RKQTY ,isnull(cc.BatchCode,'') BatchCode,a.lotno
  149. INTO #TempMoPickFL
  150. from dbo.ICSInventoryLot a
  151. left join dbo.ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  152. left join dbo.ICSExtension cc on a.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
  153. group by b.TransCode,a.InvCode,cc.BatchCode,a.lotno
  154. --
  155. select ROW_NUMBER() OVER (partition by a.ID ORDER BY a.Sequence) AS SortSeq,c.LotNo,isnull(cc.BatchCode,'') BatchCode, b.InvCode, c.LLQTY as LLQTY ,a.MOCode,po.POCode PODocNo,o.InCode
  156. INTO #TempMoPickInv
  157. from dbo.ICSMO a
  158. left join dbo.ICSMOPick b on a.MODetailID= b.MODetailID and a.WorkPoint=b.WorkPoint
  159. left join (
  160. select a.TransCode,a.TransSequence,a.LotNo,sum(a.Quantity) as LLQTY from dbo.ICSWareHouseLotInfoLog a
  161. where a.BusinessCode='13'
  162. group by a.TransCode,a.TransSequence,a.LotNo) c on a.MOCode=c.TransCode and a.Sequence+'~'+b.Sequence =c.TransSequence
  163. left join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint
  164. left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint
  165. left join dbo.ICSExtension cc on lot.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
  166. left join dbo.ICSInventoryLotDetail dd on C.LotNo=dd.LotNo
  167. left join dbo.ICSPurchaseOrder po on dd.TransCode=po.POCode and dd.TransSequence = po.Sequence and a.WorkPoint=po.WorkPoint
  168. LEFT JOIN ICSOtherIn o ON dd.TransCode = o.InCode AND dd.TransSequence = o.Sequence
  169. where c.LotNo is not null
  170. ;
  171. select a.lotno Cominlotno,c.lotno IssueLotNo,C.SortSeq,C.MOCODE,c.InvCode ,c.BatchCode
  172. into #Temp3333 from #TempMoPickInv c
  173. inner join #TempMoPickFL a on a.TransCode=c.mocode
  174. ;
  175. WITH ICSMoALL AS
  176. (
  177. select
  178. 1 AS [Level],
  179. CAST(ii.SortSeq AS nvarchar(MAX)) AS SortSeq,
  180. -- SortSeq补零到5位1000011000010
  181. CAST(REPLICATE('0', 5 - LEN(CAST(ii.SortSeq AS VARCHAR))) + CAST(ii.SortSeq AS VARCHAR) AS nvarchar(MAX)) AS Sort,
  182. ii.mocode tmocode,
  183. cast(ii.mocode as nvarchar(400)) Pmocode,
  184. cast(rr.TransCode as nvarchar(400)) mocode,
  185. ii.invcode tinvcode,
  186. ii.invcode Pivcode,
  187. ii.invcode invcode,
  188. ii.BatchCode tBatchCode,
  189. ii.BatchCode PBatchCode,
  190. ii.BatchCode BatchCode,
  191. ii.lotno Tlotno,
  192. ii.LOTNO PLOTNO,
  193. ii.lotno
  194. FROM #TempMoPickInv ii
  195. left join #TempMoPickFL rr on ii.lotno=rr.lotno
  196. where ii.mOCode='{0}'
  197. UNION ALL
  198. select
  199. b.[Level]+1 AS [Level],
  200. -- 1.110.2
  201. CAST(b.SortSeq AS nvarchar(MAX)) + '.' + CAST(c.SortSeq AS nvarchar(MAX)) AS SortSeq,
  202. -- 00001.0000100010.00002
  203. CAST(b.Sort + '.' + REPLICATE('0', 5 - LEN(CAST(c.SortSeq AS VARCHAR))) + CAST(c.SortSeq AS VARCHAR) AS nvarchar(MAX)) AS Sort,
  204. b.tmocode,
  205. cast(B.MOCODE as nvarchar(400)) PMOCODE,
  206. cast(C.MOCODE as nvarchar(400)) MOCODE,
  207. b.tinvcode,
  208. B.invcode Pinvcode,
  209. C.invcode,
  210. b.tBatchCode,
  211. B.BatchCode PBatchCode,
  212. C.BatchCode,
  213. b.tlotno,
  214. C.Cominlotno PLOTNO,
  215. C.IssueLotNo lotno
  216. FROM #Temp3333 c -----
  217. INNER JOIN ICSMoALL b ON b.lotno=C.Cominlotno --=c.
  218. where b.[Level]<10
  219. )
  220. SELECT * into #Temp444
  221. FROM ICSMoALL a
  222. select ff.invcode ,ff.lotno,ii.LLQTY , ff.BatchCode,ii.PODocNo,ii.InCode,ii2.mocode,ii3.RKQTY,ff.SortSeq,ff.Sort
  223. into #Tempgggg
  224. from #Temp444 ff
  225. left join #TempMoPickInv ii on ii.lotno=ff.lotno
  226. left join #Temp3333 ii2 on ii2.Cominlotno=ff.lotno
  227. left join #TempMoPickFL ii3 on ii3.lotno=ff.lotno
  228. -- Sort字段排序
  229. select
  230. aa.invcode,
  231. aa.BatchCode,
  232. aa.sortseq,
  233. aa.sort,
  234. inv.InvName,
  235. inv.InvStd,
  236. bb.llqty,
  237. bb2.RKQTY,
  238. -- PO单号
  239. STUFF((select',' + PODocNo from (SELECT DISTINCT PODocNo FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') PODocNo,
  240. --
  241. STUFF((select',' + InCode from (SELECT DISTINCT InCode FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') InCode,
  242. --
  243. STUFF((select',' + mocode from (SELECT DISTINCT mocode FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') mocode
  244. from (select invcode, BatchCode, sortseq, Sort from #Temp444) aa
  245. left join (select invcode, BatchCode, sortseq, sum(llqty) llqty from (select * from #Tempgggg) hh group by invcode, BatchCode, sortseq) bb
  246. on aa.invcode=bb.invcode and aa.BatchCode=bb.BatchCode and aa.sortseq=bb.sortseq
  247. left join (select invcode, BatchCode, sortseq, sum(RKQTY) RKQTY from (select * from #Tempgggg) hh group by invcode, BatchCode, sortseq) bb2
  248. on aa.invcode=bb2.invcode and aa.BatchCode=bb2.BatchCode and aa.sortseq=bb2.sortseq
  249. left join dbo.ICSInventory inv on inv.InvCode=aa.invcode
  250. -- Sort字段排序
  251. order by aa.sort
  252. --
  253. DROP TABLE #TempMoPickInv
  254. DROP TABLE #TempMoPickFL
  255. DROP table #Temp444
  256. DROP table #Temp3333
  257. DROP table #Tempgggg";
  258. #endregion
  259. sql = string.Format(sql, queryParam["Code"].ToString());
  260. //return Repository().FindTableBySql(sql2.ToString());
  261. DataTable dt = SqlHelper.GetDataTableBySqlDH(sql);
  262. return dt;
  263. }
  264. }
  265. }