PCModuleLogic.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PCModuleLogic.cs
  5. * 2.功能描述:生产配置数据库访问类
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈冰 2014/09/3 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Dongke.IBOSS.PRD.Basics.BaseResources;
  15. using Dongke.IBOSS.PRD.Basics.DataAccess;
  16. using Dongke.IBOSS.PRD.Service.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.DataModels;
  18. using Dongke.IBOSS.PRD.WCF.DataModels.ConfigModule;
  19. using Oracle.ManagedDataAccess.Client;
  20. namespace Dongke.IBOSS.PRD.Service.PCModuleLogic
  21. {
  22. /// <summary>
  23. /// 生产配置数据库访问类
  24. /// </summary>
  25. public partial class PCModuleLogic
  26. {
  27. #region 生产线配置
  28. /// <summary>
  29. /// 获得生产线配置
  30. /// </summary>
  31. /// <param name="lineID">生产线ID</param>
  32. /// <returns>DataSet</returns>
  33. public static DataSet GetProductionLineDetail(int lineID)
  34. {
  35. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  36. try
  37. {
  38. con.Open();
  39. OracleParameter[] paras = new OracleParameter[]{
  40. new OracleParameter("productionLineID",OracleDbType.Int32,lineID,ParameterDirection.Input),
  41. new OracleParameter("rs_line",OracleDbType.RefCursor,ParameterDirection.Output),
  42. new OracleParameter("rs_procedure",OracleDbType.RefCursor,ParameterDirection.Output),
  43. new OracleParameter("rs_procedureFlow",OracleDbType.RefCursor,ParameterDirection.Output),
  44. new OracleParameter("rs_procedureGoods",OracleDbType.RefCursor,ParameterDirection.Output),
  45. new OracleParameter("rs_procedureUser",OracleDbType.RefCursor,ParameterDirection.Output),
  46. new OracleParameter("rs_procedureDefect",OracleDbType.RefCursor,ParameterDirection.Output),
  47. new OracleParameter("rs_defectProcedureJobs",OracleDbType.RefCursor,ParameterDirection.Output),
  48. new OracleParameter("rs_procedureKiln",OracleDbType.RefCursor,ParameterDirection.Output),
  49. };
  50. DataSet ds = con.ExecStoredProcedure("PRO_PC_GetProductionLineDetail", paras);
  51. // 命名 方便客户端取值
  52. ds.Tables[0].TableName = "lineTable";
  53. ds.Tables[1].TableName = "procedureTable";
  54. ds.Tables[2].TableName = "procedureFlowTable";
  55. ds.Tables[3].TableName = "procedureGoodsTable";
  56. ds.Tables[4].TableName = "procedureUserTable";
  57. ds.Tables[5].TableName = "procedureDefectTable";
  58. ds.Tables[6].TableName = "defectProcedureJobsTable";
  59. ds.Tables[7].TableName = "procedureKilnTable";
  60. return ds;
  61. }
  62. catch (Exception ex)
  63. {
  64. throw ex;
  65. }
  66. finally
  67. {
  68. if (con.ConnState == ConnectionState.Open)
  69. {
  70. con.Close();
  71. }
  72. }
  73. }
  74. /// <summary>
  75. /// 查询生产线配置
  76. /// </summary>
  77. /// <param name="productionLine">生产线实体类</param>
  78. /// <param name="sUserInfo">用户基本信息</param>
  79. /// <returns>DataSet</returns>
  80. public static DataSet SearchProductionLine(ProductionLineEntity productionLine, SUserInfo sUserInfo)
  81. {
  82. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  83. try
  84. {
  85. con.Open();
  86. string str_vauleFlags = null;
  87. if (productionLine.ValueFlags != null && productionLine.ValueFlags.Length > 0)
  88. {
  89. foreach (var item in productionLine.ValueFlags)
  90. {
  91. str_vauleFlags += "," + item;
  92. }
  93. str_vauleFlags = str_vauleFlags.Substring(1);
  94. }
  95. OracleParameter[] paras = new OracleParameter[]{
  96. new OracleParameter("in_productionLineID",OracleDbType.Int32,productionLine.ProductionLineID,ParameterDirection.Input),
  97. new OracleParameter("in_productionLineCode",OracleDbType.NVarchar2,productionLine.ProductionLineCode,ParameterDirection.Input),
  98. new OracleParameter("in_productionLineName",OracleDbType.NVarchar2,productionLine.ProductionLineName,ParameterDirection.Input),
  99. new OracleParameter("in_remarks",OracleDbType.NVarchar2,productionLine.Remarks,ParameterDirection.Input),
  100. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  101. new OracleParameter("in_valueFlags",OracleDbType.NVarchar2,str_vauleFlags,ParameterDirection.Input),
  102. new OracleParameter("rs_result",OracleDbType.RefCursor,ParameterDirection.Output),
  103. new OracleParameter("rs_resultDetail",OracleDbType.RefCursor,ParameterDirection.Output),
  104. };
  105. /*
  106. OracleParameter[] paras = new OracleParameter[]{
  107. new OracleParameter("productionLineID",OracleDbType.Int32,productionLine.ProductionLineID,ParameterDirection.Input),
  108. new OracleParameter("productionLineCode",OracleDbType.NVarchar2,productionLine.ProductionLineCode,ParameterDirection.Input),
  109. new OracleParameter("productionLineName",OracleDbType.NVarchar2,productionLine.ProductionLineName,ParameterDirection.Input),
  110. new OracleParameter("remarks",OracleDbType.NVarchar2,productionLine.Remarks,ParameterDirection.Input),
  111. new OracleParameter("accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  112. new OracleParameter("valueFlags",OracleDbType.NVarchar2,str_vauleFlags,ParameterDirection.Input),
  113. new OracleParameter("rs_result",OracleDbType.RefCursor,ParameterDirection.Output),
  114. new OracleParameter("rs_resultDetail",OracleDbType.RefCursor,ParameterDirection.Output),
  115. };
  116. */
  117. DataSet ds = con.ExecStoredProcedure("PRO_PC_SearchProductionLine", paras);
  118. return ds;
  119. }
  120. catch (Exception ex)
  121. {
  122. throw ex;
  123. }
  124. finally
  125. {
  126. if (con.ConnState == ConnectionState.Open)
  127. {
  128. con.Close();
  129. }
  130. }
  131. }
  132. #endregion
  133. #region 班次配置
  134. /// <summary>
  135. /// 获取班次配置信息
  136. /// </summary>
  137. /// <param name="searchEntity">班次配配置查询实体</param>
  138. /// <param name="sUserInfo">用户基本信息</param>
  139. /// <returns>DataSet</returns>
  140. public static DataSet SearchClassesSetting(SearchClassesSettingEntity searchEntity, SUserInfo sUserInfo)
  141. {
  142. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  143. try
  144. {
  145. con.Open();
  146. OracleParameter[] paras = new OracleParameter[]{
  147. new OracleParameter("in_accountId",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  148. new OracleParameter("in_userid",OracleDbType.Int32,searchEntity.UserID,ParameterDirection.Input),
  149. new OracleParameter("in_userCode",OracleDbType.Varchar2,searchEntity.UserCode,ParameterDirection.Input),
  150. new OracleParameter("in_startAccountDate",OracleDbType.Date,searchEntity.StartAccountDate,ParameterDirection.Input),
  151. new OracleParameter("in_endAccountDate",OracleDbType.Date,searchEntity.EndAccountDate,ParameterDirection.Input),
  152. new OracleParameter("in_remarks",OracleDbType.Varchar2,searchEntity.Remarks,ParameterDirection.Input),
  153. new OracleParameter("in_valueFlag",OracleDbType.Int32,searchEntity.ValueFlag,ParameterDirection.Input),
  154. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  155. };
  156. DataSet ds = con.ExecStoredProcedure("PRO_PC_SearchClassesSetting", paras);
  157. return ds;
  158. }
  159. catch (Exception ex)
  160. {
  161. throw ex;
  162. }
  163. finally
  164. {
  165. if (con.ConnState == ConnectionState.Open)
  166. {
  167. con.Close();
  168. }
  169. }
  170. }
  171. /// <summary>
  172. /// 获取指定班次配置明细信息
  173. /// </summary>
  174. /// <param name="classesSettingID">班次配置Id</param>
  175. /// <param name="sUserInfo">用户基本信息</param>
  176. /// <returns>DataSet</returns>
  177. /// <remarks>
  178. /// 作者 日期 内容
  179. /// 冯雪 2014-9-23 新建
  180. /// </remarks>
  181. public static DataSet SearchClassesDetail(int classesSettingID, SUserInfo sUserInfo)
  182. {
  183. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  184. try
  185. {
  186. con.Open();
  187. string strSql = " SELECT classesDetail.ClassesSettingID,classesDetail.UserID,classesDetail.userCode,"
  188. + " classesDetail.StaffID,classesDetail.Createtime,"
  189. //+ " classesDetail.UjobsId jobs,classesDetail.SjobsId,classesDetail.Remarks,classesDetail.CreateUserID,"
  190. + " classesDetail.UjobsId UjobsId,classesDetail.SjobsId jobs,classesDetail.Remarks,classesDetail.CreateUserID,"
  191. + " classesDetail.UpdateTime,MUser.Username mUsername,CUser.Username createUserName,"
  192. + " Jobs.Jobsname,Muser.Organizationid,Org.Organizationname,Staff.Staffname,Staff.Staffcode,"
  193. + " status.staffstatusname AS staffStatusName,classesDetail.staffStatus,UJobs.JobsName as UJobsName,classesDetail.Ujobsid as UJobsId "
  194. + " FROM TP_PC_ClassesDetail classesDetail "
  195. + " LEFT JOIN TP_MST_User MUser ON MUser.UserId = classesDetail.UserID "
  196. + " LEFT JOIN TP_MST_User CUser ON CUser.UserId = classesDetail.CreateUserID "
  197. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = classesDetail.SjobsId "
  198. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Muser.Organizationid "
  199. + " LEFT JOIN TP_HR_Staff Staff ON staff.staffid = classesDetail.Staffid "
  200. + " LEFT JOIN TP_MST_UserStaff userStaff ON classesDetail.STAFFID = userStaff.Staffid and classesDetail.Userid = userStaff.UserId"
  201. + " LEFT JOIN TP_MST_JOBS UJobs ON classesDetail.Ujobsid = UJobs.Jobsid"
  202. + " Inner JOIN TP_SYS_StaffStatus status on classesDetail.Staffstatus = status.staffstatusid"
  203. + " WHERE classesDetail.AccountID = :accountID "
  204. + " AND classesDetail.ClassesSettingID = :classesSettingID ";
  205. OracleParameter[] paras = new OracleParameter[]{
  206. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  207. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  208. };
  209. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  210. return ds;
  211. }
  212. catch (Exception ex)
  213. {
  214. throw ex;
  215. }
  216. finally
  217. {
  218. if (con.ConnState == ConnectionState.Open)
  219. {
  220. con.Close();
  221. }
  222. }
  223. }
  224. #endregion
  225. /// <summary>
  226. /// 生产配置删除节点时,此节点是否在产
  227. /// </summary>
  228. /// <param name="procedureID">工序ID</param>
  229. /// <returns>bool</returns>
  230. /// <remarks>
  231. /// </remarks>
  232. public static bool GetAllowDelete(int procedureID)
  233. {
  234. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  235. try
  236. {
  237. con.Open();
  238. string strSql = " select 1 from TP_PM_InProduction where FlowProcedureID=:procedureID";
  239. OracleParameter[] paras = new OracleParameter[]{
  240. new OracleParameter(":procedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  241. };
  242. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  243. if (ds != null && ds.Tables[0].Rows.Count > 0) // 有在产信息
  244. {
  245. return true;
  246. }
  247. return false;
  248. }
  249. catch (Exception ex)
  250. {
  251. throw ex;
  252. }
  253. finally
  254. {
  255. if (con.ConnState == ConnectionState.Open)
  256. {
  257. con.Close();
  258. }
  259. }
  260. }
  261. /// <summary>
  262. /// 取得FPM2105画面(注浆登记)的查询数据
  263. /// </summary>
  264. /// <param name="ids">多个注浆id(用[,]分开)</param>
  265. /// <param name="user">登录用户信息</param>
  266. /// <returns>查询结果</returns>
  267. public static ServiceResultEntity GetFPM2105Data(GroutingDailyEntity se, SUserInfo user)
  268. {
  269. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  270. try
  271. {
  272. con.Open();
  273. List<OracleParameter> parameters = new List<OracleParameter>();
  274. StringBuilder sql = new StringBuilder(GetFPM2105SQL());
  275. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  276. //parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  277. if (se != null)
  278. {
  279. // 产品条码
  280. if (se.BarCode != null)
  281. {
  282. sql.Append(" AND GDD.BARCODE = :barcode");
  283. parameters.Add(new OracleParameter(":barcode", OracleDbType.Char,se.BarCode, ParameterDirection.Input));
  284. }
  285. // 成型线ID
  286. if (se.GroutingLineID.HasValue)
  287. {
  288. sql.Append(" AND GD.GroutingLineID = :GroutingLineID");
  289. parameters.Add(new OracleParameter(":GroutingLineID", OracleDbType.Int32, se.GroutingLineID.Value, ParameterDirection.Input));
  290. }
  291. // 注浆日期
  292. if (se.GroutingDate.HasValue)
  293. {
  294. sql.Append(" AND GD.GroutingDate = :GroutingDate");
  295. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate.Value.Date, ParameterDirection.Input));
  296. //sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  297. //parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDate.Value.AddDays(1).AddMinutes(-1), ParameterDirection.Input));
  298. }
  299. // 注浆批次
  300. if (se.GroutingBatchNo.HasValue)
  301. {
  302. sql.Append(" AND GDD.GroutingBatchNo = :GroutingBatchNo");
  303. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo.Value, ParameterDirection.Input));
  304. }
  305. }
  306. sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingDailyID, GDD.GroutingMouldCode");
  307. DataTable data = con.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  308. ServiceResultEntity sre = new ServiceResultEntity();
  309. if (data == null || data.Rows.Count == 0)
  310. {
  311. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  312. return sre;
  313. }
  314. sre.Data = new DataSet();
  315. sre.Data.Tables.Add(data);
  316. return sre;
  317. }
  318. catch (Exception ex)
  319. {
  320. throw ex;
  321. }
  322. finally
  323. {
  324. if (con.ConnState == ConnectionState.Open)
  325. {
  326. con.Close();
  327. }
  328. }
  329. }
  330. /// <summary>
  331. /// 获取查询sql
  332. /// </summary>
  333. /// <returns>sql</returns>
  334. private static string GetFPM2105SQL()
  335. {
  336. string selSql =
  337. "SELECT 0 as Sel," +
  338. " GDD.GroutingDailyID," +
  339. " GDD.GroutingLineDetailID," +
  340. " GDD.GroutingDailyDetailID," +
  341. " GDD.GroutingLineID," +
  342. // 成型线编码
  343. " GDD.GroutingLineCode," +
  344. // 成型线名称
  345. " GDD.GroutingLineName," +
  346. // 注浆日期
  347. " GDD.GroutingDate," +
  348. // 成型工号
  349. " GDD.UserCode," +
  350. // 产品编码
  351. " GDD.GoodsCode," +
  352. // 产品名称
  353. " GDD.GoodsName," +
  354. // 注浆线模具编码
  355. " GDD.GroutingMouldCode," +
  356. // 模具状态
  357. " GMS.GMouldStatusName," +
  358. // 注浆标识
  359. " GDD.GroutingFlag," +
  360. // 未注浆原因
  361. " DD.DictionaryValue AS NoGroutingRreason," +
  362. // 注浆次数
  363. " GDD.GroutingCount," +
  364. // 注浆次数
  365. " GDD.GroutingBatchNo," +
  366. // 损坯标识
  367. " GDD.ScrapFlag," +
  368. // 备注
  369. " GDD.Remarks," +
  370. // 成型线类型
  371. " GMT.GMouldTypeName," +
  372. // 绑定条码
  373. " GDD.BarCode," +
  374. // 创建时间
  375. " GDD.CreateTime," +
  376. // 创建工号
  377. " U.UserName AS Createuser" +
  378. // 注浆日报
  379. " FROM TP_PM_GroutingDaily GD" +
  380. // 注浆日报明细表
  381. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  382. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  383. // 成型线类型
  384. " INNER JOIN TP_MST_GMouldType GMT" +
  385. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  386. // 模具状态
  387. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  388. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  389. // 创建工号
  390. " INNER JOIN TP_MST_User U" +
  391. " ON U.UserID = GDD.CreateUserID" +
  392. // 未注浆原因
  393. " LEFT JOIN TP_MST_DataDictionary DD" +
  394. " ON DD.DictionaryID = GDD.NoGroutingRreason" +
  395. //// 成型线操作权限
  396. //" INNER JOIN (SELECT UP.PurviewID" +
  397. //" FROM TP_MST_UserPurview UP" +
  398. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  399. //" AND UP.UserId = :UPUserId) UP" +
  400. //" ON UP.PurviewID = GD.GroutingLineID" +
  401. // 账套
  402. " WHERE GD.AccountID = :AccountID" +
  403. " AND GD.ValueFlag = 1";
  404. return selSql;
  405. }
  406. }
  407. }