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.

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