wangxinhui
昨天 011ca316e6ec2ed93e31c45a9ebd9d3c66664871
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -14,6 +15,7 @@
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IPackInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
@@ -47,33 +49,34 @@
        /// <returns></returns>
        public WebResponseContent ReqPackTask(string barCode,string deviceCode)
        {
            WebResponseContent content= new WebResponseContent();
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_Packinfo packinfo = _packinfoRepository.QueryFirst(x=>x.BarCode==barCode && x.PackStatus==StationOccupiedEnum.None.ObjToInt());
                if (packinfo==null)
                Dt_Packinfo packinfo = _packinfoRepository.QueryFirst(x => x.BarCode == barCode && x.PackStatus == StationOccupiedEnum.None.ObjToInt());
                if (packinfo == null)
                {
                    return content.Error($"未找到条码{barCode}");
                }
                List<Dt_StationPackInfo> stationPackInfos = _stationPackInfoRepository.QueryData();
                Dt_StationPackInfo? stationPackInfo=stationPackInfos.FirstOrDefault(x=>x.PackType==packinfo.PackType && x.OrderNo==packinfo.OrderNo && x.AssignNum<x.PackNum);
                List<Dt_StationPackInfo> stationPackInfos = _stationPackInfoRepository.Db.Queryable<Dt_StationPackInfo>().ToList();
                Dt_StationPackInfo? stationPackInfo = stationPackInfos.FirstOrDefault(x => x.PackType == packinfo.PackType && x.OrderNo == packinfo.OrderNo && x.AssignNum < x.PackNum);
                Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask();
                //如果订单相同、垛型一致并且分配数量少于码垛结托数量则分配到一起
                if (stationPackInfo!=null)
                if (stationPackInfo != null)
                {
                    Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask()
                    packaxisTask = new Dt_PackaxisTask()
                    {
                        DeviceCode=deviceCode,
                        SourceAddress= "2421",
                        BarCode=barCode,
                        CurrentAddress= "2421",
                        TargetAddress=stationPackInfo.StationCode,
                        NextAddress=stationPackInfo.LineCode,
                        TaskState =TaskStatusEnum.Line_Executing.ObjToInt(),
                        PackLength=packinfo.Length,
                        PackWidth=packinfo.Width,
                        PackHeight=packinfo.Height,
                        PackType=packinfo.PackType,
                        Dispatchertime=DateTime.Now,
                        DeviceCode = deviceCode,
                        SourceAddress = "2421",
                        BarCode = barCode,
                        CurrentAddress = "2421",
                        TargetAddress = stationPackInfo.StationCode,
                        NextAddress = stationPackInfo.LineCode,
                        TaskState = TaskStatusEnum.Line_Executing.ObjToInt(),
                        PackLength = packinfo.Length,
                        PackWidth = packinfo.Width,
                        PackHeight = packinfo.Height,
                        PackType = packinfo.PackType,
                        Dispatchertime = DateTime.Now,
                    };
                    stationPackInfo.AssignNum += 1;
                    stationPackInfo.ExecutingNum += 1;
@@ -86,20 +89,19 @@
                    //添加码垛任务
                    BaseDal.AddData(packaxisTask);
                    _unitOfWorkManage.CommitTran();
                    return content.OK(barCode, packaxisTask);
                }
                else//分配新工位
                {
                    //获取当前空盘准备的码垛工位
                    List<string> stations = _stationMangerRepository.QueryData(x => x.StationDeviceCode == "CLC_CP" && x.IsOccupied == StationOccupiedEnum.None.ObjToInt()).Select(x => x.StationCode).ToList();
                    //获取码垛配置表查询有配置的码垛工位
                    List<Dt_Packaxis> packaxes = _packaxisRepository.QueryData(x => x.PackType == packinfo.PackType);
                    if (packaxes.Count==0)
                    //获取码垛配置表查询可分配并已配置的码垛工位
                    List<Dt_Packaxis> packaxes = _packaxisRepository.Db.Queryable<Dt_Packaxis>().Where(x => x.PackType == packinfo.PackType && stations.Contains(x.StationCode)).ToList();
                    if (packaxes.Count == 0)
                    {
                        return content.Error("未找到码垛坐标配置");
                        return content.Error("未找到可分配码垛配置");
                    }
                    List<string> packStations = packaxes.Select(x => x.StationCode).ToList();
                    Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && stations.Contains(x.StationCode) && packStations.Contains(x.StationCode)).OrderByDescending(x => x.StationCode).FirstOrDefault();
                    Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && packStations.Contains(x.StationCode)).OrderBy(x => x.OrderIndex).FirstOrDefault();
                    if (packInfoAssign == null)
                    {
                        return content.Error("未找到可分配垛位");
@@ -108,8 +110,8 @@
                    packInfoAssign.OrderNo = packinfo.OrderNo;
                    packInfoAssign.MakeCode = packinfo.MakeCode;
                    packInfoAssign.MaterielCode = packInfoAssign.MaterielCode;
                    packInfoAssign.PackNum = packaxes.FirstOrDefault(x=>x.StationCode== packInfoAssign.StationCode).PackNum;
                    Dt_PackaxisTask packaxisTask = new Dt_PackaxisTask()
                    packInfoAssign.PackNum = packaxes.FirstOrDefault(x => x.StationCode == packInfoAssign.StationCode).PackNum;
                    packaxisTask = new Dt_PackaxisTask()
                    {
                        DeviceCode = deviceCode,
                        SourceAddress = "2421",
@@ -135,8 +137,9 @@
                    //添加码垛任务
                    BaseDal.AddData(packaxisTask);
                    _unitOfWorkManage.CommitTran();
                    return content.OK(barCode, packaxisTask);
                }
                return content.OK(barCode, packaxisTask);
            }
            catch (Exception ex)
            {
@@ -207,7 +210,6 @@
        {
            try
            {
                Dt_PackaxisTask? packaxisTaskFinish = null;
                if (packaxisTask!=null)
                {
@@ -246,5 +248,42 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// åˆ é™¤ç åž›ä»»åŠ¡ä¿¡æ¯
        /// </summary>
        /// <param name="packTaskNum"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public WebResponseContent PickaixsTaskDele(int PackTaskNum)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                    Dt_PackaxisTask packaxisTask = BaseDal.QueryFirst(x => x.PackTaskNum == PackTaskNum);
                    if(packaxisTask == null)
                    {
                        return WebResponseContent.Instance.Error("未找到任务");
                    }
                    else
                    {
                        Dt_Packinfo packinfo = _packinfoRepository.QueryFirst(x => x.BarCode == packaxisTask.BarCode);
                        packinfo.PackStatus = 0;
                        _packinfoRepository.UpdateData(packinfo);
                        BaseDal.DeleteAndMoveIntoHty(packaxisTask, App.User?.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工删除);
                      content.Status = true;
                    }
            }
            catch (Exception e)
            {
                return WebResponseContent.Instance.Error(e.Message);
            }
            return content;
        }
    }
    public class MDCount
    {
        public string MDNo { get; set; }
        public int Count { get; set; }
    }
}