huanghongfeng
2025-01-24 829eabf256e29392ca63f6da48829dba3b075dfe
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -22,6 +22,7 @@
using Org.BouncyCastle.Asn1.Tsp;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
@@ -49,6 +50,7 @@
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
using WIDESEA_TaskInfoRepository;
using static WIDESEA_ITaskInfoService.ITaskService;
namespace WIDESEA_TaskInfoService
{
@@ -79,13 +81,13 @@
            _taskHtyService = taskHtyService;
            _locationInfoService = locationInfoService;
        }
        public string ReceiveWCSTask = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWCSTask"];
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
        /// <param name="taskNum">任务号</param>
        /// <returns>返回处理结果</returns>
        public WebResponseContent TaskCompleted(int taskNum)
        public WebResponseContent TaskCompleted(int taskNum,int HowWorks)
        {
            try
            {
@@ -93,6 +95,10 @@
                if (task == null)
                {
                    return WebResponseContent.Instance.Error("未找到任务信息");
                }
                if (HowWorks == 1)
                {
                    WebResponseContent webResponseContent = HttpHelper.Post<WebResponseContent>(ReceiveWCSTask, task.TaskNum, "任务删除");
                }
                MethodInfo? methodInfo = GetType().GetMethod(((TaskTypeEnum)task.TaskType) + "TaskCompleted");
                if (methodInfo != null)
@@ -125,35 +131,34 @@
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            //查货位
            Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
            Dt_StockInfoDetail dt_StockInfodetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id);
            CheckCompleted(stockInfo, locationInfo);
            if (stockInfo.MaterialType == (int)InventoryMaterialType.空托)
            {
                string currentTime = DateTime.Now.ToString("HHmmss");
                stockInfo.PalletCode = "KTP" + currentTime;
            }
            stockInfo.LocationCode = task.TargetAddress;
            stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            if (_stockService.StockInfoService.Repository.UpdateData(stockInfo))
            {
                string[] Pallet = stockInfo.PalletCode.Split("-");
                Dt_StockInfoDetail dt_StockInfoDetail = new()
                {
                    StockId = stockInfo.Id,
                    MaterielCode = Pallet[0],    //物料编号
                    MaterielName = Pallet[1],    //材质
                    OrderNo = stockInfo.PalletCode,        //单据(托盘条码)
                    BatchNo = Pallet[2],         //批次号
                    SerialNumber = Pallet[2],    //序列号
                    StockQuantity = decimal.Parse(Pallet[3]),    //序列号
                    OutboundQuantity = decimal.Parse(Pallet[3]),    //序列号
                    Status = (int)StockStatusEmun.已入库,
                    Creater = "WMS",
                    CreateDate = DateTime.Now,
                };
                _stockService.StockInfoDetailService.AddData(dt_StockInfoDetail);
            }
            if(dt_StockInfodetail != null)
            {
                dt_StockInfodetail.Status = StockStatusEmun.已入库.ObjToInt();
                _stockService.StockInfoDetailService.Repository.UpdateData(dt_StockInfodetail);
            }
            beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            if (stockInfo.MaterialType == (int)InventoryMaterialType.空托)
            {
                locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
            }
            else
            {
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            }
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
@@ -239,22 +244,30 @@
            stockInfo.StockStatus = StockStatusEmun.出库完成.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            int beforeStatus = locationInfo.LocationStatus;
            if (task.Depth == 1)
            /*if (task.Depth == 1)
            {
                if (DepthTask(task)) { }
                *//*if (DepthTask(task))
                {
                }
                else
                {
                    locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                    _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                }
                }*//*
                locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            }
            else
            {
                locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            }
            }*/
            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
@@ -297,12 +310,12 @@
            return WebResponseContent.Instance.OK();
        }
        public WebResponseContent RelocationTaskCompleted(string PalletCode,string SourceAddress, string TargetAddress)
        public WebResponseContent RelocationInTaskCompleted(Dt_Task task)
        {
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(PalletCode);
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            Dt_LocationInfo locationpoint = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == SourceAddress);
            Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == TargetAddress);
            Dt_LocationInfo locationpoint = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
            Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
            List<Dt_LocationInfo> loca = new List<Dt_LocationInfo>();
            stockInfo.LocationCode = locationEnd.LocationCode;
@@ -340,5 +353,7 @@
            }
            return false;
        }
    }   
}