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

2586 lines
130 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
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
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
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
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
3 years ago
3 years ago
3 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. namespace NFine.Application.WMS
  18. {
  19. public class PickMaterialApp : RepositoryFactory<ICSVendor>
  20. {
  21. public static DataTable Invmes = new DataTable();
  22. //工单备料(工单子件)
  23. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  24. {
  25. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  26. DataTable dt = new DataTable();
  27. var queryParam = queryJson.ToJObject();
  28. List<DbParameter> parameter = new List<DbParameter>();
  29. StringBuilder sqlstring = new StringBuilder();
  30. #region [SQL]
  31. // 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,
  32. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  33. //from ICSMOPick a
  34. //left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  35. //left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  36. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  37. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  38. // sql += " WHERE 1=1 and e.ID is null";
  39. sqlstring.Append($@"select a.MOCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  40. case when max(d.SourceID) is null then '' else '' end as IsNew,
  41. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,
  42. f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  43. from ICSMO a
  44. inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  45. left join ICSMOPickMerge d on d.SourceID=b.ID and d.WorkPoint=b.WorkPoint
  46. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  47. where a.WorkPoint='{WorkPoint}' ");
  48. if (!string.IsNullOrWhiteSpace(queryJson))
  49. {
  50. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  51. {
  52. sqlstring.Append($" and a.MOCode like '%{queryParam["POCode"]}%' ");
  53. }
  54. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  55. {
  56. sqlstring.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  57. }
  58. }
  59. sqlstring.Append(@" group by a.MOCode, a.WorkPoint,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,
  60. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  61. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10");
  62. #endregion
  63. return Repository().FindTablePageBySql(sqlstring.ToString(), parameter.ToArray(), ref jqgridparam);
  64. }
  65. //工单备料(工单子件)子表查询
  66. public DataTable GetSubGridJson1(string Code)
  67. {
  68. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  69. DataTable dt = new DataTable();
  70. //var queryParam = queryJson.ToJObject();
  71. List<DbParameter> parameter = new List<DbParameter>();
  72. 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,
  73. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  74. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  75. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  76. from ICSMOPick a
  77. left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  78. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  79. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  80. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  81. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  82. where b.MOCode='{0}' and a.WorkPoint='{1}'";
  83. sql = string.Format(sql, Code, WorkPoint);
  84. return Repository().FindTableBySql(sql.ToString());
  85. }
  86. //工单领料(发料申请)
  87. public DataTable GetGridJson2(string queryJson, ref Pagination jqgridparam)
  88. {
  89. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  90. DataTable dt = new DataTable();
  91. var queryParam = queryJson.ToJObject();
  92. List<DbParameter> parameter = new List<DbParameter>();
  93. StringBuilder sqlString = new StringBuilder();
  94. #region [SQL]
  95. // 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,
  96. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  97. // from ICSMOApply a
  98. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  99. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  100. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  101. sqlString.Append($@"
  102. SELECT * from (select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  103. a.ApplyCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  104. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  105. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  106. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan ,
  107. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  108. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.ID
  109. from ICSMOApply a
  110. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  111. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  112. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  113. where a.WorkPoint='{WorkPoint}' ");
  114. if (!string.IsNullOrWhiteSpace(queryJson))
  115. {
  116. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  117. {
  118. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  119. }
  120. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  121. {
  122. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  123. }
  124. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  125. {
  126. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  127. }
  128. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  129. {
  130. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  131. }
  132. }
  133. sqlString.Append(@" group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  134. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  135. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.WHCode,b.EATTRIBUTE1,a.ID,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  136. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator) as t where t.row=1");
  137. #endregion
  138. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  139. }
  140. //工单领料(发料申请)子表查询
  141. public DataTable GetSubGridJson2(string queryJson, string Code)
  142. {
  143. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  144. DataTable dt = new DataTable();
  145. var queryParam = queryJson.ToJObject();
  146. List<DbParameter> parameter = new List<DbParameter>();
  147. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  148. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,
  149. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  150. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  151. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,d.EATTRIBUTE1 AS Area,
  152. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  153. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  154. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  155. from ICSMOApply a
  156. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  157. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  158. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  159. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  160. where a.ApplyCode='{0}' and a.WorkPoint='{1}'";
  161. if (!string.IsNullOrWhiteSpace(queryJson))
  162. {
  163. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  164. {
  165. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  166. }
  167. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  168. {
  169. sql += " and d.EATTRIBUTE1 like '%" + queryParam["Area"].ToString() + "%' ";
  170. }
  171. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  172. {
  173. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  174. }
  175. }
  176. sql += " ) c WHERE c.row=1 ";
  177. sql = string.Format(sql, Code, WorkPoint);
  178. return Repository().FindTableBySql(sql.ToString());
  179. }
  180. //工单材料出库(材料出库)
  181. public DataTable GetGridJson3(string queryJson, ref Pagination jqgridparam)
  182. {
  183. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  184. DataTable dt = new DataTable();
  185. var queryParam = queryJson.ToJObject();
  186. List<DbParameter> parameter = new List<DbParameter>();
  187. StringBuilder sqlString = new StringBuilder();
  188. #region [SQL]
  189. // 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,
  190. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  191. // from ICSMOIssue a
  192. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  193. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  194. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint ";
  195. // sql += " WHERE 1=1 and e.ID is null";
  196. sqlString.Append($@"SELECT * FROM(SELECT row_number ( ) OVER ( partition BY a.IssueCode ORDER BY a.IssueCode ) AS row,
  197. a.IssueCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  198. case when max(e.SourceID) is null then '' else ''
  199. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  200. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  201. from ICSMOIssue a
  202. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  203. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  204. where a.WorkPoint = '{WorkPoint}' ");
  205. if (!string.IsNullOrWhiteSpace(queryJson))
  206. {
  207. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  208. {
  209. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  210. }
  211. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  212. {
  213. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  214. }
  215. }
  216. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,f.BatchCode,
  217. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  218. f.cFree8, f.cFree9, f.cFree10 ) AS t WHERE t.row= 1 ");
  219. #endregion
  220. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  221. }
  222. //工单材料出库(材料出库)子表查询
  223. public DataTable GetSubGridJson3(string Code)
  224. {
  225. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  226. DataTable dt = new DataTable();
  227. //var queryParam = queryJson.ToJObject();
  228. List<DbParameter> parameter = new List<DbParameter>();
  229. 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,
  230. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  231. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  232. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  233. from ICSMOIssue a
  234. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  235. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  236. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  237. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  238. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  239. sql = string.Format(sql, Code, WorkPoint);
  240. return Repository().FindTableBySql(sql.ToString());
  241. }
  242. //委外备料(委外备料)
  243. public DataTable GetGridJson4(string queryJson, ref Pagination jqgridparam)
  244. {
  245. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  246. DataTable dt = new DataTable();
  247. var queryParam = queryJson.ToJObject();
  248. List<DbParameter> parameter = new List<DbParameter>();
  249. StringBuilder sqlString = new StringBuilder();
  250. #region [SQL]
  251. sqlString.Append($@"select * from (select row_number() over(partition by b.OOCode order by b.OOCode) row, b.OOCode as Code,
  252. b.CreateDateTime as MTIME,
  253. b.CreatePerson as MUSER,
  254. case
  255. when max(e.SourceID) is null then ''
  256. else ''
  257. end as IsNew,
  258. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  259. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  260. from ICSOOPick a
  261. inner join ICSOutsourcingOrder b on a.OODetailID = b.OODetailID and a.WorkPoint = b.WorkPoint
  262. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  263. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  264. WHERE b.WorkPoint = '{WorkPoint}' ");
  265. if (!string.IsNullOrWhiteSpace(queryJson))
  266. {
  267. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  268. {
  269. sqlString.Append($@" and a.OOCode like '%{queryParam["POCode"]}%' ");
  270. }
  271. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  272. {
  273. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  274. }
  275. }
  276. sqlString.Append(@" group by b.OOCode,b.CreateDateTime,b.CreatePerson,f.Colspan ,f.ProjectCode ,
  277. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  278. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10) t where t.row=1");
  279. #endregion
  280. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  281. }
  282. //委外备料(委外备料)子表查询
  283. public DataTable GetSubGridJson4(string Code)
  284. {
  285. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  286. DataTable dt = new DataTable();
  287. //var queryParam = queryJson.ToJObject();
  288. List<DbParameter> parameter = new List<DbParameter>();
  289. 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,
  290. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  291. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  292. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  293. from ICSOOPick a
  294. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID and a.WorkPoint=b.WorkPoint
  295. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  296. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  297. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  298. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  299. where b.OOCode='{0}' and b.WorkPoint='{1}'";
  300. sql = string.Format(sql, Code, WorkPoint);
  301. return Repository().FindTableBySql(sql.ToString());
  302. }
  303. //委外领料(委外发料申请)
  304. public DataTable GetGridJson5(string queryJson, ref Pagination jqgridparam)
  305. {
  306. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  307. DataTable dt = new DataTable();
  308. var queryParam = queryJson.ToJObject();
  309. List<DbParameter> parameter = new List<DbParameter>();
  310. StringBuilder sqlString = new StringBuilder();
  311. #region [SQL]
  312. // 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,
  313. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  314. // from ICSOApply a
  315. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  316. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  317. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  318. // sql += " WHERE 1=1 and e.ID is null";
  319. sqlString.Append($@"select * from (select row_number() over (partition by a.ApplyCode order by a.ApplyCode ) row, a.ApplyCode as Code,a.CreateDateTime as MTIME,a.CreatePerson as MUSER,
  320. case when max(e.SourceID) is null then ''
  321. else ''
  322. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  323. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  324. from ICSOApply a
  325. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  326. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  327. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  328. where a.WorkPoint = '{WorkPoint}'");
  329. if (!string.IsNullOrWhiteSpace(queryJson))
  330. {
  331. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  332. {
  333. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  334. }
  335. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  336. {
  337. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  338. }
  339. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  340. {
  341. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  342. }
  343. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  344. {
  345. sqlString.Append($@" and d.EATTRIBUTE1 like '%{queryParam["Area"]}%' ");
  346. }
  347. }
  348. sqlString.Append(@"group by a.ApplyCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  349. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  350. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID ) t where row=1");
  351. #endregion
  352. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  353. }
  354. //委外领料(委外发料申请)子表查询
  355. public DataTable GetSubGridJson5(string Code, string queryJson)
  356. {
  357. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  358. DataTable dt = new DataTable();
  359. var queryParam = queryJson.ToJObject();
  360. List<DbParameter> parameter = new List<DbParameter>();
  361. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  362. 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,
  363. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,d.EATTRIBUTE1 AS Area,
  364. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  365. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  366. from ICSOApply a
  367. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  368. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  369. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  370. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  371. where a.ApplyCode='{0}' and a.WorkPoint='{1}'";
  372. if (!string.IsNullOrWhiteSpace(queryJson))
  373. {
  374. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  375. {
  376. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  377. }
  378. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  379. {
  380. sql += " and d.EATTRIBUTE1 like '%" + queryParam["Area"].ToString() + "%' ";
  381. }
  382. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  383. {
  384. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  385. }
  386. }
  387. sql += " ) c WHERE c.row=1 ";
  388. sql = string.Format(sql, Code, WorkPoint);
  389. return Repository().FindTableBySql(sql.ToString());
  390. }
  391. //委外材料出库(委外发料申请)
  392. public DataTable GetGridJson6(string queryJson, ref Pagination jqgridparam)
  393. {
  394. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  395. DataTable dt = new DataTable();
  396. var queryParam = queryJson.ToJObject();
  397. List<DbParameter> parameter = new List<DbParameter>();
  398. StringBuilder sqlString = new StringBuilder();
  399. #region [SQL]
  400. // 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,
  401. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  402. // from ICSOIssue a
  403. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  404. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  405. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  406. // sql += " WHERE 1=1 and e.ID is null";
  407. sqlString.Append($@"select * from(select row_number() over(partition by a.IssueCode order by a.IssueCode) row, a.IssueCode as Code,
  408. a.CreateDateTime as MTIME,
  409. a.CreatePerson as MUSER,
  410. case
  411. when max(e.SourceID) is null then ''
  412. else ''
  413. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  414. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  415. f.cFree8,f.cFree9,f.cFree10
  416. from ICSOIssue a
  417. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  418. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  419. where a.WorkPoint = '{WorkPoint}'");
  420. if (!string.IsNullOrWhiteSpace(queryJson))
  421. {
  422. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  423. {
  424. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  425. }
  426. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  427. {
  428. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  429. }
  430. }
  431. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  432. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  433. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10) t where t.row=1");
  434. #endregion
  435. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  436. }
  437. //委外材料出库(委外发料申请)子表查询
  438. public DataTable GetSubGridJson6(string Code)
  439. {
  440. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  441. DataTable dt = new DataTable();
  442. //var queryParam = queryJson.ToJObject();
  443. List<DbParameter> parameter = new List<DbParameter>();
  444. 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,
  445. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  446. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  447. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  448. from ICSOIssue a
  449. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  450. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  451. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  452. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  453. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  454. sql = string.Format(sql, Code, WorkPoint);
  455. return Repository().FindTableBySql(sql.ToString());
  456. }
  457. //销售发货(销售发货)
  458. public DataTable GetGridJson7(string queryJson, ref Pagination jqgridparam)
  459. {
  460. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  461. DataTable dt = new DataTable();
  462. var queryParam = queryJson.ToJObject();
  463. List<DbParameter> parameter = new List<DbParameter>();
  464. StringBuilder sqlString = new StringBuilder();
  465. #region [SQL]
  466. // 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,
  467. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  468. // from ICSSDN a
  469. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  470. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  471. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  472. // sql += " WHERE 1=1 and a.Type='1' and e.ID is null";
  473. sqlString.Append($@"SELECT * from (SELECT Row_Number() over(partition by a.SDNCode Order by a.SDNCode) as r, a.SDNCode AS Code,
  474. a.CreateDateTime AS MTIME,
  475. a.CreatePerson AS MUSER,
  476. (CASE WHEN max(e.SourceID) IS NULL THEN '' ELSE '' END) AS IsNew,
  477. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  478. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID
  479. FROM ICSSDN a
  480. LEFT JOIN ICSMOPickMerge e ON a.ID = e.SourceID AND a.WorkPoint = e.WorkPoint
  481. LEFT JOIN ICSExtension f ON a.ExtensionID = f.ID AND a.WorkPoint = f.WorkPoint
  482. LEFT JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  483. WHERE a.WorkPoint = '{WorkPoint}' ");
  484. if (!string.IsNullOrWhiteSpace(queryJson))
  485. {
  486. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  487. {
  488. sqlString.Append($" and a.SDNCode like '%{queryParam["POCode"]}%' ");
  489. }
  490. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  491. {
  492. sqlString.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  493. }
  494. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  495. {
  496. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  497. }
  498. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  499. {
  500. sqlString.Append($@" and d.EATTRIBUTE1 like '%{queryParam["Area"]}%' ");
  501. }
  502. }
  503. sqlString.Append(@"GROUP BY a.SDNCode, a.CreateDateTime, a.CreatePerson, f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  504. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID) t WHERE t.r=1");
  505. #endregion
  506. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  507. }
  508. //销售发货(销售发货)子表查询
  509. public DataTable GetSubGridJson7(string Code, string queryJson)
  510. {
  511. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  512. DataTable dt = new DataTable();
  513. var queryParam = queryJson.ToJObject();
  514. List<DbParameter> parameter = new List<DbParameter>();
  515. string sql = @"SELECT * FROM (select row_number() over(partition by a.SDNCode,a.InvCode,a.Sequence ORDER BY a.SDNCode) as row,
  516. a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode
  517. ,a.WorkPoint,a.Points,a.DeliveryType,a.DeliveryDescribe,a.InvDescribe,a.OtherDescribe,
  518. a.SalesUnit,a.StockIndicator,a.IsSerialNumber,
  519. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  520. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,d.EATTRIBUTE1 AS Area
  521. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  522. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.SDNQuantity as IssueQuantity
  523. from ICSSDN a
  524. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  525. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  526. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  527. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  528. where a.SDNCode='{0}' and a.WorkPoint='{1}'";
  529. if (!string.IsNullOrWhiteSpace(queryJson))
  530. {
  531. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  532. {
  533. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  534. }
  535. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  536. {
  537. sql += " and d.EATTRIBUTE1 like '%" + queryParam["Area"].ToString() + "%' ";
  538. }
  539. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  540. {
  541. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  542. }
  543. }
  544. sql += " ) c WHERE c.row=1 ";
  545. sql = string.Format(sql, Code, WorkPoint);
  546. return Repository().FindTableBySql(sql.ToString());
  547. }
  548. //其它出库(其它出库)
  549. public DataTable GetGridJson8(string queryJson, ref Pagination jqgridparam)
  550. {
  551. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  552. DataTable dt = new DataTable();
  553. var queryParam = queryJson.ToJObject();
  554. List<DbParameter> parameter = new List<DbParameter>();
  555. StringBuilder sqlString = new StringBuilder();
  556. #region [SQL]
  557. // 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,
  558. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  559. //from ICSOtherOut a
  560. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  561. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  562. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  563. // sql += " WHERE 1=1 and e.ID is null ";
  564. sqlString.Append($@"select * from(select row_number() over(partition by a.OutCode order by a.OutCode) row, a.OutCode as Code,
  565. a.CreateDateTime as MTIME,
  566. a.CreatePerson as MUSER,
  567. case
  568. when max(e.SourceID) is null then ''
  569. else ''
  570. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  571. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  572. from ICSOtherOut a
  573. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  574. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  575. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  576. where a.WorkPoint = '{WorkPoint}'");
  577. #endregion
  578. if (!string.IsNullOrWhiteSpace(queryJson))
  579. {
  580. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  581. {
  582. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  583. }
  584. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  585. {
  586. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  587. }
  588. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  589. {
  590. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  591. }
  592. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  593. {
  594. sqlString.Append($@" and d.EATTRIBUTE1 like '%{queryParam["Area"]}%' ");
  595. }
  596. }
  597. sqlString.Append(@" group by a.OutCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,f.BatchCode,
  598. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,
  599. f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID) t where t.row=1");
  600. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  601. }
  602. //其它出库(其它出库)子表查询
  603. public DataTable GetSubGridJson8(string Code, string queryJson)
  604. {
  605. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  606. DataTable dt = new DataTable();
  607. var queryParam = queryJson.ToJObject();
  608. List<DbParameter> parameter = new List<DbParameter>();
  609. string sql = @"SELECT * FROM (select row_number() over(partition by a.OutCode,a.InvCode,a.Sequence ORDER BY a.OutCode) as row,
  610. a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.Quantity,
  611. a.InvCode,a.WorkPoint,a.OrderType, a.TypeDescribe,a.CostCenter,a.Remarks,a.PersonNumber,a.InvDescribe,
  612. a.Unit,a.StockIndicator,
  613. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  614. case when e.SourceID is null then '' else '' end as IsNew,d.EATTRIBUTE1 AS Area
  615. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  616. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  617. from ICSOtherOut a
  618. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  619. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  620. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  621. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  622. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  623. if (!string.IsNullOrWhiteSpace(queryJson))
  624. {
  625. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  626. {
  627. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  628. }
  629. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  630. {
  631. sql += " and d.EATTRIBUTE1 like '%" + queryParam["Area"].ToString() + "%' ";
  632. }
  633. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  634. {
  635. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  636. }
  637. }
  638. sql += " ) c WHERE c.row=1 ";
  639. sql = string.Format(sql, Code, WorkPoint);
  640. return Repository().FindTableBySql(sql.ToString());
  641. }
  642. //借用(借用)
  643. public DataTable GetGridJson9(string queryJson, ref Pagination jqgridparam)
  644. {
  645. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  646. DataTable dt = new DataTable();
  647. var queryParam = queryJson.ToJObject();
  648. List<DbParameter> parameter = new List<DbParameter>();
  649. StringBuilder sqlString = new StringBuilder();
  650. #region [SQL]
  651. // sql = @"
  652. //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,
  653. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  654. // from ICSBrrow a
  655. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  656. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  657. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  658. // sql += " WHERE 1=1 and e.ID is null ";
  659. sqlString.Append($@"select * from(select row_number() over(partition by a.BrrowCode order by a.BrrowCode) row, a.BrrowCode as Code,
  660. a.CreateDateTime as MTIME,
  661. a.CreatePerson as MUSER,
  662. case
  663. when max(e.SourceID) is null then ''
  664. else ''
  665. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  666. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  667. f.cFree8,f.cFree9,f.cFree10
  668. from ICSBrrow a
  669. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  670. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  671. where a.WorkPoint = '{WorkPoint}'");
  672. if (!string.IsNullOrWhiteSpace(queryJson))
  673. {
  674. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  675. {
  676. sqlString.Append($@" and a.BrrowCode like '%{queryParam["POCode"]}%' ");
  677. }
  678. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  679. {
  680. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  681. }
  682. }
  683. sqlString.Append(@"group by a.BrrowCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  684. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  685. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,
  686. f.cFree10) t where t.row=1");
  687. #endregion
  688. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  689. }
  690. //借用(借用)子表查询
  691. public DataTable GetSubGridJson9(string Code)
  692. {
  693. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  694. DataTable dt = new DataTable();
  695. //var queryParam = queryJson.ToJObject();
  696. List<DbParameter> parameter = new List<DbParameter>();
  697. 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,
  698. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  699. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  700. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.BrrowQuantity as IssueQuantity
  701. from ICSBrrow a
  702. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  703. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  704. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  705. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  706. where a.BrrowCode='{0}' and a.WorkPoint='{1}'";
  707. sql = string.Format(sql, Code, WorkPoint);
  708. return Repository().FindTableBySql(sql.ToString());
  709. }
  710. //物料调拨
  711. public DataTable GetGridJson10(string queryJson, ref Pagination jqgridparam)
  712. {
  713. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  714. DataTable dt = new DataTable();
  715. var queryParam = queryJson.ToJObject();
  716. List<DbParameter> parameter = new List<DbParameter>();
  717. StringBuilder sqlString = new StringBuilder();
  718. #region [SQL]
  719. // sql = @"
  720. //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,
  721. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  722. // from ICSBrrow a
  723. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  724. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  725. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  726. // sql += " WHERE 1=1 and e.ID is null ";
  727. sqlString.Append($@"select * from (select row_number() over(partition by a.TransferNO order by a.TransferNO) row,
  728. a.TransferNO as Code,a.ID,a.CreateDateTime as MTIME,a.CreatePerson as MUSER,
  729. case
  730. when max(e.SourceID) is null then ''
  731. else ''
  732. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  733. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  734. from ICSTransfer a
  735. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  736. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  737. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  738. where a.WorkPoint = '{WorkPoint}' and a.Status = '2'");
  739. if (!string.IsNullOrWhiteSpace(queryJson))
  740. {
  741. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  742. {
  743. sqlString.Append($@" and a.TransferNO like '%{queryParam["POCode"]}%' ");
  744. }
  745. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  746. {
  747. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  748. }
  749. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  750. {
  751. sqlString.Append($@" and a.ToWarehouseCode like '%{queryParam["WHCode"]}%' ");
  752. }
  753. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  754. {
  755. sqlString.Append($@" and d.EATTRIBUTE1 like '%{queryParam["Area"]}%' ");
  756. }
  757. }
  758. sqlString.Append(@"group by a.TransferNO,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  759. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  760. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID) t where t.row=1");
  761. #endregion
  762. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  763. }
  764. //物料调拨子表查询
  765. public DataTable GetSubGridJson10(string Code, string queryJson)
  766. {
  767. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  768. DataTable dt = new DataTable();
  769. var queryParam = queryJson.ToJObject();
  770. List<DbParameter> parameter = new List<DbParameter>();
  771. string sql = @"SELECT * from (select row_number() over(partition by a.TransferNO,a.InvCode,
  772. 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,d.EATTRIBUTE1 AS Area,
  773. a.InvCode,a.ToWarehouseCode,a.EATTRIBUTE1 AS ReceiveWork,a.WorkPoint,a.OrderType,
  774. a.TypeDescribe,a.Remarks,a.PersonNumber,a.InvDescribe,
  775. a.Unit,a.StockIndicator,a.ReceiveInvCode,a.ReceiveInvDescribe,
  776. a.ReceiveStock,a.ReceiveSales,a.ReceiveSequence,a.Remark2,
  777. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  778. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  779. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  780. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.TransferQuantity as IssueQuantity
  781. from ICSTransfer a
  782. left join ICSWarehouse b on a.FromWarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  783. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  784. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  785. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  786. where a.TransferNO='{0}' and b.WorkPoint='{1}'";
  787. if (!string.IsNullOrWhiteSpace(queryJson))
  788. {
  789. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  790. {
  791. sql += " and a.ToWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  792. }
  793. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  794. {
  795. sql += " and d.EATTRIBUTE1 like '%" + queryParam["Area"].ToString() + "%' ";
  796. }
  797. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  798. {
  799. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  800. }
  801. }
  802. sql += " ) as t where t.row=1";
  803. sql = string.Format(sql, Code, WorkPoint);
  804. return Repository().FindTableBySql(sql.ToString());
  805. }
  806. //两步调拨
  807. public DataTable GetGridJson11(string queryJson, ref Pagination jqgridparam)
  808. {
  809. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  810. DataTable dt = new DataTable();
  811. var queryParam = queryJson.ToJObject();
  812. List<DbParameter> parameter = new List<DbParameter>();
  813. StringBuilder sqlString = new StringBuilder();
  814. #region [SQL]
  815. // sql = @"
  816. //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,
  817. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  818. // from ICSBrrow a
  819. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  820. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  821. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  822. // sql += " WHERE 1=1 and e.ID is null ";
  823. 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,
  824. case when max(e.SourceID) is null then '' else '' end as IsNew,a.EATTRIBUTE1 AS ReceiveWork,tra.ToWarehouseCode,
  825. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  826. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10
  827. FROM ICSOtherOut a
  828. INNER JOIN ICSTransfer tra ON a.TransferDetailID = tra.TransferDetailID AND a.WorkPoint = tra.WorkPoint
  829. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  830. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  831. where a.WorkPoint = '{WorkPoint}'
  832. and a.Status = '2' ");
  833. if (!string.IsNullOrWhiteSpace(queryJson))
  834. {
  835. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  836. {
  837. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  838. }
  839. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  840. {
  841. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  842. }
  843. }
  844. sqlString.Append(@" group by a.OutCode, a.CreateDateTime, a.CreatePerson,a.EATTRIBUTE1 ,tra.ToWarehouseCode, f.Colspan ,f.ProjectCode ,
  845. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,
  846. f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10) t where t.row=1");
  847. #endregion
  848. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  849. }
  850. //两步调拨子表查询
  851. public DataTable GetSubGridJson11(string Code)
  852. {
  853. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  854. DataTable dt = new DataTable();
  855. //var queryParam = queryJson.ToJObject();
  856. List<DbParameter> parameter = new List<DbParameter>();
  857. 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,
  858. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  859. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  860. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  861. FROM ICSOtherOut a
  862. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  863. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  864. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  865. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  866. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  867. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  868. sql = string.Format(sql, Code, WorkPoint);
  869. return Repository().FindTableBySql(sql.ToString());
  870. }
  871. // public DataTable GetICSMOPickMergeTemp(string ID,string Type)
  872. // {
  873. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  874. // ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  875. // #region sql
  876. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  877. // c.Code,
  878. // c.InvCode,
  879. // c.InvName,
  880. // c.InvStd,
  881. // c.InvUnit,
  882. // FLOOR(c.iQuantity) AS iQuantity,
  883. // d.WarehouseCode,
  884. // m.LotNO,
  885. // (case when m.LotNo is null then 0 else FLOOR(ISNULL(d.Quantity, 0)) end) AS QTY,
  886. // (case when m.LotNo is null then null else d.LocationCode end) AS LocationCode,
  887. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  888. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  889. // FROM
  890. // ({0}) c
  891. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  892. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  893. // 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
  894. //DECLARE @ItemCode VARCHAR(50),
  895. // @QTY DECIMAL(18,3),
  896. // @ItemCodeCurrent VARCHAR(50),
  897. // @Lotno VARCHAR(50),
  898. // @QTYCurrent DECIMAL(18,3),
  899. // @iQuantityCurrent DECIMAL(18,3),
  900. // @CanDelete BIT,
  901. // @Row INT,
  902. // @rowCurrent INT
  903. //SET @Row = @@rowcount
  904. //SET @rowCurrent=1
  905. //SET @CanDelete=0
  906. //SET @ItemCode=''
  907. //SET @Lotno = ''
  908. //WHILE @rowCurrent<=@Row
  909. // BEGIN
  910. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity,@Lotno = Lotno FROM #temp WHERE rowNo=@rowCurrent
  911. //PRINT(@rowCurrent)
  912. // IF @ItemCode<>@ItemCodeCurrent
  913. // BEGIN
  914. // SET @ItemCode=@ItemCodeCurrent
  915. // SET @QTY=0
  916. // SET @CanDelete=0
  917. // END
  918. // IF @CanDelete=1
  919. // BEGIN
  920. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  921. // SET @rowCurrent += 1
  922. // CONTINUE
  923. // END
  924. // SET @QTY += @QTYCurrent
  925. // IF @LotNo is null or @QTY>=@iQuantityCurrent
  926. // BEGIN
  927. // SET @CanDelete=1
  928. // END
  929. // SET @rowCurrent += 1
  930. // END
  931. //SELECT * FROM #temp
  932. //DROP TABLE #temp
  933. //";
  934. // #endregion
  935. // string sqls = "";
  936. // if (Type=="1")
  937. // {
  938. // #region 工单备料sql
  939. // sqls = @" SELECT
  940. // c.MOCode as Code,
  941. // a.InvCode,
  942. // b.InvName,
  943. // b.InvStd,
  944. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  945. // a.WhCode,
  946. // b.InvUnit,
  947. // a.ExtensionID
  948. // FROM
  949. // ICSMOPick a
  950. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  951. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  952. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  953. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  954. // #endregion
  955. // }
  956. // if (Type == "2")
  957. // {
  958. // return GetICSMOPickMergeByWorkorder(ID, WorkPoint);
  959. // }
  960. // if (Type=="3")
  961. // {
  962. // #region 工单材料出库SQL
  963. // sqls = @" select
  964. // a.IssueCode as Code,
  965. // a.InvCode,
  966. // b.InvName,
  967. // b.InvStd,
  968. // b.InvUnit,
  969. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  970. // a.WhCode,
  971. // a.ExtensionID
  972. // FROM
  973. // ICSMOIssue a
  974. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  975. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  976. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  977. // #endregion
  978. // }
  979. // if (Type=="4")
  980. // {
  981. // #region 委外备料SQL
  982. // sqls = @" select
  983. // c.OOCode as Code,
  984. // a.InvCode,
  985. // b.InvName,
  986. // b.InvStd,
  987. // b.InvUnit,
  988. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  989. // a.WhCode,
  990. // a.ExtensionID
  991. // FROM
  992. // ICSOOPick a
  993. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  994. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  995. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  996. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
  997. // #endregion
  998. // }
  999. // if (Type=="5")
  1000. // {
  1001. // #region 委外领料SQL
  1002. // sqls = @" select
  1003. // a.ApplyCode as Code,
  1004. // a.InvCode,
  1005. // b.InvName,
  1006. // b.InvStd,
  1007. //b.InvUnit,
  1008. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1009. // a.WhCode,
  1010. // a.ExtensionID
  1011. // FROM
  1012. // ICSOApply a
  1013. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1014. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1015. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1016. // #endregion
  1017. // }
  1018. // if (Type=="6")
  1019. // {
  1020. // #region 委外材料出库SQL
  1021. // sqls = @" select
  1022. // a.IssueCode as Code,
  1023. // a.InvCode,
  1024. // b.InvName,
  1025. // b.InvStd,
  1026. //b.InvUnit,
  1027. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1028. // a.WhCode,
  1029. //a.ExtensionID
  1030. // FROM
  1031. // ICSOIssue a
  1032. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1033. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1034. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1035. // #endregion
  1036. // }
  1037. // if (Type=="7")
  1038. // {
  1039. // #region 销售发货SQL
  1040. // sqls = @" select
  1041. // a.SDNCode as Code,
  1042. // a.InvCode,
  1043. // b.InvName,
  1044. // b.InvStd,
  1045. //b.InvUnit,
  1046. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1047. // a.WhCode,
  1048. //a.ExtensionID
  1049. // FROM
  1050. // ICSSDN a
  1051. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1052. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1053. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1054. // #endregion
  1055. // }
  1056. // if (Type=="8")
  1057. // {
  1058. // #region 其它出库SQL
  1059. // sqls = @" select
  1060. // a.OutCode as Code,
  1061. // a.InvCode,
  1062. // b.InvName,
  1063. // b.InvStd,
  1064. // b.InvUnit,
  1065. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1066. // a.WhCode,
  1067. // a.ExtensionID
  1068. // FROM
  1069. // ICSOtherOut a
  1070. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1071. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1072. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1073. // #endregion
  1074. // }
  1075. // if (Type == "9")
  1076. // {
  1077. // #region 借用SQL
  1078. // sqls = @"select
  1079. // a.BrrowCode as Code,
  1080. // a.InvCode,
  1081. // b.InvName,
  1082. // b.InvStd,
  1083. //b.InvUnit,
  1084. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1085. // a.WhCode,
  1086. //a.ExtensionID
  1087. // FROM
  1088. // ICSBrrow a
  1089. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1090. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1091. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1092. // #endregion
  1093. // }
  1094. // if (Type == "10")
  1095. // {
  1096. // #region 物料调拨
  1097. // sqls = @" select
  1098. // a.TransferNO as Code,
  1099. // a.InvCode,
  1100. // b.InvName,
  1101. // b.InvStd,
  1102. //b.InvUnit,
  1103. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1104. // a.FromWarehouseCode as WhCode,
  1105. //a.ExtensionID
  1106. // FROM
  1107. // ICSTransfer a
  1108. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1109. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1110. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
  1111. // #endregion
  1112. // }
  1113. // if (Type == "11")
  1114. // {
  1115. // #region 两步调出
  1116. // sqls = @"select
  1117. // a.OutCode as Code,
  1118. // a.InvCode,
  1119. // b.InvName,
  1120. // b.InvStd,
  1121. //b.InvUnit,
  1122. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1123. // a.WHCode ,
  1124. //a.ExtensionID
  1125. // from ICSOtherOut a
  1126. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1127. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1128. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1129. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
  1130. // #endregion
  1131. // }
  1132. // sqls = string.Format(sqls, ID,WorkPoint);
  1133. // sql = string.Format(sql, sqls, WorkPoint);
  1134. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1135. // DataTable dtCloned = table.Clone();
  1136. // foreach (DataColumn col in dtCloned.Columns)
  1137. // {
  1138. // col.DataType = typeof(string);
  1139. // }
  1140. // foreach (DataRow row in table.Rows)
  1141. // {
  1142. // DataRow newrow = dtCloned.NewRow();
  1143. // foreach (DataColumn column in dtCloned.Columns)
  1144. // {
  1145. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1146. // }
  1147. // dtCloned.Rows.Add(newrow);
  1148. // }
  1149. // if (Invmes.Rows.Count > 0)
  1150. // {
  1151. // dtCloned.Merge(Invmes, false);
  1152. // }
  1153. // return dtCloned;
  1154. // }
  1155. public DataTable GetICSMOPickMergeTemp(string ID, string Type)
  1156. {
  1157. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1158. ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1159. #region sql
  1160. #endregion
  1161. string sqls = "";
  1162. if (Type == "1")
  1163. {
  1164. #region 工单备料sql
  1165. sqls = @" SELECT
  1166. c.MOCode as Code,
  1167. a.InvCode,
  1168. b.InvName,
  1169. b.InvStd,
  1170. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1171. a.WhCode,
  1172. b.InvUnit,
  1173. a.ExtensionID
  1174. FROM
  1175. ICSMOPick a
  1176. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1177. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1178. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1179. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1180. #endregion
  1181. }
  1182. if (Type == "2")
  1183. {
  1184. sqls = @"select
  1185. a.ApplyCode as Code, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  1186. FROM
  1187. ICSMOApply a
  1188. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1189. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1190. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1191. }
  1192. if (Type == "3")
  1193. {
  1194. #region 工单材料出库SQL
  1195. sqls = @" select
  1196. a.IssueCode as Code,
  1197. a.InvCode,
  1198. b.InvName,
  1199. b.InvStd,
  1200. b.InvUnit,
  1201. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1202. a.WhCode,
  1203. a.ExtensionID
  1204. FROM
  1205. ICSMOIssue a
  1206. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1207. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1208. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1209. #endregion
  1210. }
  1211. if (Type == "4")
  1212. {
  1213. #region 委外备料SQL
  1214. sqls = @" select
  1215. c.OOCode as Code,
  1216. a.InvCode,
  1217. b.InvName,
  1218. b.InvStd,
  1219. b.InvUnit,
  1220. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1221. a.WhCode,
  1222. a.ExtensionID
  1223. FROM
  1224. ICSOOPick a
  1225. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1226. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1227. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1228. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
  1229. #endregion
  1230. }
  1231. if (Type == "5")
  1232. {
  1233. #region 委外领料SQL
  1234. sqls = @"select
  1235. a.ApplyCode as Code,
  1236. a.InvCode,
  1237. b.InvName,
  1238. b.InvStd,
  1239. b.InvUnit,
  1240. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1241. a.WhCode,a.ExtensionID
  1242. FROM
  1243. ICSOApply a
  1244. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1245. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1246. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1247. #endregion
  1248. }
  1249. if (Type == "6")
  1250. {
  1251. #region 委外材料出库SQL
  1252. sqls = @" select
  1253. a.IssueCode as Code,
  1254. a.InvCode,
  1255. b.InvName,
  1256. b.InvStd,
  1257. b.InvUnit,
  1258. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1259. a.WhCode,
  1260. a.ExtensionID
  1261. FROM
  1262. ICSOIssue a
  1263. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1264. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1265. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1266. #endregion
  1267. }
  1268. if (Type == "7")
  1269. {
  1270. #region 销售发货SQL
  1271. sqls = @" select
  1272. a.SDNCode as Code,
  1273. a.InvCode,
  1274. b.InvName,
  1275. b.InvStd,
  1276. b.InvUnit,
  1277. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1278. a.WhCode,
  1279. a.ExtensionID
  1280. FROM
  1281. ICSSDN a
  1282. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1283. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1284. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1285. #endregion
  1286. }
  1287. if (Type == "8")
  1288. {
  1289. #region 其它出库SQL
  1290. sqls = @" select
  1291. a.OutCode as Code,
  1292. a.InvCode,
  1293. b.InvName,
  1294. b.InvStd,
  1295. b.InvUnit,
  1296. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1297. a.WhCode,
  1298. a.ExtensionID
  1299. FROM
  1300. ICSOtherOut a
  1301. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1302. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1303. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1304. #endregion
  1305. }
  1306. if (Type == "9")
  1307. {
  1308. #region 借用SQL
  1309. sqls = @"select
  1310. a.BrrowCode as Code,
  1311. a.InvCode,
  1312. b.InvName,
  1313. b.InvStd,
  1314. b.InvUnit,
  1315. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1316. a.WhCode,
  1317. a.ExtensionID
  1318. FROM
  1319. ICSBrrow a
  1320. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1321. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1322. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1323. #endregion
  1324. }
  1325. if (Type == "10")
  1326. {
  1327. #region 物料调拨
  1328. sqls = @"select
  1329. a.TransferNO as Code,
  1330. a.InvCode,
  1331. b.InvName,
  1332. b.InvStd,
  1333. b.InvUnit,
  1334. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1335. a.FromWarehouseCode as WhCode,
  1336. a.ExtensionID
  1337. FROM
  1338. ICSTransfer a
  1339. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1340. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1341. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
  1342. #endregion
  1343. }
  1344. if (Type == "11")
  1345. {
  1346. #region 两步调出
  1347. sqls = @"select
  1348. a.OutCode as Code,
  1349. a.InvCode,
  1350. b.InvName,
  1351. b.InvStd,
  1352. b.InvUnit,
  1353. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1354. a.WHCode ,
  1355. a.ExtensionID
  1356. from ICSOtherOut a
  1357. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1358. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1359. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1360. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
  1361. #endregion
  1362. }
  1363. sqls = string.Format(sqls, ID, WorkPoint);
  1364. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1365. c.Code,
  1366. c.InvCode,
  1367. c.InvName,
  1368. c.InvStd,
  1369. c.InvUnit,
  1370. FLOOR(c.iQuantity) AS iQuantity,
  1371. c.WHCode AS WarehouseCode,
  1372. d.LotNO,
  1373. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  1374. d.LocationCode AS LocationCode,
  1375. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1376. FLOOR(f.QTYTotal) QTYTotal
  1377. FROM
  1378. ({sqls}) c
  1379. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  1380. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1381. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1382. and d.WorkPoint='{WorkPoint}' AND d.Quantity>0 ) d
  1383. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1384. 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
  1385. order by c.Code,c.InvCode,d.MTIME ";
  1386. var dataset = Repository().FindDataSetBySql(sql);
  1387. if (dataset.Tables.Count == 0)
  1388. return null;
  1389. DataTable table = dataset.Tables[0];
  1390. decimal qtyCount = 0;
  1391. bool remove = false;
  1392. List<int> removeList = new List<int>();
  1393. for (int i = 0; i < table.Rows.Count; i++)
  1394. {
  1395. if (i != 0
  1396. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  1397. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString()))
  1398. )
  1399. {
  1400. qtyCount = 0;
  1401. remove = false;
  1402. }
  1403. if (remove)
  1404. {
  1405. removeList.Add(i);
  1406. }
  1407. else
  1408. {
  1409. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  1410. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1411. qtyCount += lotQty;
  1412. if (qtyCount >= orderQty)
  1413. {
  1414. remove = true;
  1415. }
  1416. }
  1417. }
  1418. if (removeList.Count > 0)
  1419. {
  1420. removeList.Reverse();
  1421. foreach (var item in removeList)
  1422. {
  1423. table.Rows.RemoveAt(item);
  1424. }
  1425. }
  1426. var result = ConvertCellToString(table);
  1427. if (Invmes.Rows.Count > 0)
  1428. {
  1429. result.Merge(Invmes, false);
  1430. }
  1431. return result;
  1432. }
  1433. /// <summary>
  1434. /// 工单领料推荐
  1435. /// </summary>
  1436. /// <param name="Id"></param>
  1437. /// <param name="workPoint"></param>
  1438. /// <returns></returns>
  1439. public DataTable GetICSMOPickMergeByWorkorder(string Id, string workPoint)
  1440. {
  1441. string sql = $@"SELECT row_number() over (partition by c.Code,c.InvCode order by c.Code,c.InvCode,d.MTIME) AS rowNo,
  1442. c.Code,
  1443. c.InvCode,
  1444. c.InvName,
  1445. c.InvStd,
  1446. c.InvUnit,
  1447. FLOOR(c.iQuantity) AS iQuantity,
  1448. d.WarehouseCode,
  1449. d.LotNO,
  1450. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  1451. d.LocationCode LocationCode,
  1452. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1453. FLOOR(f.QTYTotal) QTYTotal
  1454. FROM
  1455. (select
  1456. a.ApplyCode as Code, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  1457. FROM
  1458. ICSMOApply a
  1459. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1460. WHERE a.ApplyCode in ({Id}) AND a.WorkPoint = '{workPoint}'
  1461. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID) c
  1462. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1463. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1464. and d.WorkPoint='{workPoint}' AND d.Quantity>0 ) d on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1465. 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
  1466. order by c.Code,c.InvCode,d.MTIME";
  1467. var dataset = Repository().FindDataSetBySql(sql);
  1468. if (dataset.Tables.Count == 0)
  1469. return null;
  1470. DataTable table = dataset.Tables[0];
  1471. decimal qtyCount = 0;
  1472. bool remove = false;
  1473. List<int> removeList = new List<int>();
  1474. for (int i = 0; i < table.Rows.Count; i++)
  1475. {
  1476. if (i != 0
  1477. && !table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString()))
  1478. {
  1479. qtyCount = 0;
  1480. remove = false;
  1481. }
  1482. if (remove)
  1483. {
  1484. removeList.Add(i);
  1485. }
  1486. else
  1487. {
  1488. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  1489. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1490. qtyCount += lotQty;
  1491. if (qtyCount >= orderQty)
  1492. {
  1493. remove = true;
  1494. }
  1495. }
  1496. }
  1497. if (removeList.Count > 0)
  1498. {
  1499. removeList.Reverse();
  1500. foreach (var item in removeList)
  1501. {
  1502. table.Rows.RemoveAt(item);
  1503. }
  1504. }
  1505. var result = ConvertCellToString(table);
  1506. if (Invmes.Rows.Count > 0)
  1507. {
  1508. result.Merge(Invmes, false);
  1509. }
  1510. return result;
  1511. }
  1512. public DataTable ConvertCellToString(DataTable data)
  1513. {
  1514. DataTable dtCloned = data.Clone();
  1515. foreach (DataColumn col in dtCloned.Columns)
  1516. {
  1517. col.DataType = typeof(string);
  1518. }
  1519. foreach (DataRow row in data.Rows)
  1520. {
  1521. DataRow newrow = dtCloned.NewRow();
  1522. foreach (DataColumn column in dtCloned.Columns)
  1523. {
  1524. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1525. }
  1526. dtCloned.Rows.Add(newrow);
  1527. }
  1528. return dtCloned;
  1529. }
  1530. // public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  1531. // {
  1532. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1533. // #region sql
  1534. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1535. // c.MergeID,
  1536. // c.Code,
  1537. // c.InvCode,
  1538. // c.InvName,
  1539. // c.InvStd,
  1540. //c.InvUnit,
  1541. // FLOOR(c.iQuantity) AS iQuantity,
  1542. // d.WarehouseCode,
  1543. // d.LocationCode,
  1544. // d.LotNO,
  1545. // FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  1546. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1547. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  1548. // FROM
  1549. // ({0}) c
  1550. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  1551. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  1552. // 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
  1553. //DECLARE @ItemCode VARCHAR(50),
  1554. // @QTY DECIMAL(18,3),
  1555. // @ItemCodeCurrent VARCHAR(50),
  1556. // @QTYCurrent DECIMAL(18,3),
  1557. // @iQuantityCurrent DECIMAL(18,3),
  1558. // @CanDelete BIT,
  1559. // @Row INT,
  1560. // @rowCurrent INT
  1561. //SET @Row = @@rowcount
  1562. //SET @rowCurrent=1
  1563. //SET @CanDelete=0
  1564. //SET @ItemCode=''
  1565. //WHILE @rowCurrent<=@Row
  1566. // BEGIN
  1567. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
  1568. //PRINT(@rowCurrent)
  1569. // IF @ItemCode<>@ItemCodeCurrent
  1570. // BEGIN
  1571. // SET @ItemCode=@ItemCodeCurrent
  1572. // SET @QTY=0
  1573. // SET @CanDelete=0
  1574. // END
  1575. // IF @CanDelete=1
  1576. // BEGIN
  1577. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  1578. // SET @rowCurrent += 1
  1579. // CONTINUE
  1580. // END
  1581. // SET @QTY += @QTYCurrent
  1582. // IF @QTY>=@iQuantityCurrent
  1583. // BEGIN
  1584. // SET @CanDelete=1
  1585. // END
  1586. // SET @rowCurrent += 1
  1587. // END
  1588. //SELECT * FROM #temp
  1589. //DROP TABLE #temp
  1590. //";
  1591. // #endregion
  1592. // string sqls = "";
  1593. // if (Type == "1")
  1594. // {
  1595. // #region 工单备料sql
  1596. // sqls = @" select
  1597. // x.MergeID,
  1598. // c.MOCode as Code,
  1599. // a.InvCode,
  1600. // b.InvName,
  1601. // b.InvStd,
  1602. //b.InvUnit,
  1603. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1604. // a.WhCode,
  1605. //a.ExtensionID
  1606. // FROM
  1607. // ICSMOPick a
  1608. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1609. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1610. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1611. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1612. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  1613. // #endregion
  1614. // }
  1615. // if (Type == "2")
  1616. // {
  1617. // #region 工单领料SQL
  1618. // sqls = @" select
  1619. // x.MergeID,
  1620. // a.ApplyCode as Code,
  1621. // a.InvCode,
  1622. // b.InvName,
  1623. // b.InvStd,
  1624. //b.InvUnit,
  1625. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1626. // a.WhCode,
  1627. // a.ExtensionID
  1628. // FROM
  1629. // ICSMOApply a
  1630. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1631. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1632. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1633. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  1634. // #endregion
  1635. // }
  1636. // if (Type == "3")
  1637. // {
  1638. // #region 工单材料出库SQL
  1639. // sqls = @" select
  1640. // x.MergeID,
  1641. // a.IssueCode as Code,
  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. // ICSMOIssue a
  1651. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1652. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1653. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1654. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1655. // #endregion
  1656. // }
  1657. // if (Type == "4")
  1658. // {
  1659. // #region 委外备料SQL
  1660. // sqls = @" select
  1661. // x.MergeID,
  1662. // c.OOCode as Code,
  1663. // a.InvCode,
  1664. // b.InvName,
  1665. // b.InvStd,
  1666. //b.InvUnit,
  1667. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1668. // a.WhCode,
  1669. //a.ExtensionID
  1670. // FROM
  1671. // ICSOOPick a
  1672. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1673. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1674. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1675. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1676. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  1677. // #endregion
  1678. // }
  1679. // if (Type == "5")
  1680. // {
  1681. // #region 委外领料SQL
  1682. // sqls = @" select
  1683. // x.MergeID,
  1684. // a.ApplyCode as Code,
  1685. // a.InvCode,
  1686. // b.InvName,
  1687. // b.InvStd,
  1688. //b.InvUnit,
  1689. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1690. // a.WhCode,
  1691. //a.ExtensionID
  1692. // FROM
  1693. // ICSOApply a
  1694. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1695. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1696. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1697. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1698. // #endregion
  1699. // }
  1700. // if (Type == "6")
  1701. // {
  1702. // #region 委外材料出库SQL
  1703. // sqls = @" select
  1704. // x.MergeID,
  1705. // a.IssueCode as Code,
  1706. // a.InvCode,
  1707. // b.InvName,
  1708. // b.InvStd,
  1709. //b.InvUnit,
  1710. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1711. // a.WhCode,
  1712. //a.ExtensionID
  1713. // FROM
  1714. // ICSOIssue a
  1715. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1716. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1717. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1718. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1719. // #endregion
  1720. // }
  1721. // if (Type == "7")
  1722. // {
  1723. // #region 销售发货SQL
  1724. // sqls = @" select
  1725. // x.MergeID,
  1726. // a.SDNCode as Code,
  1727. // a.InvCode,
  1728. // b.InvName,
  1729. // b.InvStd,
  1730. //b.InvUnit,
  1731. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1732. // a.WhCode,
  1733. //a.ExtensionID
  1734. // FROM
  1735. // ICSSDN a
  1736. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1737. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1738. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1739. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1740. // #endregion
  1741. // }
  1742. // if (Type == "8")
  1743. // {
  1744. // #region 其它出库SQL
  1745. // sqls = @" select
  1746. // x.MergeID,
  1747. // a.OutCode as Code,
  1748. // a.InvCode,
  1749. // b.InvName,
  1750. // b.InvStd,
  1751. //b.InvUnit,
  1752. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1753. // a.WhCode,
  1754. //a.ExtensionID
  1755. // FROM
  1756. // ICSOtherOut a
  1757. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1758. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1759. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1760. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1761. // #endregion
  1762. // }
  1763. // if (Type == "9")
  1764. // {
  1765. // #region 借用SQL
  1766. // sqls = @" select
  1767. // x.MergeID,
  1768. // a.BrrowCode as Code,
  1769. // a.InvCode,
  1770. // b.InvName,
  1771. // b.InvStd,
  1772. //b.InvUnit,
  1773. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1774. // a.WhCode,
  1775. //a.ExtensionID
  1776. // FROM
  1777. // ICSBrrow a
  1778. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1779. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1780. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1781. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1782. // #endregion
  1783. // }
  1784. // if (Type == "10")
  1785. // {
  1786. // #region 物料调拨
  1787. // sqls = @" select
  1788. // x.MergeID,
  1789. // a.TransferNO as Code,
  1790. // a.InvCode,
  1791. // b.InvName,
  1792. // b.InvStd,
  1793. //b.InvUnit,
  1794. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1795. // a.FromWarehouseCode as WhCode,
  1796. //a.ExtensionID
  1797. // FROM
  1798. // ICSTransfer a
  1799. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1800. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1801. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1802. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  1803. // #endregion
  1804. // }
  1805. // if (Type == "11")
  1806. // {
  1807. // #region 两步调出
  1808. // sqls = @"select
  1809. // x.MergeID,
  1810. // a.OutCode as Code,
  1811. // a.InvCode,
  1812. // b.InvName,
  1813. // b.InvStd,
  1814. // b.InvUnit,
  1815. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1816. // a.WHCode as WhCode,
  1817. // a.ExtensionID
  1818. // FROM
  1819. // ICSOtherOut a
  1820. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1821. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1822. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1823. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1824. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  1825. // #endregion
  1826. // }
  1827. // sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  1828. // sql = string.Format(sql, sqls, WorkPoint);
  1829. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1830. // DataTable dtCloned = table.Clone();
  1831. // foreach (DataColumn col in dtCloned.Columns)
  1832. // {
  1833. // col.DataType = typeof(string);
  1834. // }
  1835. // foreach (DataRow row in table.Rows)
  1836. // {
  1837. // DataRow newrow = dtCloned.NewRow();
  1838. // foreach (DataColumn column in dtCloned.Columns)
  1839. // {
  1840. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1841. // }
  1842. // dtCloned.Rows.Add(newrow);
  1843. // }
  1844. // if (Invmes.Rows.Count > 0)
  1845. // {
  1846. // dtCloned.Merge(Invmes, false);
  1847. // }
  1848. // return dtCloned;
  1849. // }
  1850. public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  1851. {
  1852. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1853. string sqls = "";
  1854. if (Type == "1")
  1855. {
  1856. #region 工单备料sql
  1857. sqls = @" select
  1858. x.MergeID,
  1859. c.MOCode as Code,
  1860. a.InvCode,
  1861. b.InvName,
  1862. b.InvStd,
  1863. b.InvUnit,
  1864. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1865. a.WhCode,
  1866. a.ExtensionID
  1867. FROM
  1868. ICSMOPick a
  1869. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1870. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1871. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1872. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1873. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  1874. #endregion
  1875. }
  1876. if (Type == "2")
  1877. {
  1878. #region 工单领料SQL
  1879. sqls = @" select
  1880. x.MergeID,
  1881. a.ApplyCode as Code,
  1882. a.InvCode,
  1883. b.InvName,
  1884. b.InvStd,
  1885. b.InvUnit,
  1886. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1887. a.WhCode,
  1888. a.ExtensionID
  1889. FROM
  1890. ICSMOApply a
  1891. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1892. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1893. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1894. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  1895. #endregion
  1896. }
  1897. if (Type == "3")
  1898. {
  1899. #region 工单材料出库SQL
  1900. sqls = @" select
  1901. x.MergeID,
  1902. a.IssueCode as Code,
  1903. a.InvCode,
  1904. b.InvName,
  1905. b.InvStd,
  1906. b.InvUnit,
  1907. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1908. a.WhCode,
  1909. a.ExtensionID
  1910. FROM
  1911. ICSMOIssue a
  1912. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1913. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1914. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1915. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1916. #endregion
  1917. }
  1918. if (Type == "4")
  1919. {
  1920. #region 委外备料SQL
  1921. sqls = @" select
  1922. x.MergeID,
  1923. c.OOCode as Code,
  1924. a.InvCode,
  1925. b.InvName,
  1926. b.InvStd,
  1927. b.InvUnit,
  1928. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1929. a.WhCode,
  1930. a.ExtensionID
  1931. FROM
  1932. ICSOOPick a
  1933. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1934. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1935. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1936. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1937. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  1938. #endregion
  1939. }
  1940. if (Type == "5")
  1941. {
  1942. #region 委外领料SQL
  1943. sqls = @" select
  1944. x.MergeID,
  1945. a.ApplyCode as Code,
  1946. a.InvCode,
  1947. b.InvName,
  1948. b.InvStd,
  1949. b.InvUnit,
  1950. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1951. a.WhCode,
  1952. a.ExtensionID
  1953. FROM
  1954. ICSOApply a
  1955. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1956. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1957. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1958. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1959. #endregion
  1960. }
  1961. if (Type == "6")
  1962. {
  1963. #region 委外材料出库SQL
  1964. sqls = @" select
  1965. x.MergeID,
  1966. a.IssueCode as Code,
  1967. a.InvCode,
  1968. b.InvName,
  1969. b.InvStd,
  1970. b.InvUnit,
  1971. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1972. a.WhCode,
  1973. a.ExtensionID
  1974. FROM
  1975. ICSOIssue a
  1976. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1977. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1978. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1979. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  1980. #endregion
  1981. }
  1982. if (Type == "7")
  1983. {
  1984. #region 销售发货SQL
  1985. sqls = @" select
  1986. x.MergeID,
  1987. a.SDNCode as Code,
  1988. a.InvCode,
  1989. b.InvName,
  1990. b.InvStd,
  1991. b.InvUnit,
  1992. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1993. a.WhCode,
  1994. a.ExtensionID
  1995. FROM
  1996. ICSSDN a
  1997. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  1998. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1999. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  2000. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2001. #endregion
  2002. }
  2003. if (Type == "8")
  2004. {
  2005. #region 其它出库SQL
  2006. sqls = @" select
  2007. x.MergeID,
  2008. a.OutCode as Code,
  2009. a.InvCode,
  2010. b.InvName,
  2011. b.InvStd,
  2012. b.InvUnit,
  2013. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2014. a.WhCode,
  2015. a.ExtensionID
  2016. FROM
  2017. ICSOtherOut a
  2018. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2019. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2020. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2021. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2022. #endregion
  2023. }
  2024. if (Type == "9")
  2025. {
  2026. #region 借用SQL
  2027. sqls = @" select
  2028. x.MergeID,
  2029. a.BrrowCode as Code,
  2030. a.InvCode,
  2031. b.InvName,
  2032. b.InvStd,
  2033. b.InvUnit,
  2034. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2035. a.WhCode,
  2036. a.ExtensionID
  2037. FROM
  2038. ICSBrrow a
  2039. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2040. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2041. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2042. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2043. #endregion
  2044. }
  2045. if (Type == "10")
  2046. {
  2047. #region 物料调拨
  2048. sqls = @" select
  2049. x.MergeID,
  2050. a.TransferNO as Code,
  2051. a.InvCode,
  2052. b.InvName,
  2053. b.InvStd,
  2054. b.InvUnit,
  2055. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2056. a.FromWarehouseCode as WhCode,
  2057. a.ExtensionID
  2058. FROM
  2059. ICSTransfer a
  2060. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2061. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2062. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  2063. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  2064. #endregion
  2065. }
  2066. if (Type == "11")
  2067. {
  2068. #region 两步调出
  2069. sqls = @" select
  2070. x.MergeID,
  2071. a.OutCode as Code,
  2072. a.InvCode,
  2073. b.InvName,
  2074. b.InvStd,
  2075. b.InvUnit,
  2076. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2077. a.WHCode as WhCode,
  2078. a.ExtensionID
  2079. FROM
  2080. ICSOtherOut a
  2081. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2082. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2083. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2084. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2085. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  2086. #endregion
  2087. }
  2088. sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  2089. #region sql
  2090. string sql = $@"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2091. c.MergeID,
  2092. c.Code,
  2093. c.InvCode,
  2094. c.InvName,
  2095. c.InvStd,
  2096. c.InvUnit,
  2097. FLOOR(c.iQuantity) AS iQuantity,
  2098. d.WarehouseCode,
  2099. d.LocationCode,
  2100. d.LotNO,
  2101. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2102. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2103. FLOOR(f.QTYTotal) QTYTotal
  2104. FROM
  2105. ({sqls}) c
  2106. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  2107. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2108. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2109. and d.WorkPoint='{WorkPoint}' AND d.Quantity>0 ) d
  2110. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2111. 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
  2112. order by c.Code,c.InvCode,d.MTIME ";
  2113. #endregion
  2114. var dataset = Repository().FindDataSetBySql(sql);
  2115. if (dataset.Tables.Count == 0)
  2116. return null;
  2117. DataTable table = dataset.Tables[0];
  2118. decimal qtyCount = 0;
  2119. bool remove = false;
  2120. List<int> removeList = new List<int>();
  2121. for (int i = 0; i < table.Rows.Count; i++)
  2122. {
  2123. if (i != 0
  2124. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  2125. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString()))
  2126. )
  2127. {
  2128. qtyCount = 0;
  2129. remove = false;
  2130. }
  2131. if (remove)
  2132. {
  2133. removeList.Add(i);
  2134. }
  2135. else
  2136. {
  2137. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  2138. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2139. qtyCount += lotQty;
  2140. if (qtyCount >= orderQty)
  2141. {
  2142. remove = true;
  2143. }
  2144. }
  2145. }
  2146. if (removeList.Count > 0)
  2147. {
  2148. removeList.Reverse();
  2149. foreach (var item in removeList)
  2150. {
  2151. table.Rows.RemoveAt(item);
  2152. }
  2153. }
  2154. var result = ConvertCellToString(table);
  2155. if (Invmes.Rows.Count > 0)
  2156. {
  2157. result.Merge(Invmes, false);
  2158. }
  2159. return result;
  2160. }
  2161. public string MergeMaterial(string keyValue, string Type)
  2162. {
  2163. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  2164. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  2165. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2166. string msg = "";
  2167. string sql = string.Empty;
  2168. string dataList = string.Empty;
  2169. List<string> arry = keyValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  2170. if (arry.Count > 0)
  2171. {
  2172. StringBuilder stringBuilder = new StringBuilder();
  2173. foreach (var i in arry)
  2174. {
  2175. stringBuilder.Append($@"'{i}',");
  2176. }
  2177. dataList = stringBuilder.ToString(0, stringBuilder.Length - 1);
  2178. }
  2179. Int64 Merge_ID = 0;
  2180. DateTime time = DateTime.Now;
  2181. string Tday = time.ToString("yyyyMMdd");
  2182. string sqls = string.Format(@"SELECT MAX(A.MergeID) AS SourceID FROM ICSMOPickMerge A WHERE A.MergeID LIKE '{0}%' AND LEN(a.MergeID) = 13", Tday);
  2183. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  2184. DataTable dts = ds.Tables[0];
  2185. if (dts != null && dts.Rows.Count > 0)
  2186. {
  2187. string lot = dts.Rows[0]["SourceID"].ToString();
  2188. if (!string.IsNullOrWhiteSpace(lot))
  2189. Merge_ID = Convert.ToInt64(lot.Substring(lot.Length - 5));
  2190. }
  2191. string MergeID = Tday + (Merge_ID + 1).ToString().PadLeft(5, '0');
  2192. string order = string.Empty;
  2193. string orderCode = string.Empty;
  2194. string quantity = string.Empty;
  2195. string sqlString1 = string.Empty;
  2196. string sqlString2 = string.Empty;
  2197. if (Type == "1")//工单备料
  2198. {
  2199. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2200. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2201. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2202. from ICSMO a inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  2203. where a.MOCode in ({5})
  2204. ";
  2205. }
  2206. if (Type == "2")//工单发料
  2207. {
  2208. order = "ICSMOApply";
  2209. orderCode = "b.ApplyCode";
  2210. quantity = "b.IssueQuantity";
  2211. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2212. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2213. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  2214. from ICSMOApply a
  2215. where a.ApplyCode in ({5})";
  2216. }
  2217. if (Type == "3")//材料出库
  2218. {
  2219. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2220. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2221. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2222. from ICSMOIssue a
  2223. where a.IssueCode in ({5}) ";
  2224. }
  2225. if (Type == "4")//委外备料
  2226. {
  2227. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2228. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2229. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2230. from ICSOutsourcingOrder a inner join ICSOOPick b on a.OODetailID=b.OODetailID and b.WorkPoint=a.WorkPoint
  2231. where a.OOCode in ({5})";
  2232. }
  2233. if (Type == "5")//委外领料
  2234. {
  2235. order = "ICSOApply";
  2236. orderCode = "b.ApplyCode";
  2237. quantity = "b.IssueQuantity";
  2238. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2239. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2240. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  2241. from ICSOApply a
  2242. where a.ApplyCode in ({5})";
  2243. }
  2244. if (Type == "6")//委外材料出库
  2245. {
  2246. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2247. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2248. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2249. from ICSOIssue a
  2250. where a.IssueCode in ({5})";
  2251. }
  2252. if (Type == "7")//销售发货
  2253. {
  2254. order = "ICSSDN";
  2255. orderCode = "b.SDNCode";
  2256. quantity = "b.SDNQuantity";
  2257. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2258. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2259. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.SDNCode
  2260. from ICSSDN a
  2261. where a.SDNCode in ({5}) AND a.Type='1' ";
  2262. }
  2263. if (Type == "8")//其它出库
  2264. {
  2265. order = "ICSOtherOut";
  2266. orderCode = "b.OutCode";
  2267. quantity = "b.OutQuantity";
  2268. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2269. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2270. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.OutCode
  2271. from ICSOtherOut a
  2272. where a.OutCode in ({5})";
  2273. }
  2274. if (Type == "9")//借用单
  2275. {
  2276. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2277. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2278. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2279. from ICSBrrow a
  2280. where a.BrrowCode in ({5})";
  2281. }
  2282. if (Type == "10")//物料调拨
  2283. {
  2284. order = "ICSTransfer";
  2285. orderCode = "b.TransferNO";
  2286. quantity = "b.TransferQuantity";
  2287. sql += @"INSERT INTO dbo.ICSMOPickMerge
  2288. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  2289. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.TransferNO
  2290. from ICSTransfer a
  2291. where a.TransferNO in ({5})
  2292. ";
  2293. }
  2294. if (Type == "11")//两步调出
  2295. {
  2296. sql += @" INSERT INTO dbo.ICSMOPickMerge
  2297. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  2298. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  2299. from ICSOtherOut a
  2300. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2301. where a.OutCode in ({5})
  2302. ";
  2303. }
  2304. sql = string.Format(sql, MergeID, Type, MUSER, MUSERNAME, WorkPoint, dataList);
  2305. sqlString1 += $@" SELECT a.ID FROM ICSMOPickMerge a WHERE a.SourceID IN (SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) )";
  2306. sqlString2 += $@" SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) AND {quantity}>0";
  2307. DataSet ds1 = SqlHelper.GetDataSetBySql(sqlString1);
  2308. DataSet ds2 = SqlHelper.GetDataSetBySql(sqlString2);
  2309. DataTable dts1 = ds1.Tables[0];
  2310. DataTable dts2 = ds2.Tables[0];
  2311. if ((dts1 != null && dts1.Rows.Count > 0))
  2312. {
  2313. }
  2314. else if (dts2 != null && dts2.Rows.Count > 0)
  2315. {
  2316. msg = "当前选择单据号存在已出库的单据号,合并拣料失败";
  2317. }
  2318. else
  2319. {
  2320. try
  2321. {
  2322. if (SqlHelper.CmdExecuteNonQueryLi(sql) == 0)
  2323. {
  2324. msg = "新增失败";
  2325. }
  2326. }
  2327. catch (Exception ex)
  2328. {
  2329. throw new Exception(ex.Message);
  2330. }
  2331. }
  2332. return msg;
  2333. }
  2334. public string CancelMergeMaterial(string keyValue, string Type)
  2335. {
  2336. string msg = "";
  2337. string sql = string.Empty;
  2338. keyValue = keyValue.TrimEnd(',');
  2339. List<string> arry = keyValue.Split(',').ToList();
  2340. string dataList = string.Empty;
  2341. if (arry.Count > 0)
  2342. {
  2343. foreach (var i in arry)
  2344. {
  2345. dataList += $@"'{i}',";
  2346. }
  2347. if (dataList.Any())
  2348. {
  2349. dataList = dataList.TrimEnd(',');
  2350. }
  2351. }
  2352. string sqls = $@" SELECT SourceID FROM ICSMOPickMerge WHERE EATTRIBUTE1 IN({dataList}) ";
  2353. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  2354. DataTable dts = ds.Tables[0];
  2355. if (dts == null || dts.Rows.Count <= 0)
  2356. {
  2357. msg = "当前单据未合并拣料,取消合并拣料失败";
  2358. return msg;
  2359. }
  2360. string sqlStrring = string.Empty;
  2361. if (Type == "2")//工单发料
  2362. {
  2363. sqlStrring = $@"select ID from ICSMOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  2364. }
  2365. if (Type == "5")//委外领料
  2366. {
  2367. sqlStrring = $@"select ID from ICSOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  2368. }
  2369. if (Type == "7")//销售发货
  2370. {
  2371. sqlStrring = $@"select ID from ICSSDN a where a.ID in ({sqls}) and a.SDNQuantity=0 AND a.Type='1' ";
  2372. }
  2373. if (Type == "8")//其它出库
  2374. {
  2375. sqlStrring = $@"select ID
  2376. from ICSOtherOut a
  2377. where a.ID in ({sqls}) and a.OutQuantity=0";
  2378. }
  2379. if (Type == "10")//物料调拨
  2380. {
  2381. sqlStrring = $@"select ID from ICSTransfer a where a.ID in ({sqls}) and a.TransferQuantity=0 ";
  2382. }
  2383. DataSet dsdata = SqlHelper.GetDataSetBySql(sqlStrring);
  2384. DataTable dtdsdatas = dsdata.Tables[0];
  2385. if (dtdsdatas == null || dtdsdatas.Rows.Count <= 0)
  2386. {
  2387. msg = "当前物料已经出库,取消合并失败";
  2388. return msg;
  2389. }
  2390. sql = $@"DELETE FROM ICSMOPickMerge WHERE SourceID IN({sqls})";
  2391. try
  2392. {
  2393. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  2394. {
  2395. }
  2396. else
  2397. {
  2398. msg = "取消合并失败";
  2399. }
  2400. }
  2401. catch (Exception ex)
  2402. {
  2403. throw new Exception(ex.Message);
  2404. }
  2405. return msg;
  2406. }
  2407. public string CheckQty(string objArr)
  2408. {
  2409. objArr = objArr.TrimEnd(',');
  2410. string sql = @"select * from ICSMOPickMerge a
  2411. left join ICSMOPick b on a.SourceID=b.ID and a.WorkPoint=b.WorkPoint
  2412. left join ICSMO c on b.MODetailID=c.MODetailID and b.WorkPoint=c.WorkPoint
  2413. where MOCode in ({0})";
  2414. sql = string.Format(sql, objArr);
  2415. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  2416. if (dt != null && dt.Rows.Count > 0)
  2417. {
  2418. return "1";
  2419. }
  2420. return "0";
  2421. }
  2422. }
  2423. }