纽威

3975 lines
216 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using NFine.Code;
  9. using NFine.Repository;
  10. using System.Data.Common;
  11. using NFine.Domain._03_Entity.SRM;
  12. using ICS.Application.Entity;
  13. using Newtonsoft.Json;
  14. using System.Configuration;
  15. using System.Data.SqlClient;
  16. using ICS.Data;
  17. using NFine.Domain._03_Entity.WMS;
  18. namespace NFine.Application.WMS
  19. {
  20. public class PickMaterialApp : RepositoryFactory<ICSVendor>
  21. {
  22. public static DataTable Invmes = new DataTable();
  23. //工单备料(工单子件)
  24. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  25. {
  26. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  27. DataTable dt = new DataTable();
  28. var queryParam = queryJson.ToJObject();
  29. List<DbParameter> parameter = new List<DbParameter>();
  30. StringBuilder sqlstring = new StringBuilder();
  31. #region [SQL]
  32. // sql = @"select a.ID,b.MOCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  33. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  34. //from ICSMOPick a
  35. //left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  36. //left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  37. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  38. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  39. // sql += " WHERE 1=1 and e.ID is null";
  40. sqlstring.Append($@"select a.MOCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  41. case when max(d.SourceID) is null then '' else '' end as IsNew,
  42. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,
  43. f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  44. from ICSMO a
  45. inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  46. left join ICSMOPickMerge d on d.SourceID=b.ID and d.WorkPoint=b.WorkPoint
  47. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  48. where a.WorkPoint='{WorkPoint}' ");
  49. if (!string.IsNullOrWhiteSpace(queryJson))
  50. {
  51. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  52. {
  53. sqlstring.Append($" and a.MOCode like '%{queryParam["POCode"]}%' ");
  54. }
  55. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  56. {
  57. sqlstring.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  58. }
  59. }
  60. sqlstring.Append(@" group by a.MOCode, a.WorkPoint,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,
  61. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  62. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10");
  63. #endregion
  64. return Repository().FindTablePageBySql(sqlstring.ToString(), parameter.ToArray(), ref jqgridparam);
  65. }
  66. //工单备料(工单子件)子表查询
  67. public DataTable GetSubGridJson1(string Code)
  68. {
  69. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  70. DataTable dt = new DataTable();
  71. //var queryParam = queryJson.ToJObject();
  72. List<DbParameter> parameter = new List<DbParameter>();
  73. string sql = @" select a.ID,b.MOCode as Code,a.Sequence+'-'+b.Sequence AS Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  74. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  75. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  76. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  77. from ICSMOPick a
  78. left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  79. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  80. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  81. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  82. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  83. where b.MOCode='{0}' and a.WorkPoint='{1}'";
  84. sql = string.Format(sql, Code, WorkPoint);
  85. return Repository().FindTableBySql(sql.ToString());
  86. }
  87. //工单领料(发料申请)
  88. public DataTable GetGridJson2(string queryJson, ref Pagination jqgridparam)
  89. {
  90. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  91. DataTable dt = new DataTable();
  92. var queryParam = queryJson.ToJObject();
  93. List<DbParameter> parameter = new List<DbParameter>();
  94. StringBuilder sqlString = new StringBuilder();
  95. #region [SQL]
  96. // select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  97. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  98. // from ICSMOApply a
  99. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  100. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  101. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  102. sqlString.Append($@"
  103. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  104. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  105. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  106. a.ReceiverNumber,case when a.MUSERName = 'JOB' then a.ReceiverName else a.MUSERName end as ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  107. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan ,
  108. g.Status, ISNULL(p.PrintCount, 0) as PrintCount,
  109. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  110. --case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName != 'JOB' then ''
  111. --else (case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName = 'JOB' then '' else '' end) end as Status,
  112. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  113. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  114. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  115. from ICSMOApply a
  116. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  117. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  118. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  119. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  120. --left join Sys_SRM_User n ON n.F_Account=a.MUSERName
  121. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  122. left join (SELECT ApplyCode,
  123. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  124. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB' AND sum(IssueQuantity)>0 then ''
  125. else '' end) end as Status
  126. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE!='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  127. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  128. left join Sys_SRM_ItemsDetail j on j.F_Define3='HGAreaConfig' AND j.F_Define1=a.WHCode AND j.F_Define4=a.WorkPoint and detail.LocationCode = j.F_Define2
  129. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE!='17'");
  130. if (!string.IsNullOrWhiteSpace(queryJson))
  131. {
  132. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  133. {
  134. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  135. }
  136. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  137. {
  138. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  139. }
  140. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  141. {
  142. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  143. }
  144. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  145. {
  146. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  147. }
  148. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  149. {
  150. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  151. }
  152. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  153. {
  154. sqlString.Append($@" and (j.F_Id is null OR detail.LocationCode is null OR detail.LocationCode='') ");
  155. }
  156. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  157. {
  158. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  159. }
  160. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  161. {
  162. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  163. }
  164. }
  165. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  166. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  167. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  168. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  169. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER,p.PrintCount) as t where t.row=1");
  170. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  171. {
  172. if (queryParam["Status"].ToString() == "3")
  173. {
  174. sqlString.Append($@" AND t.Status='已过账' ");
  175. }
  176. else if (queryParam["Status"].ToString() == "2")
  177. {
  178. sqlString.Append($@" AND t.Status='已配料' ");
  179. }
  180. else if (queryParam["Status"].ToString() == "1")
  181. {
  182. sqlString.Append($@" AND t.Status='未配料' ");
  183. }
  184. }
  185. #endregion
  186. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  187. }
  188. //工单领料(发料申请)子表查询
  189. public DataTable GetSubGridJson2(string queryJson, string Code, ref Pagination jqgridparam)
  190. {
  191. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  192. DataTable dt = new DataTable();
  193. var queryParam = queryJson.ToJObject();
  194. List<DbParameter> parameter = new List<DbParameter>();
  195. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  196. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  197. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  198. a.ReceiverNumber,case when a.MUSERName = 'JOB' then a.ReceiverName else a.MUSERName end as ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  199. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,a.SAPSequence,
  200. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  201. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  202. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  203. from ICSMOApply a
  204. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  205. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  206. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  207. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  208. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  209. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE!='17'";
  210. if (!string.IsNullOrWhiteSpace(queryJson))
  211. {
  212. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  213. {
  214. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  215. }
  216. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  217. {
  218. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  219. }
  220. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  221. {
  222. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  223. }
  224. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  225. {
  226. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  227. }
  228. //if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  229. //{
  230. // sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  231. // WHERE
  232. // F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  233. //}
  234. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  235. {
  236. sql += $@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ";
  237. }
  238. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  239. {
  240. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  241. }
  242. }
  243. sql += " ) c WHERE c.row=1 ";
  244. sql = string.Format(sql, Code, WorkPoint);
  245. //return Repository().FindTableBySql(sql.ToString());
  246. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  247. }
  248. //售后领料
  249. public DataTable GetGridJson12(string queryJson, ref Pagination jqgridparam)
  250. {
  251. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  252. DataTable dt = new DataTable();
  253. var queryParam = queryJson.ToJObject();
  254. List<DbParameter> parameter = new List<DbParameter>();
  255. StringBuilder sqlString = new StringBuilder();
  256. #region [SQL]
  257. // 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,
  258. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  259. // from ICSMOApply a
  260. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  261. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  262. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  263. sqlString.Append($@"
  264. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  265. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  266. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  267. a.ReceiverNumber,case when a.MUSERName = 'JOB' then a.ReceiverName else a.MUSERName end as ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  268. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan,a.CustomerName,a.Pagination,
  269. g.Status,ISNULL(p.PrintCount, 0) as PrintCount,
  270. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  271. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  272. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  273. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  274. from ICSMOApply a
  275. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  276. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  277. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  278. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  279. left join (SELECT ApplyCode,
  280. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  281. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB'AND sum(IssueQuantity)>0 then ''
  282. else '' end) end as Status
  283. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  284. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  285. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  286. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE='17' ");
  287. if (!string.IsNullOrWhiteSpace(queryJson))
  288. {
  289. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  290. {
  291. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  292. }
  293. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  294. {
  295. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  296. }
  297. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  298. {
  299. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  300. }
  301. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  302. {
  303. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  304. }
  305. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  306. {
  307. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  308. }
  309. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  310. {
  311. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  312. WHERE
  313. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  314. }
  315. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  316. {
  317. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  318. }
  319. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  320. {
  321. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  322. }
  323. }
  324. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  325. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  326. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  327. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  328. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER,p.PrintCount,a.CustomerName,a.Pagination) as t where t.row=1");
  329. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  330. {
  331. if (queryParam["Status"].ToString() == "3")
  332. {
  333. sqlString.Append($@" AND t.Status='已过账' ");
  334. }
  335. else if (queryParam["Status"].ToString() == "2")
  336. {
  337. sqlString.Append($@" AND t.Status='已配料' ");
  338. }
  339. else if (queryParam["Status"].ToString() == "1")
  340. {
  341. sqlString.Append($@" AND t.Status='未配料' ");
  342. }
  343. }
  344. #endregion
  345. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  346. }
  347. //售后领料(子表查询)
  348. public DataTable GetSubGridJson12(string queryJson, string Code)
  349. {
  350. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  351. DataTable dt = new DataTable();
  352. var queryParam = queryJson.ToJObject();
  353. List<DbParameter> parameter = new List<DbParameter>();
  354. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  355. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  356. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  357. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  358. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,a.SAPSequence,
  359. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  360. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  361. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  362. from ICSMOApply a
  363. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  364. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  365. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  366. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  367. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  368. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE='17'";
  369. if (!string.IsNullOrWhiteSpace(queryJson))
  370. {
  371. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  372. {
  373. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  374. }
  375. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  376. {
  377. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  378. }
  379. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  380. {
  381. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  382. }
  383. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  384. {
  385. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  386. }
  387. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  388. {
  389. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  390. WHERE
  391. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  392. }
  393. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  394. {
  395. sql += $@" and a.CreateDateTime like '%{queryParam["CreateDate"]}%' ";
  396. }
  397. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  398. {
  399. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  400. }
  401. }
  402. sql += " ) c WHERE c.row=1 ";
  403. sql = string.Format(sql, Code, WorkPoint);
  404. return Repository().FindTableBySql(sql.ToString());
  405. }
  406. //工单材料出库(材料出库)
  407. public DataTable GetGridJson3(string queryJson, ref Pagination jqgridparam)
  408. {
  409. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  410. DataTable dt = new DataTable();
  411. var queryParam = queryJson.ToJObject();
  412. List<DbParameter> parameter = new List<DbParameter>();
  413. StringBuilder sqlString = new StringBuilder();
  414. #region [SQL]
  415. // 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,
  416. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  417. // from ICSMOIssue a
  418. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  419. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  420. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint ";
  421. // sql += " WHERE 1=1 and e.ID is null";
  422. sqlString.Append($@"SELECT * FROM(SELECT row_number ( ) OVER ( partition BY a.IssueCode ORDER BY a.IssueCode ) AS row,
  423. a.IssueCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  424. case when max(e.SourceID) is null then '' else ''
  425. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  426. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  427. from ICSMOIssue a
  428. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  429. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  430. where a.WorkPoint = '{WorkPoint}' ");
  431. if (!string.IsNullOrWhiteSpace(queryJson))
  432. {
  433. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  434. {
  435. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  436. }
  437. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  438. {
  439. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  440. }
  441. }
  442. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,f.BatchCode,
  443. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  444. f.cFree8, f.cFree9, f.cFree10 ) AS t WHERE t.row= 1 ");
  445. #endregion
  446. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  447. }
  448. //工单材料出库(材料出库)子表查询
  449. public DataTable GetSubGridJson3(string Code)
  450. {
  451. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  452. DataTable dt = new DataTable();
  453. //var queryParam = queryJson.ToJObject();
  454. List<DbParameter> parameter = new List<DbParameter>();
  455. 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,
  456. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  457. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  458. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  459. from ICSMOIssue a
  460. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  461. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  462. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  463. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  464. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  465. sql = string.Format(sql, Code, WorkPoint);
  466. return Repository().FindTableBySql(sql.ToString());
  467. }
  468. //委外备料(委外备料)
  469. public DataTable GetGridJson4(string queryJson, ref Pagination jqgridparam)
  470. {
  471. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  472. DataTable dt = new DataTable();
  473. var queryParam = queryJson.ToJObject();
  474. List<DbParameter> parameter = new List<DbParameter>();
  475. StringBuilder sqlString = new StringBuilder();
  476. #region [SQL]
  477. sqlString.Append($@"select * from (select row_number() over(partition by b.OOCode order by b.OOCode) row, b.OOCode as Code,
  478. b.CreateDateTime as MTIME,
  479. b.CreatePerson as MUSER,
  480. case
  481. when max(e.SourceID) is null then ''
  482. else ''
  483. end as IsNew,
  484. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  485. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  486. from ICSOOPick a
  487. inner join ICSOutsourcingOrder b on a.OODetailID = b.OODetailID and a.WorkPoint = b.WorkPoint
  488. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  489. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  490. WHERE b.WorkPoint = '{WorkPoint}' ");
  491. if (!string.IsNullOrWhiteSpace(queryJson))
  492. {
  493. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  494. {
  495. sqlString.Append($@" and a.OOCode like '%{queryParam["POCode"]}%' ");
  496. }
  497. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  498. {
  499. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  500. }
  501. }
  502. sqlString.Append(@" group by b.OOCode,b.CreateDateTime,b.CreatePerson,f.Colspan ,f.ProjectCode ,
  503. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  504. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10) t where t.row=1");
  505. #endregion
  506. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  507. }
  508. //委外备料(委外备料)子表查询
  509. public DataTable GetSubGridJson4(string Code)
  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 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,
  516. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  517. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  518. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  519. from ICSOOPick a
  520. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID and a.WorkPoint=b.WorkPoint
  521. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  522. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  523. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  524. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  525. where b.OOCode='{0}' and b.WorkPoint='{1}'";
  526. sql = string.Format(sql, Code, WorkPoint);
  527. return Repository().FindTableBySql(sql.ToString());
  528. }
  529. //委外领料(委外发料申请)
  530. public DataTable GetGridJson5(string queryJson, ref Pagination jqgridparam)
  531. {
  532. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  533. DataTable dt = new DataTable();
  534. var queryParam = queryJson.ToJObject();
  535. List<DbParameter> parameter = new List<DbParameter>();
  536. StringBuilder sqlString = new StringBuilder();
  537. #region [SQL]
  538. // 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,
  539. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  540. // from ICSOApply a
  541. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  542. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  543. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  544. // sql += " WHERE 1=1 and e.ID is null";
  545. sqlString.Append($@"select * from (select row_number() over (partition by a.ApplyCode order by a.ApplyCode ) row, a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  546. case when max(e.SourceID) is null then ''
  547. else ''
  548. end as IsNew,
  549. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  550. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  551. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  552. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  553. from ICSOApply a
  554. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  555. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  556. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  557. left join (SELECT ApplyCode,
  558. case when sum(Quantity) =sum(IssueQuantity) AND sum(IssueQuantity)>0 then ''
  559. else '' end as Status
  560. from ICSOApply
  561. where WorkPoint='{WorkPoint}'
  562. group by ApplyCode) g on a.ApplyCode = g.ApplyCode
  563. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  564. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  565. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  566. where a.WorkPoint = '{WorkPoint}'");
  567. if (!string.IsNullOrWhiteSpace(queryJson))
  568. {
  569. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  570. {
  571. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  572. }
  573. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  574. {
  575. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  576. }
  577. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  578. {
  579. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  580. }
  581. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  582. {
  583. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  584. }
  585. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  586. {
  587. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  588. WHERE
  589. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  590. }
  591. }
  592. sqlString.Append(@"group by a.ApplyCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  593. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  594. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,g.Status,p.PrintCount ) t where row=1");
  595. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  596. {
  597. if (queryParam["Status1"].ToString() == "1")
  598. {
  599. sqlString.Append($@" AND t.Status1='已过账' ");
  600. }
  601. else
  602. {
  603. sqlString.Append($@" AND t.Status1='未过账' ");
  604. }
  605. }
  606. #endregion
  607. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  608. }
  609. //委外领料(委外发料申请)子表查询
  610. public DataTable GetSubGridJson5(string Code, string queryJson, ref Pagination jqgridparam)
  611. {
  612. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  613. DataTable dt = new DataTable();
  614. var queryParam = queryJson.ToJObject();
  615. List<DbParameter> parameter = new List<DbParameter>();
  616. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  617. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode, a.SourceCode,a.SourceSequence,a.VenCode,a.VenName,
  618. b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,a.SAPSequence,
  619. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area,
  620. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  621. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  622. from ICSOApply a
  623. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  624. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  625. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  626. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  627. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  628. where a.ApplyCode='{0}' and a.WorkPoint='{1}'";
  629. if (!string.IsNullOrWhiteSpace(queryJson))
  630. {
  631. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  632. {
  633. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  634. }
  635. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  636. {
  637. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  638. }
  639. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  640. {
  641. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  642. }
  643. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  644. {
  645. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  646. WHERE
  647. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  648. }
  649. }
  650. sql += " ) c WHERE c.row=1 ";
  651. sql = string.Format(sql, Code, WorkPoint);
  652. //return Repository().FindTableBySql(sql.ToString());
  653. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  654. }
  655. //委外材料出库(委外发料申请)
  656. public DataTable GetGridJson6(string queryJson, ref Pagination jqgridparam)
  657. {
  658. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  659. DataTable dt = new DataTable();
  660. var queryParam = queryJson.ToJObject();
  661. List<DbParameter> parameter = new List<DbParameter>();
  662. StringBuilder sqlString = new StringBuilder();
  663. #region [SQL]
  664. // 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,
  665. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  666. // from ICSOIssue a
  667. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  668. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  669. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  670. // sql += " WHERE 1=1 and e.ID is null";
  671. sqlString.Append($@"select * from(select row_number() over(partition by a.IssueCode order by a.IssueCode) row, a.IssueCode as Code,
  672. a.CreateDateTime as MTIME,
  673. a.CreatePerson as MUSER,
  674. case
  675. when max(e.SourceID) is null then ''
  676. else ''
  677. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  678. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  679. f.cFree8,f.cFree9,f.cFree10
  680. from ICSOIssue a
  681. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  682. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  683. where a.WorkPoint = '{WorkPoint}'");
  684. if (!string.IsNullOrWhiteSpace(queryJson))
  685. {
  686. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  687. {
  688. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  689. }
  690. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  691. {
  692. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  693. }
  694. }
  695. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  696. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  697. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10) t where t.row=1");
  698. #endregion
  699. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  700. }
  701. //委外材料出库(委外发料申请)子表查询
  702. public DataTable GetSubGridJson6(string Code)
  703. {
  704. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  705. DataTable dt = new DataTable();
  706. //var queryParam = queryJson.ToJObject();
  707. List<DbParameter> parameter = new List<DbParameter>();
  708. 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,
  709. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  710. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  711. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  712. from ICSOIssue a
  713. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  714. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  715. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  716. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  717. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  718. sql = string.Format(sql, Code, WorkPoint);
  719. return Repository().FindTableBySql(sql.ToString());
  720. }
  721. //销售发货(销售发货)
  722. public DataTable GetGridJson7(string queryJson, ref Pagination jqgridparam)
  723. {
  724. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  725. DataTable dt = new DataTable();
  726. var queryParam = queryJson.ToJObject();
  727. List<DbParameter> parameter = new List<DbParameter>();
  728. StringBuilder sqlString = new StringBuilder();
  729. #region [SQL]
  730. // 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,
  731. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  732. // from ICSSDN a
  733. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  734. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  735. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  736. // sql += " WHERE 1=1 and a.Type='1' and e.ID is null";
  737. sqlString.Append($@"SELECT * from (SELECT Row_Number() over(partition by a.SDNCode Order by a.SDNCode) as r, a.SDNCode AS Code,
  738. CONVERT(varchar(100),a.CreateDateTime,23) AS MTIME,
  739. a.CreatePerson AS MUSER,
  740. a.CusCode,a.CusName,ISNULL(p.PrintCount, 0) as PrintCount,
  741. (CASE WHEN max(e.SourceID) IS NULL THEN '' ELSE '' END) AS IsNew,
  742. case when max(k.TransCode) is null then '' else '' end as IsOccupy,g.Status as Status1,
  743. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  744. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID
  745. FROM ICSSDN a
  746. LEFT JOIN ICSPrintCount p ON a.SDNCode=p.TransCode
  747. left join (SELECT SDNCode,case when sum(Quantity) =sum(SDNQuantity) AND sum(SDNQuantity)>0 then '' else '' end as Status
  748. from ICSSDN where WorkPoint='{WorkPoint}' group by SDNCode) g on a.SDNCode = g.SDNCode
  749. LEFT JOIN ICSMOPickMerge e ON a.ID = e.SourceID AND a.WorkPoint = e.WorkPoint
  750. LEFT JOIN ICSExtension f ON a.ExtensionID = f.ID AND a.WorkPoint = f.WorkPoint
  751. LEFT JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  752. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  753. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.SDNCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  754. WHERE a.WorkPoint = '{WorkPoint}' ");
  755. if (!string.IsNullOrWhiteSpace(queryJson))
  756. {
  757. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  758. {
  759. sqlString.Append($" and a.SDNCode like '%{queryParam["POCode"]}%' ");
  760. }
  761. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  762. {
  763. sqlString.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  764. }
  765. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  766. {
  767. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  768. }
  769. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  770. {
  771. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  772. }
  773. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  774. {
  775. sqlString.Append($@" and a.CusCode like '%{queryParam["CusCode"]}%' ");
  776. }
  777. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  778. {
  779. sqlString.Append($@" and a.CusName like '%{queryParam["CusName"]}%' ");
  780. }
  781. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  782. {
  783. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  784. WHERE
  785. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  786. }
  787. }
  788. sqlString.Append(@"GROUP BY a.SDNCode, a.CreateDateTime, a.CreatePerson, f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  789. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID,a.CusCode,a.CusName,p.PrintCount,g.Status) t WHERE t.r=1");
  790. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  791. {
  792. if (queryParam["Status1"].ToString() == "1")
  793. {
  794. sqlString.Append($@" AND t.Status1='已过账' ");
  795. }
  796. else
  797. {
  798. sqlString.Append($@" AND t.Status1='未过账' ");
  799. }
  800. }
  801. #endregion
  802. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  803. }
  804. //销售发货(销售发货)子表查询
  805. public DataTable GetSubGridJson7(string Code, string queryJson, ref Pagination jqgridparam)
  806. {
  807. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  808. DataTable dt = new DataTable();
  809. var queryParam = queryJson.ToJObject();
  810. List<DbParameter> parameter = new List<DbParameter>();
  811. string sql = @"SELECT * FROM (select row_number() over(partition by a.SDNCode,a.InvCode,a.Sequence ORDER BY a.SDNCode) as row,
  812. a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode
  813. ,a.WorkPoint,a.Points,a.DeliveryType,a.DeliveryDescribe,a.InvDescribe,a.OtherDescribe,a.CusCode,a.CusName,
  814. a.SalesUnit,a.StockIndicator,a.IsSerialNumber,a.SAPSequence,
  815. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  816. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area
  817. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  818. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.SDNQuantity as IssueQuantity
  819. from ICSSDN a
  820. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  821. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  822. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  823. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  824. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  825. where a.SDNCode='{0}' and a.WorkPoint='{1}'";
  826. if (!string.IsNullOrWhiteSpace(queryJson))
  827. {
  828. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  829. {
  830. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  831. }
  832. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  833. {
  834. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  835. }
  836. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  837. {
  838. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  839. }
  840. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  841. {
  842. sql += $@" and a.CusCode like '%{queryParam["CusCode"]}%' ";
  843. }
  844. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  845. {
  846. sql += $@" and a.CusName like '%{queryParam["CusName"]}%' ";
  847. }
  848. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  849. {
  850. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  851. WHERE
  852. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  853. }
  854. }
  855. sql += " ) c WHERE c.row=1 ";
  856. sql = string.Format(sql, Code, WorkPoint);
  857. //return Repository().FindTableBySql(sql.ToString());
  858. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  859. }
  860. //其它出库(其它出库)
  861. public DataTable GetGridJson8(string queryJson, ref Pagination jqgridparam)
  862. {
  863. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  864. DataTable dt = new DataTable();
  865. var queryParam = queryJson.ToJObject();
  866. List<DbParameter> parameter = new List<DbParameter>();
  867. StringBuilder sqlString = new StringBuilder();
  868. #region [SQL]
  869. // 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,
  870. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  871. //from ICSOtherOut a
  872. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  873. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  874. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  875. // sql += " WHERE 1=1 and e.ID is null ";
  876. sqlString.Append($@"select * from(select row_number() over(partition by a.OutCode order by a.OutCode) row, a.OutCode as Code,
  877. CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,
  878. a.CreatePerson as MUSER,
  879. case
  880. when max(e.SourceID) is null then ''
  881. else ''
  882. end as IsNew,
  883. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  884. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  885. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  886. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  887. from ICSOtherOut a
  888. LEFT JOIN ICSPrintCount p ON a.OutCode=p.TransCode
  889. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  890. left join (SELECT OutCode,case when sum(Quantity) =sum(OutQuantity) AND sum(OutQuantity)>0 then '' else '' end as Status
  891. from ICSOtherOut where WorkPoint='{WorkPoint}' group by OutCode) g on a.OutCode = g.OutCode
  892. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  893. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  894. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  895. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.OutCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  896. where a.WorkPoint = '{WorkPoint}'");
  897. #endregion
  898. if (!string.IsNullOrWhiteSpace(queryJson))
  899. {
  900. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  901. {
  902. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  903. }
  904. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  905. {
  906. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  907. }
  908. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  909. {
  910. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  911. }
  912. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  913. {
  914. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  915. }
  916. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  917. {
  918. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  919. WHERE
  920. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  921. }
  922. }
  923. sqlString.Append(@" group by a.OutCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,f.BatchCode,
  924. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,
  925. f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,g.Status,p.PrintCount) t where t.row=1");
  926. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  927. {
  928. if (queryParam["Status1"].ToString() == "1")
  929. {
  930. sqlString.Append($@" AND t.Status1='已过账' ");
  931. }
  932. else
  933. {
  934. sqlString.Append($@" AND t.Status1='未过账' ");
  935. }
  936. }
  937. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  938. }
  939. //其它出库(其它出库)子表查询
  940. public DataTable GetSubGridJson8(string Code, string queryJson, ref Pagination jqgridparam)
  941. {
  942. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  943. DataTable dt = new DataTable();
  944. var queryParam = queryJson.ToJObject();
  945. List<DbParameter> parameter = new List<DbParameter>();
  946. string sql = @"SELECT * FROM (select row_number() over(partition by a.OutCode,a.InvCode,a.Sequence ORDER BY a.OutCode) as row,
  947. a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.Quantity,
  948. a.InvCode,a.WorkPoint,a.OrderType, a.TypeDescribe,a.CostCenter,a.Remarks,a.PersonNumber,a.InvDescribe,
  949. a.Unit,a.StockIndicator,a.SAPSequence,
  950. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  951. case when e.SourceID is null then '' else '' end as IsNew,detail.LocationCode AS Area
  952. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  953. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  954. from ICSOtherOut a
  955. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  956. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  957. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  958. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  959. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  960. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  961. if (!string.IsNullOrWhiteSpace(queryJson))
  962. {
  963. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  964. {
  965. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  966. }
  967. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  968. {
  969. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  970. }
  971. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  972. {
  973. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  974. }
  975. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  976. {
  977. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  978. WHERE
  979. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  980. }
  981. }
  982. sql += " ) c WHERE c.row=1 ";
  983. sql = string.Format(sql, Code, WorkPoint);
  984. return Repository().FindTableBySql(sql.ToString());
  985. }
  986. //借用(借用)
  987. public DataTable GetGridJson9(string queryJson, ref Pagination jqgridparam)
  988. {
  989. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  990. DataTable dt = new DataTable();
  991. var queryParam = queryJson.ToJObject();
  992. List<DbParameter> parameter = new List<DbParameter>();
  993. StringBuilder sqlString = new StringBuilder();
  994. #region [SQL]
  995. // sql = @"
  996. //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,
  997. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  998. // from ICSBrrow a
  999. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1000. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1001. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1002. // sql += " WHERE 1=1 and e.ID is null ";
  1003. sqlString.Append($@"select * from(select row_number() over(partition by a.BrrowCode order by a.BrrowCode) row, a.BrrowCode as Code,
  1004. a.CreateDateTime as MTIME,
  1005. a.CreatePerson as MUSER,
  1006. case
  1007. when max(e.SourceID) is null then ''
  1008. else ''
  1009. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  1010. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  1011. f.cFree8,f.cFree9,f.cFree10
  1012. from ICSBrrow a
  1013. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1014. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1015. where a.WorkPoint = '{WorkPoint}'");
  1016. if (!string.IsNullOrWhiteSpace(queryJson))
  1017. {
  1018. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1019. {
  1020. sqlString.Append($@" and a.BrrowCode like '%{queryParam["POCode"]}%' ");
  1021. }
  1022. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1023. {
  1024. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1025. }
  1026. }
  1027. sqlString.Append(@"group by a.BrrowCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  1028. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  1029. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,
  1030. f.cFree10) t where t.row=1");
  1031. #endregion
  1032. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1033. }
  1034. //借用(借用)子表查询
  1035. public DataTable GetSubGridJson9(string Code)
  1036. {
  1037. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1038. DataTable dt = new DataTable();
  1039. //var queryParam = queryJson.ToJObject();
  1040. List<DbParameter> parameter = new List<DbParameter>();
  1041. 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,
  1042. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1043. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1044. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.BrrowQuantity as IssueQuantity
  1045. from ICSBrrow a
  1046. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1047. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1048. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1049. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1050. where a.BrrowCode='{0}' and a.WorkPoint='{1}'";
  1051. sql = string.Format(sql, Code, WorkPoint);
  1052. return Repository().FindTableBySql(sql.ToString());
  1053. }
  1054. //物料调拨
  1055. public DataTable GetGridJson10(string queryJson, ref Pagination jqgridparam)
  1056. {
  1057. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1058. DataTable dt = new DataTable();
  1059. var queryParam = queryJson.ToJObject();
  1060. List<DbParameter> parameter = new List<DbParameter>();
  1061. StringBuilder sqlString = new StringBuilder();
  1062. #region [SQL]
  1063. // sql = @"
  1064. //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,
  1065. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1066. // from ICSBrrow a
  1067. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1068. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1069. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1070. // sql += " WHERE 1=1 and e.ID is null ";
  1071. sqlString.Append($@"select * from (select row_number() over(partition by a.TransferNO order by a.TransferNO) row,
  1072. a.TransferNO as Code,a.ID,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  1073. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  1074. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  1075. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  1076. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  1077. from ICSTransfer a
  1078. LEFT JOIN ICSPrintCount p ON a.TransferNO=p.TransCode
  1079. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1080. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1081. left join (SELECT TransferNO,case when sum(Quantity) =sum(TransferQuantity) AND sum(TransferQuantity)>0 then '' else '' end as Status
  1082. from ICSTransfer where WorkPoint='{WorkPoint}' group by TransferNO) g on a.TransferNO = g.TransferNO
  1083. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1084. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.FromWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1085. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.TransferNO=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  1086. where a.WorkPoint = '{WorkPoint}' and a.Status = '2'");
  1087. if (!string.IsNullOrWhiteSpace(queryJson))
  1088. {
  1089. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1090. {
  1091. sqlString.Append($@" and a.TransferNO like '%{queryParam["POCode"]}%' ");
  1092. }
  1093. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1094. {
  1095. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1096. }
  1097. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1098. {
  1099. sqlString.Append($@" and a.ToWarehouseCode like '%{queryParam["WHCode"]}%' ");
  1100. }
  1101. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1102. {
  1103. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  1104. }
  1105. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1106. {
  1107. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1108. WHERE
  1109. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  1110. }
  1111. }
  1112. sqlString.Append(@"group by a.TransferNO,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  1113. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  1114. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,a.TransferQuantity,g.Status,p.PrintCount) t where t.row=1");
  1115. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  1116. {
  1117. if (queryParam["Status1"].ToString() == "1")
  1118. {
  1119. sqlString.Append($@" AND t.Status1='已过账' ");
  1120. }
  1121. else
  1122. {
  1123. sqlString.Append($@" AND t.Status1='未过账' ");
  1124. }
  1125. }
  1126. #endregion
  1127. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1128. }
  1129. //物料调拨子表查询
  1130. public DataTable GetSubGridJson10(string Code, string queryJson, ref Pagination jqgridparam)
  1131. {
  1132. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1133. DataTable dt = new DataTable();
  1134. var queryParam = queryJson.ToJObject();
  1135. List<DbParameter> parameter = new List<DbParameter>();
  1136. string sql = @"SELECT * from (select row_number() over(partition by a.TransferNO,a.InvCode,
  1137. a.Sequence ORDER BY a.TransferNO) as row, a.ID,a.TransferNO as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.FromWarehouseCode as WHCode,b.WarehouseName,detail.LocationCode AS Area,
  1138. a.InvCode,a.ToWarehouseCode,a.EATTRIBUTE1 AS ReceiveWork,a.WorkPoint,a.OrderType,
  1139. a.TypeDescribe,a.Remarks,a.PersonNumber,a.InvDescribe,
  1140. a.Unit,a.StockIndicator,a.ReceiveInvCode,a.ReceiveInvDescribe,
  1141. a.ReceiveStock,a.ReceiveSales,a.ReceiveSequence,a.Remark2,
  1142. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,a.SAPSequence,
  1143. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1144. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1145. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.TransferQuantity as IssueQuantity
  1146. from ICSTransfer a
  1147. left join ICSWarehouse b on a.FromWarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1148. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1149. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.FromWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1150. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1151. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1152. where a.TransferNO='{0}' and b.WorkPoint='{1}'";
  1153. if (!string.IsNullOrWhiteSpace(queryJson))
  1154. {
  1155. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1156. {
  1157. sql += " and a.ToWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  1158. }
  1159. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1160. {
  1161. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  1162. }
  1163. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1164. {
  1165. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  1166. }
  1167. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1168. {
  1169. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1170. WHERE
  1171. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  1172. }
  1173. }
  1174. sql += " ) as t where t.row=1";
  1175. sql = string.Format(sql, Code, WorkPoint);
  1176. //return Repository().FindTableBySql(sql.ToString());
  1177. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1178. }
  1179. //两步调拨
  1180. public DataTable GetGridJson11(string queryJson, ref Pagination jqgridparam)
  1181. {
  1182. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1183. DataTable dt = new DataTable();
  1184. var queryParam = queryJson.ToJObject();
  1185. List<DbParameter> parameter = new List<DbParameter>();
  1186. StringBuilder sqlString = new StringBuilder();
  1187. #region [SQL]
  1188. // sql = @"
  1189. //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,
  1190. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1191. // from ICSBrrow a
  1192. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1193. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1194. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1195. // sql += " WHERE 1=1 and e.ID is null ";
  1196. 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,
  1197. case when max(e.SourceID) is null then '' else '' end as IsNew,a.EATTRIBUTE1 AS ReceiveWork,tra.ToWarehouseCode,
  1198. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  1199. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10
  1200. FROM ICSOtherOut a
  1201. INNER JOIN ICSTransfer tra ON a.TransferDetailID = tra.TransferDetailID AND a.WorkPoint = tra.WorkPoint
  1202. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1203. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1204. where a.WorkPoint = '{WorkPoint}'
  1205. and a.Status = '2' ");
  1206. if (!string.IsNullOrWhiteSpace(queryJson))
  1207. {
  1208. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1209. {
  1210. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  1211. }
  1212. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1213. {
  1214. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1215. }
  1216. }
  1217. sqlString.Append(@" group by a.OutCode, a.CreateDateTime, a.CreatePerson,a.EATTRIBUTE1 ,tra.ToWarehouseCode, f.Colspan ,f.ProjectCode ,
  1218. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,
  1219. f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10) t where t.row=1");
  1220. #endregion
  1221. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1222. }
  1223. //两步调拨子表查询
  1224. public DataTable GetSubGridJson11(string Code)
  1225. {
  1226. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1227. DataTable dt = new DataTable();
  1228. //var queryParam = queryJson.ToJObject();
  1229. List<DbParameter> parameter = new List<DbParameter>();
  1230. 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,
  1231. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1232. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1233. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  1234. FROM ICSOtherOut a
  1235. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1236. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1237. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1238. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1239. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1240. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  1241. sql = string.Format(sql, Code, WorkPoint);
  1242. return Repository().FindTableBySql(sql.ToString());
  1243. }
  1244. // public DataTable GetICSMOPickMergeTemp(string ID,string Type)
  1245. // {
  1246. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1247. // ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1248. // #region sql
  1249. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1250. // c.Code,
  1251. // c.InvCode,
  1252. // c.InvName,
  1253. // c.InvStd,
  1254. // c.InvUnit,
  1255. // FLOOR(c.iQuantity) AS iQuantity,
  1256. // d.WarehouseCode,
  1257. // m.LotNO,
  1258. // (case when m.LotNo is null then 0 else FLOOR(ISNULL(d.Quantity, 0)) end) AS QTY,
  1259. // (case when m.LotNo is null then null else d.LocationCode end) AS LocationCode,
  1260. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1261. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  1262. // FROM
  1263. // ({0}) c
  1264. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  1265. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  1266. // 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
  1267. //DECLARE @ItemCode VARCHAR(50),
  1268. // @QTY DECIMAL(18,3),
  1269. // @ItemCodeCurrent VARCHAR(50),
  1270. // @Lotno VARCHAR(50),
  1271. // @QTYCurrent DECIMAL(18,3),
  1272. // @iQuantityCurrent DECIMAL(18,3),
  1273. // @CanDelete BIT,
  1274. // @Row INT,
  1275. // @rowCurrent INT
  1276. //SET @Row = @@rowcount
  1277. //SET @rowCurrent=1
  1278. //SET @CanDelete=0
  1279. //SET @ItemCode=''
  1280. //SET @Lotno = ''
  1281. //WHILE @rowCurrent<=@Row
  1282. // BEGIN
  1283. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity,@Lotno = Lotno FROM #temp WHERE rowNo=@rowCurrent
  1284. //PRINT(@rowCurrent)
  1285. // IF @ItemCode<>@ItemCodeCurrent
  1286. // BEGIN
  1287. // SET @ItemCode=@ItemCodeCurrent
  1288. // SET @QTY=0
  1289. // SET @CanDelete=0
  1290. // END
  1291. // IF @CanDelete=1
  1292. // BEGIN
  1293. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  1294. // SET @rowCurrent += 1
  1295. // CONTINUE
  1296. // END
  1297. // SET @QTY += @QTYCurrent
  1298. // IF @LotNo is null or @QTY>=@iQuantityCurrent
  1299. // BEGIN
  1300. // SET @CanDelete=1
  1301. // END
  1302. // SET @rowCurrent += 1
  1303. // END
  1304. //SELECT * FROM #temp
  1305. //DROP TABLE #temp
  1306. //";
  1307. // #endregion
  1308. // string sqls = "";
  1309. // if (Type=="1")
  1310. // {
  1311. // #region 工单备料sql
  1312. // sqls = @" SELECT
  1313. // c.MOCode as Code,
  1314. // a.InvCode,
  1315. // b.InvName,
  1316. // b.InvStd,
  1317. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1318. // a.WhCode,
  1319. // b.InvUnit,
  1320. // a.ExtensionID
  1321. // FROM
  1322. // ICSMOPick a
  1323. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1324. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1325. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1326. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1327. // #endregion
  1328. // }
  1329. // if (Type == "2")
  1330. // {
  1331. // return GetICSMOPickMergeByWorkorder(ID, WorkPoint);
  1332. // }
  1333. // if (Type=="3")
  1334. // {
  1335. // #region 工单材料出库SQL
  1336. // sqls = @" select
  1337. // a.IssueCode as Code,
  1338. // a.InvCode,
  1339. // b.InvName,
  1340. // b.InvStd,
  1341. // b.InvUnit,
  1342. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1343. // a.WhCode,
  1344. // a.ExtensionID
  1345. // FROM
  1346. // ICSMOIssue a
  1347. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1348. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1349. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1350. // #endregion
  1351. // }
  1352. // if (Type=="4")
  1353. // {
  1354. // #region 委外备料SQL
  1355. // sqls = @" select
  1356. // c.OOCode as Code,
  1357. // a.InvCode,
  1358. // b.InvName,
  1359. // b.InvStd,
  1360. // b.InvUnit,
  1361. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1362. // a.WhCode,
  1363. // a.ExtensionID
  1364. // FROM
  1365. // ICSOOPick a
  1366. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1367. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1368. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1369. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
  1370. // #endregion
  1371. // }
  1372. // if (Type=="5")
  1373. // {
  1374. // #region 委外领料SQL
  1375. // sqls = @" select
  1376. // a.ApplyCode as Code,
  1377. // a.InvCode,
  1378. // b.InvName,
  1379. // b.InvStd,
  1380. //b.InvUnit,
  1381. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1382. // a.WhCode,
  1383. // a.ExtensionID
  1384. // FROM
  1385. // ICSOApply a
  1386. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1387. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1388. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1389. // #endregion
  1390. // }
  1391. // if (Type=="6")
  1392. // {
  1393. // #region 委外材料出库SQL
  1394. // sqls = @" select
  1395. // a.IssueCode as Code,
  1396. // a.InvCode,
  1397. // b.InvName,
  1398. // b.InvStd,
  1399. //b.InvUnit,
  1400. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1401. // a.WhCode,
  1402. //a.ExtensionID
  1403. // FROM
  1404. // ICSOIssue a
  1405. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1406. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1407. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1408. // #endregion
  1409. // }
  1410. // if (Type=="7")
  1411. // {
  1412. // #region 销售发货SQL
  1413. // sqls = @" select
  1414. // a.SDNCode as Code,
  1415. // a.InvCode,
  1416. // b.InvName,
  1417. // b.InvStd,
  1418. //b.InvUnit,
  1419. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1420. // a.WhCode,
  1421. //a.ExtensionID
  1422. // FROM
  1423. // ICSSDN a
  1424. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1425. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1426. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1427. // #endregion
  1428. // }
  1429. // if (Type=="8")
  1430. // {
  1431. // #region 其它出库SQL
  1432. // sqls = @" select
  1433. // a.OutCode as Code,
  1434. // a.InvCode,
  1435. // b.InvName,
  1436. // b.InvStd,
  1437. // b.InvUnit,
  1438. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1439. // a.WhCode,
  1440. // a.ExtensionID
  1441. // FROM
  1442. // ICSOtherOut a
  1443. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1444. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1445. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1446. // #endregion
  1447. // }
  1448. // if (Type == "9")
  1449. // {
  1450. // #region 借用SQL
  1451. // sqls = @"select
  1452. // a.BrrowCode as Code,
  1453. // a.InvCode,
  1454. // b.InvName,
  1455. // b.InvStd,
  1456. //b.InvUnit,
  1457. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1458. // a.WhCode,
  1459. //a.ExtensionID
  1460. // FROM
  1461. // ICSBrrow a
  1462. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1463. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1464. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1465. // #endregion
  1466. // }
  1467. // if (Type == "10")
  1468. // {
  1469. // #region 物料调拨
  1470. // sqls = @" select
  1471. // a.TransferNO as Code,
  1472. // a.InvCode,
  1473. // b.InvName,
  1474. // b.InvStd,
  1475. //b.InvUnit,
  1476. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1477. // a.FromWarehouseCode as WhCode,
  1478. //a.ExtensionID
  1479. // FROM
  1480. // ICSTransfer a
  1481. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1482. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1483. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
  1484. // #endregion
  1485. // }
  1486. // if (Type == "11")
  1487. // {
  1488. // #region 两步调出
  1489. // sqls = @"select
  1490. // a.OutCode as Code,
  1491. // a.InvCode,
  1492. // b.InvName,
  1493. // b.InvStd,
  1494. //b.InvUnit,
  1495. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1496. // a.WHCode ,
  1497. //a.ExtensionID
  1498. // from ICSOtherOut a
  1499. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1500. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1501. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1502. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
  1503. // #endregion
  1504. // }
  1505. // sqls = string.Format(sqls, ID,WorkPoint);
  1506. // sql = string.Format(sql, sqls, WorkPoint);
  1507. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1508. // DataTable dtCloned = table.Clone();
  1509. // foreach (DataColumn col in dtCloned.Columns)
  1510. // {
  1511. // col.DataType = typeof(string);
  1512. // }
  1513. // foreach (DataRow row in table.Rows)
  1514. // {
  1515. // DataRow newrow = dtCloned.NewRow();
  1516. // foreach (DataColumn column in dtCloned.Columns)
  1517. // {
  1518. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1519. // }
  1520. // dtCloned.Rows.Add(newrow);
  1521. // }
  1522. // if (Invmes.Rows.Count > 0)
  1523. // {
  1524. // dtCloned.Merge(Invmes, false);
  1525. // }
  1526. // return dtCloned;
  1527. // }
  1528. public DataTable GetICSMOPickMergeTemp(string ID, string Type)
  1529. {
  1530. string postUrlStr = System.Configuration.ConfigurationManager.AppSettings["HGDocpostUrlStr"].ToString();
  1531. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1532. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1533. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1534. ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1535. string sqls = "";
  1536. #region sql
  1537. #endregion
  1538. //调拨单拣料增加逻辑,如果memo字段有条码信息,那么拣料的条码为备注条码,否则走正常逻辑
  1539. if (Type == "10")
  1540. {
  1541. string dataString = $@"select a.Memo,a.FromWarehouseCode,a.Quantity,a.TransferQuantity,a.InvCode,a.TransferNO,a.SAPSequence,a.Sequence FROM ICSTransfer a
  1542. WHERE a.TransferNO in ({ID}) AND a.WorkPoint = '{WorkPoint}'
  1543. AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  1544. AND a.Memo is not null AND a.Memo!='' ";
  1545. var datasetModel = Repository().FindDataSetBySql(dataString);
  1546. DataTable table1 = null;
  1547. DataTable table = null;
  1548. StringBuilder updateString = new StringBuilder();
  1549. StringBuilder checklot = new StringBuilder();
  1550. string sqlString = String.Empty;
  1551. List<LotMessage> lotMessages = new List<LotMessage>();
  1552. if (datasetModel.Tables[0].Rows.Count != 0)
  1553. {
  1554. DataTable tableModel = datasetModel.Tables[0];
  1555. if (tableModel.Rows.Count > 0)
  1556. {
  1557. //循环验证条码信息是否与单据信息相符
  1558. for (int i = 0; i < tableModel.Rows.Count; i++)
  1559. {
  1560. LotMessage lotMessage = new LotMessage();
  1561. string transCode = tableModel.Rows[i]["TransferNO"].ToString();
  1562. string lotNo = tableModel.Rows[i]["Memo"].ToString();
  1563. string whCode = tableModel.Rows[i]["FromWarehouseCode"].ToString();
  1564. string sequence = tableModel.Rows[i]["Sequence"].ToString();
  1565. lotMessage.LotNo = lotNo;
  1566. lotMessage.Quantity = Convert.ToDecimal(tableModel.Rows[i]["Quantity"].ToString());
  1567. lotMessages.Add(lotMessage);
  1568. //验证信息
  1569. checklot.Append($@"IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}')
  1570. BEGIN
  1571. RAISERROR('{lotNo}',16,1);
  1572. RETURN
  1573. END;
  1574. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{tableModel.Rows[i]["Memo"]}' AND a.WorkPoint='{WorkPoint}' AND a.WarehouseCode='{whCode}')
  1575. BEGIN
  1576. RAISERROR('{lotNo}{transCode}{tableModel.Rows[i]["SAPSequence"]}',16,1);
  1577. RETURN
  1578. END;
  1579. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}' AND a.WarehouseCode='{whCode}' AND a.Quantity>=A.LockQuantity+'{tableModel.Rows[i]["Quantity"]}')
  1580. BEGIN
  1581. RAISERROR('{lotNo}',16,1);
  1582. RETURN
  1583. END;
  1584. IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}' AND InvCode='{tableModel.Rows[i]["InvCode"]}')
  1585. BEGIN
  1586. RAISERROR('{lotNo}{transCode}{tableModel.Rows[i]["SAPSequence"]}',16,1);
  1587. RETURN
  1588. END;"
  1589. );
  1590. updateString.Append($@" INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1591. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1592. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1593. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1594. MTIME,WorkPoint,EATTRIBUTE1)
  1595. SELECT NEWID(),NEWID(),'{transCode}','{sequence}',a.LotNo ,a.InvCode ,
  1596. a.WarehouseCode,a.LocationCode,'','','{tableModel.Rows[i]["Quantity"]}',
  1597. '','1','15','47','0','',
  1598. '','','','{MUSER}' ,'{MUSERNAME}' ,
  1599. GETDATE() ,'{WorkPoint}' ,''
  1600. FROM ICSWareHouseLotInfo a
  1601. WHERE a.LotNo='{tableModel.Rows[i]["Memo"]}' AND a.WorkPoint='{WorkPoint}'
  1602. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{tableModel.Rows[i]["Quantity"]}' where LotNo='{lotNo}' AND WorkPoint='{WorkPoint}';");
  1603. }
  1604. SqlHelper.CmdExecuteNonQueryLi(checklot.ToString());
  1605. sqlString = $@"SELECT
  1606. a.TransferNO AS Code,a.Sequence,a.InvCode,b.InvName,b.InvStd,b.InvUnit,
  1607. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,--
  1608. a.FromWarehouseCode As WarehouseCode,
  1609. a.Memo AS LotNO,
  1610. ISNULL(c.Quantity, 0) AS QTY,--
  1611. ISNULL(c.Quantity, 0) AS QTYLeft,
  1612. a.Quantity as SendQTY, --
  1613. c.LocationCode,
  1614. CONVERT(varchar(100),c.MTIME, 23) MTIME,
  1615. SUM(c.Quantity-c.LockQuantity) AS QTYTotal,
  1616. a.ExtensionID
  1617. from ICSTransfer a
  1618. Left JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1619. LEFT JOIN ICSWareHouseLotInfo c ON c.LotNo=a.Memo AND a.FromWarehouseCode=c.WarehouseCode
  1620. WHERE a.TransferNO in({ID}) AND a.Memo is NOT NULL and a.Memo!=''
  1621. GROUP BY a.TransferNO,a.Sequence,a.InvCode,b.InvName,b.InvStd,b.InvUnit,
  1622. a.Quantity,a.FromWarehouseCode ,a.Memo,c.LocationCode,c.MTIME,c.Quantity,a.ExtensionID,c.LockQuantity; ";
  1623. }
  1624. //if (!String.IsNullOrEmpty(sqlString))
  1625. //{
  1626. // var dataSet1 = Repository().FindDataSetBySql(updateString.ToString()+ sqlString);
  1627. // if (dataSet1.Tables[0].Rows.Count != 0)
  1628. // {
  1629. // table1 = dataSet1.Tables[0];
  1630. // }
  1631. //}
  1632. }
  1633. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1634. c.Code,
  1635. c.Sequence,
  1636. c.InvCode,
  1637. c.InvName,
  1638. c.InvStd,
  1639. c.InvUnit,
  1640. c.iQuantity AS iQuantity,
  1641. c.WHCode AS WarehouseCode,
  1642. d.LotNO,
  1643. ISNULL(d.Quantity, 0) AS QTY,
  1644. ISNULL(d.Quantity, 0) AS QTYLeft,
  1645. CONVERT(decimal(18,6),0) AS SendQTY,
  1646. d.LocationCode AS LocationCode,
  1647. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1648. f.QTYTotal QTYTotal,c.ExtensionID
  1649. FROM
  1650. (select
  1651. a.TransferNO as Code,
  1652. a.Sequence,
  1653. a.InvCode,
  1654. b.InvName,
  1655. b.InvStd,
  1656. b.InvUnit,
  1657. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,
  1658. a.FromWarehouseCode as WhCode,
  1659. a.ExtensionID
  1660. FROM
  1661. ICSTransfer a
  1662. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1663. WHERE a.TransferNO in ({ID}) AND a.WorkPoint = '{WorkPoint}' AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  1664. and (a.Memo is null or a.Memo='' )
  1665. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,a.Sequence) c
  1666. left join (select d.WarehouseCode,d.Quantity-d.LockQuantity as Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  1667. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1668. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1669. and d.WorkPoint='{WorkPoint}' AND d.Quantity-d.LockQuantity>0 AND d.Quantity>0
  1670. --AND SUBSTRING( SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)),0,CHARINDEX('-', SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)))) Not IN(SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1671. --WHERE F_Define3='HGAreaConfig' AND F_Define1=d.WarehouseCode AND F_Define4=d.WorkPoint)
  1672. ) d
  1673. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1674. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity-LockQuantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1675. order by c.Code,Convert(int,c.Sequence),d.MTIME,d.LotNO ";
  1676. var dataset = Repository().FindDataSetBySql(sql);
  1677. if (dataset.Tables[0].Rows.Count != 0)
  1678. {
  1679. table = dataset.Tables[0];
  1680. decimal qtyCount = 0;
  1681. bool remove = false;
  1682. List<int> removeList = new List<int>();
  1683. for (int i = 0; i < table.Rows.Count; i++)
  1684. {
  1685. if (lotMessages != null && lotMessages.Count > 0)
  1686. {
  1687. //排除指定条码的锁定库存数量
  1688. List<LotMessage> models = lotMessages.Where(e => e.LotNo == table.Rows[i]["LotNO"].ToString()).ToList();
  1689. if (models != null && models.Count > 0)
  1690. {
  1691. decimal quantity = models.Select(e => e.Quantity).ToList().Sum();
  1692. table.Rows[i]["QTYLeft"] = table.Rows[i]["QTYLeft"].ToString().ToDecimal() - quantity;
  1693. }
  1694. }
  1695. if (i != 0
  1696. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  1697. || !table.Rows[i]["Sequence"].ToString().Equals(table.Rows[i - 1]["Sequence"].ToString())
  1698. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString())
  1699. || !table.Rows[i]["ExtensionID"].ToString().Equals(table.Rows[i - 1]["ExtensionID"].ToString()))
  1700. )
  1701. {
  1702. qtyCount = 0;
  1703. remove = false;
  1704. }
  1705. if (table.Rows[i]["QTYLeft"].ToString().ToDecimal() == 0)
  1706. {
  1707. removeList.Add(i);
  1708. continue;
  1709. }
  1710. if (remove)
  1711. {
  1712. removeList.Add(i);
  1713. }
  1714. else
  1715. {
  1716. var lotQty = table.Rows[i]["QTYLeft"].ToString().ToDecimal();
  1717. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1718. qtyCount += lotQty;
  1719. foreach (DataRow dr in table.Rows)
  1720. {
  1721. if (dr["LotNO"].ToString() == table.Rows[i]["LotNO"].ToString())
  1722. {
  1723. if (qtyCount > orderQty)
  1724. {
  1725. dr["QTYLeft"] = Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty);
  1726. }
  1727. else
  1728. {
  1729. dr["QTYLeft"] = 0;
  1730. }
  1731. }
  1732. }
  1733. if (qtyCount >= orderQty)
  1734. {
  1735. table.Rows[i]["SendQTY"] = Convert.ToDecimal(lotQty) - (Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty));
  1736. remove = true;
  1737. }
  1738. else
  1739. {
  1740. table.Rows[i]["SendQTY"] = lotQty;
  1741. }
  1742. }
  1743. }
  1744. if (removeList.Count > 0)
  1745. {
  1746. removeList.Reverse();
  1747. foreach (var item in removeList)
  1748. {
  1749. table.Rows.RemoveAt(item);
  1750. }
  1751. }
  1752. try
  1753. {
  1754. #region 占料前增加验证,如果条码数量超出实际需要领料数量,直接报错
  1755. string chksql = "";
  1756. #region 物料调拨
  1757. chksql = @" select InvCode,FromWarehouseCode AS WHCode,SUM(Quantity) as Quantity from ICSTransfer
  1758. where TransferNO in ({0}) and WorkPoint='{1}' and (Memo is NULL or Memo='')
  1759. GROUP BY InvCode,FromWarehouseCode";
  1760. #endregion
  1761. chksql = string.Format(chksql, ID, WorkPoint);
  1762. var chkdata = Repository().FindDataSetBySql(chksql);
  1763. DataTable chktable = chkdata.Tables[0];
  1764. foreach (DataRow chkdr in chktable.Rows)
  1765. {
  1766. decimal ZLQty = 0;
  1767. for (int i = 0; i < table.Rows.Count; i++)
  1768. {
  1769. if (table.Rows[i]["WarehouseCode"].ToString() == chkdr["WHCode"].ToString()
  1770. && table.Rows[i]["InvCode"].ToString() == chkdr["InvCode"].ToString())
  1771. {
  1772. ZLQty += Convert.ToDecimal(table.Rows[i]["SendQTY"].ToString());
  1773. }
  1774. }
  1775. if (Convert.ToDecimal(chkdr["Quantity"]) < ZLQty)
  1776. {
  1777. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量大于单据需求数量,请尝试重新拣料。");
  1778. }
  1779. //if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty && (Type == "2" || Type == "5" || Type == "12"))
  1780. //{
  1781. // chksql = @" select B.F_Define2 from ICSInventoryDetail A
  1782. // INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  1783. // where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}'";
  1784. // chksql = string.Format(chksql, chkdr["InvCode"].ToString(), chkdr["WHCode"].ToString(), WorkPoint);
  1785. // var chkds = Repository().FindDataSetBySql(chksql);
  1786. // DataTable chkdt = chkds.Tables[0];
  1787. // if (chkdt.Rows.Count != 0)
  1788. // {
  1789. // throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  1790. // }
  1791. //}
  1792. if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty)
  1793. {
  1794. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  1795. }
  1796. }
  1797. #endregion
  1798. if (table.Rows.Count != 0)
  1799. {
  1800. #region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
  1801. int Count = 1;
  1802. string BusinessCode = "10";
  1803. string TransType = "调拨申请单";
  1804. string Identification = Guid.NewGuid().ToString();
  1805. var pikTbLogTime = DateTime.Now;
  1806. string pikTbLogsql = string.Empty;
  1807. List<string> DocNoList = new List<string>();
  1808. if (Type == "2" || Type == "12" || Type == "5")
  1809. {
  1810. #region 货柜
  1811. string InspectJosn = "";
  1812. string InspectJosnHead = "";
  1813. string InspectJosnBody = "";
  1814. InspectJosn += "{";
  1815. InspectJosn += "\"IMP_ORDINI\":[";
  1816. InspectJosn += "货柜主表区域预留";
  1817. InspectJosn += "],";
  1818. InspectJosn += "\"IMP_ORDINI_RIGHE\":[";
  1819. InspectJosn += "货柜子表区域预留";
  1820. InspectJosn += "]";
  1821. InspectJosn += "}";
  1822. for (int i = 0; i < table.Rows.Count; i++)
  1823. {
  1824. string hgsql = @"select A.InvCode,A.LocationCode,B.F_Define3,C.LocationCode AS Area
  1825. from ICSWareHouseLotInfo A
  1826. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define2=A.LocationCode AND F_Define4=A.WorkPoint AND F_ItemName='HG_Location'
  1827. INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WarehouseCode AND C.WorkPoint=A.WorkPoint
  1828. where A.LotNo='{0}' AND A.WorkPoint='{1}'";
  1829. hgsql = string.Format(hgsql, table.Rows[i]["LotNO"].ToString(), WorkPoint);
  1830. var hgds = Repository().FindDataSetBySql(hgsql);
  1831. if (hgds.Tables.Count == 0)
  1832. return null;
  1833. DataTable hgtable = hgds.Tables[0];
  1834. if (hgtable.Rows.Count > 0)
  1835. {
  1836. if (!DocNoList.Contains(table.Rows[i]["Code"].ToString()))
  1837. {
  1838. DocNoList.Add(table.Rows[i]["Code"].ToString());
  1839. }
  1840. InspectJosnBody += "{";
  1841. InspectJosnBody += "\"RIG_ORDINE\":\"" + table.Rows[i]["Code"].ToString() + "\",";
  1842. InspectJosnBody += "\"RIG_ARTICOLO\": \"" + hgtable.Rows[0]["InvCode"].ToString() + "\",";
  1843. InspectJosnBody += "\"RIG_SUB1\": \"\",";
  1844. InspectJosnBody += "\"RIG_SUB2\": \"\",";
  1845. InspectJosnBody += "\"RIG_ELERUOLI_GEST\": \"" + hgtable.Rows[0]["Area"].ToString() + "\",";
  1846. InspectJosnBody += "\"RIG_ELEBAIE\": \"" + hgtable.Rows[0]["F_Define3"].ToString() + "\",";
  1847. InspectJosnBody += "\"RIG_QTAR\": " + table.Rows[i]["SendQTY"].ToString() + ",";
  1848. if (i == 0)
  1849. {
  1850. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  1851. }
  1852. else
  1853. {
  1854. if (table.Rows[i]["Code"].ToString() == table.Rows[i - 1]["Code"].ToString() &&
  1855. table.Rows[i]["Sequence"].ToString() == table.Rows[i - 1]["Sequence"].ToString())
  1856. {
  1857. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + Count.ToString() + "\"";
  1858. Count++;
  1859. }
  1860. else
  1861. {
  1862. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  1863. Count = 1;
  1864. }
  1865. }
  1866. InspectJosnBody += "},";
  1867. }
  1868. }
  1869. InspectJosnBody = InspectJosnBody.TrimEnd(',');
  1870. foreach (string DocNo in DocNoList)
  1871. {
  1872. InspectJosnHead += "{";
  1873. InspectJosnHead += "\"ORD_ORDINE\":\"" + DocNo.TrimStart('\'').TrimEnd('\'') + "\",";
  1874. InspectJosnHead += "\"ORD_DES\":\"" + TransType + "\",";
  1875. InspectJosnHead += "\"ORD_TIPOOP\":\"P\",";
  1876. InspectJosnHead += "\"ORD_CLIENTE\":\"" + WorkPoint + "\"";
  1877. InspectJosnHead += "},";
  1878. }
  1879. InspectJosnHead = InspectJosnHead.TrimEnd(',');
  1880. if (InspectJosnBody != "")
  1881. {
  1882. InspectJosn = InspectJosn.Replace("货柜主表区域预留", InspectJosnHead);
  1883. InspectJosn = InspectJosn.Replace("货柜子表区域预留", InspectJosnBody);
  1884. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  1885. {
  1886. string callresult = "";
  1887. #region 货柜接口调用前日志
  1888. object logID = Guid.NewGuid();
  1889. string logsql = @"insert into ICSWMS_HGLog
  1890. values
  1891. ('{0}',GETDATE(),'{1}','{2}','{3}','{4}','{5}')";
  1892. logsql = string.Format(logsql, logID, InspectJosn, "", WorkPoint, MUSER, MUSERNAME);
  1893. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1894. #endregion
  1895. callresult = HTTPHelper.RestFulGet(InspectJosn, postUrlStr);
  1896. #region 货柜接口调用后日志
  1897. logsql = @"update ICSWMS_HGLog set ReturnResult='{0}'
  1898. where ID='{1}'";
  1899. logsql = string.Format(logsql, callresult, logID);
  1900. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1901. #endregion
  1902. }
  1903. }
  1904. #endregion
  1905. }
  1906. foreach (DataRow PickLog in table.Rows)
  1907. {
  1908. pikTbLogsql += @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{9}' AND a.WorkPoint='{8}' AND a.Quantity>=A.LockQuantity+'{3}')
  1909. BEGIN
  1910. RAISERROR('{9}', 16, 1);
  1911. RETURN
  1912. END;
  1913. IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
  1914. BEGIN
  1915. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1916. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1917. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1918. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1919. MTIME,WorkPoint,EATTRIBUTE1)
  1920. SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
  1921. a.WarehouseCode,a.LocationCode,'','','{3}',
  1922. '','1','15','{4}','0','',
  1923. '','','','{5}' ,'{6}' ,
  1924. '{7}' ,'{8}' ,''
  1925. FROM ICSWareHouseLotInfo a
  1926. WHERE a.LotNo='{9}' AND a.WorkPoint='{8}'
  1927. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{9}' AND WorkPoint='{8}'
  1928. END
  1929. UPDATE ICSMOApply SET MUSER='{6}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
  1930. pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
  1931. , BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
  1932. }
  1933. SqlHelper.CmdExecuteNonQueryLi(pikTbLogsql + updateString.ToString());
  1934. #endregion
  1935. }
  1936. //查询有条码的拣料信息
  1937. if (!String.IsNullOrEmpty(sqlString))
  1938. {
  1939. var dataSet1 = Repository().FindDataSetBySql(sqlString);
  1940. if (dataSet1.Tables[0].Rows.Count != 0)
  1941. {
  1942. table1 = dataSet1.Tables[0];
  1943. }
  1944. }
  1945. //if (table1 != null)
  1946. //{
  1947. // table.Merge(table1);
  1948. //}
  1949. //var result = ConvertCellToString(table);
  1950. //if (Invmes.Rows.Count > 0)
  1951. //{
  1952. // result.Merge(Invmes, false);
  1953. //}
  1954. //return result;
  1955. }
  1956. catch (Exception ex)
  1957. {
  1958. throw new Exception(ex.Message);
  1959. }
  1960. }
  1961. else
  1962. {
  1963. if (!String.IsNullOrEmpty(updateString.ToString()))
  1964. {
  1965. SqlHelper.CmdExecuteNonQueryLi(updateString.ToString());
  1966. }
  1967. //查询有条码的拣料信息
  1968. if (!String.IsNullOrEmpty(sqlString))
  1969. {
  1970. var dataSet1 = Repository().FindDataSetBySql(sqlString);
  1971. if (dataSet1.Tables[0].Rows.Count != 0)
  1972. {
  1973. table1 = dataSet1.Tables[0];
  1974. }
  1975. }
  1976. }
  1977. if (table1 != null && table != null)
  1978. {
  1979. table.Merge(table1);
  1980. }
  1981. else if (table == null && table1 != null)
  1982. {
  1983. table = table1;
  1984. }
  1985. else if (table1 == null && table == null)
  1986. {
  1987. return null;
  1988. }
  1989. var result = ConvertCellToString(table);
  1990. if (Invmes.Rows.Count > 0)
  1991. {
  1992. result.Merge(Invmes, false);
  1993. }
  1994. return result;
  1995. }
  1996. else
  1997. {
  1998. if (Type == "1")
  1999. {
  2000. #region 工单备料sql
  2001. sqls = @" SELECT
  2002. c.MOCode as Code,
  2003. c.Sequence+'~'+a.Sequence as Sequence,
  2004. a.InvCode,
  2005. b.InvName,
  2006. b.InvStd,
  2007. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2008. a.WhCode,
  2009. b.InvUnit,
  2010. a.ExtensionID
  2011. FROM
  2012. ICSMOPick a
  2013. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2014. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2015. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2016. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,c.Sequence+'~'+a.Sequence";
  2017. #endregion
  2018. }
  2019. if (Type == "2" || Type == "12")
  2020. {
  2021. sqls = @"select
  2022. a.ApplyCode as Code,a.Sequence, a.InvCode, b.InvName, b.InvStd, b.InvUnit, (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.IssueQuantity, 0))) AS iQuantity, a.WhCode,a.ExtensionID
  2023. FROM
  2024. ICSMOApply a
  2025. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2026. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.IssueQuantity, 0)
  2027. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2028. }
  2029. if (Type == "3")
  2030. {
  2031. #region 工单材料出库SQL
  2032. sqls = @" select
  2033. a.IssueCode as Code,
  2034. a.Sequence,
  2035. a.InvCode,
  2036. b.InvName,
  2037. b.InvStd,
  2038. b.InvUnit,
  2039. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2040. a.WhCode,
  2041. a.ExtensionID
  2042. FROM
  2043. ICSMOIssue a
  2044. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2045. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2046. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2047. #endregion
  2048. }
  2049. if (Type == "4")
  2050. {
  2051. #region 委外备料SQL
  2052. sqls = @" select
  2053. c.OOCode as Code,
  2054. c.Sequence+'~'+a.Sequence as Sequence,
  2055. a.InvCode,
  2056. b.InvName,
  2057. b.InvStd,
  2058. b.InvUnit,
  2059. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2060. a.WhCode,
  2061. a.ExtensionID
  2062. FROM
  2063. ICSOOPick a
  2064. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2065. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2066. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2067. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID,c.Sequence+'~'+a.Sequence";
  2068. #endregion
  2069. }
  2070. if (Type == "5")
  2071. {
  2072. #region 委外领料SQL
  2073. sqls = @"select
  2074. a.ApplyCode as Code,
  2075. a.Sequence,
  2076. a.InvCode,
  2077. b.InvName,
  2078. b.InvStd,
  2079. b.InvUnit,
  2080. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.IssueQuantity,0))) AS iQuantity,
  2081. a.WhCode,a.ExtensionID
  2082. FROM
  2083. ICSOApply a
  2084. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2085. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.IssueQuantity, 0)
  2086. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2087. #endregion
  2088. }
  2089. if (Type == "6")
  2090. {
  2091. #region 委外材料出库SQL
  2092. sqls = @" select
  2093. a.IssueCode as Code,
  2094. a.Sequence,
  2095. a.InvCode,
  2096. b.InvName,
  2097. b.InvStd,
  2098. b.InvUnit,
  2099. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2100. a.WhCode,
  2101. a.ExtensionID
  2102. FROM
  2103. ICSOIssue a
  2104. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2105. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2106. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2107. #endregion
  2108. }
  2109. if (Type == "7")
  2110. {
  2111. #region 销售发货SQL
  2112. sqls = @" select
  2113. a.SDNCode as Code,
  2114. a.Sequence,
  2115. a.InvCode,
  2116. b.InvName,
  2117. b.InvStd,
  2118. b.InvUnit,
  2119. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.SDNQuantity, 0))) AS iQuantity,
  2120. a.WhCode,
  2121. a.ExtensionID
  2122. FROM
  2123. ICSSDN a
  2124. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2125. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.SDNQuantity, 0)
  2126. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2127. #endregion
  2128. }
  2129. if (Type == "8")
  2130. {
  2131. #region 其它出库SQL
  2132. sqls = @" select
  2133. a.OutCode as Code,
  2134. a.Sequence,
  2135. a.InvCode,
  2136. b.InvName,
  2137. b.InvStd,
  2138. b.InvUnit,
  2139. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.OutQuantity, 0))) AS iQuantity,
  2140. a.WhCode,
  2141. a.ExtensionID
  2142. FROM
  2143. ICSOtherOut a
  2144. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2145. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.OutQuantity, 0)
  2146. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2147. #endregion
  2148. }
  2149. if (Type == "9")
  2150. {
  2151. #region 借用SQL
  2152. sqls = @"select
  2153. a.BrrowCode as Code,
  2154. a.Sequence,
  2155. a.InvCode,
  2156. b.InvName,
  2157. b.InvStd,
  2158. b.InvUnit,
  2159. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2160. a.WhCode,
  2161. a.ExtensionID
  2162. FROM
  2163. ICSBrrow a
  2164. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2165. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2166. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2167. #endregion
  2168. }
  2169. if (Type == "10")
  2170. {
  2171. #region 物料调拨
  2172. sqls = @"select
  2173. a.TransferNO as Code,
  2174. a.Sequence,
  2175. a.InvCode,
  2176. b.InvName,
  2177. b.InvStd,
  2178. b.InvUnit,
  2179. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,
  2180. a.FromWarehouseCode as WhCode,
  2181. a.ExtensionID
  2182. FROM
  2183. ICSTransfer a
  2184. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2185. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  2186. and a.Memo is null
  2187. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,a.Sequence";
  2188. #endregion
  2189. }
  2190. if (Type == "11")
  2191. {
  2192. #region 两步调出
  2193. sqls = @"select
  2194. a.OutCode as Code,
  2195. a.Sequence,
  2196. a.InvCode,
  2197. b.InvName,
  2198. b.InvStd,
  2199. b.InvUnit,
  2200. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2201. a.WHCode ,
  2202. a.ExtensionID
  2203. from ICSOtherOut a
  2204. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2205. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2206. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2207. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,a.Sequence";
  2208. #endregion
  2209. }
  2210. sqls = string.Format(sqls, ID, WorkPoint);
  2211. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2212. c.Code,
  2213. c.Sequence,
  2214. c.InvCode,
  2215. c.InvName,
  2216. c.InvStd,
  2217. c.InvUnit,
  2218. c.iQuantity AS iQuantity,
  2219. c.WHCode AS WarehouseCode,
  2220. d.LotNO,
  2221. ISNULL(d.Quantity, 0) AS QTY,
  2222. ISNULL(d.Quantity, 0) AS QTYLeft,
  2223. CONVERT(decimal(18,6),0) AS SendQTY,
  2224. d.LocationCode AS LocationCode,
  2225. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2226. f.QTYTotal QTYTotal,c.ExtensionID
  2227. FROM
  2228. ({sqls}) c
  2229. left join (select d.WarehouseCode,d.Quantity-d.LockQuantity as Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  2230. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2231. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2232. and d.WorkPoint='{WorkPoint}' AND d.Quantity-d.LockQuantity>0 AND d.Quantity>0
  2233. --AND SUBSTRING( SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)),0,CHARINDEX('-', SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)))) Not IN(SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  2234. --WHERE F_Define3='HGAreaConfig' AND F_Define1=d.WarehouseCode AND F_Define4=d.WorkPoint)
  2235. ) d
  2236. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2237. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity-LockQuantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2238. order by c.Code,Convert(int,c.Sequence),d.MTIME,d.LotNO ";
  2239. var dataset = Repository().FindDataSetBySql(sql);
  2240. if (dataset.Tables[0].Rows.Count == 0)
  2241. return null;
  2242. DataTable table = dataset.Tables[0];
  2243. decimal qtyCount = 0;
  2244. bool remove = false;
  2245. List<int> removeList = new List<int>();
  2246. for (int i = 0; i < table.Rows.Count; i++)
  2247. {
  2248. if (i != 0
  2249. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  2250. || !table.Rows[i]["Sequence"].ToString().Equals(table.Rows[i - 1]["Sequence"].ToString())
  2251. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString())
  2252. || !table.Rows[i]["ExtensionID"].ToString().Equals(table.Rows[i - 1]["ExtensionID"].ToString()))
  2253. )
  2254. {
  2255. qtyCount = 0;
  2256. remove = false;
  2257. }
  2258. if (table.Rows[i]["QTYLeft"].ToString().ToDecimal() == 0)
  2259. {
  2260. removeList.Add(i);
  2261. continue;
  2262. }
  2263. if (remove)
  2264. {
  2265. removeList.Add(i);
  2266. }
  2267. else
  2268. {
  2269. var lotQty = table.Rows[i]["QTYLeft"].ToString().ToDecimal();
  2270. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2271. qtyCount += lotQty;
  2272. foreach (DataRow dr in table.Rows)
  2273. {
  2274. if (dr["LotNO"].ToString() == table.Rows[i]["LotNO"].ToString())
  2275. {
  2276. if (qtyCount > orderQty)
  2277. {
  2278. dr["QTYLeft"] = Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty);
  2279. }
  2280. else
  2281. {
  2282. dr["QTYLeft"] = 0;
  2283. }
  2284. }
  2285. }
  2286. if (qtyCount >= orderQty)
  2287. {
  2288. table.Rows[i]["SendQTY"] = Convert.ToDecimal(lotQty) - (Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty));
  2289. remove = true;
  2290. }
  2291. else
  2292. {
  2293. table.Rows[i]["SendQTY"] = lotQty;
  2294. }
  2295. }
  2296. }
  2297. if (removeList.Count > 0)
  2298. {
  2299. removeList.Reverse();
  2300. foreach (var item in removeList)
  2301. {
  2302. table.Rows.RemoveAt(item);
  2303. }
  2304. }
  2305. try
  2306. {
  2307. #region 占料前增加验证,如果条码数量超出实际需要领料数量,直接报错
  2308. string chksql = "";
  2309. if (Type == "2" || Type == "12")
  2310. {
  2311. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSMOApply
  2312. where ApplyCode in ({0}) and WorkPoint='{1}'
  2313. GROUP BY InvCode,WHCode";
  2314. }
  2315. if (Type == "5")
  2316. {
  2317. #region 委外领料SQL
  2318. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSOApply
  2319. where ApplyCode in ({0}) and WorkPoint='{1}'
  2320. GROUP BY InvCode,WHCode";
  2321. #endregion
  2322. }
  2323. if (Type == "7")
  2324. {
  2325. #region 销售发货SQL
  2326. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSSDN
  2327. where SDNCode in ({0}) and WorkPoint='{1}'
  2328. GROUP BY InvCode,WHCode";
  2329. #endregion
  2330. }
  2331. if (Type == "8")
  2332. {
  2333. #region 其它出库SQL
  2334. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSOtherOut
  2335. where OutCode in ({0}) and WorkPoint='{1}'
  2336. GROUP BY InvCode,WHCode";
  2337. #endregion
  2338. }
  2339. if (Type == "10")
  2340. {
  2341. #region 物料调拨
  2342. chksql = @" select InvCode,FromWarehouseCode AS WHCode,SUM(Quantity) as Quantity from ICSTransfer
  2343. where TransferNO in ({0}) and WorkPoint='{1}'
  2344. GROUP BY InvCode,FromWarehouseCode";
  2345. #endregion
  2346. }
  2347. chksql = string.Format(chksql, ID, WorkPoint);
  2348. var chkdata = Repository().FindDataSetBySql(chksql);
  2349. DataTable chktable = chkdata.Tables[0];
  2350. foreach (DataRow chkdr in chktable.Rows)
  2351. {
  2352. decimal ZLQty = 0;
  2353. for (int i = 0; i < table.Rows.Count; i++)
  2354. {
  2355. if (table.Rows[i]["WarehouseCode"].ToString() == chkdr["WHCode"].ToString()
  2356. && table.Rows[i]["InvCode"].ToString() == chkdr["InvCode"].ToString())
  2357. {
  2358. ZLQty += Convert.ToDecimal(table.Rows[i]["SendQTY"].ToString());
  2359. }
  2360. }
  2361. if (Convert.ToDecimal(chkdr["Quantity"]) < ZLQty)
  2362. {
  2363. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量大于单据需求数量,请尝试重新拣料。");
  2364. }
  2365. //if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty && (Type == "2" || Type == "5" || Type == "12"))
  2366. //{
  2367. // chksql = @" select B.F_Define2 from ICSInventoryDetail A
  2368. // INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  2369. // where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}'";
  2370. // chksql = string.Format(chksql, chkdr["InvCode"].ToString(), chkdr["WHCode"].ToString(), WorkPoint);
  2371. // var chkds = Repository().FindDataSetBySql(chksql);
  2372. // DataTable chkdt = chkds.Tables[0];
  2373. // if (chkdt.Rows.Count != 0)
  2374. // {
  2375. // throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  2376. // }
  2377. //}
  2378. if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty)
  2379. {
  2380. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,单据必须整单拣料,请先核对库存。");
  2381. }
  2382. }
  2383. #endregion
  2384. if (table.Rows.Count != 0)
  2385. {
  2386. #region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
  2387. string ccInspectJosn = "";
  2388. string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"];
  2389. string cclogsql = @"";
  2390. int Count = 1;
  2391. string BusinessCode = string.Empty;
  2392. string TransType = "";
  2393. if (Type == "2") { BusinessCode = "13"; TransType = "生产发料-领料申请单"; }
  2394. if (Type == "12") { BusinessCode = "14"; TransType = "生产发料-领料申请单"; }
  2395. if (Type == "5") { BusinessCode = "6"; TransType = "委外发料-委外领料申请单"; }
  2396. if (Type == "7") { BusinessCode = "19"; TransType = "销售发货-销售发货单"; }
  2397. if (Type == "8") { BusinessCode = "24"; TransType = "杂发"; }
  2398. if (Type == "10") { BusinessCode = "47"; TransType = "调拨申请单"; }
  2399. string Identification = Guid.NewGuid().ToString();
  2400. var pikTbLogTime = DateTime.Now;
  2401. string pikTbLogsql = string.Empty;
  2402. List<string> DocNoList = new List<string>();
  2403. if (Type == "2" || Type == "12" || Type == "5")
  2404. {
  2405. string ccsql = @"select B.F_Id from ICSInventoryDetail A
  2406. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  2407. where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}' AND B.F_ItemCode Like 'ForkLiftAreaConfig%' AND B.F_EnabledMark='1'";
  2408. ccsql = string.Format(ccsql, table.Rows[0]["InvCode"].ToString(), table.Rows[0]["WarehouseCode"].ToString()
  2409. , WorkPoint);
  2410. var ccds = Repository().FindDataSetBySql(ccsql);
  2411. DataTable cctable = ccds.Tables[0];
  2412. if (cctable.Rows.Count != 0)
  2413. {
  2414. List<string> SourceBinList = new List<string>();
  2415. #region 窄巷道
  2416. ccInspectJosn += "[";
  2417. foreach (DataRow dr in table.Rows)
  2418. {
  2419. if (!SourceBinList.Contains(dr["LocationCode"].ToString()))
  2420. {
  2421. SourceBinList.Add(dr["LocationCode"].ToString());
  2422. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"]))
  2423. {
  2424. string Year = DateTime.Now.Year.ToString();
  2425. string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2426. string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2427. string Pre = "CC" + Year + Month + Day;
  2428. string serialsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  2429. serialsql = string.Format(serialsql, "1701", "ICSForkLiftTaskLog", "TaskCode", Pre, 4);
  2430. string TaskCode = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, serialsql, true, null).Rows[0][0].ToString();
  2431. string SerialNum = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2432. ccInspectJosn += "{";
  2433. ccInspectJosn += "\"TaskID\":\"" + TaskCode + "\",";//任务编号
  2434. ccInspectJosn += "\"TaskType\": \"PICK\",";//任务类型
  2435. ccInspectJosn += "\"SourceBin\": \"" + dr["LocationCode"].ToString() + "\"";//起始点位
  2436. ccInspectJosn += "},";
  2437. #region 记录叉车的任务编号及相关信息
  2438. #endregion
  2439. cclogsql += @"INSERT INTO ICSForkLiftTaskLog
  2440. (ID,TaskCode,ContainerCode,TaskType,StartLocation,EndLocation,MTIME,WorkPoint)
  2441. select NEWID(),'{0}','','PICK','{1}','',GETDATE(),'1701'";
  2442. cclogsql = string.Format(cclogsql, TaskCode, dr["LocationCode"].ToString());
  2443. }
  2444. }
  2445. }
  2446. ccInspectJosn = ccInspectJosn.TrimEnd(',');
  2447. ccInspectJosn += "]";
  2448. #endregion
  2449. }
  2450. else
  2451. {
  2452. #region 货柜
  2453. string InspectJosn = "";
  2454. string InspectJosnHead = "";
  2455. string InspectJosnBody = "";
  2456. InspectJosn += "{";
  2457. InspectJosn += "\"IMP_ORDINI\":[";
  2458. InspectJosn += "货柜主表区域预留";
  2459. InspectJosn += "],";
  2460. InspectJosn += "\"IMP_ORDINI_RIGHE\":[";
  2461. InspectJosn += "货柜子表区域预留";
  2462. InspectJosn += "]";
  2463. InspectJosn += "}";
  2464. for (int i = 0; i < table.Rows.Count; i++)
  2465. {
  2466. string hgsql = @"select A.InvCode,A.LocationCode,B.F_Define3,C.LocationCode AS Area
  2467. from ICSWareHouseLotInfo A
  2468. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define2=A.LocationCode AND F_Define4=A.WorkPoint AND F_ItemName='HG_Location'
  2469. INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WarehouseCode AND C.WorkPoint=A.WorkPoint
  2470. where A.LotNo='{0}' AND A.WorkPoint='{1}'";
  2471. hgsql = string.Format(hgsql, table.Rows[i]["LotNO"].ToString(), WorkPoint);
  2472. var hgds = Repository().FindDataSetBySql(hgsql);
  2473. if (hgds.Tables.Count == 0)
  2474. return null;
  2475. DataTable hgtable = hgds.Tables[0];
  2476. if (hgtable.Rows.Count > 0)
  2477. {
  2478. if (!DocNoList.Contains(table.Rows[i]["Code"].ToString()))
  2479. {
  2480. DocNoList.Add(table.Rows[i]["Code"].ToString());
  2481. }
  2482. InspectJosnBody += "{";
  2483. InspectJosnBody += "\"RIG_ORDINE\":\"" + table.Rows[i]["Code"].ToString() + "\",";
  2484. InspectJosnBody += "\"RIG_ARTICOLO\": \"" + hgtable.Rows[0]["InvCode"].ToString() + "\",";
  2485. InspectJosnBody += "\"RIG_SUB1\": \"\",";
  2486. InspectJosnBody += "\"RIG_SUB2\": \"\",";
  2487. InspectJosnBody += "\"RIG_ELERUOLI_GEST\": \"" + hgtable.Rows[0]["Area"].ToString() + "\",";
  2488. InspectJosnBody += "\"RIG_ELEBAIE\": \"" + hgtable.Rows[0]["F_Define3"].ToString() + "\",";
  2489. InspectJosnBody += "\"RIG_QTAR\": " + table.Rows[i]["SendQTY"].ToString() + ",";
  2490. if (i == 0)
  2491. {
  2492. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  2493. }
  2494. else
  2495. {
  2496. if (table.Rows[i]["Code"].ToString() == table.Rows[i - 1]["Code"].ToString() &&
  2497. table.Rows[i]["Sequence"].ToString() == table.Rows[i - 1]["Sequence"].ToString())
  2498. {
  2499. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + Count.ToString() + "\"";
  2500. Count++;
  2501. }
  2502. else
  2503. {
  2504. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  2505. Count = 1;
  2506. }
  2507. }
  2508. InspectJosnBody += "},";
  2509. }
  2510. }
  2511. InspectJosnBody = InspectJosnBody.TrimEnd(',');
  2512. foreach (string DocNo in DocNoList)
  2513. {
  2514. InspectJosnHead += "{";
  2515. InspectJosnHead += "\"ORD_ORDINE\":\"" + DocNo.TrimStart('\'').TrimEnd('\'') + "\",";
  2516. InspectJosnHead += "\"ORD_DES\":\"" + TransType + "\",";
  2517. InspectJosnHead += "\"ORD_TIPOOP\":\"P\",";
  2518. InspectJosnHead += "\"ORD_CLIENTE\":\"" + WorkPoint + "\"";
  2519. InspectJosnHead += "},";
  2520. }
  2521. InspectJosnHead = InspectJosnHead.TrimEnd(',');
  2522. if (InspectJosnBody != "")
  2523. {
  2524. InspectJosn = InspectJosn.Replace("货柜主表区域预留", InspectJosnHead);
  2525. InspectJosn = InspectJosn.Replace("货柜子表区域预留", InspectJosnBody);
  2526. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2527. {
  2528. string callresult = "";
  2529. #region 货柜接口调用前日志
  2530. object logID = Guid.NewGuid();
  2531. string logsql = @"insert into ICSWMS_HGLog
  2532. values
  2533. ('{0}',GETDATE(),'{1}','{2}','{3}','{4}','{5}')";
  2534. logsql = string.Format(logsql, logID, InspectJosn, "", WorkPoint, MUSER, MUSERNAME);
  2535. SqlHelper.CmdExecuteNonQueryLi(logsql);
  2536. #endregion
  2537. callresult = HTTPHelper.RestFulGet(InspectJosn, postUrlStr);
  2538. #region 货柜接口调用后日志
  2539. logsql = @"update ICSWMS_HGLog set ReturnResult='{0}'
  2540. where ID='{1}'";
  2541. logsql = string.Format(logsql, callresult, logID);
  2542. SqlHelper.CmdExecuteNonQueryLi(logsql);
  2543. #endregion
  2544. }
  2545. }
  2546. #endregion
  2547. }
  2548. }
  2549. foreach (DataRow PickLog in table.Rows)
  2550. {
  2551. pikTbLogsql += @" IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
  2552. BEGIN
  2553. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  2554. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  2555. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  2556. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  2557. MTIME,WorkPoint,EATTRIBUTE1)
  2558. SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
  2559. a.WarehouseCode,a.LocationCode,'','','{3}',
  2560. '','1','15','{4}','0','',
  2561. '','','','{5}' ,'{6}' ,
  2562. '{7}' ,'{8}' ,''
  2563. FROM ICSWareHouseLotInfo a
  2564. WHERE a.LotNo='{9}' AND a.WorkPoint='{8}'
  2565. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{9}' AND WorkPoint='{8}'
  2566. END
  2567. UPDATE ICSMOApply SET MUSER='{6}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
  2568. pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
  2569. , BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
  2570. }
  2571. CmdExecuteNonQueryWithAPI(pikTbLogsql, cclogsql, ccInspectJosn, ForkLiftUrl);
  2572. #endregion
  2573. }
  2574. var result = ConvertCellToString(table);
  2575. if (Invmes.Rows.Count > 0)
  2576. {
  2577. result.Merge(Invmes, false);
  2578. }
  2579. return result;
  2580. }
  2581. catch (Exception ex)
  2582. {
  2583. throw new Exception(ex.Message);
  2584. }
  2585. }
  2586. }
  2587. /// <summary>
  2588. /// 工单领料推荐
  2589. /// </summary>
  2590. /// <param name="Id"></param>
  2591. /// <param name="workPoint"></param>
  2592. /// <returns></returns>
  2593. public DataTable GetICSMOPickMergeByWorkorder(string Id, string workPoint)
  2594. {
  2595. string sql = $@"SELECT row_number() over (partition by c.Code,c.InvCode order by c.Code,c.InvCode,d.MTIME) AS rowNo,
  2596. c.Code,
  2597. c.InvCode,
  2598. c.InvName,
  2599. c.InvStd,
  2600. c.InvUnit,
  2601. FLOOR(c.iQuantity) AS iQuantity,
  2602. d.WarehouseCode,
  2603. d.LotNO,
  2604. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2605. d.LocationCode LocationCode,
  2606. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2607. FLOOR(f.QTYTotal) QTYTotal
  2608. FROM
  2609. (select
  2610. a.ApplyCode as Code, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  2611. FROM
  2612. ICSMOApply a
  2613. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2614. WHERE a.ApplyCode in ({Id}) AND a.WorkPoint = '{workPoint}'
  2615. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID) c
  2616. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2617. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2618. and d.WorkPoint='{workPoint}' AND d.Quantity>0 ) d on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2619. 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
  2620. order by c.Code,c.InvCode,d.MTIME";
  2621. var dataset = Repository().FindDataSetBySql(sql);
  2622. if (dataset.Tables.Count == 0)
  2623. return null;
  2624. DataTable table = dataset.Tables[0];
  2625. decimal qtyCount = 0;
  2626. bool remove = false;
  2627. List<int> removeList = new List<int>();
  2628. for (int i = 0; i < table.Rows.Count; i++)
  2629. {
  2630. if (i != 0
  2631. && !table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString()))
  2632. {
  2633. qtyCount = 0;
  2634. remove = false;
  2635. }
  2636. if (remove)
  2637. {
  2638. removeList.Add(i);
  2639. }
  2640. else
  2641. {
  2642. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  2643. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2644. qtyCount += lotQty;
  2645. if (qtyCount >= orderQty)
  2646. {
  2647. remove = true;
  2648. }
  2649. }
  2650. }
  2651. if (removeList.Count > 0)
  2652. {
  2653. removeList.Reverse();
  2654. foreach (var item in removeList)
  2655. {
  2656. table.Rows.RemoveAt(item);
  2657. }
  2658. }
  2659. var result = ConvertCellToString(table);
  2660. if (Invmes.Rows.Count > 0)
  2661. {
  2662. result.Merge(Invmes, false);
  2663. }
  2664. return result;
  2665. }
  2666. public DataTable ConvertCellToString(DataTable data)
  2667. {
  2668. DataTable dtCloned = data.Clone();
  2669. foreach (DataColumn col in dtCloned.Columns)
  2670. {
  2671. col.DataType = typeof(string);
  2672. }
  2673. foreach (DataRow row in data.Rows)
  2674. {
  2675. DataRow newrow = dtCloned.NewRow();
  2676. foreach (DataColumn column in dtCloned.Columns)
  2677. {
  2678. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2679. }
  2680. dtCloned.Rows.Add(newrow);
  2681. }
  2682. return dtCloned;
  2683. }
  2684. // public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  2685. // {
  2686. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2687. // #region sql
  2688. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2689. // c.MergeID,
  2690. // c.Code,
  2691. // c.InvCode,
  2692. // c.InvName,
  2693. // c.InvStd,
  2694. //c.InvUnit,
  2695. // FLOOR(c.iQuantity) AS iQuantity,
  2696. // d.WarehouseCode,
  2697. // d.LocationCode,
  2698. // d.LotNO,
  2699. // FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2700. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2701. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  2702. // FROM
  2703. // ({0}) c
  2704. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  2705. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  2706. // 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
  2707. //DECLARE @ItemCode VARCHAR(50),
  2708. // @QTY DECIMAL(18,3),
  2709. // @ItemCodeCurrent VARCHAR(50),
  2710. // @QTYCurrent DECIMAL(18,3),
  2711. // @iQuantityCurrent DECIMAL(18,3),
  2712. // @CanDelete BIT,
  2713. // @Row INT,
  2714. // @rowCurrent INT
  2715. //SET @Row = @@rowcount
  2716. //SET @rowCurrent=1
  2717. //SET @CanDelete=0
  2718. //SET @ItemCode=''
  2719. //WHILE @rowCurrent<=@Row
  2720. // BEGIN
  2721. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
  2722. //PRINT(@rowCurrent)
  2723. // IF @ItemCode<>@ItemCodeCurrent
  2724. // BEGIN
  2725. // SET @ItemCode=@ItemCodeCurrent
  2726. // SET @QTY=0
  2727. // SET @CanDelete=0
  2728. // END
  2729. // IF @CanDelete=1
  2730. // BEGIN
  2731. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  2732. // SET @rowCurrent += 1
  2733. // CONTINUE
  2734. // END
  2735. // SET @QTY += @QTYCurrent
  2736. // IF @QTY>=@iQuantityCurrent
  2737. // BEGIN
  2738. // SET @CanDelete=1
  2739. // END
  2740. // SET @rowCurrent += 1
  2741. // END
  2742. //SELECT * FROM #temp
  2743. //DROP TABLE #temp
  2744. //";
  2745. // #endregion
  2746. // string sqls = "";
  2747. // if (Type == "1")
  2748. // {
  2749. // #region 工单备料sql
  2750. // sqls = @" select
  2751. // x.MergeID,
  2752. // c.MOCode as Code,
  2753. // a.InvCode,
  2754. // b.InvName,
  2755. // b.InvStd,
  2756. //b.InvUnit,
  2757. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2758. // a.WhCode,
  2759. //a.ExtensionID
  2760. // FROM
  2761. // ICSMOPick a
  2762. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2763. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2764. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2765. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2766. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2767. // #endregion
  2768. // }
  2769. // if (Type == "2")
  2770. // {
  2771. // #region 工单领料SQL
  2772. // sqls = @" select
  2773. // x.MergeID,
  2774. // a.ApplyCode as Code,
  2775. // a.InvCode,
  2776. // b.InvName,
  2777. // b.InvStd,
  2778. //b.InvUnit,
  2779. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2780. // a.WhCode,
  2781. // a.ExtensionID
  2782. // FROM
  2783. // ICSMOApply a
  2784. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2785. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2786. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2787. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2788. // #endregion
  2789. // }
  2790. // if (Type == "3")
  2791. // {
  2792. // #region 工单材料出库SQL
  2793. // sqls = @" select
  2794. // x.MergeID,
  2795. // a.IssueCode as Code,
  2796. // a.InvCode,
  2797. // b.InvName,
  2798. // b.InvStd,
  2799. //b.InvUnit,
  2800. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2801. // a.WhCode,
  2802. //a.ExtensionID
  2803. // FROM
  2804. // ICSMOIssue a
  2805. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2806. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2807. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2808. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2809. // #endregion
  2810. // }
  2811. // if (Type == "4")
  2812. // {
  2813. // #region 委外备料SQL
  2814. // sqls = @" select
  2815. // x.MergeID,
  2816. // c.OOCode as Code,
  2817. // a.InvCode,
  2818. // b.InvName,
  2819. // b.InvStd,
  2820. //b.InvUnit,
  2821. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2822. // a.WhCode,
  2823. //a.ExtensionID
  2824. // FROM
  2825. // ICSOOPick a
  2826. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2827. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2828. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2829. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2830. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  2831. // #endregion
  2832. // }
  2833. // if (Type == "5")
  2834. // {
  2835. // #region 委外领料SQL
  2836. // sqls = @" select
  2837. // x.MergeID,
  2838. // a.ApplyCode as Code,
  2839. // a.InvCode,
  2840. // b.InvName,
  2841. // b.InvStd,
  2842. //b.InvUnit,
  2843. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2844. // a.WhCode,
  2845. //a.ExtensionID
  2846. // FROM
  2847. // ICSOApply a
  2848. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2849. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2850. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2851. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2852. // #endregion
  2853. // }
  2854. // if (Type == "6")
  2855. // {
  2856. // #region 委外材料出库SQL
  2857. // sqls = @" select
  2858. // x.MergeID,
  2859. // a.IssueCode as Code,
  2860. // a.InvCode,
  2861. // b.InvName,
  2862. // b.InvStd,
  2863. //b.InvUnit,
  2864. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2865. // a.WhCode,
  2866. //a.ExtensionID
  2867. // FROM
  2868. // ICSOIssue a
  2869. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2870. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2871. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2872. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2873. // #endregion
  2874. // }
  2875. // if (Type == "7")
  2876. // {
  2877. // #region 销售发货SQL
  2878. // sqls = @" select
  2879. // x.MergeID,
  2880. // a.SDNCode as Code,
  2881. // a.InvCode,
  2882. // b.InvName,
  2883. // b.InvStd,
  2884. //b.InvUnit,
  2885. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2886. // a.WhCode,
  2887. //a.ExtensionID
  2888. // FROM
  2889. // ICSSDN a
  2890. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2891. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2892. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  2893. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2894. // #endregion
  2895. // }
  2896. // if (Type == "8")
  2897. // {
  2898. // #region 其它出库SQL
  2899. // sqls = @" select
  2900. // x.MergeID,
  2901. // a.OutCode as Code,
  2902. // a.InvCode,
  2903. // b.InvName,
  2904. // b.InvStd,
  2905. //b.InvUnit,
  2906. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2907. // a.WhCode,
  2908. //a.ExtensionID
  2909. // FROM
  2910. // ICSOtherOut a
  2911. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2912. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2913. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2914. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2915. // #endregion
  2916. // }
  2917. // if (Type == "9")
  2918. // {
  2919. // #region 借用SQL
  2920. // sqls = @" select
  2921. // x.MergeID,
  2922. // a.BrrowCode as Code,
  2923. // a.InvCode,
  2924. // b.InvName,
  2925. // b.InvStd,
  2926. //b.InvUnit,
  2927. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2928. // a.WhCode,
  2929. //a.ExtensionID
  2930. // FROM
  2931. // ICSBrrow a
  2932. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2933. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2934. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2935. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2936. // #endregion
  2937. // }
  2938. // if (Type == "10")
  2939. // {
  2940. // #region 物料调拨
  2941. // sqls = @" select
  2942. // x.MergeID,
  2943. // a.TransferNO as Code,
  2944. // a.InvCode,
  2945. // b.InvName,
  2946. // b.InvStd,
  2947. //b.InvUnit,
  2948. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2949. // a.FromWarehouseCode as WhCode,
  2950. //a.ExtensionID
  2951. // FROM
  2952. // ICSTransfer a
  2953. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2954. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2955. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  2956. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  2957. // #endregion
  2958. // }
  2959. // if (Type == "11")
  2960. // {
  2961. // #region 两步调出
  2962. // sqls = @"select
  2963. // x.MergeID,
  2964. // a.OutCode as Code,
  2965. // a.InvCode,
  2966. // b.InvName,
  2967. // b.InvStd,
  2968. // b.InvUnit,
  2969. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2970. // a.WHCode as WhCode,
  2971. // a.ExtensionID
  2972. // FROM
  2973. // ICSOtherOut a
  2974. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2975. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2976. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2977. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2978. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  2979. // #endregion
  2980. // }
  2981. // sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  2982. // sql = string.Format(sql, sqls, WorkPoint);
  2983. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  2984. // DataTable dtCloned = table.Clone();
  2985. // foreach (DataColumn col in dtCloned.Columns)
  2986. // {
  2987. // col.DataType = typeof(string);
  2988. // }
  2989. // foreach (DataRow row in table.Rows)
  2990. // {
  2991. // DataRow newrow = dtCloned.NewRow();
  2992. // foreach (DataColumn column in dtCloned.Columns)
  2993. // {
  2994. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2995. // }
  2996. // dtCloned.Rows.Add(newrow);
  2997. // }
  2998. // if (Invmes.Rows.Count > 0)
  2999. // {
  3000. // dtCloned.Merge(Invmes, false);
  3001. // }
  3002. // return dtCloned;
  3003. // }
  3004. public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  3005. {
  3006. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3007. string sqls = "";
  3008. if (Type == "1")
  3009. {
  3010. #region 工单备料sql
  3011. sqls = @" select
  3012. x.MergeID,
  3013. c.MOCode as Code,
  3014. a.InvCode,
  3015. b.InvName,
  3016. b.InvStd,
  3017. b.InvUnit,
  3018. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3019. a.WhCode,
  3020. a.ExtensionID
  3021. FROM
  3022. ICSMOPick a
  3023. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3024. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  3025. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3026. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  3027. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  3028. #endregion
  3029. }
  3030. if (Type == "2" || Type == "12")
  3031. {
  3032. #region 工单领料SQL
  3033. sqls = @" select
  3034. x.MergeID,
  3035. a.ApplyCode as Code,
  3036. a.InvCode,
  3037. b.InvName,
  3038. b.InvStd,
  3039. b.InvUnit,
  3040. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3041. a.WhCode,
  3042. a.ExtensionID
  3043. FROM
  3044. ICSMOApply a
  3045. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3046. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3047. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  3048. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  3049. #endregion
  3050. }
  3051. if (Type == "3")
  3052. {
  3053. #region 工单材料出库SQL
  3054. sqls = @" select
  3055. x.MergeID,
  3056. a.IssueCode as Code,
  3057. a.InvCode,
  3058. b.InvName,
  3059. b.InvStd,
  3060. b.InvUnit,
  3061. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3062. a.WhCode,
  3063. a.ExtensionID
  3064. FROM
  3065. ICSMOIssue a
  3066. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3067. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3068. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  3069. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3070. #endregion
  3071. }
  3072. if (Type == "4")
  3073. {
  3074. #region 委外备料SQL
  3075. sqls = @" select
  3076. x.MergeID,
  3077. c.OOCode as Code,
  3078. a.InvCode,
  3079. b.InvName,
  3080. b.InvStd,
  3081. b.InvUnit,
  3082. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3083. a.WhCode,
  3084. a.ExtensionID
  3085. FROM
  3086. ICSOOPick a
  3087. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3088. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  3089. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3090. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  3091. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  3092. #endregion
  3093. }
  3094. if (Type == "5")
  3095. {
  3096. #region 委外领料SQL
  3097. sqls = @" select
  3098. x.MergeID,
  3099. a.ApplyCode as Code,
  3100. a.InvCode,
  3101. b.InvName,
  3102. b.InvStd,
  3103. b.InvUnit,
  3104. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3105. a.WhCode,
  3106. a.ExtensionID
  3107. FROM
  3108. ICSOApply a
  3109. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3110. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3111. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  3112. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3113. #endregion
  3114. }
  3115. if (Type == "6")
  3116. {
  3117. #region 委外材料出库SQL
  3118. sqls = @" select
  3119. x.MergeID,
  3120. a.IssueCode as Code,
  3121. a.InvCode,
  3122. b.InvName,
  3123. b.InvStd,
  3124. b.InvUnit,
  3125. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3126. a.WhCode,
  3127. a.ExtensionID
  3128. FROM
  3129. ICSOIssue a
  3130. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3131. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3132. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  3133. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3134. #endregion
  3135. }
  3136. if (Type == "7")
  3137. {
  3138. #region 销售发货SQL
  3139. sqls = @" select
  3140. x.MergeID,
  3141. a.SDNCode as Code,
  3142. a.InvCode,
  3143. b.InvName,
  3144. b.InvStd,
  3145. b.InvUnit,
  3146. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3147. a.WhCode,
  3148. a.ExtensionID
  3149. FROM
  3150. ICSSDN a
  3151. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3152. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3153. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}' AND a.Type='1'
  3154. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3155. #endregion
  3156. }
  3157. if (Type == "8")
  3158. {
  3159. #region 其它出库SQL
  3160. sqls = @" select
  3161. x.MergeID,
  3162. a.OutCode as Code,
  3163. a.InvCode,
  3164. b.InvName,
  3165. b.InvStd,
  3166. b.InvUnit,
  3167. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3168. a.WhCode,
  3169. a.ExtensionID
  3170. FROM
  3171. ICSOtherOut a
  3172. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3173. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3174. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  3175. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3176. #endregion
  3177. }
  3178. if (Type == "9")
  3179. {
  3180. #region 借用SQL
  3181. sqls = @" select
  3182. x.MergeID,
  3183. a.BrrowCode as Code,
  3184. a.InvCode,
  3185. b.InvName,
  3186. b.InvStd,
  3187. b.InvUnit,
  3188. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3189. a.WhCode,
  3190. a.ExtensionID
  3191. FROM
  3192. ICSBrrow a
  3193. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3194. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3195. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  3196. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3197. #endregion
  3198. }
  3199. if (Type == "10")
  3200. {
  3201. #region 物料调拨
  3202. sqls = @" select
  3203. x.MergeID,
  3204. a.TransferNO as Code,
  3205. a.InvCode,
  3206. b.InvName,
  3207. b.InvStd,
  3208. b.InvUnit,
  3209. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3210. a.FromWarehouseCode as WhCode,
  3211. a.ExtensionID
  3212. FROM
  3213. ICSTransfer a
  3214. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3215. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3216. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  3217. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  3218. #endregion
  3219. }
  3220. if (Type == "11")
  3221. {
  3222. #region 两步调出
  3223. sqls = @" select
  3224. x.MergeID,
  3225. a.OutCode as Code,
  3226. a.InvCode,
  3227. b.InvName,
  3228. b.InvStd,
  3229. b.InvUnit,
  3230. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3231. a.WHCode as WhCode,
  3232. a.ExtensionID
  3233. FROM
  3234. ICSOtherOut a
  3235. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  3236. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3237. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3238. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  3239. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  3240. #endregion
  3241. }
  3242. sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  3243. #region sql
  3244. string sql = $@"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  3245. c.MergeID,
  3246. c.Code,
  3247. c.InvCode,
  3248. c.InvName,
  3249. c.InvStd,
  3250. c.InvUnit,
  3251. FLOOR(c.iQuantity) AS iQuantity,
  3252. d.WarehouseCode,
  3253. d.LocationCode,
  3254. d.LotNO,
  3255. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  3256. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  3257. FLOOR(f.QTYTotal) QTYTotal
  3258. FROM
  3259. ({sqls}) c
  3260. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  3261. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  3262. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  3263. and d.WorkPoint='{WorkPoint}' AND d.Quantity>0 ) d
  3264. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  3265. 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
  3266. order by c.Code,c.InvCode,d.MTIME ";
  3267. #endregion
  3268. var dataset = Repository().FindDataSetBySql(sql);
  3269. if (dataset.Tables.Count == 0)
  3270. return null;
  3271. DataTable table = dataset.Tables[0];
  3272. decimal qtyCount = 0;
  3273. bool remove = false;
  3274. List<int> removeList = new List<int>();
  3275. for (int i = 0; i < table.Rows.Count; i++)
  3276. {
  3277. if (i != 0
  3278. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  3279. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString()))
  3280. )
  3281. {
  3282. qtyCount = 0;
  3283. remove = false;
  3284. }
  3285. if (remove)
  3286. {
  3287. removeList.Add(i);
  3288. }
  3289. else
  3290. {
  3291. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  3292. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  3293. qtyCount += lotQty;
  3294. if (qtyCount >= orderQty)
  3295. {
  3296. remove = true;
  3297. }
  3298. }
  3299. }
  3300. if (removeList.Count > 0)
  3301. {
  3302. removeList.Reverse();
  3303. foreach (var item in removeList)
  3304. {
  3305. table.Rows.RemoveAt(item);
  3306. }
  3307. }
  3308. var result = ConvertCellToString(table);
  3309. if (Invmes.Rows.Count > 0)
  3310. {
  3311. result.Merge(Invmes, false);
  3312. }
  3313. return result;
  3314. }
  3315. public string MergeMaterial(string keyValue, string Type)
  3316. {
  3317. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3318. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3319. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3320. string msg = "";
  3321. string sql = string.Empty;
  3322. string dataList = string.Empty;
  3323. List<string> arry = keyValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  3324. if (arry.Count > 0)
  3325. {
  3326. StringBuilder stringBuilder = new StringBuilder();
  3327. foreach (var i in arry)
  3328. {
  3329. stringBuilder.Append($@"'{i}',");
  3330. }
  3331. dataList = stringBuilder.ToString(0, stringBuilder.Length - 1);
  3332. }
  3333. Int64 Merge_ID = 0;
  3334. DateTime time = DateTime.Now;
  3335. string Tday = time.ToString("yyyyMMdd");
  3336. string sqls = string.Format(@"SELECT MAX(A.MergeID) AS SourceID FROM ICSMOPickMerge A WHERE A.MergeID LIKE '{0}%' AND LEN(a.MergeID) = 13", Tday);
  3337. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  3338. DataTable dts = ds.Tables[0];
  3339. if (dts != null && dts.Rows.Count > 0)
  3340. {
  3341. string lot = dts.Rows[0]["SourceID"].ToString();
  3342. if (!string.IsNullOrWhiteSpace(lot))
  3343. Merge_ID = Convert.ToInt64(lot.Substring(lot.Length - 5));
  3344. }
  3345. string MergeID = Tday + (Merge_ID + 1).ToString().PadLeft(5, '0');
  3346. string order = string.Empty;
  3347. string orderCode = string.Empty;
  3348. string quantity = string.Empty;
  3349. string sqlString1 = string.Empty;
  3350. string sqlString2 = string.Empty;
  3351. if (Type == "1")//工单备料
  3352. {
  3353. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3354. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3355. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3356. from ICSMO a inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  3357. where a.MOCode in ({5})
  3358. ";
  3359. }
  3360. if (Type == "2")//工单发料
  3361. {
  3362. order = "ICSMOApply";
  3363. orderCode = "b.ApplyCode";
  3364. quantity = "b.IssueQuantity";
  3365. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3366. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3367. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  3368. from ICSMOApply a
  3369. where a.ApplyCode in ({5})";
  3370. }
  3371. if (Type == "3")//材料出库
  3372. {
  3373. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3374. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3375. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3376. from ICSMOIssue a
  3377. where a.IssueCode in ({5}) ";
  3378. }
  3379. if (Type == "4")//委外备料
  3380. {
  3381. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3382. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3383. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3384. from ICSOutsourcingOrder a inner join ICSOOPick b on a.OODetailID=b.OODetailID and b.WorkPoint=a.WorkPoint
  3385. where a.OOCode in ({5})";
  3386. }
  3387. if (Type == "5")//委外领料
  3388. {
  3389. order = "ICSOApply";
  3390. orderCode = "b.ApplyCode";
  3391. quantity = "b.IssueQuantity";
  3392. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3393. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3394. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  3395. from ICSOApply a
  3396. where a.ApplyCode in ({5})";
  3397. }
  3398. if (Type == "6")//委外材料出库
  3399. {
  3400. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3401. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3402. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3403. from ICSOIssue a
  3404. where a.IssueCode in ({5})";
  3405. }
  3406. if (Type == "7")//销售发货
  3407. {
  3408. order = "ICSSDN";
  3409. orderCode = "b.SDNCode";
  3410. quantity = "b.SDNQuantity";
  3411. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3412. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3413. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.SDNCode
  3414. from ICSSDN a
  3415. where a.SDNCode in ({5}) AND a.Type='1' ";
  3416. }
  3417. if (Type == "8")//其它出库
  3418. {
  3419. order = "ICSOtherOut";
  3420. orderCode = "b.OutCode";
  3421. quantity = "b.OutQuantity";
  3422. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3423. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3424. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.OutCode
  3425. from ICSOtherOut a
  3426. where a.OutCode in ({5})";
  3427. }
  3428. if (Type == "9")//借用单
  3429. {
  3430. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3431. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3432. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3433. from ICSBrrow a
  3434. where a.BrrowCode in ({5})";
  3435. }
  3436. if (Type == "10")//物料调拨
  3437. {
  3438. order = "ICSTransfer";
  3439. orderCode = "b.TransferNO";
  3440. quantity = "b.TransferQuantity";
  3441. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3442. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3443. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.TransferNO
  3444. from ICSTransfer a
  3445. where a.TransferNO in ({5})
  3446. ";
  3447. }
  3448. if (Type == "11")//两步调出
  3449. {
  3450. sql += @" INSERT INTO dbo.ICSMOPickMerge
  3451. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3452. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3453. from ICSOtherOut a
  3454. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  3455. where a.OutCode in ({5})
  3456. ";
  3457. }
  3458. sql = string.Format(sql, MergeID, Type, MUSER, MUSERNAME, WorkPoint, dataList);
  3459. sqlString1 += $@" SELECT a.ID FROM ICSMOPickMerge a WHERE a.SourceID IN (SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) )";
  3460. sqlString2 += $@" SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) AND {quantity}>0";
  3461. DataSet ds1 = SqlHelper.GetDataSetBySql(sqlString1);
  3462. DataSet ds2 = SqlHelper.GetDataSetBySql(sqlString2);
  3463. DataTable dts1 = ds1.Tables[0];
  3464. DataTable dts2 = ds2.Tables[0];
  3465. if ((dts1 != null && dts1.Rows.Count > 0))
  3466. {
  3467. }
  3468. else if (dts2 != null && dts2.Rows.Count > 0)
  3469. {
  3470. msg = "当前选择单据号存在已出库的单据号,合并 失败";
  3471. }
  3472. else
  3473. {
  3474. try
  3475. {
  3476. if (SqlHelper.CmdExecuteNonQueryLi(sql) == 0)
  3477. {
  3478. msg = "新增失败";
  3479. }
  3480. }
  3481. catch (Exception ex)
  3482. {
  3483. throw new Exception(ex.Message);
  3484. }
  3485. }
  3486. return msg;
  3487. }
  3488. public string CancelMergeMaterial(string keyValue, string Type)
  3489. {
  3490. string msg = "";
  3491. string sql = string.Empty;
  3492. keyValue = keyValue.TrimEnd(',');
  3493. List<string> arry = keyValue.Split(',').ToList();
  3494. string dataList = string.Empty;
  3495. if (arry.Count > 0)
  3496. {
  3497. foreach (var i in arry)
  3498. {
  3499. dataList += $@"'{i}',";
  3500. }
  3501. if (dataList.Any())
  3502. {
  3503. dataList = dataList.TrimEnd(',');
  3504. }
  3505. }
  3506. string sqls = $@" SELECT SourceID FROM ICSMOPickMerge WHERE EATTRIBUTE1 IN({dataList}) ";
  3507. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  3508. DataTable dts = ds.Tables[0];
  3509. if (dts == null || dts.Rows.Count <= 0)
  3510. {
  3511. msg = "当前单据未合并拣料,取消合并拣料失败";
  3512. return msg;
  3513. }
  3514. string sqlStrring = string.Empty;
  3515. if (Type == "2")//工单发料
  3516. {
  3517. sqlStrring = $@"select ID from ICSMOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  3518. }
  3519. if (Type == "5")//委外领料
  3520. {
  3521. sqlStrring = $@"select ID from ICSOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  3522. }
  3523. if (Type == "7")//销售发货
  3524. {
  3525. sqlStrring = $@"select ID from ICSSDN a where a.ID in ({sqls}) and a.SDNQuantity=0 AND a.Type='1' ";
  3526. }
  3527. if (Type == "8")//其它出库
  3528. {
  3529. sqlStrring = $@"select ID
  3530. from ICSOtherOut a
  3531. where a.ID in ({sqls}) and a.OutQuantity=0";
  3532. }
  3533. if (Type == "10")//物料调拨
  3534. {
  3535. sqlStrring = $@"select ID from ICSTransfer a where a.ID in ({sqls}) and a.TransferQuantity=0 ";
  3536. }
  3537. DataSet dsdata = SqlHelper.GetDataSetBySql(sqlStrring);
  3538. DataTable dtdsdatas = dsdata.Tables[0];
  3539. if (dtdsdatas == null || dtdsdatas.Rows.Count <= 0)
  3540. {
  3541. msg = "当前物料已经出库,取消合并失败";
  3542. return msg;
  3543. }
  3544. sql = $@"DELETE FROM ICSMOPickMerge WHERE SourceID IN({sqls})";
  3545. try
  3546. {
  3547. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  3548. {
  3549. }
  3550. else
  3551. {
  3552. msg = "取消合并失败";
  3553. }
  3554. }
  3555. catch (Exception ex)
  3556. {
  3557. throw new Exception(ex.Message);
  3558. }
  3559. return msg;
  3560. }
  3561. public string CheckQty(string objArr)
  3562. {
  3563. objArr = objArr.TrimEnd(',');
  3564. string sql = @"select * from ICSMOPickMerge a
  3565. left join ICSMOPick b on a.SourceID=b.ID and a.WorkPoint=b.WorkPoint
  3566. left join ICSMO c on b.MODetailID=c.MODetailID and b.WorkPoint=c.WorkPoint
  3567. where MOCode in ({0})";
  3568. sql = string.Format(sql, objArr);
  3569. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  3570. if (dt != null && dt.Rows.Count > 0)
  3571. {
  3572. return "1";
  3573. }
  3574. return "0";
  3575. }
  3576. //删除占料
  3577. public string DelPickLog(string objCode)
  3578. {
  3579. //站点信息
  3580. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3581. string msg = "";
  3582. objCode = objCode.Substring(1, objCode.Length - 2);
  3583. string sql = string.Empty;
  3584. // sql += string.Format(@"update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),a.Quantity )
  3585. //from dbo.ICSWareHouseLotInfoLog a
  3586. //left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  3587. // where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  3588. sql += string.Format(@" update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
  3589. from dbo.ICSWareHouseLotInfo b
  3590. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode in ({0})and TransType='15' and WorkPoint='{1}' group by LotNo) c
  3591. on c.LotNo =b.LotNo ", objCode.TrimEnd(','), WorkPoint);
  3592. sql += string.Format(@" delete dbo.ICSWareHouseLotInfoLog where TransCode in({0}) and TransType='15' and WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  3593. try
  3594. {
  3595. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  3596. {
  3597. }
  3598. }
  3599. catch (Exception ex)
  3600. {
  3601. throw new Exception(ex.Message);
  3602. }
  3603. return msg;
  3604. }
  3605. public int SeachPickLog(string objCode)
  3606. {
  3607. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3608. objCode = objCode.TrimEnd(',');
  3609. string[] parameters = objCode.Split(',');
  3610. int parameterCount = parameters.Length;
  3611. string sql = @" select distinct a.TransCode from dbo.ICSWareHouseLotInfoLog a
  3612. left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  3613. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  3614. sql = string.Format(sql, objCode, WorkPoint);
  3615. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  3616. int count = dt.Rows.Count;
  3617. return count;
  3618. }
  3619. //添加打印次数
  3620. public int PrintCount(string objCode, string type)
  3621. {
  3622. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3623. string MUser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3624. string MUserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3625. var date = DateTime.Now;
  3626. objCode = objCode.TrimEnd(',');
  3627. string[] parameters = objCode.Split(',');
  3628. StringBuilder sb = new StringBuilder();
  3629. foreach (var data in parameters)
  3630. {
  3631. sb.Append($@"IF EXISTS (SELECT ID FROM ICSPrintCount WHERE TransCode={data} )
  3632. BEGIN
  3633. UPDATE ICSPrintCount SET PrintCount=PrintCount+1 WHERE TransCode={data}
  3634. END
  3635. ELSE
  3636. BEGIN
  3637. INSERT INTO ICSPrintCount VALUES(NEWID(),{data},1,'{type}','{WorkPoint}','{MUser}','{MUserName}','{date}')
  3638. END
  3639. ;"
  3640. );
  3641. }
  3642. if (sb.IsEmpty())
  3643. {
  3644. return 0;
  3645. }
  3646. int count = SqlHelper.ExecuteNonQuery(sb.ToString());
  3647. return count;
  3648. }
  3649. public DataTable GetPickLogInfo(string ID)
  3650. {
  3651. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3652. DataTable dt = new DataTable();
  3653. List<DbParameter> parameter = new List<DbParameter>();
  3654. string sql = @"
  3655. select '' as MergeID,a.TransCode as Code,a.TransSequence as Sequence,a.InvCode as InvCode, b.InvName as InvName,b.InvStd as InvStd,b.InvUnit as InvSInvUnittd,a.Quantity as iQuantity,
  3656. a.FromWarehouseCode as WarehouseCode,a.FromLocationCode as LocationCode,a.LotNO,a.MTIME,c.Quantity as QTY
  3657. from dbo.ICSWareHouseLotInfoLog a
  3658. left join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3659. left join dbo.ICSWareHouseLotInfo c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  3660. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  3661. sql = string.Format(sql, ID.TrimEnd(','), WorkPoint);
  3662. return Repository().FindTableBySql(sql.ToString());
  3663. }
  3664. public class LotMessage
  3665. {
  3666. public string LotNo { get; set; }
  3667. public decimal Quantity { get; set; }
  3668. }
  3669. //事务中执行SQL及调用接口
  3670. public static int CmdExecuteNonQueryWithAPI(string sql, string ccsql, string InputJson, string PostUrl, params SqlParameter[] spArr)
  3671. {
  3672. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  3673. {
  3674. conn.Open();
  3675. SqlTransaction sqlTran = conn.BeginTransaction();
  3676. SqlCommand cmd = new SqlCommand();
  3677. cmd.Transaction = sqlTran;
  3678. cmd.Connection = conn;
  3679. try
  3680. {
  3681. if (ccsql == "")
  3682. {
  3683. cmd.CommandText = sql;
  3684. int RES = cmd.ExecuteNonQuery();
  3685. cmd.Transaction.Commit();
  3686. return RES;
  3687. }
  3688. else
  3689. {
  3690. cmd.CommandText = sql;
  3691. int RES = cmd.ExecuteNonQuery();
  3692. cmd.CommandText = ccsql;
  3693. RES = cmd.ExecuteNonQuery();
  3694. #region 叉车接口调用(写进事务中,报错可以回滚,保证数据正确)
  3695. string rest = HTTPHelper.HttpPost("WMS调用叉车接口出库", PostUrl, InputJson);
  3696. ForkLiftResult result = JsonConvert.DeserializeObject<ForkLiftResult>(rest);
  3697. if (result.Ret == 1)
  3698. {
  3699. cmd.Transaction.Commit();
  3700. return RES;
  3701. }
  3702. else
  3703. {
  3704. throw new Exception(result.RetMsg);
  3705. }
  3706. #endregion
  3707. }
  3708. }
  3709. catch (Exception ex)
  3710. {
  3711. cmd.Transaction.Rollback();
  3712. throw new Exception(ex.Message);
  3713. }
  3714. finally
  3715. {
  3716. if (conn.State != ConnectionState.Closed)
  3717. {
  3718. conn.Close();
  3719. conn.Dispose();
  3720. }
  3721. }
  3722. return 0;
  3723. }
  3724. }
  3725. }
  3726. }