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.

1032 lines
56 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Text;
  6. using NFine.Code;
  7. using NFine.Repository;
  8. using System.Data.Common;
  9. using NFine.Domain._03_Entity.SRM;
  10. using Newtonsoft.Json;
  11. using System.Configuration;
  12. using System.Net;
  13. using System.IO;
  14. using Newtonsoft.Json.Linq;
  15. namespace NFine.Application.OMAY
  16. {
  17. public class ICSMoCreateLotApp : RepositoryFactory<ICSVendor>
  18. {
  19. //奥美工单生成条码主表查询
  20. public DataTable GetGridJsonChengPing(string queryJson, ref Pagination jqgridparam)
  21. {
  22. DataTable dt = new DataTable();
  23. var queryParam = queryJson.ToJObject();
  24. List<DbParameter> parameter = new List<DbParameter>();
  25. object Figure = GetDecimalDigits();
  26. #region [SQL]
  27. string sql = @" select distinct a.ID, a.MODetailID,a.MOCode,a.Sequence, CAST(a.RCVQuantity AS DECIMAL(18,{0})) as RCVQuantity ,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity,CAST( a.Amount as DECIMAL(18,{0})) as Amount,a.StartDate
  28. ,a.DueDate,a.MOStatus,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(18,{0})) as LOTQTY ,CAST( a.Quantity AS DECIMAL(18,{0})) -CAST(a.RCVQuantity AS DECIMAL(18,{0})) as ERPNum,a.MOMemo
  29. ,case when a.EATTRIBUTE1='1' then 1 else 0 end MoTypeValue
  30. ,case when a.EATTRIBUTE1='1' then '' else '' end MoType
  31. ,case when b.AmountEnable='1' then '1' else '0' end AmountEnable
  32. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  33. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  34. a.EATTRIBUTE9,a.EATTRIBUTE10
  35. from ICSMO a
  36. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  37. left join (
  38. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  39. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  40. where isnull(ee.EATTRIBUTE1,'')=''
  41. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  42. )c
  43. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  44. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint ";
  45. sql += " WHERE 1=1 and a.MOStatus<>'3' and a.ApsStatus='Y' and isnull(a.OrderStatus,'') <> 'Close'";
  46. sql = string.Format(sql, Figure);
  47. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  48. #endregion
  49. if (!string.IsNullOrWhiteSpace(queryJson))
  50. {
  51. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  52. {
  53. sql += " and a.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  54. }
  55. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  56. {
  57. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  58. }
  59. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  60. {
  61. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  62. }
  63. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  64. {
  65. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  66. }
  67. if (!string.IsNullOrWhiteSpace(queryParam["SelGDLX"].ToString()))
  68. {
  69. sql += " and a.MOType like '%" + queryParam["SelGDLX"].ToString() + "%' ";
  70. }
  71. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  72. {
  73. string POStatus = queryParam["POStatus"].ToString();
  74. if (POStatus == "0")
  75. {
  76. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  77. }
  78. else if (POStatus == "1")
  79. {
  80. sql += " and ISNULL(c.LOTQTY,0)>=a.Quantity";
  81. }
  82. else
  83. {
  84. sql += " and ISNULL(c.LOTQTY,0)<a.Quantity";
  85. }
  86. }
  87. }
  88. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  89. {
  90. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  91. }
  92. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  93. {
  94. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  95. }
  96. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  97. }
  98. //生成条码子表查询
  99. public DataTable GetSubGridJson(string ApplyNegCode, string Sequence, string Type, ref Pagination jqgridparam)
  100. {
  101. DataTable dt = new DataTable();
  102. object Figure = GetDecimalDigits();
  103. List<DbParameter> parameter = new List<DbParameter>();
  104. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  105. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity ,a.MUSERName,a.MTIME
  106. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  107. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  108. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  109. case when g.InvIQC='1'and isnull(e.ID,'')='' then '' else '' end as isInspection,
  110. case when g.InvIQC='1' then '是' else '否' end as isExemption,a.Amount,
  111. convert(varchar(20),a.ProductDate,23) as ProductDate,convert(varchar(20),a.ExpirationDate,23) as ExpirationDate ,g.EffectiveDays
  112. from ICSInventoryLot a
  113. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  114. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  115. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  116. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  117. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  118. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  119. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  120. WHERE isnull(a.EATTRIBUTE1,'')='' and a.Type='" + Type + "' and c.TransCode='" + ApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in ('" + WorkPoint + "')";
  121. sql = string.Format(sql, Figure);
  122. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  123. }
  124. //获取小数点数位
  125. public object GetDecimalDigits()
  126. {
  127. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  128. try
  129. {
  130. string sql = string.Empty;
  131. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  132. object Figure = SqlHelper.ExecuteScalar(sql);
  133. return Figure;
  134. }
  135. catch (Exception ex)
  136. {
  137. throw new Exception(ex.Message.ToString());
  138. }
  139. }
  140. //工单生成条码获取物料数量信息
  141. public DataTable GetSubGridJsonChengPingByCreate(string MOCode, string Sequence, string WorkPoint, string MoTypeValue)
  142. {
  143. DataTable dt = new DataTable();
  144. object Figure = GetDecimalDigits();
  145. List<DbParameter> parameter = new List<DbParameter>();
  146. string sql = string.Empty;
  147. if (MoTypeValue=="0")
  148. {
  149. sql = @"select
  150. d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit,a.Quantity as Quantity,
  151. --cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  152. 9999 as AbsolveQty,
  153. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  154. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as CreatedQty,
  155. CAST( ((isnull(h.BL,0)*a.Quantity) -(isnull(c.LOTQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  156. cast( a.Amount as DECIMAL(18,4)) as Amount,
  157. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  158. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  159. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  160. from ICSMO a
  161. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  162. left join (
  163. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  164. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  165. where isnull(a.EATTRIBUTE1,'')=''
  166. group by b.TransCode,b.TransSequence
  167. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  168. left join (
  169. select b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2) as TransSequence ,sum(isnull(Quantity,0)) FCPQTY from ICSInventoryLot a
  170. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  171. where isnull(a.EATTRIBUTE1,'')=''
  172. group by b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2)
  173. ) f on a.MOCode=f.TransCode and a.Sequence=f.TransSequence
  174. left join
  175. (
  176. select case when Flag>0 then ( case when PSLNUM>MLNUM then MLNUM else PSLNUM end) else PSLNUM end as BL ,MODetailID from (
  177. select a.MODetailID,
  178. case when isnull(sum(a.PSLYL),0)=0 then 0 else sum(a.PSLLSS)/sum(a.PSLYL)* max(isnull(F_Define1,0)/100.0) end as PSLNUM,
  179. case when isnull(sum(a.MLYL),0)=0 then 0 else sum(a.MLLSS)/sum(a.MLYL)*max(isnull(F_Define1,0)/100.0) end as MLNUM,
  180. sum(Flag) as Flag
  181. from (
  182. select a.MODetailID ,
  183. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.Quantity else 0 end PSLYL,
  184. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.IssueQuantity else 0 end PSLLSS,
  185. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.Quantity else 0 end MLYL,
  186. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.IssueQuantity else 0 end MLLSS,
  187. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then 1 else 0 end Flag
  188. from dbo.ICSMOPick a
  189. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  190. where a.EATTRIBUTE1<>'1')a
  191. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  192. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  193. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  194. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  195. WHERE 1 =1 and a.MOStatus<>'3' and a.ApsStatus='Y' and isnull(a.OrderStatus,'') <> 'Close' ";
  196. }
  197. else
  198. {
  199. sql = @"select
  200. d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit,a.Quantity as Quantity,
  201. --cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  202. 9999 as AbsolveQty,
  203. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  204. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as CreatedQty,
  205. CAST( ((isnull(h.BL,0)*a.Quantity) -(isnull(c.LOTQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  206. cast( a.Amount as DECIMAL(18,4)) as Amount,
  207. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  208. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  209. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  210. from ICSMO a
  211. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  212. left join (
  213. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  214. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  215. where isnull(a.EATTRIBUTE1,'')=''
  216. group by b.TransCode,b.TransSequence
  217. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  218. left join (
  219. select b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2) as TransSequence ,sum(isnull(Quantity,0)) FCPQTY from ICSInventoryLot a
  220. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  221. where isnull(a.EATTRIBUTE1,'')=''
  222. group by b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2)
  223. ) f on a.MOCode=f.TransCode and a.Sequence=f.TransSequence
  224. left join
  225. (
  226. select MinBL as BL ,MODetailID from (
  227. select a.MODetailID,
  228. min(ALLBL)*max(isnull(F_Define1,0)/100.0) as MinBL
  229. from (
  230. select a.MODetailID ,
  231. case when a.Quantity =0 then 0 when a.IssueQuantity=0 then 0 else a.IssueQuantity/a.Quantity end as ALLBL
  232. from dbo.ICSMOPick a
  233. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  234. where a.EATTRIBUTE1<>'1' and a.IssueQuantity>0 )a
  235. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  236. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  237. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  238. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  239. WHERE 1 =1 and a.MOStatus<>'3' and a.EATTRIBUTE1='1' and a.ApsStatus='Y' and isnull(a.OrderStatus,'') <> 'Close' ";
  240. }
  241. sql += " and a.MOCode = '" + MOCode + "' and a.Sequence = '" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  242. sql = string.Format(sql, Figure);
  243. return Repository().FindTableBySql(sql.ToString());
  244. }
  245. //查询超生比例
  246. public DataTable GetScale()
  247. {
  248. DataTable dt = new DataTable();
  249. List<DbParameter> parameter = new List<DbParameter>();
  250. string sql = @" SELECT Top 1 a.F_Define1 as Prorate
  251. FROM [dbo].[Sys_SRM_ItemsDetail] a
  252. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id AND b.F_EnabledMark='1'
  253. WHERE b.F_EnCode='CS0001' ORDER BY a.F_ItemCode";
  254. return Repository().FindTableBySql(sql.ToString());
  255. }
  256. //调用接口来显示本次可生产数量
  257. public object GetAbsolveQty(string MOCode, string Sequence,string Qty)
  258. {
  259. decimal AvailQty = 0;
  260. decimal AllQty = 0;
  261. string msg = "";
  262. string sql = @"select
  263. a.WorkPoint as WorkPoint,
  264. a.MODetailID as DetailID,
  265. '' as Type,
  266. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as InQty,
  267. " + Qty + @" as Qty,
  268. flag.F_Define1 as Prorate
  269. from ICSMO a
  270. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  271. left join (
  272. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  273. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  274. where isnull(a.EATTRIBUTE1,'')=''
  275. group by b.TransCode,b.TransSequence
  276. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  277. left join (
  278. select b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2) as TransSequence ,sum(isnull(Quantity,0)) FCPQTY from ICSInventoryLot a
  279. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  280. where isnull(a.EATTRIBUTE1,'')=''
  281. group by b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2)
  282. ) f on a.MOCode=f.TransCode and a.Sequence=f.TransSequence
  283. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  284. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  285. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  286. WHERE 1 =1 and a.MOStatus<>'3' and a.ApsStatus='Y' and isnull(a.OrderStatus,'') <> 'Close'
  287. and a.MOCode='" + MOCode + "' and a.Sequence='" + Sequence + "'";
  288. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  289. string Inputstr = JsonConvert.SerializeObject(dt);
  290. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Completeamnew/Approve";
  291. string result = HttpPost(APIURL, Inputstr);
  292. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  293. string MessAge = Obj["Message"].ToString();
  294. string Success = Obj["Success"].ToString();
  295. if (Success.ToUpper() == "FALSE")
  296. {
  297. msg = MessAge;
  298. }
  299. else
  300. {
  301. if (msg == "")
  302. {
  303. JObject dataObj = JObject.Parse(Obj["Data"].ToString());
  304. AvailQty = decimal.Parse(dataObj["AvailQty"].ToString());
  305. AllQty = decimal.Parse(dataObj["AllQty"].ToString());
  306. //JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  307. //foreach (var item in res)
  308. //{
  309. // JObject jo = (JObject)item;
  310. // //var aa= jo["min_lotqty"].ToString();
  311. // Num = Convert.ToDecimal(jo["AllQty"].ToString());
  312. //}
  313. }
  314. }
  315. var Header = new
  316. {
  317. msg = msg,
  318. AvailQty = AvailQty,
  319. AllQty= AllQty,
  320. };
  321. return Header;
  322. }
  323. //接口api解析
  324. public static string HttpPost(string url, string body)
  325. {
  326. try
  327. {
  328. Encoding encoding = Encoding.UTF8;
  329. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  330. request.Method = "POST";
  331. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  332. request.ContentType = "application/json; charset=utf-8";
  333. byte[] buffer = encoding.GetBytes(body);
  334. request.ContentLength = buffer.Length;
  335. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  336. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  337. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  338. {
  339. return reader.ReadToEnd();
  340. }
  341. }
  342. catch (WebException ex)
  343. {
  344. throw new Exception(ex.Message);
  345. }
  346. }
  347. //工单生成条码
  348. public int SubmitFormChengPing(string MOCode, string Sequence, string keyValue, string WorkPoint,string AMEnable)
  349. {
  350. var queryParam = keyValue.ToJObject();
  351. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  352. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  353. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  354. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  355. decimal LOTQTY = minPackQty;
  356. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  357. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  358. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  359. string sql = string.Empty;
  360. //string VendorLot = queryParam["VendorLot"].ToString();
  361. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  362. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  363. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  364. string InvCode = queryParam["ClassCode"].ToString();
  365. string sqls = string.Empty;
  366. string Colspan = "";
  367. string str1 = "";
  368. string LotNo=string.Empty;
  369. List<string> ExtensionIDList = new List<string>();
  370. for (int i = 0; i < createPageCount; i++)
  371. {
  372. if (i + 1 == createPageCount)
  373. {
  374. if (minPackQty * createPageCount > thisCreateQty)
  375. {
  376. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  377. }
  378. }
  379. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  380. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  381. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  382. bool flag = true;
  383. foreach (var item in ExtensionIDList)
  384. {
  385. if (item == Colspan + WorkPoint)
  386. {
  387. flag = false;
  388. }
  389. }
  390. if (ExtensionID == null && flag == true)
  391. {
  392. str1 = Guid.NewGuid().ToString();
  393. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  394. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  395. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  396. MUSER, MUSERNAME, WorkPoints);
  397. }
  398. else if (ExtensionID != null)
  399. {
  400. str1 = ExtensionID.ToString();
  401. }
  402. ExtensionIDList.Add(Colspan + WorkPoint);
  403. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  404. if (AMEnable == "true")
  405. {
  406. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  407. }
  408. else
  409. {
  410. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  411. }
  412. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  413. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  414. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  415. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  416. //{
  417. sql += string.Format(@"insert into ICSInventoryLot
  418. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  419. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  420. select
  421. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  422. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  423. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  424. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  425. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  426. sql += "\r\n";
  427. //}
  428. }
  429. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  430. return count;
  431. }
  432. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  433. {
  434. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  435. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  436. //return Repository().FindTableBySql(sql.ToString());
  437. return SqlHelper.ExecuteScalar(sql).ToString();
  438. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  439. }
  440. //副产品
  441. public DataTable GetGridJsonFCP(string queryJson, ref Pagination jqgridparam)
  442. {
  443. DataTable dt = new DataTable();
  444. var queryParam = queryJson.ToJObject();
  445. List<DbParameter> parameter = new List<DbParameter>();
  446. object Figure = GetDecimalDigits();
  447. #region [SQL]
  448. string sql = @"select a.ID,d.MOCode,d.Sequence+'~'+ a.Sequence as Sequence,a.PickID,a.InvCode as ZInvCode,d.InvCode as MInvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  449. CAST(a.Quantity AS DECIMAL(18,{0})) as Quantity ,a.MODetailID,
  450. CAST(a.Amount AS DECIMAL(18,{0})) as Amount,CAST(a.IssueQuantity AS DECIMAL(18,{0})) as IssueQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(18,{0})) as LOTQTY
  451. ,case when d.EATTRIBUTE1='1' then 1 else 0 end MoTypeValue
  452. ,case when d.EATTRIBUTE1='1' then '' else '' end MoType
  453. ,case when b.AmountEnable='1' then '1' else '0' end AmountEnable
  454. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  455. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  456. a.EATTRIBUTE9,a.EATTRIBUTE10
  457. from ICSMOPick a
  458. inner join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' and d.ApsStatus='Y' and isnull(d.OrderStatus,'') <> 'Close'
  459. inner join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  460. left join (
  461. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  462. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  463. where isnull(ee.EATTRIBUTE1,'')=''
  464. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  465. )c
  466. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  467. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  468. where a.EATTRIBUTE1='1' and SUBSTRING(b.ClassCode, 1, 2) not IN ('05') ";
  469. sql = string.Format(sql, Figure);
  470. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  471. #endregion
  472. if (!string.IsNullOrWhiteSpace(queryJson))
  473. {
  474. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  475. {
  476. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  477. }
  478. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  479. {
  480. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  481. }
  482. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  483. {
  484. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  485. }
  486. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  487. {
  488. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  489. }
  490. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  491. {
  492. string POStatus = queryParam["POStatus"].ToString();
  493. if (POStatus == "0")
  494. {
  495. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  496. }
  497. else if (POStatus == "1")
  498. {
  499. sql += " and ISNULL(c.LOTQTY,0)>=a.Quantity";
  500. }
  501. else
  502. {
  503. sql += " and ISNULL(c.LOTQTY,0)<a.Quantity";
  504. }
  505. }
  506. }
  507. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  508. {
  509. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  510. }
  511. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  512. {
  513. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  514. }
  515. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  516. }
  517. //副产品生成条码获取物料数量信息
  518. public DataTable GetSubGridJsonFCPCreate(string FCPMOCode, string Sequence, string WorkPoint, string MoTypeValue)
  519. {
  520. DataTable dt = new DataTable();
  521. object Figure = GetDecimalDigits();
  522. List<DbParameter> parameter = new List<DbParameter>();
  523. string sql = string.Empty;
  524. if (MoTypeValue=="0")
  525. {
  526. sql = @"
  527. select
  528. a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, a.Quantity as Quantity,
  529. --cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  530. 9999 as AbsolveQty,
  531. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  532. cast( isnull(c.LOTQTY,0)+isnull(f.GDQTY,0) as DECIMAL(18,4)) as CreatedQty,
  533. CAST( ((isnull(h.BL,0)*a.Amount) -(isnull(c.LOTQTY,0)+isnull(f.GDQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  534. cast( a.Amount as DECIMAL(18,4)) as Amount,
  535. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  536. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  537. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  538. from ICSMOPick a
  539. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' and d.ApsStatus='Y' and isnull(d.OrderStatus,'') <> 'Close'
  540. --
  541. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  542. left join (
  543. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  544. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  545. where isnull(a.EATTRIBUTE1,'')=''
  546. group by b.TransCode,b.TransSequence
  547. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  548. --
  549. left join (
  550. select b.TransCode,b.TransSequence ,sum(isnull(Quantity,0)) GDQTY from ICSInventoryLot a
  551. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  552. where isnull(a.EATTRIBUTE1,'')=''
  553. group by b.TransCode,b.TransSequence
  554. ) f on d.MOCode=f.TransCode and d.Sequence=f.TransSequence
  555. left join
  556. (select case when Flag>0 then ( case when PSLNUM>MLNUM then MLNUM else PSLNUM end) else PSLNUM end as BL ,MODetailID from (
  557. select a.MODetailID,
  558. case when isnull(sum(a.PSLYL),0)=0 then 0 else sum(a.PSLLSS)/sum(a.PSLYL)* max(isnull(F_Define1,0)/100.0) end as PSLNUM,
  559. case when isnull(sum(a.MLYL),0)=0 then 0 else sum(a.MLLSS)/sum(a.MLYL)*max(isnull(F_Define1,0)/100.0) end as MLNUM,
  560. sum(Flag) as Flag
  561. from (
  562. select a.MODetailID ,
  563. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.Quantity else 0 end PSLYL,
  564. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.IssueQuantity else 0 end PSLLSS,
  565. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.Quantity else 0 end MLYL,
  566. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.IssueQuantity else 0 end MLLSS,
  567. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then 1 else 0 end Flag
  568. from dbo.ICSMOPick a
  569. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  570. where a.EATTRIBUTE1 <> '1')a
  571. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  572. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  573. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  574. WHERE 1=1 ";
  575. }
  576. else
  577. {
  578. sql = @"
  579. select
  580. a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, a.Quantity as Quantity,
  581. --cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  582. 9999 as AbsolveQty,
  583. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  584. cast( isnull(c.LOTQTY,0)+isnull(f.GDQTY,0) as DECIMAL(18,4)) as CreatedQty,
  585. CAST( ((isnull(h.BL,0)*a.Amount) -(isnull(c.LOTQTY,0)+isnull(f.GDQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  586. cast( a.Amount as DECIMAL(18,4)) as Amount,
  587. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  588. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  589. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  590. from ICSMOPick a
  591. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' and d.ApsStatus='Y' and isnull(d.OrderStatus,'') <> 'Close'
  592. --
  593. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  594. left join (
  595. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  596. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  597. where isnull(a.EATTRIBUTE1,'')=''
  598. group by b.TransCode,b.TransSequence
  599. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  600. --
  601. left join (
  602. select b.TransCode,b.TransSequence ,sum(isnull(Quantity,0)) GDQTY from ICSInventoryLot a
  603. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  604. where isnull(a.EATTRIBUTE1,'')=''
  605. group by b.TransCode,b.TransSequence
  606. ) f on d.MOCode=f.TransCode and d.Sequence=f.TransSequence
  607. left join
  608. (select MinBL as BL ,MODetailID from (
  609. select a.MODetailID,
  610. min(ALLBL)*max(isnull(F_Define1,0)/100.0) as MinBL
  611. from (
  612. select a.MODetailID ,
  613. case when a.Quantity =0 then 0 when a.IssueQuantity=0 then 0 else a.IssueQuantity/a.Quantity end as ALLBL
  614. from dbo.ICSMOPick a
  615. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  616. where a.EATTRIBUTE1<>'1' and a.IssueQuantity>0 )a
  617. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  618. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  619. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  620. WHERE 1=1 ";
  621. }
  622. sql += " and d.MOCode='" + FCPMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "' and a.WorkPoint='" + WorkPoint + "'";
  623. sql = string.Format(sql, Figure);
  624. return Repository().FindTableBySql(sql.ToString());
  625. }
  626. //副产品调用接口获取可生成数量
  627. public object GetFCPAbsolveQty(string MOCode, string Sequence, string Qty)
  628. {
  629. decimal AvailQty = 0;
  630. decimal AllQty = 0;
  631. string msg = "";
  632. string sql = @"
  633. select
  634. a.WorkPoint as WorkPoint,
  635. a.MODetailID as DetailID,
  636. '' as Type,
  637. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as InQty,
  638. " + Qty + @" as Qty,
  639. flag.F_Define1 as Prorate
  640. from ICSMOPick a
  641. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' and d.ApsStatus='Y' and isnull(d.OrderStatus,'') <> 'Close'
  642. --
  643. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  644. left join (
  645. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  646. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  647. where isnull(a.EATTRIBUTE1,'')=''
  648. group by b.TransCode,b.TransSequence
  649. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  650. --
  651. left join (
  652. select b.TransCode,b.TransSequence ,sum(isnull(Quantity,0)) GDQTY from ICSInventoryLot a
  653. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  654. where isnull(a.EATTRIBUTE1,'')=''
  655. group by b.TransCode,b.TransSequence
  656. ) f on d.MOCode=f.TransCode and d.Sequence=f.TransSequence
  657. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  658. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  659. WHERE 1=1
  660. and d.MOCode='" + MOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  661. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  662. string Inputstr = JsonConvert.SerializeObject(dt);
  663. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Completeamnew05/Approve";
  664. string result = HttpPost(APIURL, Inputstr);
  665. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  666. string MessAge = Obj["Message"].ToString();
  667. string Success = Obj["Success"].ToString();
  668. if (Success.ToUpper() == "FALSE")
  669. {
  670. msg = MessAge;
  671. }
  672. else
  673. {
  674. if (msg == "")
  675. {
  676. JObject dataObj = JObject.Parse(Obj["Data"].ToString());
  677. AvailQty = decimal.Parse(dataObj["AvailQty"].ToString());
  678. AllQty = decimal.Parse(dataObj["AllQty"].ToString());
  679. }
  680. }
  681. var Header = new
  682. {
  683. msg = msg,
  684. AvailQty = AvailQty,
  685. AllQty = AllQty,
  686. };
  687. return Header;
  688. }
  689. //联副产品
  690. public int SubmitFormFCP(string FCPMOCode, string Sequence, string keyValue, string WorkPoint,string AMEnable)
  691. {
  692. var queryParam = keyValue.ToJObject();
  693. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  694. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  695. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  696. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  697. decimal LOTQTY = minPackQty;
  698. string Sequences = Sequence.Replace("~", "");
  699. string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  700. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  701. string sql = string.Empty;
  702. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  703. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  704. string InvCode = queryParam["ClassCode"].ToString();
  705. string sqls = string.Empty;
  706. string Colspan = "";
  707. string str1 = "";
  708. string LotNo = string.Empty;
  709. List<string> ExtensionIDList = new List<string>();
  710. for (int i = 0; i < createPageCount; i++)
  711. {
  712. if (i + 1 == createPageCount)
  713. {
  714. if (minPackQty * createPageCount > thisCreateQty)
  715. {
  716. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  717. }
  718. }
  719. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  720. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  721. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  722. bool flag = true;
  723. foreach (var item in ExtensionIDList)
  724. {
  725. if (item == Colspan + WorkPoint)
  726. {
  727. flag = false;
  728. }
  729. }
  730. if (ExtensionID == null && flag == true)
  731. {
  732. str1 = Guid.NewGuid().ToString();
  733. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  734. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  735. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  736. MUSER, MUSERNAME, WorkPoints);
  737. }
  738. else if (ExtensionID != null)
  739. {
  740. str1 = ExtensionID.ToString();
  741. }
  742. ExtensionIDList.Add(Colspan + WorkPoint);
  743. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  744. if (AMEnable == "true")
  745. {
  746. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  747. }
  748. else
  749. {
  750. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  751. }
  752. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  753. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  754. LotNo, FCPMOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  755. sql += string.Format(@"insert into ICSInventoryLot
  756. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  757. select
  758. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','18','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  759. from ICSMOPick a left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' where d.MOCode='{6}' and d.Sequence+'~'+a.Sequence='{7}' and a.WorkPoint='{5}' ",
  760. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FCPMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  761. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  762. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  763. sql += "\r\n";
  764. }
  765. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  766. return count;
  767. }
  768. public DataTable GetByproductGridJson(string queryJson, ref Pagination jqgridparam)
  769. {
  770. DataTable dt = new DataTable();
  771. var queryParam = queryJson.ToJObject();
  772. List<DbParameter> parameter = new List<DbParameter>();
  773. #region [SQL]
  774. string sql = @" select a.ID,a.LotNo,a.InvCode,c.InvName,c.InvStd,a.Quantity,a.MUSERName,b.MTIME as WMTIME,a.MTIME
  775. from dbo.ICSInventoryLot a
  776. left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  777. inner join dbo.ICSInventory c on a.InvCode=c.InvCode
  778. where a.Type='19'";
  779. // sql += " WHERE 1=1";
  780. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  781. #endregion
  782. if (!string.IsNullOrWhiteSpace(queryJson))
  783. {
  784. if (!string.IsNullOrWhiteSpace(queryParam["MTDOCCode"].ToString()))
  785. {
  786. sql += " and a.MTDOCCode like '%" + queryParam["MTDOCCode"].ToString() + "%' ";
  787. }
  788. }
  789. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  790. {
  791. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  792. }
  793. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  794. {
  795. string POStatus = queryParam["POStatus"].ToString();
  796. if (POStatus == "0")
  797. {
  798. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  799. }
  800. else if (POStatus == "1")
  801. {
  802. sql += " and ISNULL(b.MTIME,'')<>''";
  803. }
  804. else
  805. {
  806. sql += " and ISNULL(b.MTIME,'')=''";
  807. }
  808. }
  809. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  810. }
  811. public DataTable GetInvCode()
  812. {
  813. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  814. string sql = @"
  815. select '' as Code,'' as InvCode
  816. union all
  817. SELECT InvCode +'--'+InvStd +'--'+InvName as Code ,InvCode as InvCode FROM dbo.ICSInventory WITH (NOLOCK) WHERE 1=1 and SUBSTRING(ClassCode, 1, 2) IN ('05') and EATTRIBUTE6<>'1' ";
  818. sql += " and WorkPoint='" + WorkPoint + "' order by InvCode asc";
  819. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  820. return dt;
  821. }
  822. public DataTable SeachAmountEnablebyInvCode(string InvCode)
  823. {
  824. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  825. DataTable dt = new DataTable();
  826. List<DbParameter> parameter = new List<DbParameter>();
  827. string sql = @"
  828. select isnull(AmountEnable,0) as AmountEnable ,ClassCode,isnull(EATTRIBUTE1,'1') as EATTRIBUTE1,InvName,InvStd from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  829. return Repository().FindTableBySql(sql.ToString());
  830. }
  831. public int SubmitFormFCPNoCode (string keyValue, string WorkPoint, string AMEnable)
  832. {
  833. var queryParam = keyValue.ToJObject();
  834. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  835. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  836. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  837. string InvCode = queryParam["InvCode"].ToString();
  838. decimal LOTQTY = minPackQty;
  839. //string Sequences = Sequence.Replace("~", "");
  840. //string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  841. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  842. string sql = string.Empty;
  843. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  844. // string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  845. string ClassCode = queryParam["ClassCode"].ToString();
  846. string sqls = string.Empty;
  847. string Colspan = "";
  848. string str1 = "";
  849. string LotNo = string.Empty;
  850. List<string> ExtensionIDList = new List<string>();
  851. for (int i = 0; i < createPageCount; i++)
  852. {
  853. //if (i + 1 == createPageCount)
  854. //{
  855. // if (minPackQty * createPageCount > thisCreateQty)
  856. // {
  857. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  858. // }
  859. //}
  860. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  861. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  862. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  863. bool flag = true;
  864. foreach (var item in ExtensionIDList)
  865. {
  866. if (item == Colspan + WorkPoint)
  867. {
  868. flag = false;
  869. }
  870. }
  871. if (ExtensionID == null && flag == true)
  872. {
  873. str1 = Guid.NewGuid().ToString();
  874. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  875. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  876. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  877. MUSER, MUSERNAME, WorkPoints);
  878. }
  879. else if (ExtensionID != null)
  880. {
  881. str1 = ExtensionID.ToString();
  882. }
  883. ExtensionIDList.Add(Colspan + WorkPoint);
  884. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  885. if (AMEnable == "true")
  886. {
  887. LotNo = SqlHelper.GetLOTNumber(ClassCode, WorkPoint);
  888. }
  889. sql += string.Format(@"insert into ICSInventoryLot (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  890. values(newid(),'{0}','{1}',getdate(),'{2}','{3}','{4}','19','{5}','{6}',getdate(),'{7}','{8}','','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}')",
  891. LotNo, InvCode, queryParam["ExpirationDate"].ToString(), LOTQTY, str1, MUSER, MUSERNAME, WorkPoints, queryParam["Amount"].ToString(),
  892. queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  893. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  894. sql += "\r\n";
  895. }
  896. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  897. return count;
  898. }
  899. public string DeleteFCPLot(string keyValue)
  900. {
  901. //站点信息
  902. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  903. string msg = "";
  904. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  905. string sql = string.Format(@"SELECT * FROM dbo.ICSInspection
  906. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  907. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  908. if (dtASN != null && dtASN.Rows.Count > 0)
  909. {
  910. msg = "所选条码已生成检验单,无法删除!";
  911. }
  912. sql = string.Format(@"SELECT * FROM dbo.ICSWareHouseLotInfo WHERE LotNO IN
  913. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  914. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  915. if (dtCarton != null && dtCarton.Rows.Count > 0)
  916. {
  917. msg += "所选条码已入库,无法删除!";
  918. }
  919. if (string.IsNullOrEmpty(msg))
  920. {
  921. string sqls = string.Format(@"DELETE FROM dbo.ICSInventoryLot WHERE LotNo IN ({0}) and WorkPoint ='{1}' and Type='19' ", keyValue.TrimEnd(','), WorkPoint);
  922. SqlHelper.CmdExecuteNonQueryLi(sqls);
  923. }
  924. return msg;
  925. }
  926. }
  927. }