WmsInPutawayService.cs 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  1. using DapperORMCore.Context.DataContext;
  2. using DapperORMCore.Model.CoreModel;
  3. using DapperORMCore.Repository.IRepositorys;
  4. using Microsoft.Extensions.Configuration;
  5. using NXWMS.IService.NXWMS;
  6. using NXWMS.IService.NXWMS.Instock;
  7. using NXWMS.Model.AppModels.Condition.Instock;
  8. using NXWMS.Model.AppModels.Result.Balance;
  9. using NXWMS.Model.AppModels.Result.Base;
  10. using NXWMS.Model.AppModels.Result.Common;
  11. using NXWMS.Model.AppModels.Result.Instock;
  12. using NXWMS.Model.AppModels.Result.WmsTask;
  13. using NXWMS.Model.Common;
  14. using NXWMS.String.Enums;
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using WestDistance.DapperORM.Repository.Repositorys;
  21. namespace NXWMS.Service.NXWMS.Instock
  22. {
  23. /// <summary>
  24. /// 上架单服务
  25. /// </summary>
  26. [AutoInject(typeof(IWmsInPutawayService), InjectType.Scope)]
  27. public class WmsInPutawayService : ServiceBase, IWmsInPutawayService
  28. {
  29. #region 全局变量、构造注入
  30. /// <summary>
  31. /// 系统操作仓储中转
  32. /// </summary>
  33. private IDataRepositoryContext _dataContext;
  34. /// <summary>
  35. /// SQL节点仓储
  36. /// </summary>
  37. private ISQLNodeRepository _iSQLNodeRepository;
  38. /// <summary>
  39. /// 配置
  40. /// </summary>
  41. private IConfiguration _configuration;
  42. private IERPServer _eRPServer;
  43. /// <summary>
  44. /// 构造注入
  45. /// </summary>
  46. /// <param name="dataRepositoryContext"></param>
  47. /// <param name="configuration"></param>
  48. /// <param name="iSQLNodeRepository"></param>
  49. public WmsInPutawayService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository, IERPServer eRPServer)
  50. {
  51. this._dataContext = dataRepositoryContext;
  52. this._configuration = configuration;
  53. this._iSQLNodeRepository = iSQLNodeRepository;
  54. this._eRPServer = eRPServer;
  55. }
  56. #endregion
  57. /// <summary>
  58. /// 分页查询上架单主表数据
  59. /// </summary>
  60. /// <param name="putawaySearchMd">上架单查询条件实体类对象</param>
  61. /// <returns></returns>
  62. public OperateResultInfo<List<WmsInPutAwayResult>> GetWmsInPutAwayListForPage(WmsInPutAwaySearchMd putawaySearchMd)
  63. {
  64. try
  65. {
  66. #region SQL语句生成
  67. StringBuilder sqlCondition = new StringBuilder();
  68. if (!string.IsNullOrEmpty(putawaySearchMd.PutawayNoMsg))
  69. {
  70. sqlCondition.Append($" AND PUTAWAY_NO = '{putawaySearchMd.PutawayNoMsg}'");
  71. }
  72. if (!string.IsNullOrEmpty(putawaySearchMd.PalletNoMsg))
  73. {
  74. sqlCondition.Append($" AND PALLET_CODE like '%{putawaySearchMd.PalletNoMsg}%'");
  75. }
  76. if (!string.IsNullOrEmpty(putawaySearchMd.TargetBinMsg))
  77. {
  78. sqlCondition.Append($" AND EBIN_CODE = '{putawaySearchMd.TargetBinMsg}'");
  79. }
  80. if (!string.IsNullOrEmpty(putawaySearchMd.PutawayTypeMsg))
  81. {
  82. sqlCondition.Append($" AND PUTAWAY_TYPE = '{putawaySearchMd.PutawayTypeMsg}'");
  83. }
  84. if (!string.IsNullOrEmpty(putawaySearchMd.PutawayStatusMsg))
  85. {
  86. sqlCondition.Append($" AND PUTAWAY_STATUS = '{putawaySearchMd.PutawayStatusMsg}'");
  87. }
  88. if (!string.IsNullOrEmpty(putawaySearchMd.BatchNoMsg))
  89. {
  90. sqlCondition.Append($" AND PUTAWAY_ID IN (SELECT PUTAWAY_ID FROM VW_WMS_IN_PUTAWAY_DTL WHERE BATCH_NO = '{putawaySearchMd.BatchNoMsg}')");
  91. }
  92. if (!string.IsNullOrEmpty(putawaySearchMd.MaterielMsg))
  93. {
  94. sqlCondition.Append($" AND PUTAWAY_ID IN (SELECT PUTAWAY_ID FROM VW_WMS_IN_PUTAWAY_DTL WHERE MATERIEL_CODE LIKE '%{putawaySearchMd.MaterielMsg}%' OR MATERIEL_NAME LIKE '%{putawaySearchMd.MaterielMsg}%' OR MATERIEL_BARCODE LIKE '%{putawaySearchMd.MaterielMsg}%')");
  95. }
  96. if (!string.IsNullOrEmpty(putawaySearchMd.SupplierMsg))
  97. {
  98. sqlCondition.Append($" AND PUTAWAY_ID IN (SELECT PUTAWAY_ID FROM VW_WMS_IN_PUTAWAY_DTL WHERE SUPPLIER_CODE LIKE '%{putawaySearchMd.SupplierMsg}%' OR SUPPLIER_NAME LIKE '%{putawaySearchMd.SupplierMsg}%')");
  99. }
  100. if (!string.IsNullOrEmpty(putawaySearchMd.StartCreatTimeMsg))
  101. {
  102. sqlCondition.Append($" AND CREATE_TIME >= '{putawaySearchMd.StartCreatTimeMsg}'");
  103. }
  104. if (!string.IsNullOrEmpty(putawaySearchMd.EndCreatTimeMsg))
  105. {
  106. sqlCondition.Append($" AND CREATE_TIME <= '{putawaySearchMd.EndCreatTimeMsg}'");
  107. }
  108. StringBuilder sqlCountPutAwayData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_IN_PUTAWAY WHERE 1=1");
  109. sqlCountPutAwayData.Append(sqlCondition.ToString());
  110. int pageStartIndex = (putawaySearchMd.PageNum - 1) * putawaySearchMd.EveryPageQty;
  111. int pageEndIndex = putawaySearchMd.PageNum * putawaySearchMd.EveryPageQty;
  112. StringBuilder sqlQueryPutAwayData = new StringBuilder($@"
  113. SELECT
  114. PUTAWAY_ID,
  115. PUTAWAY_NO,
  116. SOURCE_NO,
  117. PUTAWAY_TYPE,
  118. PUTAWAY_TYPE_NAME,
  119. TRAY_CODE,
  120. PALLET_CODE,
  121. SBIN_CODE,
  122. EBIN_CODE,
  123. PUTAWAY_PRIORITY,
  124. PUTAWAY_STATUS,
  125. PUTAWAY_STATUS_NAME,
  126. [DESCRIBE],
  127. CREATE_BY,
  128. CREATE_NAME,
  129. CREATE_TIME,
  130. UPDATE_BY,
  131. UPDATE_NAME,
  132. UPDATE_TIME
  133. FROM
  134. VW_WMS_IN_PUTAWAY
  135. WHERE
  136. 1=1
  137. {sqlCondition}
  138. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  139. OFFSET {pageStartIndex} ROWS
  140. FETCH NEXT {putawaySearchMd.EveryPageQty} ROWS ONLY
  141. ");
  142. #endregion
  143. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountPutAwayData.ToString()));
  144. List<WmsInPutAwayResult> resultList = new DataRepository<WmsInPutAwayResult>(_dataContext).Query(sqlQueryPutAwayData.ToString()).ToList();
  145. OperateResultInfo<List<WmsInPutAwayResult>> retDataMsg = SuccessStatus(resultList);
  146. retDataMsg.DataCount = dataCount;
  147. return retDataMsg;
  148. }
  149. catch (Exception ex)
  150. {
  151. return FailMessageStatus<List<WmsInPutAwayResult>>($"查询上架单数据发生异常,【{ex.Message}】", null);
  152. }
  153. }
  154. /// <summary>
  155. /// 根据上架单主键Id查询上架单明细数据
  156. /// </summary>
  157. /// <param name="wmsInPutAway">上架单对象</param>
  158. /// <returns></returns>
  159. public OperateResultInfo<WmsInPutAwayResult> GetWmsInPutAwayDtlListForID(WmsInPutAwayResult wmsInPutAway)
  160. {
  161. try
  162. {
  163. #region SQL语句生成
  164. string sqlQueryWmsInPutAway = $@"
  165. SELECT
  166. PUTAWAY_ID,
  167. PUTAWAY_NO,
  168. SOURCE_NO,
  169. PUTAWAY_TYPE,
  170. PUTAWAY_TYPE_NAME,
  171. TRAY_CODE,
  172. PALLET_CODE,
  173. SBIN_CODE,
  174. EBIN_CODE,
  175. PUTAWAY_PRIORITY,
  176. PUTAWAY_STATUS,
  177. PUTAWAY_STATUS_NAME,
  178. [DESCRIBE],
  179. CREATE_BY,
  180. CREATE_NAME,
  181. CREATE_TIME,
  182. UPDATE_BY,
  183. UPDATE_NAME,
  184. UPDATE_TIME
  185. FROM
  186. VW_WMS_IN_PUTAWAY
  187. WHERE
  188. PUTAWAY_ID = '{wmsInPutAway.PutawayId}'
  189. ";
  190. string strWhere = string.Empty;
  191. if (wmsInPutAway.Remarks1 == "查询已删除明细数据")
  192. {
  193. strWhere = "1=1";
  194. }
  195. else
  196. {
  197. strWhere = "PUTAWAY_DTL_STATUS < 111";
  198. }
  199. string sqlQueryWmsPutAwayDtl = $@"
  200. SELECT
  201. *
  202. FROM
  203. VW_WMS_IN_PUTAWAY_DTL
  204. WHERE
  205. PUTAWAY_ID = '{wmsInPutAway.PutawayId}'
  206. AND {strWhere}
  207. ORDER BY PUTAWAY_DTL_STATUS,PUTAWAY_DTL_ID
  208. ";
  209. #endregion
  210. List<WmsInPutAwayResult> resultList = new DataRepository<WmsInPutAwayResult>(_dataContext).Query(sqlQueryWmsInPutAway).ToList();
  211. List<WmsInPutAwayDtlResult> resultDtlList = new DataRepository<WmsInPutAwayDtlResult>(_dataContext).Query(sqlQueryWmsPutAwayDtl).ToList();
  212. wmsInPutAway = resultList[0];
  213. wmsInPutAway.WmsInPutAwayDtlList = resultDtlList;
  214. OperateResultInfo<WmsInPutAwayResult> retDataMsg = SuccessStatus(wmsInPutAway);
  215. return retDataMsg;
  216. }
  217. catch (Exception ex)
  218. {
  219. return FailMessageStatus<WmsInPutAwayResult>($"查询上架单明细数据发生异常,【{ex.Message}】", null);
  220. }
  221. }
  222. /// <summary>
  223. /// 新增上架单数据
  224. /// </summary>
  225. /// <param name="wmsInPutAway">上架单主表对象</param>
  226. /// <returns></returns>
  227. public OperateResultInfo AddWmsInPutAwayData(WmsInPutAwayResult wmsInPutAway)
  228. {
  229. try
  230. {
  231. #region SQL语句生成
  232. List<string> sqlList = new List<string>();
  233. wmsInPutAway.PutawayId = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_Id"));
  234. wmsInPutAway.PutawayNo = new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_No");
  235. wmsInPutAway.PutawayStatus = 0;
  236. StringBuilder sqlAddWmsPutAway = new StringBuilder();
  237. sqlAddWmsPutAway.Append($@"
  238. INSERT INTO [WMS_IN_PUTAWAY] (
  239. [PUTAWAY_ID],
  240. [PUTAWAY_NO],
  241. [SOURCE_NO],
  242. [PUTAWAY_TYPE],
  243. [TRAY_CODE],
  244. [PALLET_CODE],
  245. [SBIN_CODE],
  246. [EBIN_CODE],
  247. [PUTAWAY_PRIORITY],
  248. [PUTAWAY_STATUS],
  249. [DESCRIBE],
  250. [CREATE_BY],
  251. [CREATE_TIME],
  252. [UPDATE_BY],
  253. [UPDATE_TIME],
  254. [DATA_VERSION],
  255. [REMARKS1],
  256. [REMARKS2],
  257. [REMARKS3],
  258. [REMARKS4],
  259. [REMARKS5]
  260. )
  261. VALUES
  262. (
  263. '{wmsInPutAway.PutawayId}',
  264. '{wmsInPutAway.PutawayNo}',
  265. '{wmsInPutAway.SourceNo}',
  266. '{wmsInPutAway.PutawayType}',
  267. '{wmsInPutAway.TrayCode}',
  268. '{wmsInPutAway.PalletCode}',
  269. '{wmsInPutAway.SbinCode}',
  270. '{wmsInPutAway.EbinCode}',
  271. '{wmsInPutAway.PutawayPriority}',
  272. '0',
  273. '{wmsInPutAway.Describe}',
  274. '{wmsInPutAway.CreateBy}',
  275. getdate(),
  276. '{wmsInPutAway.UpdateBy}',
  277. getdate(),
  278. 0,
  279. NULL,
  280. NULL,
  281. NULL,
  282. NULL,
  283. NULL
  284. );
  285. ");
  286. sqlList.Add(sqlAddWmsPutAway.ToString());
  287. foreach (WmsInPutAwayDtlResult item in wmsInPutAway.WmsInPutAwayDtlList)
  288. {
  289. StringBuilder sqlAddWmsInPutAwayDtl = new StringBuilder();
  290. item.PUTAWAY_DTL_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_Dtl_Id"));
  291. item.PUTAWAY_ID = wmsInPutAway.PutawayId;
  292. item.PUTAWAY_DTL_STATUS = 0;
  293. sqlAddWmsInPutAwayDtl.Append($@"
  294. INSERT INTO [WMS_IN_PUTAWAY_DTL] (
  295. [PUTAWAY_DTL_ID],
  296. [PUTAWAY_ID],
  297. [MATERIEL_CODE],
  298. [MATERIEL_NAME],
  299. [MATERIEL_BARCODE],
  300. [MATERIEL_SPEC],
  301. [BATCH_NO],
  302. [PACKAGE_CODE],
  303. [UNIT_CODE],
  304. [PUTAWAY_QTY],
  305. [SUPPLIER_CODE],
  306. [SUPPLIER_NAME],
  307. [PRODUCT_DATE],
  308. [EXP_DATE],
  309. [PUTAWAY_DTL_STATUS],
  310. [INSPECTION_RESULT],
  311. [ITEM_STATUS],
  312. [DESCRIBE],
  313. [CREATE_BY],
  314. [CREATE_TIME],
  315. [UPDATE_BY],
  316. [UPDATE_TIME],
  317. [DATA_VERSION],
  318. [REMARKS1],
  319. [REMARKS2],
  320. [REMARKS3],
  321. [REMARKS4],
  322. [REMARKS5]
  323. )
  324. VALUES
  325. (
  326. '{item.PUTAWAY_DTL_ID}',
  327. '{item.PUTAWAY_ID}',
  328. '{item.MATERIEL_CODE}',
  329. '{item.MATERIEL_NAME}',
  330. '{item.MATERIEL_BARCODE}',
  331. '{item.MATERIEL_SPEC}',
  332. '{item.BATCH_NO}',
  333. '{item.PACKAGE_CODE}',
  334. '{item.UNIT_CODE}',
  335. '{item.PUTAWAY_QTY}',
  336. '{item.SUPPLIER_CODE}',
  337. '{item.SUPPLIER_NAME}',
  338. '{item.PRODUCT_DATE}',
  339. '{item.EXP_DATE}',
  340. '0',
  341. 'Wait',
  342. '1',
  343. '{item.DESCRIBE}',
  344. '{item.CREATE_BY}',
  345. getdate(),
  346. '{item.UPDATE_BY}',
  347. getdate(),
  348. 0,
  349. NULL,
  350. NULL,
  351. NULL,
  352. NULL,
  353. NULL
  354. );
  355. ");
  356. sqlList.Add(sqlAddWmsInPutAwayDtl.ToString());
  357. }
  358. #endregion
  359. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  360. if (row > 0)
  361. {
  362. return SuccessMessageStatus("新增上架单数据成功!", row);
  363. }
  364. else
  365. {
  366. return FailMessageStatus("新增上架单数据失败!", row);
  367. }
  368. }
  369. catch (Exception ex)
  370. {
  371. return FailMessageStatus($"新增上架单数据发生异常,【{ex.Message}】");
  372. }
  373. }
  374. /// <summary>
  375. /// 修改上架单数据
  376. /// </summary>
  377. /// <param name="wmsInPutAway">上架主表对象</param>
  378. /// <returns></returns>
  379. public OperateResultInfo EditWmsInPutAwayData(WmsInPutAwayResult wmsInPutAway)
  380. {
  381. try
  382. {
  383. #region SQL语句生成
  384. List<string> sqlList = new List<string>();
  385. string sqlUpdateWmsInPutAway = $@"
  386. UPDATE [WMS_IN_PUTAWAY]
  387. SET
  388. [PUTAWAY_NO] = '{wmsInPutAway.PutawayNo}',
  389. [SOURCE_NO] = '{wmsInPutAway.SourceNo}',
  390. [PUTAWAY_TYPE] = '{wmsInPutAway.PutawayType}',
  391. [TRAY_CODE] = '{wmsInPutAway.TrayCode}',
  392. [PALLET_CODE] = '{wmsInPutAway.PalletCode}',
  393. [SBIN_CODE] = '{wmsInPutAway.SbinCode}',
  394. [EBIN_CODE] = '{wmsInPutAway.EbinCode}',
  395. [PUTAWAY_PRIORITY] = '{wmsInPutAway.PutawayPriority}',
  396. [PUTAWAY_STATUS] = '{wmsInPutAway.PutawayStatus}',
  397. [DESCRIBE] = '{wmsInPutAway.Describe}',
  398. [UPDATE_BY] = '{wmsInPutAway.UpdateBy}',
  399. [UPDATE_TIME] = GETDATE(),
  400. [DATA_VERSION] = [DATA_VERSION] + 1
  401. WHERE
  402. [PUTAWAY_ID] = '{wmsInPutAway.PutawayId}';
  403. ";
  404. sqlList.Add(sqlUpdateWmsInPutAway);
  405. foreach (WmsInPutAwayDtlResult item in wmsInPutAway.WmsInPutAwayDtlList)
  406. {
  407. if (item.REMARKS1 == "更新" || item.REMARKS1 == "删除")
  408. {
  409. string sqlUpdateWmsInPutAwayDtl = $@"
  410. UPDATE [WMS_IN_PUTAWAY_DTL]
  411. SET
  412. [MATERIEL_CODE] = '{item.MATERIEL_CODE}',
  413. [MATERIEL_NAME] = '{item.MATERIEL_NAME}',
  414. [MATERIEL_BARCODE] = '{item.MATERIEL_BARCODE}',
  415. [MATERIEL_SPEC] = '{item.MATERIEL_SPEC}',
  416. [BATCH_NO] = '{item.BATCH_NO}',
  417. [PACKAGE_CODE] = '{item.PACKAGE_CODE}',
  418. [UNIT_CODE] = '{item.UNIT_CODE}',
  419. [PUTAWAY_QTY] = '{item.PUTAWAY_QTY}',
  420. [SUPPLIER_CODE] = '{item.SUPPLIER_CODE}',
  421. [SUPPLIER_NAME] = '{item.SUPPLIER_CODE}',
  422. [PRODUCT_DATE] = '{item.PRODUCT_DATE}',
  423. [EXP_DATE] = '{item.EXP_DATE}',
  424. [PUTAWAY_DTL_STATUS] = '{item.PUTAWAY_DTL_STATUS}',
  425. [INSPECTION_RESULT] = '{item.INSPECTION_RESULT}',
  426. [ITEM_STATUS] = '{item.ITEM_STATUS}',
  427. [DESCRIBE] = '{item.DESCRIBE}',
  428. [UPDATE_BY] = '{item.UPDATE_BY}',
  429. [UPDATE_TIME] = getdate(),
  430. [DATA_VERSION] = [DATA_VERSION] + 1
  431. WHERE
  432. [PUTAWAY_DTL_ID] = '{item.PUTAWAY_DTL_ID}'
  433. AND [PUTAWAY_ID] = '{wmsInPutAway.PutawayId}';
  434. ";
  435. sqlList.Add(sqlUpdateWmsInPutAwayDtl);
  436. }
  437. if (item.REMARKS1 == "添加")
  438. {
  439. StringBuilder sqlAddWmsInPutAwayDtl = new StringBuilder();
  440. item.PUTAWAY_DTL_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_Dtl_Id"));
  441. item.PUTAWAY_ID = wmsInPutAway.PutawayId;
  442. item.PUTAWAY_DTL_STATUS = 0;
  443. sqlAddWmsInPutAwayDtl.Append($@"
  444. INSERT INTO [WMS_IN_PUTAWAY_DTL] (
  445. [PUTAWAY_DTL_ID],
  446. [PUTAWAY_ID],
  447. [MATERIEL_CODE],
  448. [MATERIEL_NAME],
  449. [MATERIEL_BARCODE],
  450. [MATERIEL_SPEC],
  451. [BATCH_NO],
  452. [PACKAGE_CODE],
  453. [UNIT_CODE],
  454. [PUTAWAY_QTY],
  455. [SUPPLIER_CODE],
  456. [SUPPLIER_NAME],
  457. [PRODUCT_DATE],
  458. [EXP_DATE],
  459. [PUTAWAY_DTL_STATUS],
  460. [INSPECTION_RESULT],
  461. [ITEM_STATUS],
  462. [DESCRIBE],
  463. [CREATE_BY],
  464. [CREATE_TIME],
  465. [UPDATE_BY],
  466. [UPDATE_TIME],
  467. [DATA_VERSION],
  468. [REMARKS1],
  469. [REMARKS2],
  470. [REMARKS3],
  471. [REMARKS4],
  472. [REMARKS5]
  473. )
  474. VALUES
  475. (
  476. '{item.PUTAWAY_DTL_ID}',
  477. '{item.PUTAWAY_ID}',
  478. '{item.MATERIEL_CODE}',
  479. '{item.MATERIEL_NAME}',
  480. '{item.MATERIEL_BARCODE}',
  481. '{item.MATERIEL_SPEC}',
  482. '{item.BATCH_NO}',
  483. '{item.PACKAGE_CODE}',
  484. '{item.UNIT_CODE}',
  485. '{item.PUTAWAY_QTY}',
  486. '{item.SUPPLIER_CODE}',
  487. '{item.SUPPLIER_NAME}',
  488. '{item.PRODUCT_DATE}',
  489. '{item.EXP_DATE}',
  490. '0',
  491. 'Wait',
  492. '1',
  493. '{item.DESCRIBE}',
  494. '{item.CREATE_BY}',
  495. getdate(),
  496. '{item.UPDATE_BY}',
  497. getdate(),
  498. 0,
  499. NULL,
  500. NULL,
  501. NULL,
  502. NULL,
  503. NULL
  504. );
  505. ");
  506. sqlList.Add(sqlAddWmsInPutAwayDtl.ToString());
  507. }
  508. }
  509. #endregion
  510. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  511. if (row > 0)
  512. {
  513. return SuccessMessageStatus("修改上架单数据成功!", row);
  514. }
  515. else
  516. {
  517. return FailMessageStatus("修改上架单数据失败!", row);
  518. }
  519. }
  520. catch (Exception ex)
  521. {
  522. return FailMessageStatus($"修改上架单数据发生异常,【{ex.Message}】");
  523. }
  524. }
  525. /// <summary>
  526. /// 删除上架单数据
  527. /// </summary>
  528. /// <param name="wmsInPutAway">上架单主表对象</param>
  529. /// <returns></returns>
  530. public OperateResultInfo DeleteWmsInPutAwayData(WmsInPutAwayResult wmsInPutAway)
  531. {
  532. try
  533. {
  534. #region SQL语句生成
  535. string[] putawayIdList = wmsInPutAway.PutawayNo.Split(',');
  536. List<string> sqlList = new List<string>();
  537. foreach (string item in putawayIdList)
  538. {
  539. string sqlDeleteWmsPutAway = $@"
  540. UPDATE WMS_IN_PUTAWAY
  541. SET PUTAWAY_STATUS = '111',
  542. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  543. UPDATE_TIME = GETDATE(),
  544. DATA_VERSION = DATA_VERSION + 1
  545. WHERE
  546. PUTAWAY_ID = '{item}';
  547. ";
  548. string sqlDeleteWmsInPutAwayDtl = $@"
  549. UPDATE WMS_IN_PUTAWAY_DTL
  550. SET PUTAWAY_DTL_STATUS = '111',
  551. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  552. UPDATE_TIME = GETDATE(),
  553. DATA_VERSION = DATA_VERSION + 1
  554. WHERE
  555. PUTAWAY_ID = '{item}';
  556. ";
  557. sqlList.Add(sqlDeleteWmsPutAway);
  558. sqlList.Add(sqlDeleteWmsInPutAwayDtl);
  559. /*
  560. ToDo: 后续增加删除移至历史表中。
  561. */
  562. }
  563. #endregion
  564. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  565. if (row > 0)
  566. {
  567. return SuccessMessageStatus("删除上架单数据成功!", row);
  568. }
  569. else
  570. {
  571. return FailMessageStatus("删除上架单数据失败!", row);
  572. }
  573. }
  574. catch (Exception ex)
  575. {
  576. return FailMessageStatus($"删除上架单数据发生异常,【{ex.Message}】");
  577. }
  578. }
  579. /// <summary>
  580. /// 获取待上架托盘信息
  581. /// </summary>
  582. /// <returns></returns>
  583. public OperateResultInfo<List<WmsInPutAwayPalletMsgResult>> GetPutAwayPalletMsgList()
  584. {
  585. try
  586. {
  587. string sql = $@"SELECT * FROM VW_WMS_IN_PUTAWAY_PALLET_MSG";
  588. List<WmsInPutAwayPalletMsgResult> resultList = new DataRepository<WmsInPutAwayPalletMsgResult>(_dataContext).Query(sql).ToList();
  589. OperateResultInfo<List<WmsInPutAwayPalletMsgResult>> retDataMsg = SuccessStatus(resultList);
  590. return retDataMsg;
  591. }
  592. catch (Exception ex)
  593. {
  594. return FailMessageStatus<List<WmsInPutAwayPalletMsgResult>>($"查询待上架托盘数据发生异常,【{ex.Message}】", null);
  595. }
  596. }
  597. /// <summary>
  598. /// 手动上架
  599. /// </summary>
  600. /// <param name="wmsInPutAway">上架单主表实体类对象</param>
  601. /// <returns></returns>
  602. public OperateResultInfo ManualPutAwayPallet(WmsInPutAwayResult wmsInPutAway, PutAwayMethodsEnum methodsEnum)
  603. {
  604. try
  605. {
  606. #region SQL语句生成
  607. List<string> sqlList = new List<string>();
  608. //检查目标货位是否存在
  609. string sqlQueryRetreatRegionBinMsg = $@"SELECT
  610. A.*, B.USER_NAME Create_Name,
  611. C.USER_NAME Update_Name
  612. FROM
  613. BAS_BIN A
  614. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  615. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  616. WHERE
  617. A.BIN_CODE = '{wmsInPutAway.EbinCode}'";
  618. List<BinResult> resultBinList = new DataRepository<BinResult>(_dataContext).Query(sqlQueryRetreatRegionBinMsg).ToList();
  619. if (resultBinList.Count <= 0)
  620. {
  621. return FailMessageStatus($"上架库位【{wmsInPutAway.EbinCode}】不存在,请重新输入或扫描。");
  622. }
  623. WmsInPutAwayResult wmsInPutAwayInDataBase;
  624. if (methodsEnum == PutAwayMethodsEnum.WMS手动上架 || methodsEnum == PutAwayMethodsEnum.PDA手动上架)
  625. {
  626. string sqlQueryWmsInPutAway = $@"
  627. SELECT
  628. PUTAWAY_ID,
  629. PUTAWAY_NO,
  630. SOURCE_NO,
  631. PUTAWAY_TYPE,
  632. PUTAWAY_TYPE_NAME,
  633. TRAY_CODE,
  634. PALLET_CODE,
  635. SBIN_CODE,
  636. EBIN_CODE,
  637. PUTAWAY_PRIORITY,
  638. PUTAWAY_STATUS,
  639. PUTAWAY_STATUS_NAME,
  640. [DESCRIBE],
  641. CREATE_BY,
  642. CREATE_NAME,
  643. CREATE_TIME,
  644. UPDATE_BY,
  645. UPDATE_NAME,
  646. UPDATE_TIME
  647. FROM
  648. VW_WMS_IN_PUTAWAY
  649. WHERE
  650. TRAY_CODE = '{wmsInPutAway.TrayCode}'
  651. AND PALLET_CODE = '{wmsInPutAway.PalletCode}'
  652. AND PUTAWAY_STATUS < 99
  653. ";
  654. List<WmsInPutAwayResult> resultPuatAwayList = new DataRepository<WmsInPutAwayResult>(_dataContext).Query(sqlQueryWmsInPutAway).ToList();
  655. wmsInPutAwayInDataBase = resultPuatAwayList[0];
  656. }
  657. else
  658. {
  659. wmsInPutAwayInDataBase = wmsInPutAway;
  660. }
  661. string sqlUpdatePutAway = $@"
  662. UPDATE WMS_IN_PUTAWAY
  663. SET PUTAWAY_STATUS = 99,
  664. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  665. UPDATE_TIME = GETDATE(),
  666. DATA_VERSION = DATA_VERSION + 1
  667. WHERE
  668. PUTAWAY_ID = '{wmsInPutAwayInDataBase.PutawayId}'
  669. ";
  670. sqlList.Add(sqlUpdatePutAway);
  671. string sqlUpdatePutAwayDtl = $@"
  672. UPDATE WMS_IN_PUTAWAY_DTL
  673. SET PUTAWAY_DTL_STATUS = 99,
  674. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  675. UPDATE_TIME = GETDATE(),
  676. DATA_VERSION = DATA_VERSION + 1
  677. WHERE
  678. PUTAWAY_ID = '{wmsInPutAwayInDataBase.PutawayId}'
  679. ";
  680. sqlList.Add(sqlUpdatePutAwayDtl);
  681. string sqlQueryWmsPutAwayDtl = $@"
  682. SELECT
  683. *
  684. FROM
  685. VW_WMS_IN_PUTAWAY_DTL
  686. WHERE
  687. PUTAWAY_NO = '{wmsInPutAwayInDataBase.PutawayNo}';
  688. ";
  689. List<WmsInPutAwayDtlResult> resultDtlList = new DataRepository<WmsInPutAwayDtlResult>(_dataContext).Query(sqlQueryWmsPutAwayDtl).ToList();
  690. #region 孙亚龙 20210515 舍弃代码
  691. //foreach (WmsInPutAwayDtlResult item in resultDtlList)
  692. //{
  693. // if (wmsInPutAway.PutawayType == 1)
  694. // {
  695. // string sqlQueryReceiptRecord = $@"SELECT * FROM VW_WMS_IN_RECEIPT_RECORD WHERE TRAY_CODE = '{wmsInPutAway.TrayCode}' AND PALLET_CODE = '{wmsInPutAway.PalletCode}' AND RECEIPT_RECORD_STATUS = 0";
  696. // List<WmsInReceiptRecordResult> resultReceiptRecordList = new DataRepository<WmsInReceiptRecordResult>(_dataContext).Query(sqlQueryReceiptRecord).ToList();
  697. // WmsInReceiptRecordResult recRecordMd = resultReceiptRecordList.Find(x => x.MATERIEL_CODE == item.MATERIEL_CODE && x.BATCH_NO == item.BATCH_NO);
  698. // string sqlQueryWmsReceiptDtl = $@"
  699. // SELECT
  700. // *
  701. // FROM
  702. // VW_WMS_IN_RECEIPT_DTL
  703. // WHERE
  704. // RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  705. // ";
  706. // List<WmsInReceiptDtlResult> resultRetreatDtlList = new DataRepository<WmsInReceiptDtlResult>(_dataContext).Query(sqlQueryWmsReceiptDtl).ToList();
  707. // if (resultRetreatDtlList[0].PUTAWAY_QTY == 0)
  708. // {
  709. // string sqlUpdateReceiptDtl = $@"
  710. // UPDATE WMS_IN_RECEIPT_DTL
  711. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  712. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  713. // UPDATE_TIME = GETDATE(),
  714. // DATA_VERSION = DATA_VERSION + 1
  715. // WHERE
  716. // RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  717. // ";
  718. // sqlList.Add(sqlUpdateReceiptDtl);
  719. // string sqlUpdateReceiptDtl1 = $@"
  720. // IF NOT EXISTS (
  721. // SELECT
  722. // 1
  723. // FROM
  724. // WMS_IN_RECEIPT_DTL
  725. // WHERE
  726. // RECEIPT_DTL_QTY < PUTAWAY_QTY
  727. // AND RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  728. // ) UPDATE WMS_IN_RECEIPT_DTL
  729. // SET RECEIPT_DTL_STATUS = 99
  730. // WHERE
  731. // RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  732. // ";
  733. // sqlList.Add(sqlUpdateReceiptDtl1);
  734. // }
  735. // else
  736. // {
  737. // string sqlUpdateReceiptDtl = $@"
  738. // IF NOT EXISTS (
  739. // SELECT
  740. // 1
  741. // FROM
  742. // WMS_IN_RECEIPT_DTL
  743. // WHERE
  744. // RECEIPT_DTL_QTY < PUTAWAY_QTY
  745. // AND RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  746. // ) UPDATE WMS_IN_RECEIPT_DTL
  747. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  748. // RECEIPT_DTL_STATUS = 99,
  749. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  750. // UPDATE_TIME = GETDATE(),
  751. // DATA_VERSION = DATA_VERSION + 1
  752. // WHERE
  753. // RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}' ;
  754. // ELSE
  755. // UPDATE WMS_IN_RECEIPT_DTL
  756. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  757. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  758. // UPDATE_TIME = GETDATE(),
  759. // DATA_VERSION = DATA_VERSION + 1
  760. // WHERE
  761. // RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  762. // ";
  763. // sqlList.Add(sqlUpdateReceiptDtl);
  764. // }
  765. // }
  766. // else if (wmsInPutAway.PutawayType == 2)
  767. // {
  768. // string sqlQueryRetreatRecord = $@"SELECT * FROM VW_WMS_IN_RETREAT_RECORD WHERE TRAY_CODE = '{wmsInPutAway.TrayCode}' AND PALLET_CODE = '{wmsInPutAway.PalletCode}' AND RETREAT_RECORD_STATUS = 0";
  769. // List<WmsInRetreatRecordResult> resultRetreatRecordList = new DataRepository<WmsInRetreatRecordResult>(_dataContext).Query(sqlQueryRetreatRecord).ToList();
  770. // WmsInRetreatRecordResult retRecordMd = resultRetreatRecordList.Find(x => x.MATERIEL_CODE == item.MATERIEL_CODE && x.BATCH_NO == item.BATCH_NO);
  771. // string sqlQueryWmsReceiptDtl = $@"
  772. // SELECT
  773. // *
  774. // FROM
  775. // VW_WMS_IN_RETREAT_DTL
  776. // WHERE
  777. // RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}'
  778. // ";
  779. // List<WmsInRetreatDtlResult> resultRetreatDtlList = new DataRepository<WmsInRetreatDtlResult>(_dataContext).Query(sqlQueryWmsReceiptDtl).ToList();
  780. // if (resultRetreatDtlList[0].PUTAWAY_QTY == 0)
  781. // {
  782. // string sqlUpdateReceiptDtl = $@"
  783. // UPDATE WMS_IN_RETREAT_DTL
  784. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  785. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  786. // UPDATE_TIME = GETDATE(),
  787. // DATA_VERSION = DATA_VERSION + 1
  788. // WHERE
  789. // RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}';
  790. // ";
  791. // sqlList.Add(sqlUpdateReceiptDtl);
  792. // }
  793. // else
  794. // {
  795. // string sqlUpdateReceiptDtl = $@"
  796. // IF NOT EXISTS (
  797. // SELECT
  798. // 1
  799. // FROM
  800. // WMS_IN_RETREAT_DTL
  801. // WHERE
  802. // RETREAT_QTY < PUTAWAY_QTY
  803. // AND RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}'
  804. // ) UPDATE WMS_IN_RETREAT_DTL
  805. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  806. // RETREAT_DTL_STATUS = 99,
  807. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  808. // UPDATE_TIME = GETDATE(),
  809. // DATA_VERSION = DATA_VERSION + 1
  810. // WHERE
  811. // RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}' ;
  812. // ELSE
  813. // UPDATE WMS_IN_RETREAT_DTL
  814. // SET PUTAWAY_QTY = PUTAWAY_QTY + '{item.PUTAWAY_QTY}',
  815. // UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  816. // UPDATE_TIME = GETDATE(),
  817. // DATA_VERSION = DATA_VERSION + 1
  818. // WHERE
  819. // RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}';
  820. // ";
  821. // sqlList.Add(sqlUpdateReceiptDtl);
  822. // }
  823. // }
  824. // else if (wmsInPutAway.PutawayType == 6)
  825. // {
  826. // }
  827. // else
  828. // {
  829. // return FailMessageStatus($"上架单类型暂时不能手动上架。");
  830. // }
  831. //}
  832. #endregion
  833. string status = string.Empty;
  834. if (wmsInPutAway.PutawayType == 1)
  835. {
  836. string sqlQueryReceiptRecord = $@"SELECT * FROM VW_WMS_IN_RECEIPT_RECORD WHERE TRAY_CODE = '{wmsInPutAway.TrayCode}' AND PALLET_CODE = '{wmsInPutAway.PalletCode}' AND RECEIPT_RECORD_STATUS = 0";
  837. List<WmsInReceiptRecordResult> resultReceiptRecordList = new DataRepository<WmsInReceiptRecordResult>(_dataContext).Query(sqlQueryReceiptRecord).ToList();
  838. List<int> tmpReceiptIdLst = new List<int>();
  839. foreach (WmsInReceiptRecordResult recRecordMd in resultReceiptRecordList)
  840. {
  841. //WmsInReceiptRecordResult recRecordMd = resultReceiptRecordList.Find(x => x.MATERIEL_CODE == item.MATERIEL_CODE && x.BATCH_NO == item.BATCH_NO);
  842. int receiptId = tmpReceiptIdLst.FirstOrDefault(x => x == recRecordMd.RECEIPT_ID);
  843. if (receiptId <= 0)
  844. {
  845. tmpReceiptIdLst.Add(recRecordMd.RECEIPT_ID);
  846. }
  847. string sqlQueryWmsReceiptDtl = $@"
  848. SELECT
  849. *
  850. FROM
  851. VW_WMS_IN_RECEIPT_DTL
  852. WHERE
  853. RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  854. ";
  855. List<WmsInReceiptDtlResult> resultRetreatDtlList = new DataRepository<WmsInReceiptDtlResult>(_dataContext).Query(sqlQueryWmsReceiptDtl).ToList();
  856. if (resultRetreatDtlList[0].PutawayQty == 0)
  857. {
  858. string sqlUpdateReceiptDtl = $@"
  859. UPDATE WMS_IN_RECEIPT_DTL
  860. SET PUTAWAY_QTY = PUTAWAY_QTY + '{recRecordMd.RECEIPT_QTY}',
  861. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  862. UPDATE_TIME = GETDATE(),
  863. DATA_VERSION = DATA_VERSION + 1
  864. WHERE
  865. RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  866. ";
  867. sqlList.Add(sqlUpdateReceiptDtl);
  868. string sqlUpdateReceiptDtl1 = $@"
  869. IF NOT EXISTS (
  870. SELECT
  871. 1
  872. FROM
  873. WMS_IN_RECEIPT_DTL
  874. WHERE
  875. RECEIPT_DTL_QTY < PUTAWAY_QTY
  876. AND RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  877. ) UPDATE WMS_IN_RECEIPT_DTL
  878. SET RECEIPT_DTL_STATUS = 99
  879. WHERE
  880. RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  881. ";
  882. sqlList.Add(sqlUpdateReceiptDtl1);
  883. }
  884. else
  885. {
  886. string sqlUpdateReceiptDtl = $@"
  887. IF NOT EXISTS (
  888. SELECT
  889. 1
  890. FROM
  891. WMS_IN_RECEIPT_DTL
  892. WHERE
  893. RECEIPT_DTL_QTY < PUTAWAY_QTY
  894. AND RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}'
  895. ) UPDATE WMS_IN_RECEIPT_DTL
  896. SET PUTAWAY_QTY = PUTAWAY_QTY + '{recRecordMd.RECEIPT_QTY}',
  897. RECEIPT_DTL_STATUS = 99,
  898. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  899. UPDATE_TIME = GETDATE(),
  900. DATA_VERSION = DATA_VERSION + 1
  901. WHERE
  902. RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}' ;
  903. ELSE
  904. UPDATE WMS_IN_RECEIPT_DTL
  905. SET PUTAWAY_QTY = PUTAWAY_QTY + '{recRecordMd.RECEIPT_QTY}',
  906. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  907. UPDATE_TIME = GETDATE(),
  908. DATA_VERSION = DATA_VERSION + 1
  909. WHERE
  910. RECEIPT_DTL_ID = '{recRecordMd.RECEIPT_DTL_ID}';
  911. ";
  912. sqlList.Add(sqlUpdateReceiptDtl);
  913. }
  914. }
  915. status = "55";
  916. foreach (int item in tmpReceiptIdLst)
  917. {
  918. string sqlUpdateReceipt = $@"
  919. IF NOT EXISTS (
  920. SELECT
  921. 1
  922. FROM
  923. VW_WMS_IN_RECEIPT_DTL
  924. WHERE
  925. RECEIPT_ID = '{item}'
  926. AND RECEIPT_DTL_STATUS < 99
  927. ) UPDATE WMS_IN_RECEIPT
  928. SET RECEIPT_STATUS = 99,
  929. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  930. UPDATE_TIME = GETDATE(),
  931. DATA_VERSION = DATA_VERSION + 1
  932. WHERE
  933. RECEIPT_ID = '{item}'
  934. ";
  935. sqlList.Add(sqlUpdateReceipt);
  936. }
  937. string sqlUpdateReceiptRecord = $@"
  938. UPDATE WMS_IN_RECEIPT_RECORD
  939. SET RECEIPT_RECORD_STATUS = 1,
  940. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  941. UPDATE_TIME = GETDATE(),
  942. BIN_CODE='{wmsInPutAway.EbinCode}',
  943. DATA_VERSION = DATA_VERSION + 1
  944. WHERE
  945. TRAY_CODE = '{wmsInPutAway.TrayCode}'
  946. AND PALLET_CODE = '{wmsInPutAway.PalletCode}'
  947. AND RECEIPT_RECORD_STATUS = 0;
  948. ";// 收货组盘完成
  949. sqlList.Add(sqlUpdateReceiptRecord);
  950. }
  951. else if (wmsInPutAway.PutawayType == 2)
  952. {
  953. string sqlQueryRetreatRecord = $@"SELECT * FROM VW_WMS_IN_RETREAT_RECORD WHERE TRAY_CODE = '{wmsInPutAway.TrayCode}' AND PALLET_CODE = '{wmsInPutAway.PalletCode}' AND RETREAT_RECORD_STATUS = 0";
  954. List<WmsInRetreatRecordResult> resultRetreatRecordList = new DataRepository<WmsInRetreatRecordResult>(_dataContext).Query(sqlQueryRetreatRecord).ToList();
  955. List<int> tmpRetreatIdLst = new List<int>();
  956. foreach (WmsInRetreatRecordResult retRecordMd in resultRetreatRecordList)
  957. {
  958. //WmsInRetreatRecordResult retRecordMd = resultRetreatRecordList.Find(x => x.MATERIEL_CODE == item.MATERIEL_CODE && x.BATCH_NO == item.BATCH_NO);
  959. int receiptId = tmpRetreatIdLst.FirstOrDefault(x => x == retRecordMd.RETREAT_ID);
  960. if (receiptId <= 0)
  961. {
  962. tmpRetreatIdLst.Add(retRecordMd.RETREAT_ID);
  963. }
  964. string sqlQueryWmsReceiptDtl = $@"
  965. SELECT
  966. *
  967. FROM
  968. VW_WMS_IN_RETREAT_DTL
  969. WHERE
  970. RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}'
  971. ";
  972. List<WmsInRetreatDtlResult> resultRetreatDtlList = new DataRepository<WmsInRetreatDtlResult>(_dataContext).Query(sqlQueryWmsReceiptDtl).ToList();
  973. if (resultRetreatDtlList[0].PUTAWAY_QTY == 0)
  974. {
  975. string sqlUpdateReceiptDtl = $@"
  976. UPDATE WMS_IN_RETREAT_DTL
  977. SET PUTAWAY_QTY = PUTAWAY_QTY + '{retRecordMd.RETREAT_QTY}',
  978. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  979. UPDATE_TIME = GETDATE(),
  980. DATA_VERSION = DATA_VERSION + 1
  981. WHERE
  982. RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}';
  983. ";
  984. sqlList.Add(sqlUpdateReceiptDtl);
  985. }
  986. else
  987. {
  988. string sqlUpdateReceiptDtl = $@"
  989. IF NOT EXISTS (
  990. SELECT
  991. 1
  992. FROM
  993. WMS_IN_RETREAT_DTL
  994. WHERE
  995. RETREAT_QTY < PUTAWAY_QTY
  996. AND RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}'
  997. ) UPDATE WMS_IN_RETREAT_DTL
  998. SET PUTAWAY_QTY = PUTAWAY_QTY + '{retRecordMd.RETREAT_QTY}',
  999. RETREAT_DTL_STATUS = 99,
  1000. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1001. UPDATE_TIME = GETDATE(),
  1002. DATA_VERSION = DATA_VERSION + 1
  1003. WHERE
  1004. RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}' ;
  1005. ELSE
  1006. UPDATE WMS_IN_RETREAT_DTL
  1007. SET PUTAWAY_QTY = PUTAWAY_QTY + '{retRecordMd.RETREAT_QTY}',
  1008. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1009. UPDATE_TIME = GETDATE(),
  1010. DATA_VERSION = DATA_VERSION + 1
  1011. WHERE
  1012. RETREAT_DTL_ID = '{retRecordMd.RETREAT_DTL_ID}';
  1013. ";
  1014. sqlList.Add(sqlUpdateReceiptDtl);
  1015. }
  1016. }
  1017. status = "55";
  1018. foreach (int item in tmpRetreatIdLst)
  1019. {
  1020. string sqlUpdateReceipt = $@"
  1021. IF NOT EXISTS (
  1022. SELECT
  1023. 1
  1024. FROM
  1025. VW_WMS_IN_RETREAT_DTL
  1026. WHERE
  1027. RETREAT_ID = '{item}'
  1028. AND RETREAT_DTL_STATUS < 99
  1029. ) UPDATE WMS_IN_RETREAT
  1030. SET RETREAT_STATUS = 99,
  1031. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1032. UPDATE_TIME = GETDATE(),
  1033. DATA_VERSION = DATA_VERSION + 1
  1034. WHERE
  1035. RETREAT_ID = '{item}'
  1036. ";
  1037. sqlList.Add(sqlUpdateReceipt);
  1038. }
  1039. string sqlUpdateReceiptRecord = $@"
  1040. UPDATE WMS_IN_RETREAT_RECORD
  1041. SET RETREAT_RECORD_STATUS = 1,
  1042. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1043. UPDATE_TIME = GETDATE(),
  1044. DATA_VERSION = DATA_VERSION + 1
  1045. WHERE
  1046. TRAY_CODE = '{wmsInPutAway.TrayCode}'
  1047. AND PALLET_CODE = '{wmsInPutAway.PalletCode}'
  1048. AND RETREAT_RECORD_STATUS = 0;
  1049. ";
  1050. sqlList.Add(sqlUpdateReceiptRecord);
  1051. }
  1052. else if (wmsInPutAway.PutawayType == 6)
  1053. {
  1054. status = "54";
  1055. }
  1056. else
  1057. {
  1058. return FailMessageStatus($"上架单类型暂时不能手动上架。");
  1059. }
  1060. string sqlUpdateWmsStkTray = $@"
  1061. UPDATE WMS_STK_TRAY
  1062. SET TRAY_STATUS = '{status}',
  1063. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1064. UPDATE_TIME = GETDATE(),
  1065. DATA_VERSION = DATA_VERSION + 1
  1066. WHERE
  1067. TRAY_CODE = '{wmsInPutAway.TrayCode}';
  1068. ";
  1069. string sqlUpdateWmsStkTrayDtl = $@"
  1070. UPDATE WMS_STK_TRAY_DTL
  1071. SET TRAY_DTL_STATUS = '{status}',
  1072. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1073. UPDATE_TIME = GETDATE(),
  1074. DATA_VERSION = DATA_VERSION + 1
  1075. WHERE
  1076. TRAY_ID IN (
  1077. SELECT
  1078. TRAY_ID
  1079. FROM
  1080. WMS_STK_TRAY
  1081. WHERE
  1082. TRAY_CODE = '{wmsInPutAway.TrayCode}'
  1083. );
  1084. ";
  1085. string sqlQueryWmsStkTray = $@"SELECT * FROM VW_WMS_STK_TRAY WHERE TRAY_CODE = '{wmsInPutAway.TrayCode}' AND TRAY_STATUS < 99";
  1086. List<WmsStkTrayResult> resultWmsStkTrayList = new DataRepository<WmsStkTrayResult>(_dataContext).Query(sqlQueryWmsStkTray).ToList();
  1087. string sqlAddWmsStkBalance = $@"
  1088. INSERT INTO [WMS_STK_BALANCE] (
  1089. [BALANCE_ID],
  1090. [AREA_CODE],
  1091. [AREA_NAME],
  1092. [WAREHOUSE_CODE],
  1093. [WAREHOUSE_NAME],
  1094. [REGION_CODE],
  1095. [REGION_NAME],
  1096. [BIN_CODE],
  1097. [BIN_NAME],
  1098. [TRAY_ID],
  1099. [TRAY_CODE],
  1100. [PALLET_CODE],
  1101. [INWH_TIME],
  1102. [BALANCE_STATUS],
  1103. [DESCRIBE],
  1104. [CREATE_BY],
  1105. [CREATE_TIME],
  1106. [UPDATE_BY],
  1107. [UPDATE_TIME],
  1108. [DATA_VERSION],
  1109. [REMARKS1],
  1110. [REMARKS2],
  1111. [REMARKS3],
  1112. [REMARKS4],
  1113. [REMARKS5]
  1114. )
  1115. VALUES
  1116. (
  1117. '{Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Balance_Id"))}',
  1118. 'AreaTest1',
  1119. '区域测试1',
  1120. 'WarehouseTest1',
  1121. '仓库测试1',
  1122. '{resultBinList[0].REGION_CODE}',
  1123. '{resultBinList[0].REGION_NAME}',
  1124. '{resultBinList[0].BIN_CODE}',
  1125. '{resultBinList[0].BIN_NAME}',
  1126. '{resultWmsStkTrayList[0].TRAY_ID}',
  1127. '{wmsInPutAway.TrayCode}',
  1128. '{wmsInPutAway.PalletCode}',
  1129. getdate(),
  1130. '55',
  1131. '{wmsInPutAwayInDataBase.Describe}',
  1132. '{wmsInPutAway.CreateBy}',
  1133. getdate(),
  1134. '{wmsInPutAway.UpdateBy}',
  1135. getdate(),
  1136. 0,
  1137. NULL,
  1138. NULL,
  1139. NULL,
  1140. NULL,
  1141. NULL
  1142. );
  1143. ";
  1144. sqlList.Add($@"update WMS_STK_BALANCE set BALANCE_STATUS = 99,UPDATE_BY = '{wmsInPutAway.UpdateBy}',UPDATE_TIME = getdate(),DATA_VERSION = DATA_VERSION + 1 where TRAY_CODE = '{wmsInPutAway.TrayCode}'");
  1145. sqlList.Add(sqlUpdateWmsStkTray);
  1146. sqlList.Add(sqlUpdateWmsStkTrayDtl);
  1147. if (wmsInPutAway.PutawayType == 6)
  1148. {
  1149. sqlList.Add($"update WMS_STK_BALANCE set BALANCE_STATUS = '{status}',UPDATE_BY = '{wmsInPutAway.UpdateBy}',UPDATE_TIME = getdate(),DATA_VERSION = DATA_VERSION + 1 where TRAY_CODE in (select TRAY_CODE from WMS_STK_INVENTORY_DTL where TRAY_CODE = '{wmsInPutAway.TrayCode}')");
  1150. }
  1151. else
  1152. {
  1153. sqlList.Add(sqlAddWmsStkBalance);
  1154. }
  1155. sqlList.Add($@"
  1156. UPDATE WMS_TSK_TASK
  1157. SET CLOC_CODE = ELOC_CODE,
  1158. UPDATE_BY = '{wmsInPutAway.UpdateBy}',
  1159. UPDATE_TIME = GETDATE(),
  1160. DATA_VERSION = DATA_VERSION + 1,
  1161. TASK_STATUS = 99,
  1162. TASK_MSG = '【{methodsEnum}】-- 更新WMS大任务为:【任务完成】状态'
  1163. WHERE
  1164. TRAY_CODE = '{wmsInPutAway.TrayCode}'
  1165. AND TASK_STATUS < 99
  1166. ");
  1167. #endregion
  1168. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  1169. if (row > 0)
  1170. {
  1171. return SuccessMessageStatus($"【{methodsEnum}】-- 操作成功!", row);
  1172. }
  1173. else
  1174. {
  1175. return FailMessageStatus($"【{methodsEnum}】-- 操作失败!", row);
  1176. }
  1177. }
  1178. catch (Exception ex)
  1179. {
  1180. return FailMessageStatus($"【{methodsEnum}】-- 操作发生异常,【{ex.Message}】");
  1181. }
  1182. }
  1183. #region 2021 0224 孙亚龙新增WCS上报托盘运行状态
  1184. public OperateResultInfo UploadPalletRunStatus(NoticeWmsPalletStatus parm)
  1185. {
  1186. try
  1187. {
  1188. int wmsTaskStatus;
  1189. if (parm.palletCurrRunStatus == PalletTaskRunStatusEnum.托盘入库执行中)
  1190. {
  1191. wmsTaskStatus = 55;
  1192. }
  1193. else
  1194. {
  1195. wmsTaskStatus = 77;
  1196. }
  1197. string sqlQueryWmsTask = $@"
  1198. SELECT
  1199. *
  1200. FROM
  1201. VW_WMS_TSK_TASK
  1202. WHERE
  1203. TASK_NO = '{parm.TaskNo}'
  1204. AND TASK_STATUS = '{wmsTaskStatus}'
  1205. ";
  1206. List<WmsTaskResult> resultList = new DataRepository<WmsTaskResult>(_dataContext).Query(sqlQueryWmsTask).ToList();
  1207. if (resultList == null || resultList.Count <= 0)
  1208. {
  1209. return FailMessageStatus($"WCS上报托盘运行状态的参数错误,无法获取WMS大任务信息!");
  1210. }
  1211. string sqlQueryWmsInPutAway = $@"
  1212. SELECT
  1213. PUTAWAY_ID,
  1214. PUTAWAY_NO,
  1215. SOURCE_NO,
  1216. PUTAWAY_TYPE,
  1217. PUTAWAY_TYPE_NAME,
  1218. TRAY_CODE,
  1219. PALLET_CODE,
  1220. SBIN_CODE,
  1221. EBIN_CODE,
  1222. PUTAWAY_PRIORITY,
  1223. PUTAWAY_STATUS,
  1224. PUTAWAY_STATUS_NAME,
  1225. [DESCRIBE],
  1226. CREATE_BY,
  1227. CREATE_NAME,
  1228. CREATE_TIME,
  1229. UPDATE_BY,
  1230. UPDATE_NAME,
  1231. UPDATE_TIME
  1232. FROM
  1233. VW_WMS_IN_PUTAWAY
  1234. WHERE
  1235. TRAY_CODE = '{parm.TrayCode}' AND PUTAWAY_STATUS < 99
  1236. ";
  1237. List<WmsInPutAwayResult> resultPuatAwayList = new DataRepository<WmsInPutAwayResult>(_dataContext).Query(sqlQueryWmsInPutAway).ToList();
  1238. if (resultPuatAwayList == null || resultPuatAwayList.Count <= 0)
  1239. {
  1240. return FailMessageStatus($"WCS上报托盘运行状态的参数错误,无法获取托盘上架单信息!");
  1241. }
  1242. WmsTaskResult wmsTaskResultDataBase = resultList[0];
  1243. WmsInPutAwayResult wmsInPutAwayInDataBase = resultPuatAwayList[0];
  1244. if (parm.palletCurrRunStatus == PalletTaskRunStatusEnum.托盘入库执行中)
  1245. {
  1246. List<string> sqlList = new List<string>();
  1247. string sqlUpdatePutAway = $@"
  1248. UPDATE WMS_IN_PUTAWAY
  1249. SET PUTAWAY_STATUS = 55,
  1250. SBIN_CODE = '{wmsTaskResultDataBase.SBIN_CODE}',
  1251. EBIN_CODE = '{wmsTaskResultDataBase.EBIN_CODE}',
  1252. UPDATE_BY = '{parm.OperateUserId}',
  1253. UPDATE_TIME = GETDATE(),
  1254. DATA_VERSION = DATA_VERSION + 1
  1255. WHERE
  1256. PUTAWAY_ID = '{wmsInPutAwayInDataBase.PutawayId}'
  1257. ";
  1258. sqlList.Add(sqlUpdatePutAway);
  1259. string sqlUpdatePutAwayDtl = $@"
  1260. UPDATE WMS_IN_PUTAWAY_DTL
  1261. SET PUTAWAY_DTL_STATUS = 55,
  1262. UPDATE_BY = '{parm.OperateUserId}',
  1263. UPDATE_TIME = GETDATE(),
  1264. DATA_VERSION = DATA_VERSION + 1
  1265. WHERE
  1266. PUTAWAY_ID = '{wmsInPutAwayInDataBase.PutawayId}'
  1267. ";
  1268. sqlList.Add(sqlUpdatePutAwayDtl);
  1269. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  1270. if (row > 0)
  1271. {
  1272. return SuccessMessageStatus("WCS上报托盘运行状态成功!", row);
  1273. }
  1274. else
  1275. {
  1276. return FailMessageStatus("WCS上报托盘运行状态失败!", row);
  1277. }
  1278. }
  1279. else
  1280. {
  1281. return ManualPutAwayPallet(wmsInPutAwayInDataBase, PutAwayMethodsEnum.WCS自动上架);
  1282. }
  1283. }
  1284. catch (Exception ex)
  1285. {
  1286. return FailMessageStatus($"WCS上报托盘运行状态函数发生异常:【{ex.Message}】");
  1287. }
  1288. }
  1289. #endregion
  1290. }
  1291. }