123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- using DapperORMCore.Context.DataContext;
- using DapperORMCore.Model.CoreModel;
- using DapperORMCore.Repository.IRepositorys;
- using Microsoft.Extensions.Configuration;
- using NXWMS.DataAccess.Entity;
- using NXWMS.IService.NXPDA.Balance;
- using NXWMS.Model.AppModels.Condition.NXPDA.InStock;
- using NXWMS.Model.Common;
- 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.Balance
- {
- /// <summary>
- /// 库存操作接口
- /// </summary>
- [AutoInject(typeof(IBalanceOperateService), InjectType.Scope)]
- public class BalanceOperateService : ServiceBase, IBalanceOperateService
- {
- /// <summary>
- /// 系统操作仓储中转
- /// </summary>
- private IDataRepositoryContext _dataContext;
- /// <summary>
- /// SQL节点仓储
- /// </summary>
- private ISQLNodeRepository _iSQLNodeRepository;
- /// <summary>
- /// 配置
- /// </summary>
- private IConfiguration _configuration;
- public BalanceOperateService(IDataRepositoryContext dataRepositoryContext, IConfiguration configuration, ISQLNodeRepository iSQLNodeRepository)
- {
- this._dataContext = dataRepositoryContext;
- this._configuration = configuration;
- this._iSQLNodeRepository = iSQLNodeRepository;
- }
- public OperateResultInfo CommitBalanceDetail(CommitBalanceDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.MaterielBarCode))
- {
- return FailStatus("参数错误!");
- }
- try
- {
- _dataContext.BeginTran();
- var receiptDTLResult = new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).
- Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- if (receiptDTLResult == 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", receiptDTLResult.MATERIEL_CODE.ToString()).FirstOrDefault();
- if (materielResult == null)
- {
- throw new Exception("物料编码不存在,请检查!");
- }
- var now = DateTime.Now;
- receiptDTLResult.ACTUAL_INVENTORY_QTY = info.ActualQTY;
- receiptDTLResult.INVENTORY_DTL_STATUS = 55;
- receiptDTLResult.UPDATE_TIME = now;
- receiptDTLResult.UPDATE_BY = info.OperationUserId;
- new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Update(receiptDTLResult, "INVENTORY_DTL_ID", "NEWID");
- _dataContext.Commit();
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo SaveBalance(SaveBalanceDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.PalletCode))
- {
- return FailMessageStatus("参数错误!");
- }
- var result = new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Query("PALLET_CODE", info.PalletCode.ToString())
- .Where(s => s.INVENTORY_DTL_STATUS == 11).FirstOrDefault();
- if (result == null)
- {
- return FailMessageStatus("单据状态已经变更,当前所有操作失效!");
- }
- 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_STK_INVENTORY_DTL>(_dataContext).
- Query("MATERIEL_BARCODE", item.ToString()).FirstOrDefault();
- if (resultTemp == null)
- {
- throw new Exception("收货明细单状态出现变更,当前操作失效 " + item.ToString());
- }
- resultTemp.INVENTORY_DTL_STATUS = 99;
- resultTemp.UPDATE_BY = info.OperationUserId;
- resultTemp.UPDATE_TIME = now;
- affterCount = affterCount + new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Update(resultTemp, "INVENTORY_DTL_ID", "NEWID");
- }
- if (affterCount != ids.Length)
- {
- _dataContext.Rollback();
- return FailMessageStatus("数据操作失败!");
- }
- _dataContext.Commit();
- if (!new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).
- Query("INVENTORY_ID", result.INVENTORY_ID.ToString()).
- Where(s => s.INVENTORY_DTL_STATUS != 99).Any())
- {
- var resultDTL = new DataRepository<WMS_STK_INVENTORY>(_dataContext).
- Query("INVENTORY_ID", result.INVENTORY_ID.ToString()).FirstOrDefault();
- resultDTL.INVENTORY_STATUS = 99;
- resultDTL.UPDATE_BY = info.OperationUserId;
- resultDTL.UPDATE_TIME = now;
- new DataRepository<WMS_STK_INVENTORY>(_dataContext).Update(result, "INVENTORY_ID", "NEWID");
- }
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailMessageStatus("提交失败!" + ex.Message);
- }
- }
- public OperateResultInfo CommitDifferenceInventoryceDetail(CommitDifferenceInventoryDetailCondition info, int Stats)
- {
- if (info.Details == null || info.Details.Count() == 0)
- {
- return FailStatus("未提交任何数据");
- }
- this._dataContext.BeginTran();
- try
- {
- foreach (var item in info.Details)
- {
- // 查询主
- var sql = "update WMS_STK_INVENTORY_DTL set INVENTORY_DTL_STATUS=@InventoryDtlStatus,ACTUAL_INVENTORY_QTY=@ActualQTY,UPDATE_BY=@UpdateBy,UPDATE_TIME=@UpdateTime where INVENTORY_DTL_ID=@InventoryDtlId";
- new DataRepository<WMS_STK_INVENTORY_DTL>(this._dataContext).Execute(sql, new
- {
- item.ActualQTY,
- UpdateBy = info.OperationUserId,
- UpdateTime = DateTime.Now,
- item.InventoryDtlId,
- InventoryDtlStatus = Stats
- });
- sql = $@" if not exists ( select * from WMS_STK_INVENTORY_DTL where INVENTORY_DTL_STATUS<>@InventoryDtlStatus and INVENTORY_ID=@InventoryId)
- update WMS_STK_INVENTORY set INVENTORY_STATUS=@InventoryDtlStatus,UPDATE_BY=@UpdateBy,UPDATE_TIME=@UpdateTime where INVENTORY_ID=@InventoryId ";
- new DataRepository<WMS_STK_INVENTORY>(this._dataContext).Execute(sql, new
- {
- InventoryDtlStatus = Stats,
- InventoryId = item.InventoryId,
- InventoryDtlId=item.InventoryDtlId,
- UpdateBy = info.OperationUserId,
- UpdateTime = DateTime.Now,
- });
- }
- _dataContext.Commit();
- return SuccessStatus();
- }
- catch (Exception err)
- {
- this._dataContext.Rollback();
- return FailStatus($"未提交任何数据 {err.Message}");
- }
- //if (string.IsNullOrWhiteSpace(info.MaterielBarCode))
- //{
- // return FailStatus("参数错误!");
- //}
- //try
- //{
- // _dataContext.BeginTran();
- // var receiptDTLResult = new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).
- // Query("MATERIEL_BARCODE", info.MaterielBarCode.ToString()).FirstOrDefault();
- // if (receiptDTLResult == 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", receiptDTLResult.MATERIEL_CODE.ToString()).FirstOrDefault();
- // if (materielResult == null)
- // {
- // throw new Exception("物料编码不存在,请检查!");
- // }
- // var now = DateTime.Now;
- // receiptDTLResult.ACTUAL_INVENTORY_QTY = info.ActualQTY;
- // receiptDTLResult.INVENTORY_DTL_STATUS = 99;
- // receiptDTLResult.UPDATE_TIME = now;
- // receiptDTLResult.UPDATE_BY = info.OperationUserId;
- // new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Update(receiptDTLResult, "INVENTORY_DTL_ID", "NEWID");
- // _dataContext.Commit();
- // return SuccessStatus();
- //}
- //catch (Exception ex)
- //{
- // _dataContext.Rollback();
- // return FailStatus("提交失败!" + ex.Message);
- //}
- }
- public OperateResultInfo SaveDifferenceInventoryce(SaveDifferenceInventoryDetailCondition info)
- {
- if (string.IsNullOrWhiteSpace(info.PalletCode))
- {
- return FailMessageStatus("参数错误!");
- }
- var result = new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Query("PALLET_CODE", info.PalletCode.ToString())
- .Where(s => s.INVENTORY_DTL_STATUS == 88).FirstOrDefault();
- if (result == null)
- {
- return FailMessageStatus("单据状态已经变更,当前所有操作失效!");
- }
- 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_STK_INVENTORY_DTL>(_dataContext).
- Query("MATERIEL_BARCODE", item.ToString()).FirstOrDefault();
- if (resultTemp == null)
- {
- throw new Exception("收货明细单状态出现变更,当前操作失效 " + item.ToString());
- }
- resultTemp.INVENTORY_DTL_STATUS = 99;
- resultTemp.UPDATE_BY = info.OperationUserId;
- resultTemp.UPDATE_TIME = now;
- affterCount = affterCount + new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).Update(resultTemp, "INVENTORY_DTL_ID", "NEWID");
- }
- if (affterCount != ids.Length)
- {
- _dataContext.Rollback();
- return FailMessageStatus("数据操作失败!");
- }
- _dataContext.Commit();
- if (!new DataRepository<WMS_STK_INVENTORY_DTL>(_dataContext).
- Query("INVENTORY_ID", result.INVENTORY_ID.ToString()).
- Where(s => s.INVENTORY_DTL_STATUS != 99).Any())
- {
- var resultDTL = new DataRepository<WMS_STK_INVENTORY>(_dataContext).
- Query("INVENTORY_ID", result.INVENTORY_ID.ToString()).FirstOrDefault();
- resultDTL.INVENTORY_STATUS = 99;
- resultDTL.UPDATE_BY = info.OperationUserId;
- resultDTL.UPDATE_TIME = now;
- new DataRepository<WMS_STK_INVENTORY>(_dataContext).Update(result, "INVENTORY_ID", "NEWID");
- }
- return SuccessStatus();
- }
- catch (Exception ex)
- {
- _dataContext.Rollback();
- return FailMessageStatus("提交失败!" + ex.Message);
- }
- }
- }
- }
|