123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- using DapperORMCore.Context.DataContext;
- using DapperORMCore.Dapper.BaseModel;
- using DapperORMCore.Model.CoreModel;
- using DapperORMCore.Repository.IRepositorys;
- using Microsoft.Extensions.Configuration;
- using NXWMS.DataAccess.Entity;
- using NXWMS.IService.NXPDA.InStock;
- using NXWMS.IService.NXPDA.OutStock;
- using NXWMS.IService.NXWMS.OutStock;
- using NXWMS.Model.AppModels.Condition.Balance;
- using NXWMS.Model.AppModels.Condition.Base;
- using NXWMS.Model.AppModels.Condition.NXPDA.InStock;
- using NXWMS.Model.AppModels.Condition.NXPDA.OutStock;
- using NXWMS.Model.AppModels.Result.Balance;
- using NXWMS.Model.AppModels.Result.Base;
- using NXWMS.Model.Common;
- using NXWMS.Service;
- using NXWMS.String.Enums;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using WestDistance.DapperORM.Repository.Repositorys;
- namespace NXWMS.Service.NXPDA.OutStock
- {
- /// <summary>
- /// 出库操作接口
- /// </summary>
- [AutoInject(typeof(IOutStockOperateService), InjectType.Scope)]
- public class OutStockOperateService : ServiceBase, IOutStockOperateService
- {
- /// <summary>
- /// 系统操作仓储中转
- /// </summary>
- private IDataRepositoryContext _dataContext;
- /// <summary>
- /// SQL节点仓储
- /// </summary>
- private ISQLNodeRepository _iSQLNodeRepository;
- /// <summary>
- /// 配置
- /// </summary>
- private IConfiguration _configuration;
- private IWmsOutPutDownService _wmsOutPutDownService;
- public OutStockOperateService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, IWmsOutPutDownService wmsOutPutDownService, ISQLNodeRepository iSQLNodeRepository)
- {
- this._dataContext = dataRepositoryContext;
- this._configuration = configuration;
- this._iSQLNodeRepository = iSQLNodeRepository;
- this._wmsOutPutDownService = wmsOutPutDownService;
- }
- public OperateResultInfo CommitArrivalNoticeDetail(CommitArrivalNoticeDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.MaterielBarCode))
- {
- return FailStatus("参数错误!");
- }
- try
- {
- _dataContext.BeginTran();
- var result = new DataRepository<WMS_OUT_INVOICE_DTL>(_dataContext).Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- if (result == null)
- {
- throw new Exception("物品条码不存在,请检查!");
- }
- var binResult = new DataRepository<BAS_BIN>(_dataContext).Query("BIN_CODE", info.BinCode.ToString()).FirstOrDefault();
- if (binResult == null)
- {
- throw new Exception("库位编码不存在,请检查!");
- }
- var userResult = new DataRepository<SYS_USER>(_dataContext).Query("USER_ID", info.OperationUserId.ToString()).FirstOrDefault();
- if (userResult == null)
- {
- throw new Exception("用户编码不存在,请检查!");
- }
- var materielResult = new DataRepository<BAS_MATERIEL>(_dataContext).Query("MATERIEL_CODE", result.MATERIEL_CODE.ToString()).FirstOrDefault();
- if (materielResult == null)
- {
- throw new Exception("物料编码不存在,请检查!");
- }
- var now = DateTime.Now;
- result.INVOICE_DTL_STATUS = 55;
- result.UPDATE_TIME = now;
- result.UPDATE_BY = info.OperationUserId;
- new DataRepository<WMS_OUT_INVOICE_DTL>(_dataContext).Update(result, "RECEIPT_DTL_ID", "NEWID");
- //确认托盘号
- var receiptResult = new DataRepository<WMS_OUT_INVOICE_RECORD>(_dataContext).
- Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- var invoiceResult = new DataRepository<WMS_OUT_INVOICE>(_dataContext).Query("INVOICE_ID",
- receiptResult.INVOICE_ID.ToString()).FirstOrDefault();
- if (invoiceResult == null)
- {
- throw new Exception("收货单号不存在,请检查!");
- }
- invoiceResult.INVOICE_STATUS = 55;
- invoiceResult.UPDATE_BY = info.OperationUserId;
- invoiceResult.UPDATE_TIME = now;
- new DataRepository<WMS_OUT_INVOICE>(_dataContext).Update(result, "PUTAWAY_ID", "NEWID");
- _dataContext.Commit();
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo SaveArrivalNotice(SaveArrivalNoticeDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.PalletCode))
- {
- return FailStatus("参数错误!");
- }
- //确认托盘号
- var receiptResult = new DataRepository<WMS_OUT_INVOICE_RECORD>(_dataContext).
- Query("PALLET_CODE", info.PalletCode.ToString()).
- Where(s => s.INVOICE_RECORD_STATUS == 0).
- FirstOrDefault();
- var invoiceResult = new DataRepository<WMS_OUT_INVOICE>(_dataContext).Query("INVOICE_ID",
- receiptResult.INVOICE_ID.ToString()).FirstOrDefault();
- if (invoiceResult.INVOICE_STATUS >= 99)
- {
- return FailStatus("单据状态已经变更,当前所有操作失效!");
- }
- try
- {
- _dataContext.BeginTran();
- var now = DateTime.Now;
- var ids = info.MaterielBarCodes.Split(',');
- var affterCount = 0;
- foreach (var item in ids)
- {
- var resultTemp = new DataRepository<WMS_OUT_INVOICE_DTL>(_dataContext).Query("MATERIEL_BARCODE", item.ToString()).FirstOrDefault();
- if (resultTemp == null)
- {
- throw new Exception("收货明细单状态出现变更,当前操作失效 " + item.ToString());
- }
- resultTemp.INVOICE_DTL_STATUS = 99;
- resultTemp.UPDATE_BY = info.OperationUserId;
- resultTemp.UPDATE_TIME = now;
- affterCount = affterCount + new DataRepository<WMS_OUT_INVOICE_DTL>(_dataContext).Update(resultTemp, "INVOICE_DTL_ID", "NEWID");
- }
- if (affterCount != ids.Length)
- {
- _dataContext.Rollback();
- return FailStatus("数据操作失败!");
- }
- _dataContext.Commit();
- if (!new DataRepository<WMS_OUT_INVOICE_DTL>(_dataContext).Query("INVOICE_ID", invoiceResult.INVOICE_ID.ToString()).
- Where(s => s.INVOICE_DTL_STATUS != 99).Any())
- {
- invoiceResult.INVOICE_STATUS = 99;
- invoiceResult.UPDATE_BY = info.OperationUserId;
- invoiceResult.UPDATE_TIME = now;
- new DataRepository<WMS_OUT_INVOICE>(_dataContext).Update(invoiceResult, "INVOICE_ID", "NEWID");
- }
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo CommitPutDownDetail(CommitPutDownDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.MaterielBarCode))
- {
- return FailStatus("参数错误!");
- }
- try
- {
- _dataContext.BeginTran();
- var result = new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- if (result == null)
- {
- throw new Exception("物品条码不存在,请检查!");
- }
- var binResult = new DataRepository<BAS_BIN>(_dataContext).Query("BIN_CODE", info.BinCode.ToString()).FirstOrDefault();
- if (binResult == null)
- {
- throw new Exception("库位编码不存在,请检查!");
- }
- var userResult = new DataRepository<SYS_USER>(_dataContext).Query("USER_ID", info.OperationUserId.ToString()).FirstOrDefault();
- if (userResult == null)
- {
- throw new Exception("用户编码不存在,请检查!");
- }
- var materielResult = new DataRepository<BAS_MATERIEL>(_dataContext).Query("MATERIEL_CODE", result.MATERIEL_CODE.ToString()).FirstOrDefault();
- if (materielResult == null)
- {
- throw new Exception("物料编码不存在,请检查!");
- }
- var now = DateTime.Now;
- result.PUTDOWN_DTL_STATUS = 55;
- result.UPDATE_TIME = now;
- result.UPDATE_BY = info.OperationUserId;
- new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).Update(result, "PUTDOWN_DTL_ID", "NEWID");
- //确认托盘号
- var receiptResult = new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).
- Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- var invoiceResult = new DataRepository<WMS_OUT_PUTDOWN>(_dataContext).Query("PUTDOWN_ID",
- receiptResult.PUTDOWN_ID.ToString()).FirstOrDefault();
- if (invoiceResult == null)
- {
- throw new Exception("单号不存在,请检查!");
- }
- invoiceResult.PUTDOWN_STATUS = 55;
- invoiceResult.UPDATE_BY = info.OperationUserId;
- invoiceResult.UPDATE_TIME = now;
- new DataRepository<WMS_OUT_PUTDOWN>(_dataContext).Update(result, "PUTDOWN_ID", "NEWID");
- _dataContext.Commit();
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo SavePutDown(SavePutDownDetailCondition info)
- {
- //确认托盘号
- var receiptResult = new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).
- Query("PALLET_CODE", info.PalletCode.ToString()).
- Where(s => s.PUTDOWN_DTL_STATUS == 0).
- FirstOrDefault();
- var invoiceResult = new DataRepository<WMS_OUT_PUTDOWN>(_dataContext).Query("INVOICE_ID",
- receiptResult.PUTDOWN_ID.ToString()).FirstOrDefault();
- if (invoiceResult.PUTDOWN_STATUS >= 99)
- {
- return FailStatus("单据状态已经变更,当前所有操作失效!");
- }
- //TODO这里需要加上库存变更,没有加上!
- try
- {
- _dataContext.BeginTran();
- var now = DateTime.Now;
- var ids = info.MaterielBarCodes.Split(',');
- var affterCount = 0;
- foreach (var item in ids)
- {
- var resultTemp = new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).Query("MATERIEL_BARCODE", item.ToString()).FirstOrDefault();
- if (resultTemp == null)
- {
- throw new Exception("明细单状态出现变更,当前操作失效 " + item.ToString());
- }
- resultTemp.PUTDOWN_DTL_STATUS = 99;
- resultTemp.UPDATE_BY = info.OperationUserId;
- resultTemp.UPDATE_TIME = now;
- affterCount = affterCount + new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).Update(resultTemp, "PUTDOWN_DTL_ID", "NEWID");
- }
- if (affterCount != ids.Length)
- {
- _dataContext.Rollback();
- return FailStatus("数据操作失败!");
- }
- _dataContext.Commit();
- if (!new DataRepository<WMS_OUT_PUTDOWN_DTL>(_dataContext).Query("PUTDOWN_ID", invoiceResult.PUTDOWN_ID.ToString()).
- Where(s => s.PUTDOWN_DTL_STATUS != 99).Any())
- {
- invoiceResult.PUTDOWN_STATUS = 99;
- invoiceResult.UPDATE_BY = info.OperationUserId;
- invoiceResult.UPDATE_TIME = now;
- new DataRepository<WMS_OUT_PUTDOWN>(_dataContext).Update(invoiceResult, "PUTDOWN_ID", "NEWID");
- }
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo ManualPutDownPallet(string PutDownCode, string BinCode)
- {
- var putDow = _wmsOutPutDownService.GetWmsOutPutDownDtlListForNo(PutDownCode).Data;
- putDow.SBIN_CODE = BinCode;
- return _wmsOutPutDownService.ManualPutDownPallet(putDow, PutDownMethodsEnum.PDA手动下架);
- }
- }
- }
|