纽威
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4022 lines
219 KiB

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