PCModuleLogic.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  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("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. //xuwei add 2022-05-07 修正重复用户
  190. + " and classesDetail.Ujobsid = userStaff.Ujobsid"
  191. + " LEFT JOIN TP_MST_JOBS UJobs ON classesDetail.Ujobsid = UJobs.Jobsid"
  192. + " Inner JOIN TP_SYS_StaffStatus status on classesDetail.Staffstatus = status.staffstatusid"
  193. + " WHERE classesDetail.AccountID = :accountID "
  194. + " AND classesDetail.ClassesSettingID = :classesSettingID ";
  195. OracleParameter[] paras = new OracleParameter[]{
  196. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  197. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  198. };
  199. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  200. return ds;
  201. }
  202. catch (Exception ex)
  203. {
  204. throw ex;
  205. }
  206. finally
  207. {
  208. if (con.ConnState == ConnectionState.Open)
  209. {
  210. con.Close();
  211. }
  212. }
  213. }
  214. #endregion
  215. /// <summary>
  216. /// 生产配置删除节点时,此节点是否在产
  217. /// </summary>
  218. /// <param name="procedureID">工序ID</param>
  219. /// <returns>bool</returns>
  220. /// <remarks>
  221. /// </remarks>
  222. public static bool GetAllowDelete(int procedureID)
  223. {
  224. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  225. try
  226. {
  227. con.Open();
  228. string strSql = " select 1 from TP_PM_InProduction where FlowProcedureID=:procedureID";
  229. OracleParameter[] paras = new OracleParameter[]{
  230. new OracleParameter(":procedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  231. };
  232. DataSet ds = con.GetSqlResultToDs(strSql, paras);
  233. if (ds != null && ds.Tables[0].Rows.Count > 0) // 有在产信息
  234. {
  235. return true;
  236. }
  237. return false;
  238. }
  239. catch (Exception ex)
  240. {
  241. throw ex;
  242. }
  243. finally
  244. {
  245. if (con.ConnState == ConnectionState.Open)
  246. {
  247. con.Close();
  248. }
  249. }
  250. }
  251. /// <summary>
  252. /// 取得FPM2105画面(注浆登记)的查询数据
  253. /// </summary>
  254. /// <param name="ids">多个注浆id(用[,]分开)</param>
  255. /// <param name="user">登录用户信息</param>
  256. /// <returns>查询结果</returns>
  257. public static ServiceResultEntity GetFPM2105Data(GroutingDailyEntity se, SUserInfo user)
  258. {
  259. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  260. try
  261. {
  262. con.Open();
  263. List<OracleParameter> parameters = new List<OracleParameter>();
  264. StringBuilder sql = new StringBuilder(GetFPM2105SQL());
  265. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
  266. //parameters.Add(new OracleParameter(":UPUserId", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  267. if (se != null)
  268. {
  269. // 成型线ID
  270. if (se.GroutingLineID.HasValue)
  271. {
  272. sql.Append(" AND GD.GroutingLineID = :GroutingLineID");
  273. parameters.Add(new OracleParameter(":GroutingLineID", OracleDbType.Int32, se.GroutingLineID.Value, ParameterDirection.Input));
  274. }
  275. // 注浆日期
  276. if (se.GroutingDate.HasValue)
  277. {
  278. sql.Append(" AND GD.GroutingDate = :GroutingDate");
  279. parameters.Add(new OracleParameter(":GroutingDate", OracleDbType.Date, se.GroutingDate.Value.Date, ParameterDirection.Input));
  280. //sql.Append(" AND GD.GroutingDate <= :GroutingDateEnd");
  281. //parameters.Add(new OracleParameter(":GroutingDateEnd", OracleDbType.Date, se.GroutingDate.Value.AddDays(1).AddMinutes(-1), ParameterDirection.Input));
  282. }
  283. // 注浆批次
  284. if (se.GroutingBatchNo.HasValue)
  285. {
  286. sql.Append(" AND GDD.GroutingBatchNo = :GroutingBatchNo");
  287. parameters.Add(new OracleParameter(":GroutingBatchNo", OracleDbType.Int32, se.GroutingBatchNo.Value, ParameterDirection.Input));
  288. }
  289. }
  290. sql.Append(" ORDER BY GDD.GroutingDate, GDD.GroutingLineCode, GDD.GroutingDailyID, GDD.GroutingMouldCode");
  291. DataTable data = con.GetSqlResultToDt(sql.ToString(), parameters.ToArray());
  292. ServiceResultEntity sre = new ServiceResultEntity();
  293. if (data == null || data.Rows.Count == 0)
  294. {
  295. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  296. return sre;
  297. }
  298. sre.Data = new DataSet();
  299. sre.Data.Tables.Add(data);
  300. return sre;
  301. }
  302. catch (Exception ex)
  303. {
  304. throw ex;
  305. }
  306. finally
  307. {
  308. if (con.ConnState == ConnectionState.Open)
  309. {
  310. con.Close();
  311. }
  312. }
  313. }
  314. /// <summary>
  315. /// 获取查询sql
  316. /// </summary>
  317. /// <returns>sql</returns>
  318. private static string GetFPM2105SQL()
  319. {
  320. string selSql =
  321. "SELECT 0 as Sel," +
  322. " GDD.GroutingDailyID," +
  323. " GDD.GroutingLineDetailID," +
  324. " GDD.GroutingDailyDetailID," +
  325. " GDD.GroutingLineID," +
  326. // 成型线编码
  327. " GDD.GroutingLineCode," +
  328. // 成型线名称
  329. " GDD.GroutingLineName," +
  330. // 注浆日期
  331. " GDD.GroutingDate," +
  332. // 成型工号
  333. " GDD.UserCode," +
  334. // 产品编码
  335. " GDD.GoodsCode," +
  336. // 产品名称
  337. " GDD.GoodsName," +
  338. // 注浆线模具编码
  339. " GDD.GroutingMouldCode," +
  340. // 模具状态
  341. " GMS.GMouldStatusName," +
  342. // 注浆标识
  343. " GDD.GroutingFlag," +
  344. // 未注浆原因
  345. " DD.DictionaryValue AS NoGroutingRreason," +
  346. // 注浆次数
  347. " GDD.GroutingCount," +
  348. // 注浆次数
  349. " GDD.GroutingBatchNo," +
  350. // 损坯标识
  351. " GDD.ScrapFlag," +
  352. // 备注
  353. " GDD.Remarks," +
  354. // 成型线类型
  355. " GMT.GMouldTypeName," +
  356. // 绑定条码
  357. " GDD.BarCode," +
  358. // 创建时间
  359. " GDD.CreateTime," +
  360. // 创建工号
  361. " U.UserName AS Createuser" +
  362. // 注浆日报
  363. " FROM TP_PM_GroutingDaily GD" +
  364. // 注浆日报明细表
  365. " INNER JOIN TP_PM_GroutingDailyDetail GDD" +
  366. " ON GD.GroutingDailyID = GDD.GroutingDailyID" +
  367. // 成型线类型
  368. " INNER JOIN TP_MST_GMouldType GMT" +
  369. " ON GD.GMouldTypeID = GMT.GMouldTypeID" +
  370. // 模具状态
  371. " INNER JOIN TP_SYS_GMouldStatus GMS" +
  372. " ON GMS.GMouldStatusID = GDD.GMouldStatus" +
  373. // 创建工号
  374. " INNER JOIN TP_MST_User U" +
  375. " ON U.UserID = GDD.CreateUserID" +
  376. // 未注浆原因
  377. " LEFT JOIN TP_MST_DataDictionary DD" +
  378. " ON DD.DictionaryID = GDD.NoGroutingRreason" +
  379. //// 成型线操作权限
  380. //" INNER JOIN (SELECT UP.PurviewID" +
  381. //" FROM TP_MST_UserPurview UP" +
  382. //" WHERE UP.PurviewType = '" + (int)Constant.PurviewType.OperateGroutingLine + "'" +
  383. //" AND UP.UserId = :UPUserId) UP" +
  384. //" ON UP.PurviewID = GD.GroutingLineID" +
  385. // 账套
  386. " WHERE GD.AccountID = :AccountID" +
  387. " AND GD.ValueFlag = 1";
  388. return selSql;
  389. }
  390. }
  391. }