PDAModuleLogicEntrucking.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. /*******************************************************************************
  2. * Copyright(c) 2019 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PDAModuleLogicWorkShop3.cs
  5. * 2.功能描述:PDA相关处理(三车间专用)。
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 徐伟 2019/11/05 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.Drawing.Imaging;
  15. using System.IO;
  16. using System.Text;
  17. using Dongke.IBOSS.PRD.Basics.BaseResources;
  18. using Dongke.IBOSS.PRD.Basics.DataAccess;
  19. using Dongke.IBOSS.PRD.Basics.Library;
  20. using Dongke.IBOSS.PRD.Service.DataModels;
  21. using Dongke.IBOSS.PRD.WCF.DataModels;
  22. using Dongke.IBOSS.PRD.WCF.DataModels.HRModule;
  23. using Dongke.IBOSS.PRD.WCF.DataModels.PCModule;
  24. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  25. using Oracle.ManagedDataAccess.Client;
  26. using Newtonsoft.Json.Linq;
  27. using Dongke.IBOSS.PRD.Service.CMNModuleService;
  28. using System.Collections;
  29. namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
  30. {
  31. /// <summary>
  32. /// 三车间专用接口
  33. /// </summary>
  34. public partial class PDAModuleLogic
  35. {
  36. #region feiyue add 2022-07-20 装板接口
  37. /// <summary>
  38. /// 生产工号装具操作权限
  39. /// </summary>
  40. /// <param name="groutingLineNo"></param>
  41. /// <param name="sUser"></param>
  42. /// <returns></returns>
  43. public static ServiceResultEntity CheckEntruckUser(string functionCode,string currentUserCode, SUserInfo sUser)
  44. {
  45. ServiceResultEntity sre = new ServiceResultEntity();
  46. sre.Data = new DataSet();
  47. sre.Status = Constant.ServiceResultStatus.Success;
  48. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  49. string sqlStr = "";
  50. try
  51. {
  52. conn.Connect();
  53. if (sre.Status == Constant.ServiceResultStatus.Success)
  54. {
  55. sqlStr = $@"
  56. SELECT
  57. TMUR.FunctionCode
  58. FROM
  59. TP_MST_UserRight TMUR
  60. INNER JOIN TP_MST_USER U ON U.USERID = TMUR.USERID
  61. WHERE
  62. TMUR.FunctionCode = '{functionCode}'
  63. AND u.USERCODE = '{currentUserCode}'
  64. AND u.accountID = {sUser.AccountID}
  65. ";
  66. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  67. if (dt.Rows.Count == 0)
  68. {
  69. sre.Status = Constant.ServiceResultStatus.NoFunRight;
  70. sre.Message = "工号"+ currentUserCode + "无该操作权限!";
  71. }
  72. else
  73. {
  74. sre.Status = Constant.ServiceResultStatus.Success;
  75. sre.Message = "操作成功!";
  76. }
  77. }
  78. }
  79. catch (Exception ex)
  80. {
  81. throw ex;
  82. }
  83. finally
  84. {
  85. conn.Disconnect();
  86. }
  87. //返回数据
  88. return sre;
  89. }
  90. /// <summary>
  91. /// 获取装具的使用状态
  92. /// </summary>
  93. /// <param name="entruckingCode"></param>
  94. /// <param name="sUser"></param>
  95. /// <returns></returns>
  96. public static ServiceResultEntity GetTruckStatus(string entruckingCode, SUserInfo sUser)
  97. {
  98. ServiceResultEntity sre = new ServiceResultEntity();
  99. sre.Data = new DataSet();
  100. sre.Status = Constant.ServiceResultStatus.Success;
  101. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  102. string sqlStr = "";
  103. try
  104. {
  105. conn.Connect();
  106. if (sre.Status == Constant.ServiceResultStatus.Success)
  107. {
  108. sqlStr = $@"
  109. SELECT
  110. TPE.STATUS
  111. FROM TP_PM_ENTRUCKING TPE
  112. WHERE TPE.VALUEFLAG = '1'
  113. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
  114. ";
  115. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  116. sre.Data.Tables.Add(dt);
  117. if (dt.Rows.Count == 0)
  118. {
  119. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  120. sre.Message = "无效装具条码!";
  121. }
  122. else
  123. {
  124. sre.Status = Constant.ServiceResultStatus.Success;
  125. sre.Message = "操作成功!";
  126. }
  127. }
  128. }
  129. catch (Exception ex)
  130. {
  131. throw ex;
  132. }
  133. finally
  134. {
  135. conn.Disconnect();
  136. }
  137. //返回数据
  138. return sre;
  139. }
  140. /// <summary>
  141. /// 验证产品条码有效性,及产品与装具的绑定状态
  142. /// </summary>
  143. /// <param name="barCode"></param>
  144. /// <param name="sUser"></param>
  145. /// <returns></returns>
  146. public static ServiceResultEntity CheckTruckBarCode(string barCode, SUserInfo sUser)
  147. {
  148. ServiceResultEntity sre = new ServiceResultEntity();
  149. sre.Data = new DataSet();
  150. sre.Status = Constant.ServiceResultStatus.Success;
  151. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  152. string sqlStr = "";
  153. try
  154. {
  155. conn.Connect();
  156. if (sre.Status == Constant.ServiceResultStatus.Success)
  157. {
  158. sqlStr = $@"select 1 from TP_PM_GroutingDailyDetail where barcode='{barCode}' and valueflag=1";
  159. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  160. if (dt.Rows.Count == 0)
  161. {
  162. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  163. sre.Message = "无效条码!";
  164. }
  165. else
  166. {
  167. //产品与装具的绑定状态
  168. sqlStr = $@"
  169. SELECT
  170. TPE.EntruckingCode
  171. FROM TP_PM_ENTRUCKING TPE
  172. INNER JOIN TP_PM_EntruckingDetail TPED
  173. ON TPE.EntruckingCode = TPED.EntruckingCode
  174. AND TPE.Batch = TPED.Batch
  175. WHERE TPE.Status = 1
  176. AND TPED.BARCODE = '{barCode}'";
  177. dt = conn.GetSqlResultToDt(sqlStr);
  178. if (dt.Rows.Count > 0)
  179. {
  180. sre.Status = Constant.ServiceResultStatus.Other;
  181. sre.Message = "产品" + barCode + "已在装具" + dt.Rows[0]["EntruckingCode"] + "上"; ;
  182. }
  183. else
  184. {
  185. sqlStr = $@"
  186. SELECT
  187. GDD.BARCODE,
  188. G.GOODSCODE,
  189. P.PROCEDURENAME,
  190. U.USERCODE
  191. FROM
  192. TP_PM_GROUTINGDAILYDETAIL GDD
  193. INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = GDD.BARCODE
  194. INNER JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
  195. INNER JOIN TP_MST_USER U ON U.USERID = IP.USERID
  196. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  197. WHERE
  198. GDD.BARCODE = '{barCode}'";
  199. dt = conn.GetSqlResultToDt(sqlStr);
  200. dt.TableName = "goodsinfo";
  201. sre.Data.Tables.Add(dt);
  202. sre.Status = Constant.ServiceResultStatus.Success;
  203. sre.Message = "操作成功!";
  204. }
  205. }
  206. }
  207. }
  208. catch (Exception ex)
  209. {
  210. throw ex;
  211. }
  212. finally
  213. {
  214. conn.Disconnect();
  215. }
  216. //返回数据
  217. return sre;
  218. }
  219. /// <summary>
  220. /// 绑定装具
  221. /// </summary>
  222. /// <param name="barcodes"></param>
  223. /// <param name="entruckingCode"></param>
  224. /// <param name="currentUserCode"></param>
  225. /// <param name="sUser"></param>
  226. /// <returns></returns>
  227. public static ServiceResultEntity AddTruckBarCodes(string[] barcodes, string entruckingCode, string currentUserCode, SUserInfo sUser)
  228. {
  229. ServiceResultEntity sre = new ServiceResultEntity();
  230. sre.Data = new DataSet();
  231. sre.Status = Constant.ServiceResultStatus.Success;
  232. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  233. string sqlStr = "";
  234. int execute = 0;
  235. try
  236. {
  237. conn.Connect();
  238. if (sre.Status == Constant.ServiceResultStatus.Success)
  239. {
  240. //获取最大批次
  241. sqlStr = $@"SELECT
  242. TPE.BATCH,TPE.STATUS
  243. FROM TP_PM_ENTRUCKING TPE
  244. WHERE TPE.VALUEFLAG = '1'
  245. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'";
  246. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  247. if (dt.Rows.Count == 0)
  248. {
  249. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  250. sre.Message = "无效装具条码!";
  251. }
  252. else if (dt.Rows[0]["STATUS"].ToString().Equals("0"))
  253. {
  254. int batch = Convert.ToInt32(dt.Rows[0]["BATCH"]) + 1;
  255. for (int i = 0; i < barcodes.Length; i++)
  256. {
  257. //获取产品条码当前工序
  258. sqlStr = $@"
  259. select PROCEDUREID from TP_PM_INPRODUCTION where barcode = '{barcodes[i]}'
  260. ";
  261. string procedureid = conn.GetSqlResultToStr(sqlStr);
  262. //插入装具明细
  263. sqlStr = $@"
  264. INSERT INTO TP_PM_EntruckingDetail (
  265. ENTRUCKINGCODE,
  266. BARCODE,
  267. BATCH,
  268. DOFUNCTION,
  269. PROCEDUREID,
  270. REMARKS,
  271. ACCOUNTID,
  272. USERID,
  273. USERCODE,
  274. VALUEFLAG,
  275. CREATEUSERID,
  276. UPDATEUSERID )
  277. SELECT
  278. '{entruckingCode}',
  279. '{barcodes[i]}',
  280. '{batch}',
  281. 1,
  282. {procedureid},
  283. '',
  284. '{sUser.AccountID}',
  285. USERID,
  286. '{currentUserCode}',
  287. 1,
  288. '{sUser.UserID}',
  289. '{sUser.UserID}'
  290. FROM TP_MST_USER WHERE USERCODE = '{currentUserCode}'
  291. ";
  292. execute = conn.ExecuteNonQuery(sqlStr);
  293. if (execute > 0)
  294. {
  295. sre.Status = Constant.ServiceResultStatus.Success;
  296. sre.Message = "操作完成!";
  297. }
  298. else
  299. {
  300. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  301. sre.Message = "操作失败,没有更新任何数据!";
  302. }
  303. }
  304. }
  305. else {
  306. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  307. sre.Message = "装具不可用!";
  308. }
  309. conn.Commit();
  310. }
  311. }
  312. catch (Exception ex)
  313. {
  314. conn.Rollback();
  315. throw ex;
  316. }
  317. finally
  318. {
  319. conn.Disconnect();
  320. }
  321. //返回数据
  322. return sre;
  323. }
  324. /// <summary>
  325. /// 获取装具上的产品信息
  326. /// </summary>
  327. /// <param name="entruckingCode"></param>
  328. /// <param name="sUser"></param>
  329. /// <returns></returns>
  330. public static ServiceResultEntity GetTruckBarCodes(string entruckingCode, SUserInfo sUser)
  331. {
  332. ServiceResultEntity sre = new ServiceResultEntity();
  333. sre.Data = new DataSet();
  334. sre.Status = Constant.ServiceResultStatus.Success;
  335. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  336. string sqlStr = "";
  337. try
  338. {
  339. conn.Connect();
  340. if (sre.Status == Constant.ServiceResultStatus.Success)
  341. {
  342. sqlStr = $@"
  343. SELECT
  344. TPE.STATUS
  345. FROM TP_PM_ENTRUCKING TPE
  346. WHERE TPE.VALUEFLAG = '1'
  347. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
  348. ";
  349. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  350. sre.Data.Tables.Add(dt);
  351. if (dt.Rows.Count == 0)
  352. {
  353. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  354. sre.Message = "无效装具条码!";
  355. }
  356. else if (dt.Rows[0]["STATUS"].Equals("1"))
  357. {
  358. sqlStr = $@"
  359. SELECT
  360. TD.BARCODE,G.GOODSCODE,P.PROCEDURENAME,U.USERCODE
  361. FROM
  362. TP_PM_ENTRUCKINGDETAIL TD
  363. INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
  364. INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD ON GDD.BARCODE = TD.BARCODE
  365. INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
  366. INNER JOIN TP_PC_PROCEDURE P ON P.PROCEDUREID = IP.PROCEDUREID
  367. INNER JOIN TP_MST_USER U ON U.USERID = IP.USERID
  368. INNER JOIN TP_MST_GOODS G ON G.GOODSID = GDD.GOODSID
  369. WHERE
  370. TD.ENTRUCKINGCODE = '{entruckingCode}'
  371. AND T.STATUS = '1'
  372. ";
  373. dt = conn.GetSqlResultToDt(sqlStr);
  374. sre.Data.Tables.Add(dt);
  375. if (dt.Rows.Count == 0)
  376. {
  377. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  378. sre.Message = "装具上无产品!";
  379. }
  380. else
  381. {
  382. sre.Status = Constant.ServiceResultStatus.Success;
  383. sre.Message = "操作成功!";
  384. }
  385. }
  386. else {
  387. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  388. sre.Message = "装具未使用";
  389. }
  390. }
  391. }
  392. catch (Exception ex)
  393. {
  394. throw ex;
  395. }
  396. finally
  397. {
  398. conn.Disconnect();
  399. }
  400. //返回数据
  401. return sre;
  402. }
  403. /// <summary>
  404. /// 解绑
  405. /// </summary>
  406. /// <param name="entruckingCode"></param>
  407. /// <param name="sUser"></param>
  408. /// <returns></returns>
  409. public static ServiceResultEntity UnbindTruckBarCodes(string entruckingCode,string currentUserCode, SUserInfo sUser)
  410. {
  411. ServiceResultEntity sre = new ServiceResultEntity();
  412. sre.Data = new DataSet();
  413. sre.Status = Constant.ServiceResultStatus.Success;
  414. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  415. string sqlStr = "";
  416. try
  417. {
  418. conn.Connect();
  419. if (sre.Status == Constant.ServiceResultStatus.Success)
  420. {
  421. sqlStr = $@"
  422. SELECT
  423. TPE.STATUS
  424. FROM TP_PM_ENTRUCKING TPE
  425. WHERE TPE.VALUEFLAG = '1'
  426. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
  427. ";
  428. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  429. sre.Data.Tables.Add(dt);
  430. if (dt.Rows.Count == 0)
  431. {
  432. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  433. sre.Message = "无效装具条码!";
  434. }
  435. else if (dt.Rows[0]["STATUS"].Equals("1"))
  436. {
  437. //插入装具明细
  438. sqlStr = $@"
  439. INSERT INTO TP_PM_EntruckingDetail (
  440. ENTRUCKINGCODE,
  441. BARCODE,
  442. BATCH,
  443. DOFUNCTION,
  444. PROCEDUREID,
  445. REMARKS,
  446. ACCOUNTID,
  447. USERID,
  448. USERCODE,
  449. VALUEFLAG,
  450. CREATEUSERID,
  451. UPDATEUSERID )
  452. SELECT
  453. '{entruckingCode}',
  454. TD.BARCODE,
  455. TD.BATCH,
  456. 2,
  457. IP.PROCEDUREID,
  458. '',
  459. {sUser.AccountID},
  460. CU.USERID,
  461. '{currentUserCode}',
  462. '1',
  463. {sUser.UserID},
  464. {sUser.UserID}
  465. FROM
  466. TP_PM_ENTRUCKINGDETAIL TD
  467. INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
  468. INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
  469. INNER JOIN TP_MST_USER CU ON CU.USERCODE = '{currentUserCode}' AND CU.VALUEFLAG = '1'
  470. WHERE
  471. TD.ENTRUCKINGCODE = '{entruckingCode}'
  472. AND T.STATUS = '1'
  473. ";
  474. int execute = conn.ExecuteNonQuery(sqlStr);
  475. dt = conn.GetSqlResultToDt(sqlStr);
  476. sre.Data.Tables.Add(dt);
  477. if (dt.Rows.Count == 0)
  478. {
  479. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  480. sre.Message = "装具上无产品!";
  481. }
  482. else
  483. {
  484. sre.Status = Constant.ServiceResultStatus.Success;
  485. sre.Message = "操作成功!";
  486. }
  487. }
  488. else
  489. {
  490. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  491. sre.Message = "装具未使用";
  492. }
  493. }
  494. }
  495. catch (Exception ex)
  496. {
  497. throw ex;
  498. }
  499. finally
  500. {
  501. conn.Disconnect();
  502. }
  503. //返回数据
  504. return sre;
  505. }
  506. /// <summary>
  507. /// 增补
  508. /// </summary>
  509. /// <param name="barcode"></param>
  510. /// <param name="entruckingCode"></param>
  511. /// <param name="currentUserCode"></param>
  512. /// <param name="sUser"></param>
  513. /// <returns></returns>
  514. public static ServiceResultEntity AddTruckBarCode(string barcode, string entruckingCode, string currentUserCode, SUserInfo sUser)
  515. {
  516. ServiceResultEntity sre = new ServiceResultEntity();
  517. sre.Data = new DataSet();
  518. sre.Status = Constant.ServiceResultStatus.Success;
  519. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  520. string sqlStr = "";
  521. int execute = 0;
  522. try
  523. {
  524. conn.Connect();
  525. if (sre.Status == Constant.ServiceResultStatus.Success)
  526. {
  527. //获取最大批次
  528. sqlStr = $@"SELECT
  529. TPE.BATCH,TPE.STATUS
  530. FROM TP_PM_ENTRUCKING TPE
  531. WHERE TPE.VALUEFLAG = '1'
  532. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'";
  533. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  534. if (dt.Rows.Count == 0)
  535. {
  536. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  537. sre.Message = "无效装具条码!";
  538. }
  539. else if (dt.Rows[0]["STATUS"].ToString().Equals("1"))
  540. {
  541. int batch = Convert.ToInt32(dt.Rows[0]["BATCH"]) + 1;
  542. //获取产品条码当前工序
  543. sqlStr = $@"
  544. select PROCEDUREID from TP_PM_INPRODUCTION where barcode = '{barcode}'
  545. ";
  546. string procedureid = conn.GetSqlResultToStr(sqlStr);
  547. //插入装具明细
  548. sqlStr = $@"
  549. INSERT INTO TP_PM_EntruckingDetail (
  550. ENTRUCKINGCODE,
  551. BARCODE,
  552. BATCH,
  553. DOFUNCTION,
  554. PROCEDUREID,
  555. REMARKS,
  556. ACCOUNTID,
  557. USERID,
  558. USERCODE,
  559. VALUEFLAG,
  560. CREATEUSERID,
  561. UPDATEUSERID )
  562. SELECT
  563. '{entruckingCode}',
  564. '{barcode}',
  565. '{batch}',
  566. 1,
  567. {procedureid},
  568. '',
  569. '{sUser.AccountID}',
  570. USERID,
  571. '{currentUserCode}',
  572. 1,
  573. '{sUser.UserID}',
  574. '{sUser.UserID}'
  575. FROM TP_MST_USER WHERE USERCODE = '{currentUserCode}'
  576. ";
  577. execute = conn.ExecuteNonQuery(sqlStr);
  578. if (execute > 0)
  579. {
  580. sre.Status = Constant.ServiceResultStatus.Success;
  581. sre.Message = "操作完成!";
  582. }
  583. else
  584. {
  585. sre.Status = Constant.ServiceResultStatus.NoModifyData;
  586. sre.Message = "操作失败,没有更新任何数据!";
  587. }
  588. }
  589. else
  590. {
  591. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  592. sre.Message = "装具未使用不可增补!";
  593. }
  594. conn.Commit();
  595. }
  596. }
  597. catch (Exception ex)
  598. {
  599. conn.Rollback();
  600. throw ex;
  601. }
  602. finally
  603. {
  604. conn.Disconnect();
  605. }
  606. //返回数据
  607. return sre;
  608. }
  609. /// <summary>
  610. /// 拆减产品
  611. /// </summary>
  612. /// <param name="entruckingCode"></param>
  613. /// <param name="sUser"></param>
  614. /// <returns></returns>
  615. public static ServiceResultEntity UnbindTruckBarCode(string barcode,string entruckingCode, string currentUserCode, SUserInfo sUser)
  616. {
  617. ServiceResultEntity sre = new ServiceResultEntity();
  618. sre.Data = new DataSet();
  619. sre.Status = Constant.ServiceResultStatus.Success;
  620. IDBTransaction conn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  621. string sqlStr = "";
  622. try
  623. {
  624. conn.Connect();
  625. if (sre.Status == Constant.ServiceResultStatus.Success)
  626. {
  627. sqlStr = $@"
  628. SELECT
  629. TPE.STATUS
  630. FROM TP_PM_ENTRUCKING TPE
  631. WHERE TPE.VALUEFLAG = '1'
  632. AND TPE.ENTRUCKINGCODE = '{entruckingCode}'
  633. ";
  634. DataTable dt = conn.GetSqlResultToDt(sqlStr);
  635. sre.Data.Tables.Add(dt);
  636. if (dt.Rows.Count == 0)
  637. {
  638. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  639. sre.Message = "无效装具条码!";
  640. }
  641. else if (dt.Rows[0]["STATUS"].Equals("1"))
  642. {
  643. //插入装具明细
  644. sqlStr = $@"
  645. INSERT INTO TP_PM_EntruckingDetail (
  646. ENTRUCKINGCODE,
  647. BARCODE,
  648. BATCH,
  649. DOFUNCTION,
  650. PROCEDUREID,
  651. REMARKS,
  652. ACCOUNTID,
  653. USERID,
  654. USERCODE,
  655. VALUEFLAG,
  656. CREATEUSERID,
  657. UPDATEUSERID )
  658. SELECT
  659. '{entruckingCode}',
  660. TD.BARCODE,
  661. TD.BATCH,
  662. 2,
  663. IP.PROCEDUREID,
  664. '',
  665. {sUser.AccountID},
  666. CU.USERID,
  667. '{currentUserCode}',
  668. '1',
  669. {sUser.UserID},
  670. {sUser.UserID}
  671. FROM
  672. TP_PM_ENTRUCKINGDETAIL TD
  673. INNER JOIN TP_PM_ENTRUCKING T ON T.ENTRUCKINGCODE = TD.ENTRUCKINGCODE AND T.BATCH = TD.BATCH
  674. INNER JOIN TP_PM_INPRODUCTION IP ON IP.BARCODE = TD.BARCODE
  675. INNER JOIN TP_MST_USER CU ON CU.USERCODE = '{currentUserCode}' AND CU.VALUEFLAG = '1'
  676. WHERE
  677. TD.ENTRUCKINGCODE = '{entruckingCode}'
  678. AND TD.BARCODE = '{barcode}'
  679. AND T.STATUS = '1'
  680. ";
  681. int execute = conn.ExecuteNonQuery(sqlStr);
  682. dt = conn.GetSqlResultToDt(sqlStr);
  683. sre.Data.Tables.Add(dt);
  684. if (dt.Rows.Count == 0)
  685. {
  686. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  687. sre.Message = "装具上无产品!";
  688. }
  689. else
  690. {
  691. sre.Status = Constant.ServiceResultStatus.Success;
  692. sre.Message = "操作成功!";
  693. }
  694. }
  695. else
  696. {
  697. sre.Status = Constant.ServiceResultStatus.NoSearchResults;
  698. sre.Message = "装具未使用";
  699. }
  700. }
  701. }
  702. catch (Exception ex)
  703. {
  704. throw ex;
  705. }
  706. finally
  707. {
  708. conn.Disconnect();
  709. }
  710. //返回数据
  711. return sre;
  712. }
  713. #endregion
  714. }
  715. }