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.

310 lines
12 KiB

3 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Repository;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Data.Common;
  11. using System.Data.SqlClient;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace NFine.Application.KBSSRM
  16. {
  17. public class InvMaintenanceApp : RepositoryFactory<ICSVendor>
  18. {
  19. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  20. {
  21. DataTable dt = new DataTable();
  22. var queryParam = queryJson.ToJObject();
  23. List<DbParameter> parameter = new List<DbParameter>();
  24. string sql = string.Empty;
  25. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  26. {
  27. sql = @"select DISTINCT b.ID, b.InvCode,b.InvName, b.EATTRIBUTE11,b.EATTRIBUTE12,b.EATTRIBUTE13,b.EATTRIBUTE14,b.EATTRIBUTE15,b.EATTRIBUTE16,b.EATTRIBUTE17,b.EATTRIBUTE18,
  28. case when b.EATTRIBUTE19='1' THEN '是' when b.EATTRIBUTE19='0' then '否' else '' end as EATTRIBUTE19,
  29. b.EATTRIBUTE20,b.EATTRIBUTE21,b.EATTRIBUTE22,b.EATTRIBUTE23 , b.WorkPoint from ICSPurchaseOrder a
  30. inner join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  31. where 1=1 and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "' ";
  32. }
  33. else
  34. {
  35. sql = @"select b.ID,
  36. b.InvCode,b.InvName, b.EATTRIBUTE11,b.EATTRIBUTE12,b.EATTRIBUTE13,b.EATTRIBUTE14,b.EATTRIBUTE15,b.EATTRIBUTE16,b.EATTRIBUTE17,b.EATTRIBUTE18,
  37. case when b.EATTRIBUTE19='1' THEN '是' when b.EATTRIBUTE19='0' then '否' else '' end as EATTRIBUTE19,
  38. b.EATTRIBUTE20,b.EATTRIBUTE21,b.EATTRIBUTE22,b.EATTRIBUTE23 , b.WorkPoint
  39. from ICSInventory b
  40. where 1=1 ";
  41. }
  42. if (!string.IsNullOrWhiteSpace(queryJson))
  43. {
  44. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  45. {
  46. sql += " and b.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  47. }
  48. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  49. {
  50. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  53. {
  54. sql += " and b.EATTRIBUTE20 like '%" + queryParam["VenCode"].ToString() + "%' ";
  55. }
  56. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  57. {
  58. sql += " and b.EATTRIBUTE21 like '%" + queryParam["VenName"].ToString() + "%' ";
  59. }
  60. }
  61. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  62. {
  63. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  64. }
  65. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  66. }
  67. public DataTable GetICSInventoryInfo(string InvCode,string WorkPoint)
  68. {
  69. try
  70. {
  71. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  72. DataTable dt = new DataTable();
  73. //var queryParam = queryJson.ToJObject();
  74. List<DbParameter> parameter = new List<DbParameter>();
  75. string sql = @"select b.InvCode,b.InvName, b.EATTRIBUTE11,b.EATTRIBUTE12,b.EATTRIBUTE13,b.EATTRIBUTE15,b.EATTRIBUTE16,b.EATTRIBUTE17,b.EATTRIBUTE18,
  76. b.EATTRIBUTE19,b.EATTRIBUTE20,b.EATTRIBUTE21,b.EATTRIBUTE22,b.EATTRIBUTE23
  77. from ICSInventory b
  78. WHERE 1=1 AND b.InvCode='{0}' and b.WorkPoint='{1}' ";
  79. sql = string.Format(sql, InvCode, WorkPoint);
  80. return Repository().FindTableBySql(sql.ToString());
  81. }
  82. catch (Exception ex)
  83. {
  84. throw new Exception(ex.Message.ToString());
  85. }
  86. }
  87. public string UpdateICSInventory(string keyValue)
  88. {
  89. var queryParam = keyValue.ToJObject();
  90. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  91. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  92. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  93. string msg = "";
  94. string sql = string.Empty;
  95. sql = @"UPDATE dbo.ICSInventory set
  96. EATTRIBUTE11='{0}'
  97. ,EATTRIBUTE12='{1}'
  98. ,EATTRIBUTE13='{2}'
  99. ,EATTRIBUTE14='{3}'
  100. ,EATTRIBUTE15='{4}'
  101. ,EATTRIBUTE16='{5}'
  102. ,EATTRIBUTE17='{6}'
  103. ,EATTRIBUTE18='{7}'
  104. ,EATTRIBUTE19='{8}'
  105. ,EATTRIBUTE20='{9}'
  106. ,EATTRIBUTE21='{10}'
  107. ,EATTRIBUTE22=getdate()
  108. WHERE InvCode='{11}'";
  109. sql = string.Format(sql,
  110. queryParam["EATTRIBUTE11"].ToString(),
  111. queryParam["EATTRIBUTE12"].ToString(),
  112. queryParam["EATTRIBUTE13"].ToString(),
  113. queryParam["EATTRIBUTE14"].ToString(),
  114. queryParam["EATTRIBUTE15"].ToString(),
  115. queryParam["EATTRIBUTE16"].ToString(),
  116. queryParam["EATTRIBUTE17"].ToString(),
  117. queryParam["EATTRIBUTE18"].ToString(),
  118. queryParam["EATTRIBUTE19"].ToString(),
  119. MUSER,
  120. MUSERNAME,
  121. queryParam["InvCode"].ToString()
  122. );
  123. try
  124. {
  125. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  126. {
  127. }
  128. else
  129. {
  130. msg = "维护失败";
  131. }
  132. }
  133. catch (Exception ex)
  134. {
  135. throw new Exception(ex.Message);
  136. }
  137. return msg;
  138. }
  139. //public string SetData_PR(String savePath)
  140. //{
  141. // DataTable data = FileToExcel.ExcelToTable(savePath);
  142. // string msg = EmailNotice(data);
  143. // return msg;
  144. //}
  145. public string SetData_PR(String savePath)
  146. {
  147. string msg = "";
  148. //数据获取
  149. try
  150. {
  151. DataTable data = FileToExcel.ExcelToTable(savePath);
  152. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  153. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  154. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  155. SqlConnection conn = SqlHelper.GetDataCenterConn();
  156. string sql = "";
  157. int count = 0;
  158. if (data != null && data.Rows.Count > 0)
  159. {
  160. foreach (DataRow dr in data.Rows)
  161. {
  162. string isEnable = "";
  163. string GUID = Guid.NewGuid().ToString();
  164. if (string.IsNullOrWhiteSpace(dr["物料编码"].ToString()))
  165. throw new Exception("物料编码不能为空!");
  166. string sqlInv = "SELECT INVName FROM ICSINVENTORY WHERE INVCODE='" + dr["物料编码"].ToString() + "'";
  167. DataTable dtInv = SqlHelper.GetDataTableBySql(sqlInv);
  168. if (dtInv == null || dtInv.Rows.Count <= 0)
  169. {
  170. msg += "物料编码" + dr["物料编码"].ToString() + "不存在";
  171. continue;
  172. }
  173. string INVName = dtInv.Rows[0]["INVName"].ToString();
  174. if (dr["是否食品安全级"].ToString()=="1"|| dr["是否食品安全级"].ToString()=="是")
  175. {
  176. isEnable = "1";
  177. }
  178. else
  179. {
  180. isEnable = "0";
  181. }
  182. sql += @"UPDATE dbo.ICSInventory set
  183. EATTRIBUTE11='{0}'
  184. ,EATTRIBUTE12='{1}'
  185. ,EATTRIBUTE13='{2}'
  186. ,EATTRIBUTE14='{3}'
  187. ,EATTRIBUTE15='{4}'
  188. ,EATTRIBUTE16='{5}'
  189. ,EATTRIBUTE17='{6}'
  190. ,EATTRIBUTE18='{7}'
  191. ,EATTRIBUTE19='{8}'
  192. ,EATTRIBUTE20='{9}'
  193. ,EATTRIBUTE21='{10}'
  194. ,EATTRIBUTE22=getdate()
  195. WHERE InvCode='{11}'";
  196. sql = string.Format(sql, dr["原材料厂商"].ToString(), dr["UL证书编号"].ToString(), dr["工厂UL编号"].ToString(), dr["采购贸易商"].ToString()
  197. , dr["版本"].ToString(), dr["制造商"].ToString(), dr["地址"].ToString(), dr["重量"].ToString(), isEnable,
  198. MUSER, MUSERNAME, dr["物料编码"].ToString());
  199. }
  200. }
  201. count = SqlHelper.CmdExecuteNonQueryLi(sql);
  202. if (count > 0)
  203. {
  204. msg = "导入成功" + msg.TrimEnd(';');
  205. }
  206. else
  207. {
  208. throw new Exception("无有效的导入数据!");
  209. }
  210. return msg;
  211. }
  212. catch (Exception ex)
  213. {
  214. throw new Exception("" + msg + "异常信息:" + ex.Message + "!");
  215. }
  216. }
  217. public DataTable GetInvInfo(string InvCode, string InvName, string VenCode, string VenName)
  218. {
  219. List<DbParameter> parameter = new List<DbParameter>();
  220. string sql = string.Empty;
  221. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  222. {
  223. sql = @"select DISTINCT b.InvCode as '物料编码'
  224. ,b.InvName as '',
  225. b.EATTRIBUTE11 as '',
  226. b.EATTRIBUTE12 as 'UL证书编号',
  227. b.EATTRIBUTE13 as 'UL编号',
  228. b.EATTRIBUTE14 as '',
  229. b.EATTRIBUTE15 as '',
  230. b.EATTRIBUTE16 as '',
  231. b.EATTRIBUTE17 as '',
  232. b.EATTRIBUTE18 as '',
  233. case when b.EATTRIBUTE19='1' THEN '是' when b.EATTRIBUTE19='0' then '否' else '' end as ''
  234. from ICSPurchaseOrder a
  235. inner join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  236. where 1=1 and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "' ";
  237. }
  238. else
  239. {
  240. sql = @"select b.InvCode as '物料编码'
  241. ,b.InvName as '',
  242. b.EATTRIBUTE11 as '',
  243. b.EATTRIBUTE12 as 'UL证书编号',
  244. b.EATTRIBUTE13 as 'UL编号',
  245. b.EATTRIBUTE14 as '',
  246. b.EATTRIBUTE15 as '',
  247. b.EATTRIBUTE16 as '',
  248. b.EATTRIBUTE17 as '',
  249. b.EATTRIBUTE18 as '',
  250. case when b.EATTRIBUTE19='1' THEN '是' when b.EATTRIBUTE19='0' then '否' else '' end as ''
  251. from ICSInventory b
  252. where 1=1 ";
  253. }
  254. if (!string.IsNullOrWhiteSpace(InvCode))
  255. sql += " and b.InvCode like '%" + InvCode + "%'";
  256. if (!string.IsNullOrWhiteSpace(InvName))
  257. sql += " and b.InvName like '%" + InvName + "%'";
  258. if (!string.IsNullOrWhiteSpace(VenCode))
  259. sql += " and b.EATTRIBUTE20 like '%" + VenCode + "%'";
  260. if (!string.IsNullOrWhiteSpace(VenCode))
  261. sql += " and b.EATTRIBUTE21 like '%" + VenName + "%'";
  262. sql += " order by b.InvCode";
  263. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  264. return dt;
  265. }
  266. }
  267. }