PCModuleLogic.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  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.DataAccess.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("productionLineID",OracleDbType.Int32,productionLine.ProductionLineID,ParameterDirection.Input),
  97. new OracleParameter("productionLineCode",OracleDbType.NVarchar2,productionLine.ProductionLineCode,ParameterDirection.Input),
  98. new OracleParameter("productionLineName",OracleDbType.NVarchar2,productionLine.ProductionLineName,ParameterDirection.Input),
  99. new OracleParameter("remarks",OracleDbType.NVarchar2,productionLine.Remarks,ParameterDirection.Input),
  100. new OracleParameter("accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  101. new OracleParameter("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. DataSet ds = con.ExecStoredProcedure("PRO_PC_SearchProductionLine", paras);
  106. return ds;
  107. }
  108. catch (Exception ex)
  109. {
  110. throw ex;
  111. }
  112. finally
  113. {
  114. if (con.ConnState == ConnectionState.Open)
  115. {
  116. con.Close();
  117. }
  118. }
  119. }
  120. #endregion
  121. #region 班次配置
  122. /// <summary>
  123. /// 获取班次配置信息
  124. /// </summary>
  125. /// <param name="searchEntity">班次配配置查询实体</param>
  126. /// <param name="sUserInfo">用户基本信息</param>
  127. /// <returns>DataSet</returns>
  128. public static DataSet SearchClassesSetting(SearchClassesSettingEntity searchEntity, SUserInfo sUserInfo)
  129. {
  130. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  131. try
  132. {
  133. con.Open();
  134. OracleParameter[] paras = new OracleParameter[]{
  135. new OracleParameter("in_accountId",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  136. new OracleParameter("in_userid",OracleDbType.Int32,searchEntity.UserID,ParameterDirection.Input),
  137. new OracleParameter("in_userCode",OracleDbType.Varchar2,searchEntity.UserCode,ParameterDirection.Input),
  138. new OracleParameter("in_startAccountDate",OracleDbType.Date,searchEntity.StartAccountDate,ParameterDirection.Input),
  139. new OracleParameter("in_endAccountDate",OracleDbType.Date,searchEntity.EndAccountDate,ParameterDirection.Input),
  140. new OracleParameter("in_remarks",OracleDbType.Varchar2,searchEntity.Remarks,ParameterDirection.Input),
  141. new OracleParameter("in_valueFlag",OracleDbType.Int32,searchEntity.ValueFlag,ParameterDirection.Input),
  142. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  143. };
  144. DataSet ds = con.ExecStoredProcedure("PRO_PC_SearchClassesSetting", paras);
  145. return ds;
  146. }
  147. catch (Exception ex)
  148. {
  149. throw ex;
  150. }
  151. finally
  152. {
  153. if (con.ConnState == ConnectionState.Open)
  154. {
  155. con.Close();
  156. }
  157. }
  158. }
  159. /// <summary>
  160. /// 获取指定班次配置明细信息
  161. /// </summary>
  162. /// <param name="classesSettingID">班次配置Id</param>
  163. /// <param name="sUserInfo">用户基本信息</param>
  164. /// <returns>DataSet</returns>
  165. /// <remarks>
  166. /// 作者 日期 内容
  167. /// 冯雪 2014-9-23 新建
  168. /// </remarks>
  169. public static DataSet SearchClassesDetail(int classesSettingID, SUserInfo sUserInfo)
  170. {
  171. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  172. try
  173. {
  174. con.Open();
  175. string strSql = " SELECT classesDetail.ClassesSettingID,classesDetail.UserID,classesDetail.userCode,"
  176. + " classesDetail.StaffID,classesDetail.Createtime,"
  177. //+ " classesDetail.UjobsId jobs,classesDetail.SjobsId,classesDetail.Remarks,classesDetail.CreateUserID,"
  178. + " classesDetail.UjobsId UjobsId,classesDetail.SjobsId jobs,classesDetail.Remarks,classesDetail.CreateUserID,"
  179. + " classesDetail.UpdateTime,MUser.Username mUsername,CUser.Username createUserName,"
  180. + " Jobs.Jobsname,Muser.Organizationid,Org.Organizationname,Staff.Staffname,Staff.Staffcode,"
  181. + " status.staffstatusname AS staffStatusName,classesDetail.staffStatus,UJobs.JobsName as UJobsName,classesDetail.Ujobsid as UJobsId "
  182. + " FROM TP_PC_ClassesDetail classesDetail "
  183. + " LEFT JOIN TP_MST_User MUser ON MUser.UserId = classesDetail.UserID "
  184. + " LEFT JOIN TP_MST_User CUser ON CUser.UserId = classesDetail.CreateUserID "
  185. + " LEFT JOIN TP_MST_Jobs Jobs ON Jobs.Jobsid = classesDetail.SjobsId "
  186. + " LEFT JOIN TP_MST_Organization Org ON Org.Organizationid = Muser.Organizationid "
  187. + " LEFT JOIN TP_HR_Staff Staff ON staff.staffid = classesDetail.Staffid "
  188. + " LEFT JOIN TP_MST_UserStaff userStaff ON classesDetail.STAFFID = userStaff.Staffid and classesDetail.Userid = userStaff.UserId"
  189. + " LEFT JOIN TP_MST_JOBS UJobs ON classesDetail.Ujobsid = UJobs.Jobsid"
  190. + " Inner JOIN TP_SYS_StaffStatus status on classesDetail.Staffstatus = status.staffstatusid"
  191. + " WHERE classesDetail.AccountID = :accountID "
  192. + " AND classesDetail.ClassesSettingID = :classesSettingID ";
  193. OracleParameter[] paras = new OracleParameter[]{
  194. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  195. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  196. };
  197. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  198. return ds;
  199. }
  200. catch (Exception ex)
  201. {
  202. throw ex;
  203. }
  204. finally
  205. {
  206. if (con.ConnState == ConnectionState.Open)
  207. {
  208. con.Close();
  209. }
  210. }
  211. }
  212. #endregion
  213. /// <summary>
  214. /// 生产配置删除节点时,此节点是否在产
  215. /// </summary>
  216. /// <param name="procedureID">工序ID</param>
  217. /// <returns>bool</returns>
  218. /// <remarks>
  219. /// </remarks>
  220. public static bool GetAllowDelete(int procedureID)
  221. {
  222. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  223. try
  224. {
  225. con.Open();
  226. string strSql = " select 1 from TP_PM_InProduction where FlowProcedureID=:procedureID";
  227. OracleParameter[] paras = new OracleParameter[]{
  228. new OracleParameter(":procedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  229. };
  230. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  231. if (ds != null && ds.Tables[0].Rows.Count > 0) // 有在产信息
  232. {
  233. return true;
  234. }
  235. return false;
  236. }
  237. catch (Exception ex)
  238. {
  239. throw ex;
  240. }
  241. finally
  242. {
  243. if (con.ConnState == ConnectionState.Open)
  244. {
  245. con.Close();
  246. }
  247. }
  248. }
  249. /// <summary>
  250. /// 取得FPM2105画面(注浆登记)的查询数据
  251. /// </summary>
  252. /// <param name="ids">多个注浆id(用[,]分开)</param>
  253. /// <param name="user">登录用户信息</param>
  254. /// <returns>查询结果</returns>
  255. public static ServiceResultEntity GetFPM2105Data(GroutingDailyEntity se, SUserInfo user)
  256. {
  257. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  258. try
  259. {
  260. con.Open();
  261. List<OracleParameter> parameters = new List<OracleParameter>();
  262. StringBuilder sql = new StringBuilder(GetFPM2105SQL());
  263. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  264. //parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  265. if (se != null)
  266. {
  267. // 成型线ID
  268. if (se.GroutingLineID.HasValue)
  269. {
  270. sql.Append(" AND GD.GroutingLineID = :GroutingLineID");
  271. parameters.Add(new OracleParameter(":GroutingLineID", OracleDbType.Int32, se.GroutingLineID.Value, ParameterDirection.Input));
  272. }
  273. // 注浆日期
  274. if (se.GroutingDate.HasValue)
  275. {
  276. sql.Append(" AND GD.GroutingDate = :GroutingDate");
  277. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate.Value.Date, ParameterDirection.Input));
  278. //sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  279. //parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDate.Value.AddDays(1).AddMinutes(-1), ParameterDirection.Input));
  280. }
  281. // 注浆批次
  282. if (se.GroutingBatchNo.HasValue)
  283. {
  284. sql.Append(" AND GDD.GroutingBatchNo = :GroutingBatchNo");
  285. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo.Value, ParameterDirection.Input));
  286. }
  287. }
  288. sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingDailyID, GDD.GroutingMouldCode");
  289. DataTable data = con.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  290. ServiceResultEntity sre = new ServiceResultEntity();
  291. if (data == null || data.Rows.Count == 0)
  292. {
  293. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  294. return sre;
  295. }
  296. sre.Data = new DataSet();
  297. sre.Data.Tables.Add(data);
  298. return sre;
  299. }
  300. catch (Exception ex)
  301. {
  302. throw ex;
  303. }
  304. finally
  305. {
  306. if (con.ConnState == ConnectionState.Open)
  307. {
  308. con.Close();
  309. }
  310. }
  311. }
  312. /// <summary>
  313. /// 获取查询sql
  314. /// </summary>
  315. /// <returns>sql</returns>
  316. private static string GetFPM2105SQL()
  317. {
  318. string selSql =
  319. "SELECT 0 as Sel," +
  320. " GDD.GroutingDailyID," +
  321. " GDD.GroutingLineDetailID," +
  322. " GDD.GroutingDailyDetailID," +
  323. " GDD.GroutingLineID," +
  324. // 成型线编码
  325. " GDD.GroutingLineCode," +
  326. // 成型线名称
  327. " GDD.GroutingLineName," +
  328. // 注浆日期
  329. " GDD.GroutingDate," +
  330. // 成型工号
  331. " GDD.UserCode," +
  332. // 产品编码
  333. " GDD.GoodsCode," +
  334. // 产品名称
  335. " GDD.GoodsName," +
  336. // 注浆线模具编码
  337. " GDD.GroutingMouldCode," +
  338. // 模具状态
  339. " GMS.GMouldStatusName," +
  340. // 注浆标识
  341. " GDD.GroutingFlag," +
  342. // 未注浆原因
  343. " DD.DictionaryValue AS NoGroutingRreason," +
  344. // 注浆次数
  345. " GDD.GroutingCount," +
  346. // 注浆次数
  347. " GDD.GroutingBatchNo," +
  348. // 损坯标识
  349. " GDD.ScrapFlag," +
  350. // 备注
  351. " GDD.Remarks," +
  352. // 成型线类型
  353. " GMT.GMouldTypeName," +
  354. // 绑定条码
  355. " GDD.BarCode," +
  356. // 创建时间
  357. " GDD.CreateTime," +
  358. // 创建工号
  359. " U.UserName AS Createuser" +
  360. // 注浆日报
  361. " FROM TP_PM_GroutingDaily GD" +
  362. // 注浆日报明细表
  363. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  364. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  365. // 成型线类型
  366. " INNER JOIN TP_MST_GMouldType GMT" +
  367. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  368. // 模具状态
  369. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  370. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  371. // 创建工号
  372. " INNER JOIN TP_MST_User U" +
  373. " ON U.UserID = GDD.CreateUserID" +
  374. // 未注浆原因
  375. " LEFT JOIN TP_MST_DataDictionary DD" +
  376. " ON DD.DictionaryID = GDD.NoGroutingRreason" +
  377. //// 成型线操作权限
  378. //" INNER JOIN (SELECT UP.PurviewID" +
  379. //" FROM TP_MST_UserPurview UP" +
  380. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  381. //" AND UP.UserId = :UPUserId) UP" +
  382. //" ON UP.PurviewID = GD.GroutingLineID" +
  383. // 账套
  384. " WHERE GD.AccountID = :AccountID" +
  385. " AND GD.ValueFlag = 1";
  386. return selSql;
  387. }
  388. }
  389. }