刘磊
昨天 1c7d84d153f22148c7c8dbf80aa646edb0c53648
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -12,6 +12,7 @@
using WIDESEA_IStoragIntegrationServices;
using WIDESEA_StoragIntegrationServices;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.Models;
@@ -21,6 +22,7 @@
public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
{
    private readonly LogFactory LogFactory = new LogFactory();
    //private readonly BDCManager bDCManager = new BDCManager();
    private readonly IUnitOfWorkManage _unitOfWorkManage;
    private readonly IDt_Task_HtyRepository _task_HtyRepository;
    private readonly IMapper _mapper;
@@ -30,9 +32,12 @@
    private readonly IDt_StationManagerRepository _stationManagerRepository;
    private readonly ISys_ConfigService _configService;
    private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository;
    private readonly IDt_PalletStockInfoDetailRepository _palletStockInfoDetailRepository;
    private readonly IDt_PalletStockInfo_htyRepository _palletStockInfo_HtyRepository;
    private readonly IBoxingInfoRepository _boxingInfoRepository;
    private readonly IDt_CarBodyRepository _carBodyRepository;
    private readonly IDt_BDCConfigurationRepository _bdcConfigurationRepository;
    private readonly IDt_BDCConfigurationService _bdcConfigurationService;
    private readonly IDt_RoadWayRepository _roadWayRepository;
    private readonly IDt_RoadWayInfoRepository _roadWayInfoRepository;
    public Dt_TaskService(IDt_TaskRepository BaseDal,
                                IUnitOfWorkManage unitOfWorkManage,
@@ -42,7 +47,7 @@
                                ITaskExecuteDetailRepository taskExecuteDetailRepository,
                                ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
                                IDt_StationManagerRepository stationManagerRepository,
                                ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IBoxingInfoRepository boxingInfoRepository, IDt_PalletStockInfoDetailRepository palletStockInfoDetailRepository) : base(BaseDal)
                                ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
@@ -55,8 +60,11 @@
        _configService = configService;
        _palletStockInfoRepository = palletStockInfoRepository;
        _palletStockInfo_HtyRepository = palletStockInfo_HtyRepository;
        _boxingInfoRepository = boxingInfoRepository;
        _palletStockInfoDetailRepository = palletStockInfoDetailRepository;
        _carBodyRepository = carBodyRepository;
        _bdcConfigurationRepository = bdcConfigurationRepository;
        _bdcConfigurationService = bDCConfigurationService;
        _roadWayRepository = roadWayRepository;
        _roadWayInfoRepository = roadWayInfoRepository;
    }
    #region å¤–部接口方法
@@ -85,7 +93,7 @@
            var taskHty = CreateHistoricalTask(task);
            //获取组盘信息
            var boxinginfo = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
            var carBody = await _carBodyRepository.QueryFirstAsync(x => x.PalletCode == task.PalletCode);
            // æ ¹æ®åˆ›å»ºåº“存实例模型
            //var boxDetail = boxinginfo.BoxingInfoDetails.Adapt<List<Dt_PalletStockInfoDetail>>();
@@ -100,7 +108,7 @@
            };
            // æ‰§è¡Œæ•°æ®åº“事务
            bool isResult = await ExecuteTransaction(palletStockInfo, taskHty, locationInf, task.TaskId, boxinginfo);
            bool isResult = await ExecuteTransaction(palletStockInfo, taskHty, locationInf, task.TaskId, carBody);
            if (isResult)
            {
                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
@@ -141,7 +149,7 @@
            stockInfo_Hty.FinishTime = DateTime.Now;
            stockInfo_Hty.OperateType = (int)OperateTypeEnum.自动完成;
            var boxinfo = _boxingInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
            var boxinfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
            // äº‹åŠ¡å¤„ç†
            await _unitOfWorkManage.UseTranAsync(async () =>
@@ -617,21 +625,6 @@
    #endregion å†…部调用方法
    #region private å†…部方法
    private async Task DeleteStockInfoDetailsAsync(IEnumerable<Dt_PalletStockInfoDetail> details)
    {
        if (details != null)
        {
            var ids = details.Select(x => (object)x.Id).ToArray();
            var isStockDetailUpdated = await _palletStockInfoDetailRepository.DeleteDataByIdsAsync(ids);
            if (!isStockDetailUpdated)
            {
                throw new Exception("库存详情信息更新失败");
            }
        }
    }
    /// <summary>
    /// åˆ›å»ºåŽ†å²ä»»åŠ¡è®°å½•
    /// </summary>
@@ -665,7 +658,7 @@
    /// <param name="taskHty">历史任务对象</param>
    /// <param name="taskId">任务ID</param>
    /// <returns></returns>
    private async Task<bool> ExecuteTransaction(Dt_PalletStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo locationInfo, int taskId, DtBoxingInfo boxingInfo)
    private async Task<bool> ExecuteTransaction(Dt_PalletStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo locationInfo, int taskId, Dt_CarBody boxingInfo)
    {
        _unitOfWorkManage.BeginTran();
        try
@@ -678,7 +671,7 @@
            //删除组盘数据
            if (boxingInfo != null)
            {
                var box = _boxingInfoRepository.DeleteData(boxingInfo);
                var box = _carBodyRepository.DeleteData(boxingInfo);
                //boxingInfo.CurrentStatue = 5;
                //isDeleteBoxing = await _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxingInfo.Id)
                //                        .Include(x => x.BoxingInfoDetails)