WmsInRetreatService.cs 78 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232
  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.Instock;
  6. using NXWMS.Model.AppModels.Condition.Instock;
  7. using NXWMS.Model.AppModels.Result.Balance;
  8. using NXWMS.Model.AppModels.Result.Base;
  9. using NXWMS.Model.AppModels.Result.Instock;
  10. using NXWMS.Model.Common;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using WestDistance.DapperORM.Repository.Repositorys;
  17. namespace NXWMS.Service.NXWMS.Instock
  18. {
  19. /// <summary>
  20. /// 退料单服务
  21. /// </summary>
  22. [AutoInject(typeof(IWmsInRetreatService), InjectType.Scope)]
  23. public class WmsInRetreatService : ServiceBase, IWmsInRetreatService
  24. {
  25. #region 全局变量、构造注入
  26. /// <summary>
  27. /// 系统操作仓储中转
  28. /// </summary>
  29. private IDataRepositoryContext _dataContext;
  30. /// <summary>
  31. /// SQL节点仓储
  32. /// </summary>
  33. private ISQLNodeRepository _iSQLNodeRepository;
  34. /// <summary>
  35. /// 配置
  36. /// </summary>
  37. private IConfiguration _configuration;
  38. /// <summary>
  39. /// 构造注入
  40. /// </summary>
  41. /// <param name="dataRepositoryContext"></param>
  42. /// <param name="configuration"></param>
  43. /// <param name="iSQLNodeRepository"></param>
  44. public WmsInRetreatService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
  45. {
  46. this._dataContext = dataRepositoryContext;
  47. this._configuration = configuration;
  48. this._iSQLNodeRepository = iSQLNodeRepository;
  49. }
  50. #endregion
  51. /// <summary>
  52. /// 分页查询退料单主表数据
  53. /// </summary>
  54. /// <param name="retreatSearchMd">退料单查询条件实体类对象</param>
  55. /// <returns></returns>
  56. public OperateResultInfo<List<WmsInRetreatResult>> GetWmsInRetreatListForPage(WmsInRetreatSearchMd retreatSearchMd)
  57. {
  58. try
  59. {
  60. #region SQL语句生成
  61. StringBuilder sqlCondition = new StringBuilder();
  62. if (!string.IsNullOrEmpty(retreatSearchMd.RetreatNoMsg))
  63. {
  64. sqlCondition.Append($" AND RETREAT_NO = '{retreatSearchMd.RetreatNoMsg}'");
  65. }
  66. if (!string.IsNullOrEmpty(retreatSearchMd.SourceNoMsg))
  67. {
  68. sqlCondition.Append($" AND SOUCE_NO = '{retreatSearchMd.SourceNoMsg}'");
  69. }
  70. if (!string.IsNullOrEmpty(retreatSearchMd.RetreaterMsg))
  71. {
  72. sqlCondition.Append($" AND RETREATER = '{retreatSearchMd.RetreaterMsg}'");
  73. }
  74. if (!string.IsNullOrEmpty(retreatSearchMd.RetreatType))
  75. {
  76. sqlCondition.Append($" AND RETREAT_TYPE = '{retreatSearchMd.RetreatType}'");
  77. }
  78. if (!string.IsNullOrEmpty(retreatSearchMd.RetreatStatus))
  79. {
  80. sqlCondition.Append($" AND RETREAT_STATUS = '{retreatSearchMd.RetreatStatus}'");
  81. }
  82. if (!string.IsNullOrEmpty(retreatSearchMd.BatchNoMsg))
  83. {
  84. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE BATCH_NO = '{retreatSearchMd.BatchNoMsg}')");
  85. }
  86. if (!string.IsNullOrEmpty(retreatSearchMd.MaterielMsg))
  87. {
  88. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE MATERIEL_CODE LIKE '%{retreatSearchMd.MaterielMsg}%' OR MATERIEL_NAME LIKE '%{retreatSearchMd.MaterielMsg}%' OR MATERIEL_BARCODE LIKE '%{retreatSearchMd.MaterielMsg}%')");
  89. }
  90. if (!string.IsNullOrEmpty(retreatSearchMd.SupplierMsg))
  91. {
  92. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE SUPPLIER_CODE LIKE '%{retreatSearchMd.SupplierMsg}%' OR SUPPLIER_NAME LIKE '%{retreatSearchMd.SupplierMsg}%')");
  93. }
  94. if (!string.IsNullOrEmpty(retreatSearchMd.StartCreateTime))
  95. {
  96. sqlCondition.Append($" AND CREATE_TIME >= '{retreatSearchMd.StartCreateTime}'");
  97. }
  98. if (!string.IsNullOrEmpty(retreatSearchMd.EndCreateTime))
  99. {
  100. sqlCondition.Append($" AND CREATE_TIME <= '{retreatSearchMd.EndCreateTime}'");
  101. }
  102. if (!string.IsNullOrEmpty(retreatSearchMd.StartProductTime))
  103. {
  104. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE PRODUCT_DATE >= '{retreatSearchMd.StartProductTime}')");
  105. }
  106. if (!string.IsNullOrEmpty(retreatSearchMd.EndProductTime))
  107. {
  108. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE PRODUCT_DATE <= '{retreatSearchMd.EndProductTime}')");
  109. }
  110. if (!string.IsNullOrEmpty(retreatSearchMd.StartExpTime))
  111. {
  112. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE EXP_DATE >= '{retreatSearchMd.StartExpTime}')");
  113. }
  114. if (!string.IsNullOrEmpty(retreatSearchMd.EndExpTime))
  115. {
  116. sqlCondition.Append($" AND RETREAT_ID IN (SELECT RETREAT_ID FROM VW_WMS_IN_RETREAT_DTL WHERE EXP_DATE <= '{retreatSearchMd.EndExpTime}')");
  117. }
  118. StringBuilder sqlCountRetreatData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_IN_RETREAT WHERE 1=1");
  119. sqlCountRetreatData.Append(sqlCondition.ToString());
  120. int pageStartIndex = (retreatSearchMd.PageNum - 1) * retreatSearchMd.EveryPageQty;
  121. int pageEndIndex = retreatSearchMd.PageNum * retreatSearchMd.EveryPageQty;
  122. StringBuilder sqlQueryRetreatData = new StringBuilder($@"
  123. SELECT
  124. RETREAT_ID,
  125. RETREAT_NO,
  126. SOUCE_NO,
  127. RETREAT_TYPE,
  128. RETREAT_TYPE_NAME,
  129. RETREAT_TIME,
  130. RETREATER,
  131. RETREAT_STATUS,
  132. RETREAT_STATUS_NAME,
  133. [DESCRIBE],
  134. CREATE_BY,
  135. CREATE_NAME,
  136. CREATE_TIME,
  137. UPDATE_BY,
  138. UPDATE_NAME,
  139. UPDATE_TIME
  140. FROM
  141. VW_WMS_IN_RETREAT
  142. WHERE
  143. 1=1
  144. {sqlCondition}
  145. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  146. OFFSET {pageStartIndex} ROWS
  147. FETCH NEXT {retreatSearchMd.EveryPageQty} ROWS ONLY
  148. ");
  149. #endregion
  150. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountRetreatData.ToString()));
  151. List<WmsInRetreatResult> resultList = new DataRepository<WmsInRetreatResult>(_dataContext).Query(sqlQueryRetreatData.ToString()).ToList();
  152. OperateResultInfo<List<WmsInRetreatResult>> retDataMsg = SuccessStatus(resultList);
  153. retDataMsg.DataCount = dataCount;
  154. return retDataMsg;
  155. }
  156. catch (Exception ex)
  157. {
  158. return FailMessageStatus<List<WmsInRetreatResult>>($"查询退料单数据发生异常,【{ex.Message}】", null);
  159. }
  160. }
  161. /// <summary>
  162. /// 根据退料单主键Id查询退料单明细数据
  163. /// </summary>
  164. /// <param name="wmsInRetreat">退料单对象</param>
  165. /// <returns></returns>
  166. public OperateResultInfo<WmsInRetreatResult> GetWmsInRetreatDtlListForID(WmsInRetreatResult wmsInRetreat)
  167. {
  168. try
  169. {
  170. #region SQL语句生成
  171. string sqlQueryWmsInRetreat = $@"
  172. SELECT
  173. RETREAT_ID,
  174. RETREAT_NO,
  175. SOUCE_NO,
  176. RETREAT_TYPE,
  177. RETREAT_TYPE_NAME,
  178. RETREAT_TIME,
  179. RETREATER,
  180. RETREAT_STATUS,
  181. RETREAT_STATUS_NAME,
  182. [DESCRIBE],
  183. CREATE_BY,
  184. CREATE_NAME,
  185. CREATE_TIME,
  186. UPDATE_BY,
  187. UPDATE_NAME,
  188. UPDATE_TIME
  189. FROM
  190. VW_WMS_IN_RETREAT
  191. WHERE
  192. RETREAT_ID = '{wmsInRetreat.RETREAT_ID}'
  193. ";
  194. string strWhere = string.Empty;
  195. if (wmsInRetreat.REMARKS1 == "查询已删除明细数据")
  196. {
  197. strWhere = "1=1";
  198. }
  199. else if (wmsInRetreat.REMARKS1 == "查询未组盘完成的退料单明细")
  200. {
  201. strWhere = "RETREAT_DTL_STATUS < 99 AND RETREAT_TRAY_QTY < RETREAT_QTY";
  202. }
  203. else
  204. {
  205. strWhere = "RETREAT_DTL_STATUS < 111";
  206. }
  207. string sqlQueryWmsRetreatDtl = $@"
  208. SELECT
  209. *
  210. FROM
  211. VW_WMS_IN_RETREAT_DTL
  212. WHERE
  213. RETREAT_ID = '{wmsInRetreat.RETREAT_ID}'
  214. AND {strWhere}
  215. ORDER BY RETREAT_DTL_STATUS,RETREAT_DTL_ID
  216. ";
  217. #endregion
  218. List<WmsInRetreatResult> resultList = new DataRepository<WmsInRetreatResult>(_dataContext).Query(sqlQueryWmsInRetreat).ToList();
  219. List<WmsInRetreatDtlResult> resultDtlList = new DataRepository<WmsInRetreatDtlResult>(_dataContext).Query(sqlQueryWmsRetreatDtl).ToList();
  220. wmsInRetreat = resultList[0];
  221. wmsInRetreat.WmsInRetreatDtlList = resultDtlList;
  222. OperateResultInfo<WmsInRetreatResult> retDataMsg = SuccessStatus(wmsInRetreat);
  223. return retDataMsg;
  224. }
  225. catch (Exception ex)
  226. {
  227. return FailMessageStatus<WmsInRetreatResult>($"查询退料单明细数据发生异常,【{ex.Message}】", null);
  228. }
  229. }
  230. /// <summary>
  231. /// 新增退料单数据
  232. /// </summary>
  233. /// <param name="wmsInRetreat">退料单主表对象</param>
  234. /// <returns></returns>
  235. public OperateResultInfo AddWmsInRetreatData(WmsInRetreatResult wmsInRetreat)
  236. {
  237. try
  238. {
  239. #region SQL语句生成
  240. List<string> sqlList = new List<string>();
  241. wmsInRetreat.RETREAT_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Retreat_Id"));
  242. wmsInRetreat.RETREAT_NO = new DataRepository<object>(_dataContext).GetSequenceMsg("Retreat_No");
  243. wmsInRetreat.RETREAT_STATUS = 0;
  244. StringBuilder sqlAddWmsRetreat = new StringBuilder();
  245. string retreatTime = DateTime.Compare(wmsInRetreat.RETREAT_TIME, new DateTime()) == 0 ? "NULL" : $"'{wmsInRetreat.RETREAT_TIME}'";
  246. sqlAddWmsRetreat.Append($@"
  247. INSERT INTO [WMS_IN_RETREAT] (
  248. [RETREAT_ID],
  249. [RETREAT_NO],
  250. [RETREATER],
  251. [RETREAT_TYPE],
  252. [RETREAT_TIME],
  253. [SOUCE_NO],
  254. [RETREAT_STATUS],
  255. [DESCRIBE],
  256. [CREATE_BY],
  257. [CREATE_TIME],
  258. [UPDATE_BY],
  259. [UPDATE_TIME],
  260. [DATA_VERSION],
  261. [REMARKS1],
  262. [REMARKS2],
  263. [REMARKS3],
  264. [REMARKS4],
  265. [REMARKS5]
  266. )
  267. VALUES
  268. (
  269. '{wmsInRetreat.RETREAT_ID}',
  270. '{wmsInRetreat.RETREAT_NO}',
  271. '{wmsInRetreat.RETREATER}',
  272. '{wmsInRetreat.RETREAT_TYPE}',
  273. {retreatTime},
  274. '{wmsInRetreat.SOUCE_NO}',
  275. '{wmsInRetreat.RETREAT_STATUS}',
  276. '{wmsInRetreat.DESCRIBE}',
  277. '{wmsInRetreat.CREATE_BY}',
  278. getdate(),
  279. '{wmsInRetreat.UPDATE_BY}',
  280. getdate(),
  281. 0,
  282. NULL,
  283. NULL,
  284. NULL,
  285. NULL,
  286. NULL
  287. );
  288. ");
  289. sqlList.Add(sqlAddWmsRetreat.ToString());
  290. foreach (WmsInRetreatDtlResult item in wmsInRetreat.WmsInRetreatDtlList)
  291. {
  292. StringBuilder sqlAddWmsInRetreatDtl = new StringBuilder();
  293. item.RETREAT_DTL_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Retreat_Dtl_Id"));
  294. item.RETREAT_ID = wmsInRetreat.RETREAT_ID;
  295. item.RETREAT_DTL_STATUS = 0;
  296. sqlAddWmsInRetreatDtl.Append($@"
  297. INSERT INTO [WMS_IN_RETREAT_DTL] (
  298. [RETREAT_DTL_ID],
  299. [RETREAT_ID],
  300. [MATERIEL_CODE],
  301. [MATERIEL_NAME],
  302. [MATERIEL_BARCODE],
  303. [MATERIEL_SPEC],
  304. [BATCH_NO],
  305. [PACKAGE_CODE],
  306. [UNIT_CODE],
  307. [RETREAT_QTY],
  308. [RETREAT_TRAY_QTY],
  309. [PUTAWAY_QTY],
  310. [SUPPLIER_CODE],
  311. [SUPPLIER_NAME],
  312. [PRODUCT_DATE],
  313. [EXP_DATE],
  314. [RETREAT_DTL_STATUS],
  315. [INSPECTION_RESULT],
  316. [ITEM_STATUS],
  317. [DESCRIBE],
  318. [CREATE_BY],
  319. [CREATE_TIME],
  320. [UPDATE_BY],
  321. [UPDATE_TIME],
  322. [DATA_VERSION],
  323. [REMARKS1],
  324. [REMARKS2],
  325. [REMARKS3],
  326. [REMARKS4],
  327. [REMARKS5]
  328. )
  329. VALUES
  330. (
  331. '{item.RETREAT_DTL_ID}',
  332. '{item.RETREAT_ID}',
  333. '{item.MATERIEL_CODE}',
  334. '{item.MATERIEL_NAME}',
  335. '{item.MATERIEL_BARCODE}',
  336. '{item.MATERIEL_SPEC}',
  337. '{item.BATCH_NO}',
  338. '{item.PACKAGE_CODE}',
  339. '{item.UNIT_CODE}',
  340. '{item.RETREAT_QTY}',
  341. '{item.RETREAT_TRAY_QTY}',
  342. '{item.PUTAWAY_QTY}',
  343. '{item.SUPPLIER_CODE}',
  344. '{item.SUPPLIER_NAME}',
  345. '{item.PRODUCT_DATE}',
  346. '{item.EXP_DATE}',
  347. '0',
  348. 'Wait',
  349. '1',
  350. '{item.DESCRIBE}',
  351. '{item.CREATE_BY}',
  352. getdate(),
  353. '{item.UPDATE_BY}',
  354. getdate(),
  355. 0,
  356. NULL,
  357. NULL,
  358. NULL,
  359. NULL,
  360. NULL
  361. );
  362. ");
  363. sqlList.Add(sqlAddWmsInRetreatDtl.ToString());
  364. }
  365. #endregion
  366. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  367. if (row > 0)
  368. {
  369. return SuccessMessageStatus("新增退料单数据成功!", row);
  370. }
  371. else
  372. {
  373. return FailMessageStatus("新增退料单数据失败!", row);
  374. }
  375. }
  376. catch (Exception ex)
  377. {
  378. return FailMessageStatus($"新增退料单数据发生异常,【{ex.Message}】");
  379. }
  380. }
  381. /// <summary>
  382. /// 修改退料单数据
  383. /// </summary>
  384. /// <param name="wmsInRetreat">退料主表对象</param>
  385. /// <returns></returns>
  386. public OperateResultInfo EditWmsInRetreatData(WmsInRetreatResult wmsInRetreat)
  387. {
  388. try
  389. {
  390. #region SQL语句生成
  391. List<string> sqlList = new List<string>();
  392. string retreatTime = DateTime.Compare(wmsInRetreat.RETREAT_TIME, new DateTime()) == 0 ? "NULL" : $"'{wmsInRetreat.RETREAT_TIME}'";
  393. string sqlUpdateWmsInRetreat = $@"
  394. UPDATE [WMS_IN_RETREAT]
  395. SET
  396. [RETREAT_NO] = '{wmsInRetreat.RETREAT_NO}',
  397. [RETREATER] = '{wmsInRetreat.RETREATER}',
  398. [RETREAT_TYPE] = '{wmsInRetreat.RETREAT_TYPE}',
  399. [RETREAT_TIME] = {retreatTime},
  400. [SOUCE_NO] = '{wmsInRetreat.SOUCE_NO}',
  401. [RETREAT_STATUS] = '{wmsInRetreat.RETREAT_STATUS}',
  402. [DESCRIBE] = '{wmsInRetreat.DESCRIBE}',
  403. [UPDATE_BY] = '{wmsInRetreat.UPDATE_BY}',
  404. [UPDATE_TIME] = GETDATE(),
  405. [DATA_VERSION] = [DATA_VERSION] + 1
  406. WHERE
  407. [RETREAT_ID] = '{wmsInRetreat.RETREAT_ID}';
  408. ";
  409. sqlList.Add(sqlUpdateWmsInRetreat);
  410. foreach (WmsInRetreatDtlResult item in wmsInRetreat.WmsInRetreatDtlList)
  411. {
  412. if (item.REMARKS1 == "更新" || item.REMARKS1 == "删除")
  413. {
  414. string sqlUpdateWmsInRetreatDtl = $@"
  415. UPDATE [WMS_IN_RETREAT_DTL]
  416. SET
  417. [MATERIEL_CODE] = '{item.MATERIEL_CODE}',
  418. [MATERIEL_NAME] = '{item.MATERIEL_NAME}',
  419. [MATERIEL_BARCODE] = '{item.MATERIEL_BARCODE}',
  420. [MATERIEL_SPEC] = '{item.MATERIEL_SPEC}',
  421. [BATCH_NO] = '{item.BATCH_NO}',
  422. [PACKAGE_CODE] = '{item.PACKAGE_CODE}',
  423. [UNIT_CODE] = '{item.UNIT_CODE}',
  424. [RETREAT_QTY] = '{item.RETREAT_QTY}',
  425. [RETREAT_TRAY_QTY] = '{item.RETREAT_TRAY_QTY}',
  426. [PUTAWAY_QTY] = '{item.PUTAWAY_QTY}',
  427. [SUPPLIER_CODE] = '{item.SUPPLIER_CODE}',
  428. [SUPPLIER_NAME] = '{item.SUPPLIER_CODE}',
  429. [PRODUCT_DATE] = '{item.PRODUCT_DATE}',
  430. [EXP_DATE] = '{item.EXP_DATE}',
  431. [RETREAT_DTL_STATUS] = '{item.RETREAT_DTL_STATUS}',
  432. [INSPECTION_RESULT] = '{item.INSPECTION_RESULT}',
  433. [ITEM_STATUS] = '{item.ITEM_STATUS}',
  434. [DESCRIBE] = '{item.DESCRIBE}',
  435. [UPDATE_BY] = '{item.UPDATE_BY}',
  436. [UPDATE_TIME] = getdate(),
  437. [DATA_VERSION] = [DATA_VERSION] + 1
  438. WHERE
  439. [RETREAT_DTL_ID] = '{item.RETREAT_DTL_ID}'
  440. AND [RETREAT_ID] = '{wmsInRetreat.RETREAT_ID}';
  441. ";
  442. sqlList.Add(sqlUpdateWmsInRetreatDtl);
  443. }
  444. if (item.REMARKS1 == "添加")
  445. {
  446. StringBuilder sqlAddWmsInRetreatDtl = new StringBuilder();
  447. item.RETREAT_DTL_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Retreat_Dtl_Id"));
  448. item.RETREAT_ID = wmsInRetreat.RETREAT_ID;
  449. item.RETREAT_DTL_STATUS = 0;
  450. sqlAddWmsInRetreatDtl.Append($@"
  451. INSERT INTO [WMS_IN_RETREAT_DTL] (
  452. [RETREAT_DTL_ID],
  453. [RETREAT_ID],
  454. [MATERIEL_CODE],
  455. [MATERIEL_NAME],
  456. [MATERIEL_BARCODE],
  457. [MATERIEL_SPEC],
  458. [BATCH_NO],
  459. [PACKAGE_CODE],
  460. [UNIT_CODE],
  461. [RETREAT_QTY],
  462. [RETREAT_TRAY_QTY],
  463. [PUTAWAY_QTY],
  464. [SUPPLIER_CODE],
  465. [SUPPLIER_NAME],
  466. [PRODUCT_DATE],
  467. [EXP_DATE],
  468. [RETREAT_DTL_STATUS],
  469. [INSPECTION_RESULT],
  470. [ITEM_STATUS],
  471. [DESCRIBE],
  472. [CREATE_BY],
  473. [CREATE_TIME],
  474. [UPDATE_BY],
  475. [UPDATE_TIME],
  476. [DATA_VERSION],
  477. [REMARKS1],
  478. [REMARKS2],
  479. [REMARKS3],
  480. [REMARKS4],
  481. [REMARKS5]
  482. )
  483. VALUES
  484. (
  485. '{item.RETREAT_DTL_ID}',
  486. '{item.RETREAT_ID}',
  487. '{item.MATERIEL_CODE}',
  488. '{item.MATERIEL_NAME}',
  489. '{item.MATERIEL_BARCODE}',
  490. '{item.MATERIEL_SPEC}',
  491. '{item.BATCH_NO}',
  492. '{item.PACKAGE_CODE}',
  493. '{item.UNIT_CODE}',
  494. '{item.RETREAT_QTY}',
  495. '{item.RETREAT_TRAY_QTY}',
  496. '{item.PUTAWAY_QTY}',
  497. '{item.SUPPLIER_CODE}',
  498. '{item.SUPPLIER_NAME}',
  499. '{item.PRODUCT_DATE}',
  500. '{item.EXP_DATE}',
  501. '0',
  502. 'Wait',
  503. '1',
  504. '{item.DESCRIBE}',
  505. '{item.CREATE_BY}',
  506. getdate(),
  507. '{item.UPDATE_BY}',
  508. getdate(),
  509. 0,
  510. NULL,
  511. NULL,
  512. NULL,
  513. NULL,
  514. NULL
  515. );
  516. ");
  517. sqlList.Add(sqlAddWmsInRetreatDtl.ToString());
  518. }
  519. }
  520. #endregion
  521. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  522. if (row > 0)
  523. {
  524. return SuccessMessageStatus("修改退料单数据成功!", row);
  525. }
  526. else
  527. {
  528. return FailMessageStatus("修改退料单数据失败!", row);
  529. }
  530. }
  531. catch (Exception ex)
  532. {
  533. return FailMessageStatus($"修改退料单数据发生异常,【{ex.Message}】");
  534. }
  535. }
  536. /// <summary>
  537. /// 删除退料单数据
  538. /// </summary>
  539. /// <param name="wmsInRetreat">退料单主表对象</param>
  540. /// <returns></returns>
  541. public OperateResultInfo DeleteWmsInRetreatData(WmsInRetreatResult wmsInRetreat)
  542. {
  543. try
  544. {
  545. #region SQL语句生成
  546. string[] retreatIdList = wmsInRetreat.RETREAT_NO.Split(',');
  547. List<string> sqlList = new List<string>();
  548. foreach (string item in retreatIdList)
  549. {
  550. string sqlDeleteWmsRetreat = $@"
  551. UPDATE WMS_IN_RETREAT
  552. SET RETREAT_STATUS = '111',
  553. UPDATE_BY = '{wmsInRetreat.UPDATE_BY}',
  554. UPDATE_TIME = GETDATE(),
  555. DATA_VERSION = DATA_VERSION + 1
  556. WHERE
  557. RETREAT_ID = '{item}';
  558. ";
  559. string sqlDeleteWmsInRetreatDtl = $@"
  560. UPDATE WMS_IN_RETREAT_DTL
  561. SET RETREAT_DTL_STATUS = '111',
  562. UPDATE_BY = '{wmsInRetreat.UPDATE_BY}',
  563. UPDATE_TIME = GETDATE(),
  564. DATA_VERSION = DATA_VERSION + 1
  565. WHERE
  566. RETREAT_ID = '{item}';
  567. ";
  568. sqlList.Add(sqlDeleteWmsRetreat);
  569. sqlList.Add(sqlDeleteWmsInRetreatDtl);
  570. /*
  571. ToDo: 后续增加删除移至历史表中。
  572. */
  573. }
  574. #endregion
  575. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  576. if (row > 0)
  577. {
  578. return SuccessMessageStatus("删除退料单数据成功!", row);
  579. }
  580. else
  581. {
  582. return FailMessageStatus("删除退料单数据失败!", row);
  583. }
  584. }
  585. catch (Exception ex)
  586. {
  587. return FailMessageStatus($"删除退料单数据发生异常,【{ex.Message}】");
  588. }
  589. }
  590. /// <summary>
  591. /// 分页查询退料记录数据
  592. /// </summary>
  593. /// <param name="retreatRecordSearchMd">退料记录查询条件实体类对象</param>
  594. /// <returns></returns>
  595. public OperateResultInfo<List<WmsInRetreatRecordResult>> GetWmsInRetreatRecordListForPage(WmsInRetreatRecordSearchMd retreatRecordSearchMd)
  596. {
  597. try
  598. {
  599. #region SQL语句生成
  600. StringBuilder sqlCondition = new StringBuilder();
  601. if (!string.IsNullOrEmpty(retreatRecordSearchMd.RetreatNoMsg))
  602. {
  603. sqlCondition.Append($" AND RETREAT_NO = '{retreatRecordSearchMd.RetreatNoMsg}'");
  604. }
  605. if (!string.IsNullOrEmpty(retreatRecordSearchMd.SourceNoMsg))
  606. {
  607. sqlCondition.Append($" AND SOURCE_NO = '{retreatRecordSearchMd.SourceNoMsg}'");
  608. }
  609. if (!string.IsNullOrEmpty(retreatRecordSearchMd.RegionNoMsg))
  610. {
  611. sqlCondition.Append($" AND REGION_CODE = '{retreatRecordSearchMd.RegionNoMsg}'");
  612. }
  613. if (!string.IsNullOrEmpty(retreatRecordSearchMd.BinNoMsg))
  614. {
  615. sqlCondition.Append($" AND (BIN_CODE like '%{retreatRecordSearchMd.BinNoMsg}%' OR BIN_NAME like '%{retreatRecordSearchMd.BinNoMsg}%')");
  616. }
  617. if (!string.IsNullOrEmpty(retreatRecordSearchMd.PalletNoMsg))
  618. {
  619. sqlCondition.Append($" AND PALLET_CODE = '{retreatRecordSearchMd.PalletNoMsg}'");
  620. }
  621. if (!string.IsNullOrEmpty(retreatRecordSearchMd.RetreaterMsg))
  622. {
  623. sqlCondition.Append($" AND RETREATER = '{retreatRecordSearchMd.RetreaterMsg}'");
  624. }
  625. if (!string.IsNullOrEmpty(retreatRecordSearchMd.MaterielMsg))
  626. {
  627. sqlCondition.Append($" AND (MATERIEL_CODE like '%{retreatRecordSearchMd.MaterielMsg}%' OR MATERIEL_NAME = '%{retreatRecordSearchMd.MaterielMsg}%')");
  628. }
  629. if (!string.IsNullOrEmpty(retreatRecordSearchMd.MaterielTypeMsg))
  630. {
  631. sqlCondition.Append($" AND (MATERIEL_TYPE_CODE = '%{retreatRecordSearchMd.MaterielTypeMsg}%' OR MATERIEL_TYPE_NAME = '%{retreatRecordSearchMd.MaterielTypeMsg}%')");
  632. }
  633. if (!string.IsNullOrEmpty(retreatRecordSearchMd.SupplierMsg))
  634. {
  635. sqlCondition.Append($" AND SUPPLIER_CODE = '{retreatRecordSearchMd.SupplierMsg}'");
  636. }
  637. if (!string.IsNullOrEmpty(retreatRecordSearchMd.BatchNoMsg))
  638. {
  639. sqlCondition.Append($" AND BATCH_NO = '{retreatRecordSearchMd.SupplierMsg}'");
  640. }
  641. if (!string.IsNullOrEmpty(retreatRecordSearchMd.ItemStatusMsg))
  642. {
  643. sqlCondition.Append($" AND ITEM_STATUS = '{retreatRecordSearchMd.ItemStatusMsg}'");
  644. }
  645. if (!string.IsNullOrEmpty(retreatRecordSearchMd.InspectionResultMsg))
  646. {
  647. sqlCondition.Append($" AND INSPECTION_RESULT = '{retreatRecordSearchMd.InspectionResultMsg}'");
  648. }
  649. if (!string.IsNullOrEmpty(retreatRecordSearchMd.RetreatRecordStatus))
  650. {
  651. sqlCondition.Append($" AND RETREAT_RECORD_STATUS = '{retreatRecordSearchMd.RetreatRecordStatus}'");
  652. }
  653. if (!string.IsNullOrEmpty(retreatRecordSearchMd.StartRetreatTime))
  654. {
  655. sqlCondition.Append($" AND RETREAT_TIME >= '{retreatRecordSearchMd.StartRetreatTime}'");
  656. }
  657. if (!string.IsNullOrEmpty(retreatRecordSearchMd.EndRetreatTime))
  658. {
  659. sqlCondition.Append($" AND RETREAT_TIME <= '{retreatRecordSearchMd.EndRetreatTime}'");
  660. }
  661. if (!string.IsNullOrEmpty(retreatRecordSearchMd.StartProductTime))
  662. {
  663. sqlCondition.Append($" AND PRODUCT_DATE >= '{retreatRecordSearchMd.StartProductTime}'");
  664. }
  665. if (!string.IsNullOrEmpty(retreatRecordSearchMd.EndProductTime))
  666. {
  667. sqlCondition.Append($" AND PRODUCT_DATE <= '{retreatRecordSearchMd.EndProductTime}'");
  668. }
  669. if (!string.IsNullOrEmpty(retreatRecordSearchMd.StartExpTime))
  670. {
  671. sqlCondition.Append($" AND EXP_DATE >= '{retreatRecordSearchMd.StartExpTime}'");
  672. }
  673. if (!string.IsNullOrEmpty(retreatRecordSearchMd.EndExpTime))
  674. {
  675. sqlCondition.Append($" AND EXP_DATE <= '{retreatRecordSearchMd.EndExpTime}'");
  676. }
  677. StringBuilder sqlCountRetreatData = new StringBuilder($@"SELECT COUNT(1) FROM VW_WMS_IN_RETREAT_RECORD WHERE 1=1");
  678. sqlCountRetreatData.Append(sqlCondition.ToString());
  679. int pageStartIndex = (retreatRecordSearchMd.PageNum - 1) * retreatRecordSearchMd.EveryPageQty;
  680. int pageEndIndex = retreatRecordSearchMd.PageNum * retreatRecordSearchMd.EveryPageQty;
  681. StringBuilder sqlQueryRetreatData = new StringBuilder($@"
  682. SELECT
  683. RETREAT_RECORD_ID,
  684. NEWID,
  685. RETREAT_ID,
  686. RETREAT_NO,
  687. RETREAT_DTL_ID,
  688. SOURCE_NO,
  689. REGION_CODE,
  690. REGION_NAME,
  691. BIN_CODE,
  692. BIN_NAME,
  693. TRAY_CODE,
  694. PALLET_CODE,
  695. RETREAT_TIME,
  696. RETREATER,
  697. MATERIEL_TYPE_CODE,
  698. MATERIEL_TYPE_NAME,
  699. MATERIEL_CODE,
  700. MATERIEL_NAME,
  701. MATERIEL_BARCODE,
  702. MATERIEL_SPEC,
  703. SUPPLIER_CODE,
  704. SUPPLIER_NAME,
  705. BATCH_NO,
  706. PACKAGE_CODE,
  707. UNIT_CODE,
  708. RETREAT_QTY,
  709. RETREAT_REASON,
  710. PRODUCT_DATE,
  711. EXP_DATE,
  712. RETREAT_RECORD_STATUS,
  713. RETREAT_RECORD_STATUS_NAME,
  714. INSPECTION_RESULT,
  715. INSPECTION_RESULT_NAME,
  716. ITEM_STATUS,
  717. ITEM_STATUS_NAME,
  718. [DESCRIBE],
  719. CREATE_BY,
  720. CREATE_NAME,
  721. CREATE_TIME,
  722. UPDATE_BY,
  723. UPDATE_NAME,
  724. UPDATE_TIME,
  725. DATA_VERSION,
  726. REMARKS1,
  727. REMARKS2,
  728. REMARKS3,
  729. REMARKS4,
  730. REMARKS5
  731. FROM
  732. VW_WMS_IN_RETREAT_RECORD
  733. WHERE
  734. 1=1
  735. {sqlCondition}
  736. ORDER BY UPDATE_TIME DESC,CREATE_TIME DESC
  737. OFFSET {pageStartIndex} ROWS
  738. FETCH NEXT {retreatRecordSearchMd.EveryPageQty} ROWS ONLY
  739. ");
  740. #endregion
  741. int dataCount = Convert.ToInt32(new DataRepository<object>(_dataContext).ExecuteScalar(sqlCountRetreatData.ToString()));
  742. List<WmsInRetreatRecordResult> resultList = new DataRepository<WmsInRetreatRecordResult>(_dataContext).Query(sqlQueryRetreatData.ToString()).ToList();
  743. OperateResultInfo<List<WmsInRetreatRecordResult>> retDataMsg = SuccessStatus(resultList);
  744. retDataMsg.DataCount = dataCount;
  745. return retDataMsg;
  746. }
  747. catch (Exception ex)
  748. {
  749. return FailMessageStatus<List<WmsInRetreatRecordResult>>($"查询退料记录数据发生异常,【{ex.Message}】", null);
  750. }
  751. }
  752. /// <summary>
  753. /// 添加退料组盘数据
  754. /// </summary>
  755. /// <param name="wmsStkTrayResult">组盘信息实体类对象</param>
  756. /// <returns></returns>
  757. public OperateResultInfo AddWmsInRetreatTrayData(WmsStkTrayResult wmsStkTrayResult)
  758. {
  759. try
  760. {
  761. if (wmsStkTrayResult.WmsStkTrayDtlList.Count > 0)
  762. {
  763. #region SQL语句生成
  764. List<string> sqlList = new List<string>();
  765. string sqlQueryRetreatRegionBinMsg = $@"
  766. SELECT
  767. A.*, B.USER_NAME Create_Name,
  768. C.USER_NAME Update_Name
  769. FROM
  770. BAS_BIN A
  771. LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
  772. LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
  773. WHERE
  774. A.REGION_CODE = 'SHDJ_Region'
  775. ";
  776. List<BinResult> resultList = new DataRepository<BinResult>(_dataContext).Query(sqlQueryRetreatRegionBinMsg).ToList();
  777. BinResult binMd = resultList[0];
  778. wmsStkTrayResult.TRAY_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Tray_Id"));
  779. wmsStkTrayResult.TRAY_CODE = new DataRepository<object>(_dataContext).GetSequenceMsg("Tray_Code");
  780. string sqlAddWmsStkTray = $@"
  781. INSERT INTO [WMS_STK_TRAY] (
  782. [TRAY_ID],
  783. [TRAY_CODE],
  784. [PALLET_CODE],
  785. [WEIGHT],
  786. [HEIGHT],
  787. [TRAYS_TYPE],
  788. [TRAY_LOADED_TYPE],
  789. [TRAY_STATUS],
  790. [DESCRIBE],
  791. [CREATE_BY],
  792. [CREATE_TIME],
  793. [UPDATE_BY],
  794. [UPDATE_TIME],
  795. [DATA_VERSION],
  796. [REMARKS1],
  797. [REMARKS2],
  798. [REMARKS3],
  799. [REMARKS4],
  800. [REMARKS5]
  801. )
  802. VALUES
  803. (
  804. '{wmsStkTrayResult.TRAY_ID}',
  805. '{wmsStkTrayResult.TRAY_CODE}',
  806. '{wmsStkTrayResult.PALLET_CODE}',
  807. '{wmsStkTrayResult.WEIGHT}',
  808. '{wmsStkTrayResult.HEIGHT}',
  809. '{wmsStkTrayResult.TRAYS_TYPE}',
  810. '{wmsStkTrayResult.TRAY_LOADED_TYPE}',
  811. '{wmsStkTrayResult.TRAY_STATUS}',
  812. '{wmsStkTrayResult.DESCRIBE}',
  813. '{wmsStkTrayResult.CREATE_BY}',
  814. getdate(),
  815. '{wmsStkTrayResult.UPDATE_BY}',
  816. getdate(),
  817. 0,
  818. NULL,
  819. NULL,
  820. NULL,
  821. NULL,
  822. NULL
  823. );
  824. ";
  825. sqlList.Add(sqlAddWmsStkTray);
  826. int putawayId = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_Id"));
  827. string puawayNo = new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_No");
  828. string sqlAddWmsInPutAway = $@"
  829. INSERT INTO [WMS_IN_PUTAWAY] (
  830. [PUTAWAY_ID],
  831. [PUTAWAY_NO],
  832. [SOURCE_NO],
  833. [PUTAWAY_TYPE],
  834. [TRAY_CODE],
  835. [PALLET_CODE],
  836. [SBIN_CODE],
  837. [PUTAWAY_PRIORITY],
  838. [PUTAWAY_STATUS],
  839. [DESCRIBE],
  840. [CREATE_BY],
  841. [CREATE_TIME],
  842. [UPDATE_BY],
  843. [UPDATE_TIME],
  844. [DATA_VERSION],
  845. [REMARKS1],
  846. [REMARKS2],
  847. [REMARKS3],
  848. [REMARKS4],
  849. [REMARKS5]
  850. )
  851. VALUES
  852. (
  853. '{putawayId}',
  854. '{puawayNo}',
  855. '{wmsStkTrayResult.WmsStkTrayDtlList[0].WmsInRetreatRecord.RETREAT_NO}',
  856. '{2}',
  857. '{wmsStkTrayResult.TRAY_CODE}',
  858. '{wmsStkTrayResult.PALLET_CODE}',
  859. '{binMd.BIN_CODE}',
  860. '{100}',
  861. '{0}',
  862. '{wmsStkTrayResult.DESCRIBE}',
  863. '{wmsStkTrayResult.CREATE_BY}',
  864. getdate(),
  865. '{wmsStkTrayResult.UPDATE_BY}',
  866. getdate(),
  867. 0,
  868. NULL,
  869. NULL,
  870. NULL,
  871. NULL,
  872. NULL
  873. );
  874. ";
  875. sqlList.Add(sqlAddWmsInPutAway);
  876. foreach (WmsStkTrayDtlResult item in wmsStkTrayResult.WmsStkTrayDtlList)
  877. {
  878. WmsStkTrayDtlExtResult trayDtlExtMd = item.WmsStkTrayDtlExtMd;
  879. WmsInRetreatRecordResult retreatRecordMd = item.WmsInRetreatRecord;
  880. item.TRAY_DTL_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Tray_Dtl_Id"));
  881. trayDtlExtMd.TRAY_DTL_EXT_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Tray_Dtl_Ext_Id"));
  882. trayDtlExtMd.TRAY_DTL_ID = item.TRAY_DTL_ID;
  883. trayDtlExtMd.TRAY_ID = wmsStkTrayResult.TRAY_ID;
  884. retreatRecordMd.RETREAT_RECORD_ID = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("Retreat_Record_Id"));
  885. int putawayDtlId = Convert.ToInt32(new DataRepository<object>(_dataContext).GetSequenceMsg("InPutaway_Dtl_Id"));
  886. retreatRecordMd.TRAY_CODE = wmsStkTrayResult.TRAY_CODE;
  887. retreatRecordMd.REGION_CODE = binMd.REGION_CODE;
  888. retreatRecordMd.REGION_NAME = binMd.REGION_NAME;
  889. retreatRecordMd.BIN_CODE = binMd.BIN_CODE;
  890. retreatRecordMd.BIN_NAME = binMd.BIN_NAME;
  891. string sqlAddWmsStkTrayDtl = $@"
  892. INSERT INTO [WMS_STK_TRAY_DTL] (
  893. [TRAY_DTL_ID],
  894. [TRAY_ID],
  895. [MATERIEL_ID],
  896. [MATERIEL_CODE],
  897. [MATERIEL_NAME],
  898. [MATERIEL_BARCODE],
  899. [QTY],
  900. [TRAY_DTL_STATUS],
  901. [DESCRIBE],
  902. [CREATE_BY],
  903. [CREATE_TIME],
  904. [UPDATE_BY],
  905. [UPDATE_TIME],
  906. [DATA_VERSION],
  907. [REMARKS1],
  908. [REMARKS2],
  909. [REMARKS3],
  910. [REMARKS4],
  911. [REMARKS5]
  912. )
  913. VALUES
  914. (
  915. '{item.TRAY_DTL_ID}',
  916. '{item.TRAY_ID}',
  917. '{item.MATERIEL_ID}',
  918. '{item.MATERIEL_CODE}',
  919. '{item.MATERIEL_NAME}',
  920. '{item.MATERIEL_BARCODE}',
  921. '{item.QTY}',
  922. '{0}',
  923. '{item.DESCRIBE}',
  924. '{item.CREATE_BY}',
  925. getdate(),
  926. '{item.UPDATE_BY}',
  927. getdate(),
  928. 0,
  929. NULL,
  930. NULL,
  931. NULL,
  932. NULL,
  933. NULL
  934. );
  935. ";
  936. string sqlAddWmsStkTrayDtlExt = $@"
  937. INSERT INTO [WMS_STK_TRAY_DTL_EXT] (
  938. [TRAY_DTL_EXT_ID],
  939. [TRAY_DTL_ID],
  940. [MATERIEL_SPEC],
  941. [PACKAGE_CODE],
  942. [UNIT_CODE],
  943. [BATCH_NO],
  944. [SUPPLIER_CODE],
  945. [SUPPLIER_NAME],
  946. [PRODUCT_DATE],
  947. [EXP_DATE],
  948. [INSPECTION_RESULT],
  949. [LOCK_FLAG],
  950. [MIN_PKG_QTY],
  951. [ECTEND_TIME_LEN],
  952. [SUPPLIER_BATCH],
  953. [ITEM_STATUS],
  954. [DESCRIBE],
  955. [CREATE_BY],
  956. [CREATE_TIME],
  957. [UPDATE_BY],
  958. [UPDATE_TIME],
  959. [DATA_VERSION],
  960. [REMARKS1],
  961. [REMARKS2],
  962. [REMARKS3],
  963. [REMARKS4],
  964. [REMARKS5]
  965. )
  966. VALUES
  967. (
  968. '{trayDtlExtMd.TRAY_DTL_EXT_ID}',
  969. '{trayDtlExtMd.TRAY_DTL_ID}',
  970. '{trayDtlExtMd.MATERIEL_SPEC}',
  971. '{trayDtlExtMd.PACKAGE_CODE}',
  972. '{trayDtlExtMd.UNIT_CODE}',
  973. '{trayDtlExtMd.BATCH_NO}',
  974. '{trayDtlExtMd.SUPPLIER_CODE}',
  975. '{trayDtlExtMd.SUPPLIER_NAME}',
  976. '{trayDtlExtMd.PRODUCT_DATE}',
  977. '{trayDtlExtMd.EXP_DATE}',
  978. '{trayDtlExtMd.INSPECTION_RESULT}',
  979. '{0}',
  980. '{trayDtlExtMd.MIN_PKG_QTY}',
  981. '{trayDtlExtMd.ECTEND_TIME_LEN}',
  982. '{trayDtlExtMd.SUPPLIER_BATCH}',
  983. '{trayDtlExtMd.ITEM_STATUS}',
  984. '{trayDtlExtMd.DESCRIBE}',
  985. '{trayDtlExtMd.CREATE_BY}',
  986. getdate(),
  987. '{trayDtlExtMd.UPDATE_BY}',
  988. getdate(),
  989. 0,
  990. NULL,
  991. NULL,
  992. NULL,
  993. NULL,
  994. NULL
  995. );
  996. ";
  997. string sqlAddWmsInRetreatRecord = $@"
  998. INSERT INTO [WMS_IN_RETREAT_RECORD] (
  999. [RETREAT_RECORD_ID],
  1000. [RETREAT_ID],
  1001. [RETREAT_NO],
  1002. [RETREAT_DTL_ID],
  1003. [SOURCE_NO],
  1004. [REGION_CODE],
  1005. [REGION_NAME],
  1006. [BIN_CODE],
  1007. [BIN_NAME],
  1008. [TRAY_CODE],
  1009. [PALLET_CODE],
  1010. [RETREAT_TIME],
  1011. [RETREATER],
  1012. [MATERIEL_CODE],
  1013. [MATERIEL_NAME],
  1014. [MATERIEL_BARCODE],
  1015. [MATERIEL_SPEC],
  1016. [SUPPLIER_CODE],
  1017. [SUPPLIER_NAME],
  1018. [BATCH_NO],
  1019. [PACKAGE_CODE],
  1020. [UNIT_CODE],
  1021. [RETREAT_QTY],
  1022. [PRODUCT_DATE],
  1023. [EXP_DATE],
  1024. [RETREAT_RECORD_STATUS],
  1025. [INSPECTION_RESULT],
  1026. [ITEM_STATUS],
  1027. [DESCRIBE],
  1028. [CREATE_BY],
  1029. [CREATE_TIME],
  1030. [UPDATE_BY],
  1031. [UPDATE_TIME],
  1032. [DATA_VERSION],
  1033. [REMARKS1],
  1034. [REMARKS2],
  1035. [REMARKS3],
  1036. [REMARKS4],
  1037. [REMARKS5]
  1038. )
  1039. VALUES
  1040. (
  1041. '{retreatRecordMd.RETREAT_RECORD_ID}',
  1042. '{retreatRecordMd.RETREAT_ID}',
  1043. '{retreatRecordMd.RETREAT_NO}',
  1044. '{retreatRecordMd.RETREAT_DTL_ID}',
  1045. '{retreatRecordMd.SOURCE_NO}',
  1046. '{retreatRecordMd.REGION_CODE}',
  1047. '{retreatRecordMd.REGION_NAME}',
  1048. '{retreatRecordMd.BIN_CODE}',
  1049. '{retreatRecordMd.BIN_NAME}',
  1050. '{retreatRecordMd.TRAY_CODE}',
  1051. '{retreatRecordMd.PALLET_CODE}',
  1052. '{retreatRecordMd.RETREAT_TIME}',
  1053. '{retreatRecordMd.RETREATER}',
  1054. '{retreatRecordMd.MATERIEL_CODE}',
  1055. '{retreatRecordMd.MATERIEL_NAME}',
  1056. '{retreatRecordMd.MATERIEL_BARCODE}',
  1057. '{retreatRecordMd.MATERIEL_SPEC}',
  1058. '{retreatRecordMd.SUPPLIER_CODE}',
  1059. '{retreatRecordMd.SUPPLIER_NAME}',
  1060. '{retreatRecordMd.BATCH_NO}',
  1061. '{retreatRecordMd.PACKAGE_CODE}',
  1062. '{retreatRecordMd.UNIT_CODE}',
  1063. '{retreatRecordMd.RETREAT_QTY}',
  1064. '{retreatRecordMd.PRODUCT_DATE}',
  1065. '{retreatRecordMd.EXP_DATE}',
  1066. '{retreatRecordMd.RETREAT_RECORD_STATUS}',
  1067. '{retreatRecordMd.INSPECTION_RESULT}',
  1068. '{retreatRecordMd.ITEM_STATUS}',
  1069. '{retreatRecordMd.DESCRIBE}',
  1070. '{retreatRecordMd.CREATE_BY}',
  1071. getdate(),
  1072. '{retreatRecordMd.UPDATE_BY}',
  1073. getdate(),
  1074. 0,
  1075. NULL,
  1076. NULL,
  1077. NULL,
  1078. NULL,
  1079. NULL
  1080. );
  1081. ";
  1082. string sqlAddWmsInPutAwayDtl = $@"
  1083. INSERT INTO [WMS_IN_PUTAWAY_DTL] (
  1084. [PUTAWAY_DTL_ID],
  1085. [PUTAWAY_ID],
  1086. [MATERIEL_CODE],
  1087. [MATERIEL_NAME],
  1088. [MATERIEL_BARCODE],
  1089. [MATERIEL_SPEC],
  1090. [BATCH_NO],
  1091. [PACKAGE_CODE],
  1092. [UNIT_CODE],
  1093. [PUTAWAY_QTY],
  1094. [SUPPLIER_CODE],
  1095. [SUPPLIER_NAME],
  1096. [PRODUCT_DATE],
  1097. [EXP_DATE],
  1098. [INSPECTION_RESULT],
  1099. [PUTAWAY_DTL_STATUS],
  1100. [ITEM_STATUS],
  1101. [DESCRIBE],
  1102. [CREATE_BY],
  1103. [CREATE_TIME],
  1104. [UPDATE_BY],
  1105. [UPDATE_TIME],
  1106. [DATA_VERSION],
  1107. [REMARKS1],
  1108. [REMARKS2],
  1109. [REMARKS3],
  1110. [REMARKS4],
  1111. [REMARKS5]
  1112. )
  1113. VALUES
  1114. (
  1115. '{putawayDtlId}',
  1116. '{putawayId}',
  1117. '{item.MATERIEL_CODE}',
  1118. '{item.MATERIEL_NAME}',
  1119. '{item.MATERIEL_BARCODE}',
  1120. '{trayDtlExtMd.MATERIEL_SPEC}',
  1121. '{trayDtlExtMd.BATCH_NO}',
  1122. '{trayDtlExtMd.PACKAGE_CODE}',
  1123. '{trayDtlExtMd.UNIT_CODE}',
  1124. '{item.QTY}',
  1125. '{trayDtlExtMd.SUPPLIER_CODE}',
  1126. '{trayDtlExtMd.SUPPLIER_NAME}',
  1127. '{trayDtlExtMd.PRODUCT_DATE}',
  1128. '{trayDtlExtMd.EXP_DATE}',
  1129. '{trayDtlExtMd.INSPECTION_RESULT}',
  1130. '{0}',
  1131. '{trayDtlExtMd.ITEM_STATUS}',
  1132. '{item.DESCRIBE}',
  1133. '{trayDtlExtMd.CREATE_BY}',
  1134. getdate(),
  1135. '{trayDtlExtMd.UPDATE_BY}',
  1136. getdate(),
  1137. 0,
  1138. NULL,
  1139. NULL,
  1140. NULL,
  1141. NULL,
  1142. NULL
  1143. );
  1144. ";
  1145. sqlList.Add(sqlAddWmsStkTrayDtl);
  1146. sqlList.Add(sqlAddWmsStkTrayDtlExt);
  1147. sqlList.Add(sqlAddWmsInRetreatRecord);
  1148. sqlList.Add(sqlAddWmsInPutAwayDtl);
  1149. string sqlUpdateWmsInRetreatDtl = $@"
  1150. UPDATE WMS_IN_RETREAT_DTL
  1151. SET
  1152. RETREAT_TRAY_QTY = RETREAT_TRAY_QTY + '{item.QTY}',
  1153. RETREAT_DTL_STATUS = '{55}',
  1154. UPDATE_BY = '{wmsStkTrayResult.UPDATE_BY}',
  1155. UPDATE_TIME = GETDATE(),
  1156. DATA_VERSION = DATA_VERSION + 1
  1157. WHERE
  1158. RETREAT_DTL_ID = '{retreatRecordMd.RETREAT_DTL_ID}'
  1159. AND RETREAT_ID = '{retreatRecordMd.RETREAT_ID}'
  1160. ";
  1161. sqlList.Add(sqlUpdateWmsInRetreatDtl);
  1162. }
  1163. string sqlUpdateWmsInRetreat = $@"
  1164. IF EXISTS (
  1165. SELECT
  1166. 1
  1167. FROM
  1168. WMS_IN_RETREAT_DTL
  1169. WHERE
  1170. RETREAT_DTL_STATUS = 55
  1171. AND RETREAT_ID = '{wmsStkTrayResult.WmsStkTrayDtlList[0].WmsInRetreatRecord.RETREAT_ID}'
  1172. ) UPDATE WMS_IN_RETREAT
  1173. SET RETREAT_STATUS = 55,
  1174. UPDATE_BY = '{wmsStkTrayResult.UPDATE_BY}',
  1175. UPDATE_TIME = GETDATE(),
  1176. DATA_VERSION = DATA_VERSION + 1
  1177. WHERE
  1178. RETREAT_ID = '{wmsStkTrayResult.WmsStkTrayDtlList[0].WmsInRetreatRecord.RETREAT_ID}' ;
  1179. ";
  1180. sqlList.Add(sqlUpdateWmsInRetreat);
  1181. #endregion
  1182. int row = new DataRepository<object>(_dataContext).ExecSqlListTran(sqlList);
  1183. if (row > 0)
  1184. {
  1185. return SuccessMessageStatus("新增退料组盘数据成功!", row);
  1186. }
  1187. else
  1188. {
  1189. return FailMessageStatus("新增退料组盘数据失败!", row);
  1190. }
  1191. }
  1192. else
  1193. {
  1194. return FailMessageStatus($"传入数据不存在组盘明细数据!");
  1195. }
  1196. }
  1197. catch (Exception ex)
  1198. {
  1199. return FailMessageStatus($"添加退料组盘数据发生异常,【{ex.Message}】");
  1200. }
  1201. }
  1202. }
  1203. }