纽威
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.

3178 lines
167 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using NFine.Code;
  9. using NFine.Repository;
  10. using System.Data.Common;
  11. using NFine.Domain._03_Entity.SRM;
  12. using ICS.Application.Entity;
  13. using Newtonsoft.Json;
  14. using System.Configuration;
  15. using System.Data.SqlClient;
  16. using ICS.Data;
  17. using NFine.Domain._03_Entity.WMS;
  18. namespace NFine.Application.WMS
  19. {
  20. public class PickMaterialApp : RepositoryFactory<ICSVendor>
  21. {
  22. public static DataTable Invmes = new DataTable();
  23. //工单备料(工单子件)
  24. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  25. {
  26. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  27. DataTable dt = new DataTable();
  28. var queryParam = queryJson.ToJObject();
  29. List<DbParameter> parameter = new List<DbParameter>();
  30. StringBuilder sqlstring = new StringBuilder();
  31. #region [SQL]
  32. // sql = @"select a.ID,b.MOCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  33. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  34. //from ICSMOPick a
  35. //left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  36. //left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  37. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  38. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  39. // sql += " WHERE 1=1 and e.ID is null";
  40. sqlstring.Append($@"select a.MOCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  41. case when max(d.SourceID) is null then '' else '' end as IsNew,
  42. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,
  43. f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  44. from ICSMO a
  45. inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  46. left join ICSMOPickMerge d on d.SourceID=b.ID and d.WorkPoint=b.WorkPoint
  47. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  48. where a.WorkPoint='{WorkPoint}' ");
  49. if (!string.IsNullOrWhiteSpace(queryJson))
  50. {
  51. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  52. {
  53. sqlstring.Append($" and a.MOCode like '%{queryParam["POCode"]}%' ");
  54. }
  55. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  56. {
  57. sqlstring.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  58. }
  59. }
  60. sqlstring.Append(@" group by a.MOCode, a.WorkPoint,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,
  61. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  62. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10");
  63. #endregion
  64. return Repository().FindTablePageBySql(sqlstring.ToString(), parameter.ToArray(), ref jqgridparam);
  65. }
  66. //工单备料(工单子件)子表查询
  67. public DataTable GetSubGridJson1(string Code)
  68. {
  69. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  70. DataTable dt = new DataTable();
  71. //var queryParam = queryJson.ToJObject();
  72. List<DbParameter> parameter = new List<DbParameter>();
  73. string sql = @" select a.ID,b.MOCode as Code,a.Sequence+'-'+b.Sequence AS Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  74. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  75. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  76. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  77. from ICSMOPick a
  78. left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  79. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  80. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  81. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  82. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  83. where b.MOCode='{0}' and a.WorkPoint='{1}'";
  84. sql = string.Format(sql, Code, WorkPoint);
  85. return Repository().FindTableBySql(sql.ToString());
  86. }
  87. //工单领料(发料申请)
  88. public DataTable GetGridJson2(string queryJson, ref Pagination jqgridparam)
  89. {
  90. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  91. DataTable dt = new DataTable();
  92. var queryParam = queryJson.ToJObject();
  93. List<DbParameter> parameter = new List<DbParameter>();
  94. StringBuilder sqlString = new StringBuilder();
  95. #region [SQL]
  96. // select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  97. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  98. // from ICSMOApply a
  99. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  100. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  101. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  102. sqlString.Append($@"
  103. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  104. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  105. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  106. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  107. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan ,
  108. g.Status,
  109. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  110. --case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName != 'JOB' then ''
  111. --else (case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName = 'JOB' then '' else '' end) end as Status,
  112. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  113. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  114. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  115. from ICSMOApply a
  116. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  117. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  118. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  119. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  120. left join (SELECT ApplyCode,
  121. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  122. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB' AND sum(IssueQuantity)>0 then ''
  123. else '' end) end as Status
  124. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE!='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  125. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  126. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE!='17'");
  127. if (!string.IsNullOrWhiteSpace(queryJson))
  128. {
  129. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  130. {
  131. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  132. }
  133. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  134. {
  135. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  136. }
  137. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  138. {
  139. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  140. }
  141. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  142. {
  143. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  144. }
  145. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  146. {
  147. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  148. }
  149. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  150. {
  151. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  152. WHERE
  153. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  154. }
  155. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  156. {
  157. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  158. }
  159. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  160. {
  161. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  162. }
  163. }
  164. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  165. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  166. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  167. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  168. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER) as t where t.row=1");
  169. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  170. {
  171. if (queryParam["Status"].ToString() == "3")
  172. {
  173. sqlString.Append($@" AND t.Status='已过账' ");
  174. }
  175. else if (queryParam["Status"].ToString() == "2")
  176. {
  177. sqlString.Append($@" AND t.Status='已配料' ");
  178. }
  179. else if (queryParam["Status"].ToString() == "1")
  180. {
  181. sqlString.Append($@" AND t.Status='未配料' ");
  182. }
  183. }
  184. #endregion
  185. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  186. }
  187. //工单领料(发料申请)子表查询
  188. public DataTable GetSubGridJson2(string queryJson, string Code)
  189. {
  190. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  191. DataTable dt = new DataTable();
  192. var queryParam = queryJson.ToJObject();
  193. List<DbParameter> parameter = new List<DbParameter>();
  194. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  195. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  196. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  197. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  198. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,
  199. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  200. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  201. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  202. from ICSMOApply a
  203. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  204. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  205. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  206. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  207. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  208. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE!='17'";
  209. if (!string.IsNullOrWhiteSpace(queryJson))
  210. {
  211. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  212. {
  213. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  214. }
  215. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  216. {
  217. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  218. }
  219. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  220. {
  221. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  222. }
  223. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  224. {
  225. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  226. }
  227. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  228. {
  229. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  230. WHERE
  231. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  232. }
  233. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  234. {
  235. sql += $@" and a.CreateDateTime like '%{queryParam["CreateDate"]}%' ";
  236. }
  237. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  238. {
  239. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  240. }
  241. }
  242. sql += " ) c WHERE c.row=1 ";
  243. sql = string.Format(sql, Code, WorkPoint);
  244. return Repository().FindTableBySql(sql.ToString());
  245. }
  246. //售后领料
  247. public DataTable GetGridJson12(string queryJson, ref Pagination jqgridparam)
  248. {
  249. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  250. DataTable dt = new DataTable();
  251. var queryParam = queryJson.ToJObject();
  252. List<DbParameter> parameter = new List<DbParameter>();
  253. StringBuilder sqlString = new StringBuilder();
  254. #region [SQL]
  255. // select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  256. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  257. // from ICSMOApply a
  258. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  259. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  260. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  261. sqlString.Append($@"
  262. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  263. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  264. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  265. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  266. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan ,
  267. g.Status,
  268. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  269. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  270. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  271. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  272. from ICSMOApply a
  273. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  274. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  275. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  276. left join (SELECT ApplyCode,
  277. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  278. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB'AND sum(IssueQuantity)>0 then ''
  279. else '' end) end as Status
  280. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  281. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  282. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  283. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE='17' ");
  284. if (!string.IsNullOrWhiteSpace(queryJson))
  285. {
  286. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  287. {
  288. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  289. }
  290. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  291. {
  292. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  293. }
  294. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  295. {
  296. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  297. }
  298. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  299. {
  300. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  301. }
  302. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  303. {
  304. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  305. }
  306. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  307. {
  308. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  309. WHERE
  310. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  311. }
  312. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  313. {
  314. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  315. }
  316. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  317. {
  318. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  319. }
  320. }
  321. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  322. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  323. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  324. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  325. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER) as t where t.row=1");
  326. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  327. {
  328. if (queryParam["Status"].ToString() == "3")
  329. {
  330. sqlString.Append($@" AND t.Status='已过账' ");
  331. }
  332. else if (queryParam["Status"].ToString() == "2")
  333. {
  334. sqlString.Append($@" AND t.Status='已配料' ");
  335. }
  336. else if (queryParam["Status"].ToString() == "1")
  337. {
  338. sqlString.Append($@" AND t.Status='未配料' ");
  339. }
  340. }
  341. #endregion
  342. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  343. }
  344. //售后领料(子表查询)
  345. public DataTable GetSubGridJson12(string queryJson, string Code)
  346. {
  347. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  348. DataTable dt = new DataTable();
  349. var queryParam = queryJson.ToJObject();
  350. List<DbParameter> parameter = new List<DbParameter>();
  351. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  352. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  353. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  354. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  355. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,
  356. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  357. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  358. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  359. from ICSMOApply a
  360. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  361. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  362. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  363. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  364. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  365. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE='17'";
  366. if (!string.IsNullOrWhiteSpace(queryJson))
  367. {
  368. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  369. {
  370. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  371. }
  372. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  373. {
  374. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  375. }
  376. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  377. {
  378. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  379. }
  380. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  381. {
  382. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  383. }
  384. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  385. {
  386. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  387. WHERE
  388. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  389. }
  390. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  391. {
  392. sql += $@" and a.CreateDateTime like '%{queryParam["CreateDate"]}%' ";
  393. }
  394. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  395. {
  396. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  397. }
  398. }
  399. sql += " ) c WHERE c.row=1 ";
  400. sql = string.Format(sql, Code, WorkPoint);
  401. return Repository().FindTableBySql(sql.ToString());
  402. }
  403. //工单材料出库(材料出库)
  404. public DataTable GetGridJson3(string queryJson, ref Pagination jqgridparam)
  405. {
  406. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  407. DataTable dt = new DataTable();
  408. var queryParam = queryJson.ToJObject();
  409. List<DbParameter> parameter = new List<DbParameter>();
  410. StringBuilder sqlString = new StringBuilder();
  411. #region [SQL]
  412. // sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  413. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  414. // from ICSMOIssue a
  415. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  416. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  417. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint ";
  418. // sql += " WHERE 1=1 and e.ID is null";
  419. sqlString.Append($@"SELECT * FROM(SELECT row_number ( ) OVER ( partition BY a.IssueCode ORDER BY a.IssueCode ) AS row,
  420. a.IssueCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  421. case when max(e.SourceID) is null then '' else ''
  422. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  423. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  424. from ICSMOIssue a
  425. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  426. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  427. where a.WorkPoint = '{WorkPoint}' ");
  428. if (!string.IsNullOrWhiteSpace(queryJson))
  429. {
  430. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  431. {
  432. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  433. }
  434. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  435. {
  436. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  437. }
  438. }
  439. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,f.BatchCode,
  440. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  441. f.cFree8, f.cFree9, f.cFree10 ) AS t WHERE t.row= 1 ");
  442. #endregion
  443. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  444. }
  445. //工单材料出库(材料出库)子表查询
  446. public DataTable GetSubGridJson3(string Code)
  447. {
  448. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  449. DataTable dt = new DataTable();
  450. //var queryParam = queryJson.ToJObject();
  451. List<DbParameter> parameter = new List<DbParameter>();
  452. string sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  453. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  454. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  455. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  456. from ICSMOIssue a
  457. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  458. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  459. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  460. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  461. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  462. sql = string.Format(sql, Code, WorkPoint);
  463. return Repository().FindTableBySql(sql.ToString());
  464. }
  465. //委外备料(委外备料)
  466. public DataTable GetGridJson4(string queryJson, ref Pagination jqgridparam)
  467. {
  468. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  469. DataTable dt = new DataTable();
  470. var queryParam = queryJson.ToJObject();
  471. List<DbParameter> parameter = new List<DbParameter>();
  472. StringBuilder sqlString = new StringBuilder();
  473. #region [SQL]
  474. sqlString.Append($@"select * from (select row_number() over(partition by b.OOCode order by b.OOCode) row, b.OOCode as Code,
  475. b.CreateDateTime as MTIME,
  476. b.CreatePerson as MUSER,
  477. case
  478. when max(e.SourceID) is null then ''
  479. else ''
  480. end as IsNew,
  481. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  482. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  483. from ICSOOPick a
  484. inner join ICSOutsourcingOrder b on a.OODetailID = b.OODetailID and a.WorkPoint = b.WorkPoint
  485. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  486. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  487. WHERE b.WorkPoint = '{WorkPoint}' ");
  488. if (!string.IsNullOrWhiteSpace(queryJson))
  489. {
  490. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  491. {
  492. sqlString.Append($@" and a.OOCode like '%{queryParam["POCode"]}%' ");
  493. }
  494. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  495. {
  496. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  497. }
  498. }
  499. sqlString.Append(@" group by b.OOCode,b.CreateDateTime,b.CreatePerson,f.Colspan ,f.ProjectCode ,
  500. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  501. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10) t where t.row=1");
  502. #endregion
  503. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  504. }
  505. //委外备料(委外备料)子表查询
  506. public DataTable GetSubGridJson4(string Code)
  507. {
  508. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  509. DataTable dt = new DataTable();
  510. //var queryParam = queryJson.ToJObject();
  511. List<DbParameter> parameter = new List<DbParameter>();
  512. string sql = @"select a.ID,b.OOCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  513. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  514. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  515. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  516. from ICSOOPick a
  517. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID and a.WorkPoint=b.WorkPoint
  518. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  519. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  520. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  521. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  522. where b.OOCode='{0}' and b.WorkPoint='{1}'";
  523. sql = string.Format(sql, Code, WorkPoint);
  524. return Repository().FindTableBySql(sql.ToString());
  525. }
  526. //委外领料(委外发料申请)
  527. public DataTable GetGridJson5(string queryJson, ref Pagination jqgridparam)
  528. {
  529. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  530. DataTable dt = new DataTable();
  531. var queryParam = queryJson.ToJObject();
  532. List<DbParameter> parameter = new List<DbParameter>();
  533. StringBuilder sqlString = new StringBuilder();
  534. #region [SQL]
  535. // sql = @"select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  536. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  537. // from ICSOApply a
  538. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  539. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  540. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  541. // sql += " WHERE 1=1 and e.ID is null";
  542. sqlString.Append($@"select * from (select row_number() over (partition by a.ApplyCode order by a.ApplyCode ) row, a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  543. case when max(e.SourceID) is null then ''
  544. else ''
  545. end as IsNew,
  546. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  547. case when sum(a.Quantity) =sum(IssueQuantity) then ''
  548. when sum(a.Quantity)!=sum(IssueQuantity) AND sum(IssueQuantity)>0 then ''
  549. else '' end as Status,
  550. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  551. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  552. from ICSOApply a
  553. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  554. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  555. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  556. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  557. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  558. where a.WorkPoint = '{WorkPoint}'");
  559. if (!string.IsNullOrWhiteSpace(queryJson))
  560. {
  561. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  562. {
  563. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  564. }
  565. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  566. {
  567. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  568. }
  569. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  570. {
  571. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  572. }
  573. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  574. {
  575. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  576. }
  577. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  578. {
  579. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  580. WHERE
  581. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  582. }
  583. }
  584. sqlString.Append(@"group by a.ApplyCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  585. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  586. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID ) t where row=1");
  587. #endregion
  588. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  589. }
  590. //委外领料(委外发料申请)子表查询
  591. public DataTable GetSubGridJson5(string Code, string queryJson)
  592. {
  593. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  594. DataTable dt = new DataTable();
  595. var queryParam = queryJson.ToJObject();
  596. List<DbParameter> parameter = new List<DbParameter>();
  597. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  598. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode, a.SourceCode,a.SourceSequence,a.VenCode,a.VenName,
  599. b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  600. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area,
  601. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  602. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  603. from ICSOApply a
  604. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  605. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  606. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  607. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  608. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  609. where a.ApplyCode='{0}' and a.WorkPoint='{1}'";
  610. if (!string.IsNullOrWhiteSpace(queryJson))
  611. {
  612. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  613. {
  614. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  615. }
  616. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  617. {
  618. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  619. }
  620. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  621. {
  622. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  623. }
  624. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  625. {
  626. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  627. WHERE
  628. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  629. }
  630. }
  631. sql += " ) c WHERE c.row=1 ";
  632. sql = string.Format(sql, Code, WorkPoint);
  633. return Repository().FindTableBySql(sql.ToString());
  634. }
  635. //委外材料出库(委外发料申请)
  636. public DataTable GetGridJson6(string queryJson, ref Pagination jqgridparam)
  637. {
  638. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  639. DataTable dt = new DataTable();
  640. var queryParam = queryJson.ToJObject();
  641. List<DbParameter> parameter = new List<DbParameter>();
  642. StringBuilder sqlString = new StringBuilder();
  643. #region [SQL]
  644. // sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseCode,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  645. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  646. // from ICSOIssue a
  647. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  648. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  649. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  650. // sql += " WHERE 1=1 and e.ID is null";
  651. sqlString.Append($@"select * from(select row_number() over(partition by a.IssueCode order by a.IssueCode) row, a.IssueCode as Code,
  652. a.CreateDateTime as MTIME,
  653. a.CreatePerson as MUSER,
  654. case
  655. when max(e.SourceID) is null then ''
  656. else ''
  657. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  658. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  659. f.cFree8,f.cFree9,f.cFree10
  660. from ICSOIssue a
  661. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  662. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  663. where a.WorkPoint = '{WorkPoint}'");
  664. if (!string.IsNullOrWhiteSpace(queryJson))
  665. {
  666. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  667. {
  668. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  669. }
  670. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  671. {
  672. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  673. }
  674. }
  675. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  676. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  677. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10) t where t.row=1");
  678. #endregion
  679. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  680. }
  681. //委外材料出库(委外发料申请)子表查询
  682. public DataTable GetSubGridJson6(string Code)
  683. {
  684. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  685. DataTable dt = new DataTable();
  686. //var queryParam = queryJson.ToJObject();
  687. List<DbParameter> parameter = new List<DbParameter>();
  688. string sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseCode,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  689. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  690. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  691. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  692. from ICSOIssue a
  693. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  694. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  695. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  696. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  697. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  698. sql = string.Format(sql, Code, WorkPoint);
  699. return Repository().FindTableBySql(sql.ToString());
  700. }
  701. //销售发货(销售发货)
  702. public DataTable GetGridJson7(string queryJson, ref Pagination jqgridparam)
  703. {
  704. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  705. DataTable dt = new DataTable();
  706. var queryParam = queryJson.ToJObject();
  707. List<DbParameter> parameter = new List<DbParameter>();
  708. StringBuilder sqlString = new StringBuilder();
  709. #region [SQL]
  710. // sql = @"select a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  711. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  712. // from ICSSDN a
  713. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  714. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  715. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  716. // sql += " WHERE 1=1 and a.Type='1' and e.ID is null";
  717. sqlString.Append($@"SELECT * from (SELECT Row_Number() over(partition by a.SDNCode Order by a.SDNCode) as r, a.SDNCode AS Code,
  718. CONVERT(varchar(100),a.CreateDateTime,23) AS MTIME,
  719. a.CreatePerson AS MUSER,
  720. a.CusCode,a.CusName,
  721. (CASE WHEN max(e.SourceID) IS NULL THEN '' ELSE '' END) AS IsNew,
  722. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  723. case when sum(a.Quantity) =sum(SDNQuantity) then ''
  724. when sum(a.Quantity)!=sum(SDNQuantity) AND sum(SDNQuantity)>0 then ''
  725. else '' end as Status,
  726. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  727. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID
  728. FROM ICSSDN a
  729. LEFT JOIN ICSMOPickMerge e ON a.ID = e.SourceID AND a.WorkPoint = e.WorkPoint
  730. LEFT JOIN ICSExtension f ON a.ExtensionID = f.ID AND a.WorkPoint = f.WorkPoint
  731. LEFT JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  732. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  733. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.SDNCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  734. WHERE a.WorkPoint = '{WorkPoint}' ");
  735. if (!string.IsNullOrWhiteSpace(queryJson))
  736. {
  737. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  738. {
  739. sqlString.Append($" and a.SDNCode like '%{queryParam["POCode"]}%' ");
  740. }
  741. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  742. {
  743. sqlString.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  744. }
  745. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  746. {
  747. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  748. }
  749. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  750. {
  751. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  752. }
  753. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  754. {
  755. sqlString.Append($@" and a.CusCode like '%{queryParam["CusCode"]}%' ");
  756. }
  757. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  758. {
  759. sqlString.Append($@" and a.CusName like '%{queryParam["CusName"]}%' ");
  760. }
  761. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  762. {
  763. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  764. WHERE
  765. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  766. }
  767. }
  768. sqlString.Append(@"GROUP BY a.SDNCode, a.CreateDateTime, a.CreatePerson, f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  769. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID,a.CusCode,a.CusName) t WHERE t.r=1");
  770. #endregion
  771. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  772. }
  773. //销售发货(销售发货)子表查询
  774. public DataTable GetSubGridJson7(string Code, string queryJson)
  775. {
  776. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  777. DataTable dt = new DataTable();
  778. var queryParam = queryJson.ToJObject();
  779. List<DbParameter> parameter = new List<DbParameter>();
  780. string sql = @"SELECT * FROM (select row_number() over(partition by a.SDNCode,a.InvCode,a.Sequence ORDER BY a.SDNCode) as row,
  781. a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode
  782. ,a.WorkPoint,a.Points,a.DeliveryType,a.DeliveryDescribe,a.InvDescribe,a.OtherDescribe,a.CusCode,a.CusName,
  783. a.SalesUnit,a.StockIndicator,a.IsSerialNumber,
  784. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  785. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area
  786. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  787. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.SDNQuantity as IssueQuantity
  788. from ICSSDN a
  789. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  790. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  791. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  792. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  793. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  794. where a.SDNCode='{0}' and a.WorkPoint='{1}'";
  795. if (!string.IsNullOrWhiteSpace(queryJson))
  796. {
  797. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  798. {
  799. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  800. }
  801. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  802. {
  803. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  804. }
  805. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  806. {
  807. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  808. }
  809. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  810. {
  811. sql += $@" and a.CusCode like '%{queryParam["CusCode"]}%' ";
  812. }
  813. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  814. {
  815. sql += $@" and a.CusName like '%{queryParam["CusName"]}%' ";
  816. }
  817. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  818. {
  819. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  820. WHERE
  821. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  822. }
  823. }
  824. sql += " ) c WHERE c.row=1 ";
  825. sql = string.Format(sql, Code, WorkPoint);
  826. return Repository().FindTableBySql(sql.ToString());
  827. }
  828. //其它出库(其它出库)
  829. public DataTable GetGridJson8(string queryJson, ref Pagination jqgridparam)
  830. {
  831. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  832. DataTable dt = new DataTable();
  833. var queryParam = queryJson.ToJObject();
  834. List<DbParameter> parameter = new List<DbParameter>();
  835. StringBuilder sqlString = new StringBuilder();
  836. #region [SQL]
  837. // sql = @"select a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  838. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  839. //from ICSOtherOut a
  840. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  841. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  842. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  843. // sql += " WHERE 1=1 and e.ID is null ";
  844. sqlString.Append($@"select * from(select row_number() over(partition by a.OutCode order by a.OutCode) row, a.OutCode as Code,
  845. CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,
  846. a.CreatePerson as MUSER,
  847. case
  848. when max(e.SourceID) is null then ''
  849. else ''
  850. end as IsNew,
  851. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  852. case when sum(a.Quantity)=sum(a.OutQuantity) then ''
  853. when sum(a.Quantity)!=sum(a.OutQuantity) and sum(a.OutQuantity)>0 then ''
  854. else '' END AS Status,
  855. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  856. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  857. from ICSOtherOut a
  858. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  859. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  860. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  861. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  862. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.OutCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  863. where a.WorkPoint = '{WorkPoint}'");
  864. #endregion
  865. if (!string.IsNullOrWhiteSpace(queryJson))
  866. {
  867. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  868. {
  869. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  870. }
  871. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  872. {
  873. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  874. }
  875. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  876. {
  877. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  878. }
  879. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  880. {
  881. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  882. }
  883. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  884. {
  885. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  886. WHERE
  887. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  888. }
  889. }
  890. sqlString.Append(@" group by a.OutCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,f.BatchCode,
  891. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,
  892. f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID) t where t.row=1");
  893. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  894. }
  895. //其它出库(其它出库)子表查询
  896. public DataTable GetSubGridJson8(string Code, string queryJson)
  897. {
  898. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  899. DataTable dt = new DataTable();
  900. var queryParam = queryJson.ToJObject();
  901. List<DbParameter> parameter = new List<DbParameter>();
  902. string sql = @"SELECT * FROM (select row_number() over(partition by a.OutCode,a.InvCode,a.Sequence ORDER BY a.OutCode) as row,
  903. a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.Quantity,
  904. a.InvCode,a.WorkPoint,a.OrderType, a.TypeDescribe,a.CostCenter,a.Remarks,a.PersonNumber,a.InvDescribe,
  905. a.Unit,a.StockIndicator,
  906. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  907. case when e.SourceID is null then '' else '' end as IsNew,detail.LocationCode AS Area
  908. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  909. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  910. from ICSOtherOut a
  911. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  912. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  913. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  914. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  915. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  916. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  917. if (!string.IsNullOrWhiteSpace(queryJson))
  918. {
  919. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  920. {
  921. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  922. }
  923. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  924. {
  925. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  926. }
  927. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  928. {
  929. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  930. }
  931. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  932. {
  933. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  934. WHERE
  935. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  936. }
  937. }
  938. sql += " ) c WHERE c.row=1 ";
  939. sql = string.Format(sql, Code, WorkPoint);
  940. return Repository().FindTableBySql(sql.ToString());
  941. }
  942. //借用(借用)
  943. public DataTable GetGridJson9(string queryJson, ref Pagination jqgridparam)
  944. {
  945. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  946. DataTable dt = new DataTable();
  947. var queryParam = queryJson.ToJObject();
  948. List<DbParameter> parameter = new List<DbParameter>();
  949. StringBuilder sqlString = new StringBuilder();
  950. #region [SQL]
  951. // sql = @"
  952. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  953. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  954. // from ICSBrrow a
  955. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  956. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  957. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  958. // sql += " WHERE 1=1 and e.ID is null ";
  959. sqlString.Append($@"select * from(select row_number() over(partition by a.BrrowCode order by a.BrrowCode) row, a.BrrowCode as Code,
  960. a.CreateDateTime as MTIME,
  961. a.CreatePerson as MUSER,
  962. case
  963. when max(e.SourceID) is null then ''
  964. else ''
  965. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  966. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  967. f.cFree8,f.cFree9,f.cFree10
  968. from ICSBrrow a
  969. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  970. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  971. where a.WorkPoint = '{WorkPoint}'");
  972. if (!string.IsNullOrWhiteSpace(queryJson))
  973. {
  974. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  975. {
  976. sqlString.Append($@" and a.BrrowCode like '%{queryParam["POCode"]}%' ");
  977. }
  978. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  979. {
  980. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  981. }
  982. }
  983. sqlString.Append(@"group by a.BrrowCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  984. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  985. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,
  986. f.cFree10) t where t.row=1");
  987. #endregion
  988. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  989. }
  990. //借用(借用)子表查询
  991. public DataTable GetSubGridJson9(string Code)
  992. {
  993. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  994. DataTable dt = new DataTable();
  995. //var queryParam = queryJson.ToJObject();
  996. List<DbParameter> parameter = new List<DbParameter>();
  997. string sql = @"select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  998. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  999. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1000. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.BrrowQuantity as IssueQuantity
  1001. from ICSBrrow a
  1002. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1003. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1004. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1005. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1006. where a.BrrowCode='{0}' and a.WorkPoint='{1}'";
  1007. sql = string.Format(sql, Code, WorkPoint);
  1008. return Repository().FindTableBySql(sql.ToString());
  1009. }
  1010. //物料调拨
  1011. public DataTable GetGridJson10(string queryJson, ref Pagination jqgridparam)
  1012. {
  1013. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1014. DataTable dt = new DataTable();
  1015. var queryParam = queryJson.ToJObject();
  1016. List<DbParameter> parameter = new List<DbParameter>();
  1017. StringBuilder sqlString = new StringBuilder();
  1018. #region [SQL]
  1019. // sql = @"
  1020. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1021. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1022. // from ICSBrrow a
  1023. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1024. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1025. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1026. // sql += " WHERE 1=1 and e.ID is null ";
  1027. sqlString.Append($@"select * from (select row_number() over(partition by a.TransferNO order by a.TransferNO) row,
  1028. a.TransferNO as Code,a.ID,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  1029. case
  1030. when max(e.SourceID) is null then ''
  1031. else ''
  1032. end as IsNew,
  1033. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  1034. case when sum(a.Quantity)=sum(a.TransferQuantity) then ''
  1035. when sum(a.Quantity)!=sum(a.TransferQuantity) and sum(a.TransferQuantity)>0 then ''
  1036. else '' END AS Status,
  1037. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  1038. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  1039. from ICSTransfer a
  1040. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1041. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1042. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1043. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.ToWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1044. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.TransferNO=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  1045. where a.WorkPoint = '{WorkPoint}' and a.Status = '2'");
  1046. if (!string.IsNullOrWhiteSpace(queryJson))
  1047. {
  1048. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1049. {
  1050. sqlString.Append($@" and a.TransferNO like '%{queryParam["POCode"]}%' ");
  1051. }
  1052. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1053. {
  1054. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1055. }
  1056. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1057. {
  1058. sqlString.Append($@" and a.ToWarehouseCode like '%{queryParam["WHCode"]}%' ");
  1059. }
  1060. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1061. {
  1062. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  1063. }
  1064. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1065. {
  1066. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1067. WHERE
  1068. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  1069. }
  1070. }
  1071. sqlString.Append(@"group by a.TransferNO,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  1072. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  1073. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,a.TransferQuantity) t where t.row=1");
  1074. #endregion
  1075. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1076. }
  1077. //物料调拨子表查询
  1078. public DataTable GetSubGridJson10(string Code, string queryJson)
  1079. {
  1080. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1081. DataTable dt = new DataTable();
  1082. var queryParam = queryJson.ToJObject();
  1083. List<DbParameter> parameter = new List<DbParameter>();
  1084. string sql = @"SELECT * from (select row_number() over(partition by a.TransferNO,a.InvCode,
  1085. a.Sequence ORDER BY a.TransferNO) as row, a.ID,a.TransferNO as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.FromWarehouseCode as WHCode,b.WarehouseName,detail.LocationCode AS Area,
  1086. a.InvCode,a.ToWarehouseCode,a.EATTRIBUTE1 AS ReceiveWork,a.WorkPoint,a.OrderType,
  1087. a.TypeDescribe,a.Remarks,a.PersonNumber,a.InvDescribe,
  1088. a.Unit,a.StockIndicator,a.ReceiveInvCode,a.ReceiveInvDescribe,
  1089. a.ReceiveStock,a.ReceiveSales,a.ReceiveSequence,a.Remark2,
  1090. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1091. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1092. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1093. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.TransferQuantity as IssueQuantity
  1094. from ICSTransfer a
  1095. left join ICSWarehouse b on a.FromWarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1096. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1097. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.FromWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1098. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1099. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1100. where a.TransferNO='{0}' and b.WorkPoint='{1}'";
  1101. if (!string.IsNullOrWhiteSpace(queryJson))
  1102. {
  1103. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1104. {
  1105. sql += " and a.ToWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  1106. }
  1107. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1108. {
  1109. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  1110. }
  1111. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1112. {
  1113. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  1114. }
  1115. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1116. {
  1117. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1118. WHERE
  1119. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  1120. }
  1121. }
  1122. sql += " ) as t where t.row=1";
  1123. sql = string.Format(sql, Code, WorkPoint);
  1124. return Repository().FindTableBySql(sql.ToString());
  1125. }
  1126. //两步调拨
  1127. public DataTable GetGridJson11(string queryJson, ref Pagination jqgridparam)
  1128. {
  1129. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1130. DataTable dt = new DataTable();
  1131. var queryParam = queryJson.ToJObject();
  1132. List<DbParameter> parameter = new List<DbParameter>();
  1133. StringBuilder sqlString = new StringBuilder();
  1134. #region [SQL]
  1135. // sql = @"
  1136. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1137. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1138. // from ICSBrrow a
  1139. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1140. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1141. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1142. // sql += " WHERE 1=1 and e.ID is null ";
  1143. sqlString.Append($@"select * from (select row_number() over(partition by a.OutCode order by a.OutCode)row, a.OutCode as Code, a.CreateDateTime as MTIME, a.CreatePerson as MUSER,
  1144. case when max(e.SourceID) is null then '' else '' end as IsNew,a.EATTRIBUTE1 AS ReceiveWork,tra.ToWarehouseCode,
  1145. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  1146. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10
  1147. FROM ICSOtherOut a
  1148. INNER JOIN ICSTransfer tra ON a.TransferDetailID = tra.TransferDetailID AND a.WorkPoint = tra.WorkPoint
  1149. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1150. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1151. where a.WorkPoint = '{WorkPoint}'
  1152. and a.Status = '2' ");
  1153. if (!string.IsNullOrWhiteSpace(queryJson))
  1154. {
  1155. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1156. {
  1157. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  1158. }
  1159. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1160. {
  1161. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1162. }
  1163. }
  1164. sqlString.Append(@" group by a.OutCode, a.CreateDateTime, a.CreatePerson,a.EATTRIBUTE1 ,tra.ToWarehouseCode, f.Colspan ,f.ProjectCode ,
  1165. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,
  1166. f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10) t where t.row=1");
  1167. #endregion
  1168. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1169. }
  1170. //两步调拨子表查询
  1171. public DataTable GetSubGridJson11(string Code)
  1172. {
  1173. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1174. DataTable dt = new DataTable();
  1175. //var queryParam = queryJson.ToJObject();
  1176. List<DbParameter> parameter = new List<DbParameter>();
  1177. string sql = @" select a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1178. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1179. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1180. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  1181. FROM ICSOtherOut a
  1182. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1183. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1184. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1185. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1186. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1187. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  1188. sql = string.Format(sql, Code, WorkPoint);
  1189. return Repository().FindTableBySql(sql.ToString());
  1190. }
  1191. // public DataTable GetICSMOPickMergeTemp(string ID,string Type)
  1192. // {
  1193. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1194. // ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1195. // #region sql
  1196. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1197. // c.Code,
  1198. // c.InvCode,
  1199. // c.InvName,
  1200. // c.InvStd,
  1201. // c.InvUnit,
  1202. // FLOOR(c.iQuantity) AS iQuantity,
  1203. // d.WarehouseCode,
  1204. // m.LotNO,
  1205. // (case when m.LotNo is null then 0 else FLOOR(ISNULL(d.Quantity, 0)) end) AS QTY,
  1206. // (case when m.LotNo is null then null else d.LocationCode end) AS LocationCode,
  1207. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1208. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  1209. // FROM
  1210. // ({0}) c
  1211. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  1212. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  1213. // LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1214. //DECLARE @ItemCode VARCHAR(50),
  1215. // @QTY DECIMAL(18,3),
  1216. // @ItemCodeCurrent VARCHAR(50),
  1217. // @Lotno VARCHAR(50),
  1218. // @QTYCurrent DECIMAL(18,3),
  1219. // @iQuantityCurrent DECIMAL(18,3),
  1220. // @CanDelete BIT,
  1221. // @Row INT,
  1222. // @rowCurrent INT
  1223. //SET @Row = @@rowcount
  1224. //SET @rowCurrent=1
  1225. //SET @CanDelete=0
  1226. //SET @ItemCode=''
  1227. //SET @Lotno = ''
  1228. //WHILE @rowCurrent<=@Row
  1229. // BEGIN
  1230. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity,@Lotno = Lotno FROM #temp WHERE rowNo=@rowCurrent
  1231. //PRINT(@rowCurrent)
  1232. // IF @ItemCode<>@ItemCodeCurrent
  1233. // BEGIN
  1234. // SET @ItemCode=@ItemCodeCurrent
  1235. // SET @QTY=0
  1236. // SET @CanDelete=0
  1237. // END
  1238. // IF @CanDelete=1
  1239. // BEGIN
  1240. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  1241. // SET @rowCurrent += 1
  1242. // CONTINUE
  1243. // END
  1244. // SET @QTY += @QTYCurrent
  1245. // IF @LotNo is null or @QTY>=@iQuantityCurrent
  1246. // BEGIN
  1247. // SET @CanDelete=1
  1248. // END
  1249. // SET @rowCurrent += 1
  1250. // END
  1251. //SELECT * FROM #temp
  1252. //DROP TABLE #temp
  1253. //";
  1254. // #endregion
  1255. // string sqls = "";
  1256. // if (Type=="1")
  1257. // {
  1258. // #region 工单备料sql
  1259. // sqls = @" SELECT
  1260. // c.MOCode as Code,
  1261. // a.InvCode,
  1262. // b.InvName,
  1263. // b.InvStd,
  1264. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1265. // a.WhCode,
  1266. // b.InvUnit,
  1267. // a.ExtensionID
  1268. // FROM
  1269. // ICSMOPick a
  1270. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1271. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1272. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1273. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1274. // #endregion
  1275. // }
  1276. // if (Type == "2")
  1277. // {
  1278. // return GetICSMOPickMergeByWorkorder(ID, WorkPoint);
  1279. // }
  1280. // if (Type=="3")
  1281. // {
  1282. // #region 工单材料出库SQL
  1283. // sqls = @" select
  1284. // a.IssueCode as Code,
  1285. // a.InvCode,
  1286. // b.InvName,
  1287. // b.InvStd,
  1288. // b.InvUnit,
  1289. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1290. // a.WhCode,
  1291. // a.ExtensionID
  1292. // FROM
  1293. // ICSMOIssue a
  1294. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1295. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1296. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1297. // #endregion
  1298. // }
  1299. // if (Type=="4")
  1300. // {
  1301. // #region 委外备料SQL
  1302. // sqls = @" select
  1303. // c.OOCode as Code,
  1304. // a.InvCode,
  1305. // b.InvName,
  1306. // b.InvStd,
  1307. // b.InvUnit,
  1308. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1309. // a.WhCode,
  1310. // a.ExtensionID
  1311. // FROM
  1312. // ICSOOPick a
  1313. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1314. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1315. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1316. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
  1317. // #endregion
  1318. // }
  1319. // if (Type=="5")
  1320. // {
  1321. // #region 委外领料SQL
  1322. // sqls = @" select
  1323. // a.ApplyCode as Code,
  1324. // a.InvCode,
  1325. // b.InvName,
  1326. // b.InvStd,
  1327. //b.InvUnit,
  1328. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1329. // a.WhCode,
  1330. // a.ExtensionID
  1331. // FROM
  1332. // ICSOApply a
  1333. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1334. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1335. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1336. // #endregion
  1337. // }
  1338. // if (Type=="6")
  1339. // {
  1340. // #region 委外材料出库SQL
  1341. // sqls = @" select
  1342. // a.IssueCode as Code,
  1343. // a.InvCode,
  1344. // b.InvName,
  1345. // b.InvStd,
  1346. //b.InvUnit,
  1347. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1348. // a.WhCode,
  1349. //a.ExtensionID
  1350. // FROM
  1351. // ICSOIssue a
  1352. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1353. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1354. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1355. // #endregion
  1356. // }
  1357. // if (Type=="7")
  1358. // {
  1359. // #region 销售发货SQL
  1360. // sqls = @" select
  1361. // a.SDNCode as Code,
  1362. // a.InvCode,
  1363. // b.InvName,
  1364. // b.InvStd,
  1365. //b.InvUnit,
  1366. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1367. // a.WhCode,
  1368. //a.ExtensionID
  1369. // FROM
  1370. // ICSSDN a
  1371. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1372. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1373. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1374. // #endregion
  1375. // }
  1376. // if (Type=="8")
  1377. // {
  1378. // #region 其它出库SQL
  1379. // sqls = @" select
  1380. // a.OutCode as Code,
  1381. // a.InvCode,
  1382. // b.InvName,
  1383. // b.InvStd,
  1384. // b.InvUnit,
  1385. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1386. // a.WhCode,
  1387. // a.ExtensionID
  1388. // FROM
  1389. // ICSOtherOut a
  1390. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1391. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1392. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1393. // #endregion
  1394. // }
  1395. // if (Type == "9")
  1396. // {
  1397. // #region 借用SQL
  1398. // sqls = @"select
  1399. // a.BrrowCode as Code,
  1400. // a.InvCode,
  1401. // b.InvName,
  1402. // b.InvStd,
  1403. //b.InvUnit,
  1404. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1405. // a.WhCode,
  1406. //a.ExtensionID
  1407. // FROM
  1408. // ICSBrrow a
  1409. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1410. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1411. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1412. // #endregion
  1413. // }
  1414. // if (Type == "10")
  1415. // {
  1416. // #region 物料调拨
  1417. // sqls = @" select
  1418. // a.TransferNO as Code,
  1419. // a.InvCode,
  1420. // b.InvName,
  1421. // b.InvStd,
  1422. //b.InvUnit,
  1423. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1424. // a.FromWarehouseCode as WhCode,
  1425. //a.ExtensionID
  1426. // FROM
  1427. // ICSTransfer a
  1428. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1429. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1430. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
  1431. // #endregion
  1432. // }
  1433. // if (Type == "11")
  1434. // {
  1435. // #region 两步调出
  1436. // sqls = @"select
  1437. // a.OutCode as Code,
  1438. // a.InvCode,
  1439. // b.InvName,
  1440. // b.InvStd,
  1441. //b.InvUnit,
  1442. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1443. // a.WHCode ,
  1444. //a.ExtensionID
  1445. // from ICSOtherOut a
  1446. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1447. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1448. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1449. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
  1450. // #endregion
  1451. // }
  1452. // sqls = string.Format(sqls, ID,WorkPoint);
  1453. // sql = string.Format(sql, sqls, WorkPoint);
  1454. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1455. // DataTable dtCloned = table.Clone();
  1456. // foreach (DataColumn col in dtCloned.Columns)
  1457. // {
  1458. // col.DataType = typeof(string);
  1459. // }
  1460. // foreach (DataRow row in table.Rows)
  1461. // {
  1462. // DataRow newrow = dtCloned.NewRow();
  1463. // foreach (DataColumn column in dtCloned.Columns)
  1464. // {
  1465. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1466. // }
  1467. // dtCloned.Rows.Add(newrow);
  1468. // }
  1469. // if (Invmes.Rows.Count > 0)
  1470. // {
  1471. // dtCloned.Merge(Invmes, false);
  1472. // }
  1473. // return dtCloned;
  1474. // }
  1475. public DataTable GetICSMOPickMergeTemp(string ID, string Type)
  1476. {
  1477. string postUrlStr = System.Configuration.ConfigurationManager.AppSettings["HGDocpostUrlStr"].ToString();
  1478. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1479. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1480. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1481. ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1482. #region sql
  1483. #endregion
  1484. string sqls = "";
  1485. if (Type == "1")
  1486. {
  1487. #region 工单备料sql
  1488. sqls = @" SELECT
  1489. c.MOCode as Code,
  1490. c.Sequence+'~'+a.Sequence as Sequence,
  1491. a.InvCode,
  1492. b.InvName,
  1493. b.InvStd,
  1494. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1495. a.WhCode,
  1496. b.InvUnit,
  1497. a.ExtensionID
  1498. FROM
  1499. ICSMOPick a
  1500. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1501. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1502. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1503. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,c.Sequence+'~'+a.Sequence";
  1504. #endregion
  1505. }
  1506. if (Type == "2" || Type == "12")
  1507. {
  1508. sqls = @"select
  1509. a.ApplyCode as Code,a.Sequence, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  1510. FROM
  1511. ICSMOApply a
  1512. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1513. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1514. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1515. }
  1516. if (Type == "3")
  1517. {
  1518. #region 工单材料出库SQL
  1519. sqls = @" select
  1520. a.IssueCode as Code,
  1521. a.Sequence,
  1522. a.InvCode,
  1523. b.InvName,
  1524. b.InvStd,
  1525. b.InvUnit,
  1526. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1527. a.WhCode,
  1528. a.ExtensionID
  1529. FROM
  1530. ICSMOIssue a
  1531. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1532. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1533. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1534. #endregion
  1535. }
  1536. if (Type == "4")
  1537. {
  1538. #region 委外备料SQL
  1539. sqls = @" select
  1540. c.OOCode as Code,
  1541. c.Sequence+'~'+a.Sequence as Sequence,
  1542. a.InvCode,
  1543. b.InvName,
  1544. b.InvStd,
  1545. b.InvUnit,
  1546. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1547. a.WhCode,
  1548. a.ExtensionID
  1549. FROM
  1550. ICSOOPick a
  1551. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1552. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1553. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1554. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID,c.Sequence+'~'+a.Sequence";
  1555. #endregion
  1556. }
  1557. if (Type == "5")
  1558. {
  1559. #region 委外领料SQL
  1560. sqls = @"select
  1561. a.ApplyCode as Code,
  1562. a.Sequence,
  1563. a.InvCode,
  1564. b.InvName,
  1565. b.InvStd,
  1566. b.InvUnit,
  1567. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1568. a.WhCode,a.ExtensionID
  1569. FROM
  1570. ICSOApply a
  1571. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1572. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1573. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1574. #endregion
  1575. }
  1576. if (Type == "6")
  1577. {
  1578. #region 委外材料出库SQL
  1579. sqls = @" select
  1580. a.IssueCode as Code,
  1581. a.Sequence,
  1582. a.InvCode,
  1583. b.InvName,
  1584. b.InvStd,
  1585. b.InvUnit,
  1586. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1587. a.WhCode,
  1588. a.ExtensionID
  1589. FROM
  1590. ICSOIssue a
  1591. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1592. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1593. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1594. #endregion
  1595. }
  1596. if (Type == "7")
  1597. {
  1598. #region 销售发货SQL
  1599. sqls = @" select
  1600. a.SDNCode as Code,
  1601. a.Sequence,
  1602. a.InvCode,
  1603. b.InvName,
  1604. b.InvStd,
  1605. b.InvUnit,
  1606. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1607. a.WhCode,
  1608. a.ExtensionID
  1609. FROM
  1610. ICSSDN a
  1611. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1612. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1613. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1614. #endregion
  1615. }
  1616. if (Type == "8")
  1617. {
  1618. #region 其它出库SQL
  1619. sqls = @" select
  1620. a.OutCode as Code,
  1621. a.Sequence,
  1622. a.InvCode,
  1623. b.InvName,
  1624. b.InvStd,
  1625. b.InvUnit,
  1626. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1627. a.WhCode,
  1628. a.ExtensionID
  1629. FROM
  1630. ICSOtherOut a
  1631. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1632. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1633. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1634. #endregion
  1635. }
  1636. if (Type == "9")
  1637. {
  1638. #region 借用SQL
  1639. sqls = @"select
  1640. a.BrrowCode as Code,
  1641. a.Sequence,
  1642. a.InvCode,
  1643. b.InvName,
  1644. b.InvStd,
  1645. b.InvUnit,
  1646. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1647. a.WhCode,
  1648. a.ExtensionID
  1649. FROM
  1650. ICSBrrow a
  1651. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1652. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1653. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  1654. #endregion
  1655. }
  1656. if (Type == "10")
  1657. {
  1658. #region 物料调拨
  1659. sqls = @"select
  1660. a.TransferNO as Code,
  1661. a.Sequence,
  1662. a.InvCode,
  1663. b.InvName,
  1664. b.InvStd,
  1665. b.InvUnit,
  1666. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1667. a.FromWarehouseCode as WhCode,
  1668. a.ExtensionID
  1669. FROM
  1670. ICSTransfer a
  1671. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1672. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1673. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,a.Sequence";
  1674. #endregion
  1675. }
  1676. if (Type == "11")
  1677. {
  1678. #region 两步调出
  1679. sqls = @"select
  1680. a.OutCode as Code,
  1681. a.Sequence,
  1682. a.InvCode,
  1683. b.InvName,
  1684. b.InvStd,
  1685. b.InvUnit,
  1686. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1687. a.WHCode ,
  1688. a.ExtensionID
  1689. from ICSOtherOut a
  1690. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1691. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1692. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1693. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,a.Sequence";
  1694. #endregion
  1695. }
  1696. sqls = string.Format(sqls, ID, WorkPoint);
  1697. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1698. c.Code,
  1699. c.Sequence,
  1700. c.InvCode,
  1701. c.InvName,
  1702. c.InvStd,
  1703. c.InvUnit,
  1704. FLOOR(c.iQuantity) AS iQuantity,
  1705. c.WHCode AS WarehouseCode,
  1706. d.LotNO,
  1707. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  1708. FLOOR(ISNULL(d.Quantity, 0)) AS QTYLeft,
  1709. 0 AS SendQTY,
  1710. d.LocationCode AS LocationCode,
  1711. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1712. FLOOR(f.QTYTotal) QTYTotal,c.ExtensionID
  1713. FROM
  1714. ({sqls}) c
  1715. left join (select d.WarehouseCode,d.Quantity-d.LockQuantity as Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  1716. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1717. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1718. and d.WorkPoint='{WorkPoint}' AND d.Quantity-d.LockQuantity>0
  1719. --AND SUBSTRING( SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)),0,CHARINDEX('-', SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)))) Not IN(SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1720. --WHERE F_Define3='HGAreaConfig' AND F_Define1=d.WarehouseCode AND F_Define4=d.WorkPoint)
  1721. ) d
  1722. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1723. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity-LockQuantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1724. order by c.Code,c.Sequence,d.MTIME ";
  1725. var dataset = Repository().FindDataSetBySql(sql);
  1726. if (dataset.Tables.Count == 0)
  1727. return null;
  1728. DataTable table = dataset.Tables[0];
  1729. decimal qtyCount = 0;
  1730. bool remove = false;
  1731. List<int> removeList = new List<int>();
  1732. for (int i = 0; i < table.Rows.Count; i++)
  1733. {
  1734. if (i != 0
  1735. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  1736. || !table.Rows[i]["Sequence"].ToString().Equals(table.Rows[i - 1]["Sequence"].ToString())
  1737. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString())
  1738. || !table.Rows[i]["ExtensionID"].ToString().Equals(table.Rows[i - 1]["ExtensionID"].ToString()))
  1739. )
  1740. {
  1741. qtyCount = 0;
  1742. remove = false;
  1743. }
  1744. if (table.Rows[i]["QTYLeft"].ToString().ToDecimal() == 0)
  1745. {
  1746. removeList.Add(i);
  1747. continue;
  1748. }
  1749. if (remove)
  1750. {
  1751. removeList.Add(i);
  1752. }
  1753. else
  1754. {
  1755. var lotQty = table.Rows[i]["QTYLeft"].ToString().ToDecimal();
  1756. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1757. qtyCount += lotQty;
  1758. foreach (DataRow dr in table.Rows)
  1759. {
  1760. if (dr["LotNO"].ToString() == table.Rows[i]["LotNO"].ToString())
  1761. {
  1762. if (qtyCount > orderQty)
  1763. {
  1764. dr["QTYLeft"] = Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty);
  1765. }
  1766. else
  1767. {
  1768. dr["QTYLeft"] = 0;
  1769. }
  1770. }
  1771. }
  1772. if (qtyCount >= orderQty)
  1773. {
  1774. table.Rows[i]["SendQTY"] = Convert.ToDecimal(lotQty) - (Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty));
  1775. remove = true;
  1776. }
  1777. else
  1778. {
  1779. table.Rows[i]["SendQTY"] = lotQty;
  1780. }
  1781. }
  1782. }
  1783. if (removeList.Count > 0)
  1784. {
  1785. removeList.Reverse();
  1786. foreach (var item in removeList)
  1787. {
  1788. table.Rows.RemoveAt(item);
  1789. }
  1790. }
  1791. try
  1792. {
  1793. if (table.Rows.Count != 0)
  1794. {
  1795. #region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
  1796. string BusinessCode = string.Empty;
  1797. string TransType = "";
  1798. if (Type == "2") { BusinessCode = "13"; TransType = "生产发料-领料申请单"; }
  1799. if (Type == "12") { BusinessCode = "14"; TransType = "生产发料-领料申请单"; }
  1800. if (Type == "5") { BusinessCode = "6"; TransType = "委外发料-委外领料申请单"; }
  1801. if (Type == "7") { BusinessCode = "19"; TransType = "销售发货-销售发货单"; }
  1802. if (Type == "8") { BusinessCode = "24"; TransType = "杂发"; }
  1803. if (Type == "10") { BusinessCode = "47"; TransType = "调拨申请单"; }
  1804. string Identification = Guid.NewGuid().ToString();
  1805. var pikTbLogTime = DateTime.Now;
  1806. string pikTbLogsql = string.Empty;
  1807. List<string> DocNoList = new List<string>();
  1808. #region 货柜
  1809. string InspectJosn = "";
  1810. string InspectJosnHead = "";
  1811. string InspectJosnBody = "";
  1812. InspectJosn += "{";
  1813. InspectJosn += "\"IMP_ORDINI\":[";
  1814. InspectJosn += "货柜主表区域预留";
  1815. InspectJosn += "],";
  1816. InspectJosn += "\"IMP_ORDINI_RIGHE\":[";
  1817. InspectJosn += "货柜子表区域预留";
  1818. InspectJosn += "]";
  1819. InspectJosn += "}";
  1820. foreach (DataRow PickLog in table.Rows)
  1821. {
  1822. string hgsql = @"select A.InvCode,A.LocationCode,B.F_Define3,C.LocationCode AS Area
  1823. from ICSWareHouseLotInfo A
  1824. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define2=A.LocationCode AND F_Define4=A.WorkPoint AND F_ItemName='HG_Location'
  1825. INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WarehouseCode AND C.WorkPoint=A.WorkPoint
  1826. where A.LotNo='{0}' AND A.WorkPoint='{1}'";
  1827. hgsql = string.Format(hgsql, PickLog["LotNO"].ToString(), WorkPoint);
  1828. var hgds = Repository().FindDataSetBySql(hgsql);
  1829. if (hgds.Tables.Count == 0)
  1830. return null;
  1831. DataTable hgtable = hgds.Tables[0];
  1832. if (hgtable.Rows.Count > 0)
  1833. {
  1834. if (!DocNoList.Contains(PickLog["Code"].ToString()))
  1835. {
  1836. DocNoList.Add(PickLog["Code"].ToString());
  1837. }
  1838. InspectJosnBody += "{";
  1839. InspectJosnBody += "\"RIG_ORDINE\":\"" + PickLog["Code"].ToString() + "\",";
  1840. InspectJosnBody += "\"RIG_ARTICOLO\": \"" + hgtable.Rows[0]["InvCode"].ToString() + "\",";
  1841. InspectJosnBody += "\"RIG_SUB1\": \"\",";
  1842. InspectJosnBody += "\"RIG_SUB2\": \"\",";
  1843. InspectJosnBody += "\"RIG_ELERUOLI_GEST\": \"" + hgtable.Rows[0]["Area"].ToString() + "\",";
  1844. InspectJosnBody += "\"RIG_ELEBAIE\": \"" + hgtable.Rows[0]["F_Define3"].ToString() + "\",";
  1845. InspectJosnBody += "\"RIG_QTAR\": " + PickLog["SendQTY"].ToString() + ",";
  1846. InspectJosnBody += "\"RIG_HOSTINF\": \"" + PickLog["Sequence"].ToString() + "\"";
  1847. InspectJosnBody += "},";
  1848. }
  1849. }
  1850. InspectJosnBody.TrimEnd(',');
  1851. foreach (string DocNo in DocNoList)
  1852. {
  1853. InspectJosnHead += "{";
  1854. InspectJosnHead += "\"ORD_ORDINE\":\"" + DocNo.TrimStart('\'').TrimEnd('\'') + "\",";
  1855. InspectJosnHead += "\"ORD_DES\":\"" + TransType + "\",";
  1856. InspectJosnHead += "\"ORD_TIPOOP\":\"P\",";
  1857. InspectJosnHead += "\"ORD_CLIENTE\":\"" + WorkPoint + "\"";
  1858. InspectJosnHead += "},";
  1859. }
  1860. InspectJosnHead.TrimEnd(',');
  1861. if (InspectJosnBody != "")
  1862. {
  1863. InspectJosn = InspectJosn.Replace("货柜主表区域预留", InspectJosnHead);
  1864. InspectJosn = InspectJosn.Replace("货柜子表区域预留", InspectJosnBody);
  1865. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  1866. {
  1867. string callresult = "";
  1868. #region 货柜接口调用前日志
  1869. object logID = Guid.NewGuid();
  1870. string logsql = @"insert into ICSWMS_HGLog
  1871. values
  1872. ('{0}',GETDATE(),'{1}','{2}','{3}','{4}','{5}')";
  1873. logsql = string.Format(logsql, logID, InspectJosn, "", WorkPoint, MUSER, MUSERNAME);
  1874. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1875. #endregion
  1876. callresult = HTTPHelper.RestFulGet(InspectJosn, postUrlStr);
  1877. #region 货柜接口调用后日志
  1878. logsql = @"update ICSWMS_HGLog set ReturnResult='{0}'
  1879. where ID='{1}'";
  1880. logsql = string.Format(logsql, callresult, logID);
  1881. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1882. #endregion
  1883. //if (!callresult.Contains("successo"))
  1884. //{
  1885. // ICSHGResult hgresult = JsonConvert.DeserializeObject<ICSHGResult>(callresult.TrimStart('[').TrimEnd(']'));
  1886. // throw new Exception("货柜单据传输接口调用报错,主要报错信息:" + hgresult.PrimaryError + ",次要报错信息:" + hgresult.SecondaryError + "");
  1887. //}
  1888. }
  1889. }
  1890. #endregion
  1891. foreach (DataRow PickLog in table.Rows)
  1892. {
  1893. pikTbLogsql += @" IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
  1894. BEGIN
  1895. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1896. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1897. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1898. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1899. MTIME,WorkPoint,EATTRIBUTE1)
  1900. SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
  1901. a.WarehouseCode,a.LocationCode,'','','{3}',
  1902. '','1','15','{4}','0','',
  1903. '','','','{5}' ,'{6}' ,
  1904. '{7}' ,'{8}' ,''
  1905. FROM ICSWareHouseLotInfo a
  1906. WHERE a.LotNo='{9}' AND a.WorkPoint='{8}'
  1907. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{9}' AND WorkPoint='{8}'
  1908. END
  1909. UPDATE ICSMOApply SET MUSER='{6}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
  1910. pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
  1911. , BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
  1912. }
  1913. SqlHelper.CmdExecuteNonQueryLi(pikTbLogsql);
  1914. #endregion
  1915. }
  1916. var result = ConvertCellToString(table);
  1917. if (Invmes.Rows.Count > 0)
  1918. {
  1919. result.Merge(Invmes, false);
  1920. }
  1921. return result;
  1922. }
  1923. catch (Exception ex)
  1924. {
  1925. throw new Exception(ex.Message);
  1926. }
  1927. }
  1928. /// <summary>
  1929. /// 工单领料推荐
  1930. /// </summary>
  1931. /// <param name="Id"></param>
  1932. /// <param name="workPoint"></param>
  1933. /// <returns></returns>
  1934. public DataTable GetICSMOPickMergeByWorkorder(string Id, string workPoint)
  1935. {
  1936. string sql = $@"SELECT row_number() over (partition by c.Code,c.InvCode order by c.Code,c.InvCode,d.MTIME) AS rowNo,
  1937. c.Code,
  1938. c.InvCode,
  1939. c.InvName,
  1940. c.InvStd,
  1941. c.InvUnit,
  1942. FLOOR(c.iQuantity) AS iQuantity,
  1943. d.WarehouseCode,
  1944. d.LotNO,
  1945. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  1946. d.LocationCode LocationCode,
  1947. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1948. FLOOR(f.QTYTotal) QTYTotal
  1949. FROM
  1950. (select
  1951. a.ApplyCode as Code, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  1952. FROM
  1953. ICSMOApply a
  1954. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1955. WHERE a.ApplyCode in ({Id}) AND a.WorkPoint = '{workPoint}'
  1956. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID) c
  1957. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1958. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1959. and d.WorkPoint='{workPoint}' AND d.Quantity>0 ) d on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1960. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='1701' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1961. order by c.Code,c.InvCode,d.MTIME";
  1962. var dataset = Repository().FindDataSetBySql(sql);
  1963. if (dataset.Tables.Count == 0)
  1964. return null;
  1965. DataTable table = dataset.Tables[0];
  1966. decimal qtyCount = 0;
  1967. bool remove = false;
  1968. List<int> removeList = new List<int>();
  1969. for (int i = 0; i < table.Rows.Count; i++)
  1970. {
  1971. if (i != 0
  1972. && !table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString()))
  1973. {
  1974. qtyCount = 0;
  1975. remove = false;
  1976. }
  1977. if (remove)
  1978. {
  1979. removeList.Add(i);
  1980. }
  1981. else
  1982. {
  1983. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  1984. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1985. qtyCount += lotQty;
  1986. if (qtyCount >= orderQty)
  1987. {
  1988. remove = true;
  1989. }
  1990. }
  1991. }
  1992. if (removeList.Count > 0)
  1993. {
  1994. removeList.Reverse();
  1995. foreach (var item in removeList)
  1996. {
  1997. table.Rows.RemoveAt(item);
  1998. }
  1999. }
  2000. var result = ConvertCellToString(table);
  2001. if (Invmes.Rows.Count > 0)
  2002. {
  2003. result.Merge(Invmes, false);
  2004. }
  2005. return result;
  2006. }
  2007. public DataTable ConvertCellToString(DataTable data)
  2008. {
  2009. DataTable dtCloned = data.Clone();
  2010. foreach (DataColumn col in dtCloned.Columns)
  2011. {
  2012. col.DataType = typeof(string);
  2013. }
  2014. foreach (DataRow row in data.Rows)
  2015. {
  2016. DataRow newrow = dtCloned.NewRow();
  2017. foreach (DataColumn column in dtCloned.Columns)
  2018. {
  2019. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2020. }
  2021. dtCloned.Rows.Add(newrow);
  2022. }
  2023. return dtCloned;
  2024. }
  2025. // public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  2026. // {
  2027. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2028. // #region sql
  2029. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2030. // c.MergeID,
  2031. // c.Code,
  2032. // c.InvCode,
  2033. // c.InvName,
  2034. // c.InvStd,
  2035. //c.InvUnit,
  2036. // FLOOR(c.iQuantity) AS iQuantity,
  2037. // d.WarehouseCode,
  2038. // d.LocationCode,
  2039. // d.LotNO,
  2040. // FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2041. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2042. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  2043. // FROM
  2044. // ({0}) c
  2045. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  2046. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  2047. // LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2048. //DECLARE @ItemCode VARCHAR(50),
  2049. // @QTY DECIMAL(18,3),
  2050. // @ItemCodeCurrent VARCHAR(50),
  2051. // @QTYCurrent DECIMAL(18,3),
  2052. // @iQuantityCurrent DECIMAL(18,3),
  2053. // @CanDelete BIT,
  2054. // @Row INT,
  2055. // @rowCurrent INT
  2056. //SET @Row = @@rowcount
  2057. //SET @rowCurrent=1
  2058. //SET @CanDelete=0
  2059. //SET @ItemCode=''
  2060. //WHILE @rowCurrent<=@Row
  2061. // BEGIN
  2062. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
  2063. //PRINT(@rowCurrent)
  2064. // IF @ItemCode<>@ItemCodeCurrent
  2065. // BEGIN
  2066. // SET @ItemCode=@ItemCodeCurrent
  2067. // SET @QTY=0
  2068. // SET @CanDelete=0
  2069. // END
  2070. // IF @CanDelete=1
  2071. // BEGIN
  2072. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  2073. // SET @rowCurrent += 1
  2074. // CONTINUE
  2075. // END
  2076. // SET @QTY += @QTYCurrent
  2077. // IF @QTY>=@iQuantityCurrent
  2078. // BEGIN
  2079. // SET @CanDelete=1
  2080. // END
  2081. // SET @rowCurrent += 1
  2082. // END
  2083. //SELECT * FROM #temp
  2084. //DROP TABLE #temp
  2085. //";
  2086. // #endregion
  2087. // string sqls = "";
  2088. // if (Type == "1")
  2089. // {
  2090. // #region 工单备料sql
  2091. // sqls = @" select
  2092. // x.MergeID,
  2093. // c.MOCode as Code,
  2094. // a.InvCode,
  2095. // b.InvName,
  2096. // b.InvStd,
  2097. //b.InvUnit,
  2098. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2099. // a.WhCode,
  2100. //a.ExtensionID
  2101. // FROM
  2102. // ICSMOPick a
  2103. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2104. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2105. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2106. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2107. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2108. // #endregion
  2109. // }
  2110. // if (Type == "2")
  2111. // {
  2112. // #region 工单领料SQL
  2113. // sqls = @" select
  2114. // x.MergeID,
  2115. // a.ApplyCode as Code,
  2116. // a.InvCode,
  2117. // b.InvName,
  2118. // b.InvStd,
  2119. //b.InvUnit,
  2120. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2121. // a.WhCode,
  2122. // a.ExtensionID
  2123. // FROM
  2124. // ICSMOApply a
  2125. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2126. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2127. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2128. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2129. // #endregion
  2130. // }
  2131. // if (Type == "3")
  2132. // {
  2133. // #region 工单材料出库SQL
  2134. // sqls = @" select
  2135. // x.MergeID,
  2136. // a.IssueCode as Code,
  2137. // a.InvCode,
  2138. // b.InvName,
  2139. // b.InvStd,
  2140. //b.InvUnit,
  2141. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2142. // a.WhCode,
  2143. //a.ExtensionID
  2144. // FROM
  2145. // ICSMOIssue a
  2146. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2147. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2148. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2149. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2150. // #endregion
  2151. // }
  2152. // if (Type == "4")
  2153. // {
  2154. // #region 委外备料SQL
  2155. // sqls = @" select
  2156. // x.MergeID,
  2157. // c.OOCode as Code,
  2158. // a.InvCode,
  2159. // b.InvName,
  2160. // b.InvStd,
  2161. //b.InvUnit,
  2162. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2163. // a.WhCode,
  2164. //a.ExtensionID
  2165. // FROM
  2166. // ICSOOPick a
  2167. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2168. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2169. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2170. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2171. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  2172. // #endregion
  2173. // }
  2174. // if (Type == "5")
  2175. // {
  2176. // #region 委外领料SQL
  2177. // sqls = @" select
  2178. // x.MergeID,
  2179. // a.ApplyCode as Code,
  2180. // a.InvCode,
  2181. // b.InvName,
  2182. // b.InvStd,
  2183. //b.InvUnit,
  2184. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2185. // a.WhCode,
  2186. //a.ExtensionID
  2187. // FROM
  2188. // ICSOApply a
  2189. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2190. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2191. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2192. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2193. // #endregion
  2194. // }
  2195. // if (Type == "6")
  2196. // {
  2197. // #region 委外材料出库SQL
  2198. // sqls = @" select
  2199. // x.MergeID,
  2200. // a.IssueCode as Code,
  2201. // a.InvCode,
  2202. // b.InvName,
  2203. // b.InvStd,
  2204. //b.InvUnit,
  2205. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2206. // a.WhCode,
  2207. //a.ExtensionID
  2208. // FROM
  2209. // ICSOIssue a
  2210. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2211. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2212. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2213. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2214. // #endregion
  2215. // }
  2216. // if (Type == "7")
  2217. // {
  2218. // #region 销售发货SQL
  2219. // sqls = @" select
  2220. // x.MergeID,
  2221. // a.SDNCode as Code,
  2222. // a.InvCode,
  2223. // b.InvName,
  2224. // b.InvStd,
  2225. //b.InvUnit,
  2226. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2227. // a.WhCode,
  2228. //a.ExtensionID
  2229. // FROM
  2230. // ICSSDN a
  2231. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2232. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2233. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  2234. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2235. // #endregion
  2236. // }
  2237. // if (Type == "8")
  2238. // {
  2239. // #region 其它出库SQL
  2240. // sqls = @" select
  2241. // x.MergeID,
  2242. // a.OutCode as Code,
  2243. // a.InvCode,
  2244. // b.InvName,
  2245. // b.InvStd,
  2246. //b.InvUnit,
  2247. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2248. // a.WhCode,
  2249. //a.ExtensionID
  2250. // FROM
  2251. // ICSOtherOut a
  2252. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2253. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2254. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2255. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2256. // #endregion
  2257. // }
  2258. // if (Type == "9")
  2259. // {
  2260. // #region 借用SQL
  2261. // sqls = @" select
  2262. // x.MergeID,
  2263. // a.BrrowCode as Code,
  2264. // a.InvCode,
  2265. // b.InvName,
  2266. // b.InvStd,
  2267. //b.InvUnit,
  2268. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2269. // a.WhCode,
  2270. //a.ExtensionID
  2271. // FROM
  2272. // ICSBrrow a
  2273. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2274. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2275. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2276. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2277. // #endregion
  2278. // }
  2279. // if (Type == "10")
  2280. // {
  2281. // #region 物料调拨
  2282. // sqls = @" select
  2283. // x.MergeID,
  2284. // a.TransferNO as Code,
  2285. // a.InvCode,
  2286. // b.InvName,
  2287. // b.InvStd,
  2288. //b.InvUnit,
  2289. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2290. // a.FromWarehouseCode as WhCode,
  2291. //a.ExtensionID
  2292. // FROM
  2293. // ICSTransfer a
  2294. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2295. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2296. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  2297. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  2298. // #endregion
  2299. // }
  2300. // if (Type == "11")
  2301. // {
  2302. // #region 两步调出
  2303. // sqls = @"select
  2304. // x.MergeID,
  2305. // a.OutCode as Code,
  2306. // a.InvCode,
  2307. // b.InvName,
  2308. // b.InvStd,
  2309. // b.InvUnit,
  2310. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2311. // a.WHCode as WhCode,
  2312. // a.ExtensionID
  2313. // FROM
  2314. // ICSOtherOut a
  2315. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2316. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2317. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2318. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2319. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  2320. // #endregion
  2321. // }
  2322. // sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  2323. // sql = string.Format(sql, sqls, WorkPoint);
  2324. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  2325. // DataTable dtCloned = table.Clone();
  2326. // foreach (DataColumn col in dtCloned.Columns)
  2327. // {
  2328. // col.DataType = typeof(string);
  2329. // }
  2330. // foreach (DataRow row in table.Rows)
  2331. // {
  2332. // DataRow newrow = dtCloned.NewRow();
  2333. // foreach (DataColumn column in dtCloned.Columns)
  2334. // {
  2335. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2336. // }
  2337. // dtCloned.Rows.Add(newrow);
  2338. // }
  2339. // if (Invmes.Rows.Count > 0)
  2340. // {
  2341. // dtCloned.Merge(Invmes, false);
  2342. // }
  2343. // return dtCloned;
  2344. // }
  2345. public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  2346. {
  2347. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2348. string sqls = "";
  2349. if (Type == "1")
  2350. {
  2351. #region 工单备料sql
  2352. sqls = @" select
  2353. x.MergeID,
  2354. c.MOCode as Code,
  2355. a.InvCode,
  2356. b.InvName,
  2357. b.InvStd,
  2358. b.InvUnit,
  2359. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2360. a.WhCode,
  2361. a.ExtensionID
  2362. FROM
  2363. ICSMOPick a
  2364. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2365. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2366. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2367. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2368. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2369. #endregion
  2370. }
  2371. if (Type == "2" || Type == "12")
  2372. {
  2373. #region 工单领料SQL
  2374. sqls = @" select
  2375. x.MergeID,
  2376. a.ApplyCode as Code,
  2377. a.InvCode,
  2378. b.InvName,
  2379. b.InvStd,
  2380. b.InvUnit,
  2381. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2382. a.WhCode,
  2383. a.ExtensionID
  2384. FROM
  2385. ICSMOApply a
  2386. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2387. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2388. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2389. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2390. #endregion
  2391. }
  2392. if (Type == "3")
  2393. {
  2394. #region 工单材料出库SQL
  2395. sqls = @" select
  2396. x.MergeID,
  2397. a.IssueCode as Code,
  2398. a.InvCode,
  2399. b.InvName,
  2400. b.InvStd,
  2401. b.InvUnit,
  2402. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2403. a.WhCode,
  2404. a.ExtensionID
  2405. FROM
  2406. ICSMOIssue a
  2407. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2408. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2409. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2410. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2411. #endregion
  2412. }
  2413. if (Type == "4")
  2414. {
  2415. #region 委外备料SQL
  2416. sqls = @" select
  2417. x.MergeID,
  2418. c.OOCode as Code,
  2419. a.InvCode,
  2420. b.InvName,
  2421. b.InvStd,
  2422. b.InvUnit,
  2423. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2424. a.WhCode,
  2425. a.ExtensionID
  2426. FROM
  2427. ICSOOPick a
  2428. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2429. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2430. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2431. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2432. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  2433. #endregion
  2434. }
  2435. if (Type == "5")
  2436. {
  2437. #region 委外领料SQL
  2438. sqls = @" select
  2439. x.MergeID,
  2440. a.ApplyCode as Code,
  2441. a.InvCode,
  2442. b.InvName,
  2443. b.InvStd,
  2444. b.InvUnit,
  2445. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2446. a.WhCode,
  2447. a.ExtensionID
  2448. FROM
  2449. ICSOApply a
  2450. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2451. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2452. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2453. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2454. #endregion
  2455. }
  2456. if (Type == "6")
  2457. {
  2458. #region 委外材料出库SQL
  2459. sqls = @" select
  2460. x.MergeID,
  2461. a.IssueCode as Code,
  2462. a.InvCode,
  2463. b.InvName,
  2464. b.InvStd,
  2465. b.InvUnit,
  2466. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2467. a.WhCode,
  2468. a.ExtensionID
  2469. FROM
  2470. ICSOIssue a
  2471. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2472. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2473. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2474. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2475. #endregion
  2476. }
  2477. if (Type == "7")
  2478. {
  2479. #region 销售发货SQL
  2480. sqls = @" select
  2481. x.MergeID,
  2482. a.SDNCode as Code,
  2483. a.InvCode,
  2484. b.InvName,
  2485. b.InvStd,
  2486. b.InvUnit,
  2487. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2488. a.WhCode,
  2489. a.ExtensionID
  2490. FROM
  2491. ICSSDN a
  2492. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2493. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2494. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}' AND a.Type='1'
  2495. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2496. #endregion
  2497. }
  2498. if (Type == "8")
  2499. {
  2500. #region 其它出库SQL
  2501. sqls = @" select
  2502. x.MergeID,
  2503. a.OutCode as Code,
  2504. a.InvCode,
  2505. b.InvName,
  2506. b.InvStd,
  2507. b.InvUnit,
  2508. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2509. a.WhCode,
  2510. a.ExtensionID
  2511. FROM
  2512. ICSOtherOut a
  2513. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2514. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2515. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2516. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2517. #endregion
  2518. }
  2519. if (Type == "9")
  2520. {
  2521. #region 借用SQL
  2522. sqls = @" select
  2523. x.MergeID,
  2524. a.BrrowCode as Code,
  2525. a.InvCode,
  2526. b.InvName,
  2527. b.InvStd,
  2528. b.InvUnit,
  2529. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2530. a.WhCode,
  2531. a.ExtensionID
  2532. FROM
  2533. ICSBrrow a
  2534. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2535. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2536. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2537. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2538. #endregion
  2539. }
  2540. if (Type == "10")
  2541. {
  2542. #region 物料调拨
  2543. sqls = @" select
  2544. x.MergeID,
  2545. a.TransferNO as Code,
  2546. a.InvCode,
  2547. b.InvName,
  2548. b.InvStd,
  2549. b.InvUnit,
  2550. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2551. a.FromWarehouseCode as WhCode,
  2552. a.ExtensionID
  2553. FROM
  2554. ICSTransfer a
  2555. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2556. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2557. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  2558. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  2559. #endregion
  2560. }
  2561. if (Type == "11")
  2562. {
  2563. #region 两步调出
  2564. sqls = @" select
  2565. x.MergeID,
  2566. a.OutCode as Code,
  2567. a.InvCode,
  2568. b.InvName,
  2569. b.InvStd,
  2570. b.InvUnit,
  2571. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2572. a.WHCode as WhCode,
  2573. a.ExtensionID
  2574. FROM
  2575. ICSOtherOut a
  2576. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2577. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2578. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2579. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2580. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  2581. #endregion
  2582. }
  2583. sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  2584. #region sql
  2585. string sql = $@"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2586. c.MergeID,
  2587. c.Code,
  2588. c.InvCode,
  2589. c.InvName,
  2590. c.InvStd,
  2591. c.InvUnit,
  2592. FLOOR(c.iQuantity) AS iQuantity,
  2593. d.WarehouseCode,
  2594. d.LocationCode,
  2595. d.LotNO,
  2596. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2597. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2598. FLOOR(f.QTYTotal) QTYTotal
  2599. FROM
  2600. ({sqls}) c
  2601. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  2602. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2603. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2604. and d.WorkPoint='{WorkPoint}' AND d.Quantity>0 ) d
  2605. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2606. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2607. order by c.Code,c.InvCode,d.MTIME ";
  2608. #endregion
  2609. var dataset = Repository().FindDataSetBySql(sql);
  2610. if (dataset.Tables.Count == 0)
  2611. return null;
  2612. DataTable table = dataset.Tables[0];
  2613. decimal qtyCount = 0;
  2614. bool remove = false;
  2615. List<int> removeList = new List<int>();
  2616. for (int i = 0; i < table.Rows.Count; i++)
  2617. {
  2618. if (i != 0
  2619. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  2620. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString()))
  2621. )
  2622. {
  2623. qtyCount = 0;
  2624. remove = false;
  2625. }
  2626. if (remove)
  2627. {
  2628. removeList.Add(i);
  2629. }
  2630. else
  2631. {
  2632. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  2633. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2634. qtyCount += lotQty;
  2635. if (qtyCount >= orderQty)
  2636. {
  2637. remove = true;
  2638. }
  2639. }
  2640. }
  2641. if (removeList.Count > 0)
  2642. {
  2643. removeList.Reverse();
  2644. foreach (var item in removeList)
  2645. {
  2646. table.Rows.RemoveAt(item);
  2647. }
  2648. }
  2649. var result = ConvertCellToString(table);
  2650. if (Invmes.Rows.Count > 0)
  2651. {
  2652. result.Merge(Invmes, false);
  2653. }
  2654. return result;
  2655. }
  2656. public string MergeMaterial(string keyValue, string Type)
  2657. {
  2658. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2659. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2660. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2661. string msg = "";
  2662. string sql = string.Empty;
  2663. string dataList = string.Empty;
  2664. List<string> arry = keyValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  2665. if (arry.Count > 0)
  2666. {
  2667. StringBuilder stringBuilder = new StringBuilder();
  2668. foreach (var i in arry)
  2669. {
  2670. stringBuilder.Append($@"'{i}',");
  2671. }
  2672. dataList = stringBuilder.ToString(0, stringBuilder.Length - 1);
  2673. }
  2674. Int64 Merge_ID = 0;
  2675. DateTime time = DateTime.Now;
  2676. string Tday = time.ToString("yyyyMMdd");
  2677. string sqls = string.Format(@"SELECT MAX(A.MergeID) AS SourceID FROM ICSMOPickMerge A WHERE A.MergeID LIKE '{0}%' AND LEN(a.MergeID) = 13", Tday);
  2678. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  2679. DataTable dts = ds.Tables[0];
  2680. if (dts != null && dts.Rows.Count > 0)
  2681. {
  2682. string lot = dts.Rows[0]["SourceID"].ToString();
  2683. if (!string.IsNullOrWhiteSpace(lot))
  2684. Merge_ID = Convert.ToInt64(lot.Substring(lot.Length - 5));
  2685. }
  2686. string MergeID = Tday + (Merge_ID + 1).ToString().PadLeft(5, '0');
  2687. string order = string.Empty;
  2688. string orderCode = string.Empty;
  2689. string quantity = string.Empty;
  2690. string sqlString1 = string.Empty;
  2691. string sqlString2 = string.Empty;
  2692. if (Type == "1")//工单备料
  2693. {
  2694. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2695. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2696. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2697. from ICSMO a inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  2698. where a.MOCode in ({5})
  2699. ";
  2700. }
  2701. if (Type == "2")//工单发料
  2702. {
  2703. order = "ICSMOApply";
  2704. orderCode = "b.ApplyCode";
  2705. quantity = "b.IssueQuantity";
  2706. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2707. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2708. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  2709. from ICSMOApply a
  2710. where a.ApplyCode in ({5})";
  2711. }
  2712. if (Type == "3")//材料出库
  2713. {
  2714. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2715. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2716. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2717. from ICSMOIssue a
  2718. where a.IssueCode in ({5}) ";
  2719. }
  2720. if (Type == "4")//委外备料
  2721. {
  2722. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2723. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2724. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2725. from ICSOutsourcingOrder a inner join ICSOOPick b on a.OODetailID=b.OODetailID and b.WorkPoint=a.WorkPoint
  2726. where a.OOCode in ({5})";
  2727. }
  2728. if (Type == "5")//委外领料
  2729. {
  2730. order = "ICSOApply";
  2731. orderCode = "b.ApplyCode";
  2732. quantity = "b.IssueQuantity";
  2733. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2734. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2735. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  2736. from ICSOApply a
  2737. where a.ApplyCode in ({5})";
  2738. }
  2739. if (Type == "6")//委外材料出库
  2740. {
  2741. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2742. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2743. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2744. from ICSOIssue a
  2745. where a.IssueCode in ({5})";
  2746. }
  2747. if (Type == "7")//销售发货
  2748. {
  2749. order = "ICSSDN";
  2750. orderCode = "b.SDNCode";
  2751. quantity = "b.SDNQuantity";
  2752. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2753. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2754. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.SDNCode
  2755. from ICSSDN a
  2756. where a.SDNCode in ({5}) AND a.Type='1' ";
  2757. }
  2758. if (Type == "8")//其它出库
  2759. {
  2760. order = "ICSOtherOut";
  2761. orderCode = "b.OutCode";
  2762. quantity = "b.OutQuantity";
  2763. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2764. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2765. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.OutCode
  2766. from ICSOtherOut a
  2767. where a.OutCode in ({5})";
  2768. }
  2769. if (Type == "9")//借用单
  2770. {
  2771. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2772. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2773. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2774. from ICSBrrow a
  2775. where a.BrrowCode in ({5})";
  2776. }
  2777. if (Type == "10")//物料调拨
  2778. {
  2779. order = "ICSTransfer";
  2780. orderCode = "b.TransferNO";
  2781. quantity = "b.TransferQuantity";
  2782. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2783. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2784. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.TransferNO
  2785. from ICSTransfer a
  2786. where a.TransferNO in ({5})
  2787. ";
  2788. }
  2789. if (Type == "11")//两步调出
  2790. {
  2791. sql += @" INSERT INTO dbo.ICSMOPickMerge
  2792. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2793. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2794. from ICSOtherOut a
  2795. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2796. where a.OutCode in ({5})
  2797. ";
  2798. }
  2799. sql = string.Format(sql, MergeID, Type, MUSER, MUSERNAME, WorkPoint, dataList);
  2800. sqlString1 += $@" SELECT a.ID FROM ICSMOPickMerge a WHERE a.SourceID IN (SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) )";
  2801. sqlString2 += $@" SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) AND {quantity}>0";
  2802. DataSet ds1 = SqlHelper.GetDataSetBySql(sqlString1);
  2803. DataSet ds2 = SqlHelper.GetDataSetBySql(sqlString2);
  2804. DataTable dts1 = ds1.Tables[0];
  2805. DataTable dts2 = ds2.Tables[0];
  2806. if ((dts1 != null && dts1.Rows.Count > 0))
  2807. {
  2808. }
  2809. else if (dts2 != null && dts2.Rows.Count > 0)
  2810. {
  2811. msg = "当前选择单据号存在已出库的单据号,合并 失败";
  2812. }
  2813. else
  2814. {
  2815. try
  2816. {
  2817. if (SqlHelper.CmdExecuteNonQueryLi(sql) == 0)
  2818. {
  2819. msg = "新增失败";
  2820. }
  2821. }
  2822. catch (Exception ex)
  2823. {
  2824. throw new Exception(ex.Message);
  2825. }
  2826. }
  2827. return msg;
  2828. }
  2829. public string CancelMergeMaterial(string keyValue, string Type)
  2830. {
  2831. string msg = "";
  2832. string sql = string.Empty;
  2833. keyValue = keyValue.TrimEnd(',');
  2834. List<string> arry = keyValue.Split(',').ToList();
  2835. string dataList = string.Empty;
  2836. if (arry.Count > 0)
  2837. {
  2838. foreach (var i in arry)
  2839. {
  2840. dataList += $@"'{i}',";
  2841. }
  2842. if (dataList.Any())
  2843. {
  2844. dataList = dataList.TrimEnd(',');
  2845. }
  2846. }
  2847. string sqls = $@" SELECT SourceID FROM ICSMOPickMerge WHERE EATTRIBUTE1 IN({dataList}) ";
  2848. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  2849. DataTable dts = ds.Tables[0];
  2850. if (dts == null || dts.Rows.Count <= 0)
  2851. {
  2852. msg = "当前单据未合并拣料,取消合并拣料失败";
  2853. return msg;
  2854. }
  2855. string sqlStrring = string.Empty;
  2856. if (Type == "2")//工单发料
  2857. {
  2858. sqlStrring = $@"select ID from ICSMOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  2859. }
  2860. if (Type == "5")//委外领料
  2861. {
  2862. sqlStrring = $@"select ID from ICSOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  2863. }
  2864. if (Type == "7")//销售发货
  2865. {
  2866. sqlStrring = $@"select ID from ICSSDN a where a.ID in ({sqls}) and a.SDNQuantity=0 AND a.Type='1' ";
  2867. }
  2868. if (Type == "8")//其它出库
  2869. {
  2870. sqlStrring = $@"select ID
  2871. from ICSOtherOut a
  2872. where a.ID in ({sqls}) and a.OutQuantity=0";
  2873. }
  2874. if (Type == "10")//物料调拨
  2875. {
  2876. sqlStrring = $@"select ID from ICSTransfer a where a.ID in ({sqls}) and a.TransferQuantity=0 ";
  2877. }
  2878. DataSet dsdata = SqlHelper.GetDataSetBySql(sqlStrring);
  2879. DataTable dtdsdatas = dsdata.Tables[0];
  2880. if (dtdsdatas == null || dtdsdatas.Rows.Count <= 0)
  2881. {
  2882. msg = "当前物料已经出库,取消合并失败";
  2883. return msg;
  2884. }
  2885. sql = $@"DELETE FROM ICSMOPickMerge WHERE SourceID IN({sqls})";
  2886. try
  2887. {
  2888. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  2889. {
  2890. }
  2891. else
  2892. {
  2893. msg = "取消合并失败";
  2894. }
  2895. }
  2896. catch (Exception ex)
  2897. {
  2898. throw new Exception(ex.Message);
  2899. }
  2900. return msg;
  2901. }
  2902. public string CheckQty(string objArr)
  2903. {
  2904. objArr = objArr.TrimEnd(',');
  2905. string sql = @"select * from ICSMOPickMerge a
  2906. left join ICSMOPick b on a.SourceID=b.ID and a.WorkPoint=b.WorkPoint
  2907. left join ICSMO c on b.MODetailID=c.MODetailID and b.WorkPoint=c.WorkPoint
  2908. where MOCode in ({0})";
  2909. sql = string.Format(sql, objArr);
  2910. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2911. if (dt != null && dt.Rows.Count > 0)
  2912. {
  2913. return "1";
  2914. }
  2915. return "0";
  2916. }
  2917. //删除占料
  2918. public string DelPickLog(string objCode)
  2919. {
  2920. //站点信息
  2921. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2922. string msg = "";
  2923. objCode = objCode.Substring(1, objCode.Length - 2);
  2924. string sql = string.Empty;
  2925. // sql += string.Format(@"update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),a.Quantity )
  2926. //from dbo.ICSWareHouseLotInfoLog a
  2927. //left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  2928. // where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  2929. sql += string.Format(@" update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
  2930. from dbo.ICSWareHouseLotInfo b
  2931. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode in ({0})and TransType='15' and WorkPoint='{1}' group by LotNo) c
  2932. on c.LotNo =b.LotNo ", objCode.TrimEnd(','), WorkPoint);
  2933. sql += string.Format(@" delete dbo.ICSWareHouseLotInfoLog where TransCode in({0}) and TransType='15' and WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  2934. try
  2935. {
  2936. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  2937. {
  2938. }
  2939. }
  2940. catch (Exception ex)
  2941. {
  2942. throw new Exception(ex.Message);
  2943. }
  2944. return msg;
  2945. }
  2946. public int SeachPickLog(string objCode)
  2947. {
  2948. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2949. objCode = objCode.TrimEnd(',');
  2950. string[] parameters = objCode.Split(',');
  2951. int parameterCount = parameters.Length;
  2952. string sql = @" select distinct a.TransCode from dbo.ICSWareHouseLotInfoLog a
  2953. left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  2954. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  2955. sql = string.Format(sql, objCode, WorkPoint);
  2956. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2957. int count = dt.Rows.Count;
  2958. return count;
  2959. }
  2960. public DataTable GetPickLogInfo(string ID)
  2961. {
  2962. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2963. DataTable dt = new DataTable();
  2964. List<DbParameter> parameter = new List<DbParameter>();
  2965. string sql = @"
  2966. select '' as MergeID,a.TransCode as Code,a.TransSequence as Sequence,a.InvCode as InvCode, b.InvName as InvName,b.InvStd as InvStd,b.InvUnit as InvSInvUnittd,a.Quantity as iQuantity,
  2967. a.FromWarehouseCode as WarehouseCode,a.FromLocationCode as LocationCode,a.LotNO,a.MTIME,c.Quantity as QTY
  2968. from dbo.ICSWareHouseLotInfoLog a
  2969. left join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  2970. left join dbo.ICSWareHouseLotInfo c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  2971. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  2972. sql = string.Format(sql, ID.TrimEnd(','), WorkPoint);
  2973. return Repository().FindTableBySql(sql.ToString());
  2974. }
  2975. }
  2976. }