wxw
2024-09-26 06d50c0f77ccf01ebe751a819e9ad06b871d8e90
增加WCS接收WMS下发的入库单任务;修改分拣码垛绑定和结批功能
3个文件已修改
150 ■■■■ 已修改文件
Admin.NET/WCS.Application/Model/TaskRequest.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -233,3 +233,47 @@
}
public class ResponseOrderTaskModel
{
    /// <summary>
    /// WMS下发单号
    /// </summary>
    public string? OrderNo { get; set; }
    /// <summary>
    /// 任务号
    /// </summary>
    public string? TaskNo { get; set; }
    /// <summary>
    /// 批次号
    /// </summary>
    public string? LotNo { get; set; }
    /// <summary>
    /// 物料编码
    /// </summary>
    public string? SkuNo { get; set; }
    /// <summary>
    /// 物料名称
    /// </summary>
    public string? SkuName { get; set; }
    /// <summary>
    /// 规格
    /// </summary>
    public string? BoxType { get; set; }
    /// <summary>
    /// 总箱数/计划箱数/预估箱数
    /// </summary>
    public int? Qty { get; set; }
    /// <summary>
    /// 任务类型
    /// </summary>
    public int TaskType { get; set; }
}
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
@@ -1,5 +1,8 @@
using System.Diagnostics.CodeAnalysis;
using Elastic.Clients.Elasticsearch;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using WCS.Application.Entity;
namespace WCS.Application;
@@ -114,4 +117,44 @@
            return new ResponseModel() { StatusCode = -1, Msg = ex.Message };
        }
    }
    /// <summary>
    /// WCS接收WMS下发的入库单任务
    /// </summary>
    /// <param name="models"></param>
    /// <returns></returns>
    [AllowAnonymous]
    public ResponseModel AddOrderTask(List<ResponseOrderTaskModel> models)
    {
        ResponseModel result = new ResponseModel();
        try
        {
            foreach (var item in models)
            {
                // 验证任务是否已存在
                //var taskInfo = _db.Queryable<WcsOderTask>().First(w => w.OrderNo == item.OrderNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                //if (taskInfo == null)
                //{
                    var orderAdd = new WcsOderTask()
                    {
                        OrderNo = item.OrderNo,
                        TaskNo = "",
                        LotNo = item.LotNo,
                        SkuNo = item.SkuNo,
                        SkuName = item.SkuName,
                        BoxType = item.BoxType,
                        Qty = item.Qty,
                        TaskType = (TaskTypeEnum)item.TaskType,
                    };
                    _db.Insertable(orderAdd).ExecuteCommand();
               //}
            }
            return new ResponseModel() { StatusCode = 0, Msg = "插入成功" };
        }
        catch (Exception ex)
        {
            return new ResponseModel() { StatusCode = -1, Msg = ex.Message };
        }
    }
}
Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
@@ -203,11 +203,22 @@
            throw Oops.Bah("找不到PLC信息");
        }
        PLCUtil modUtil = new PLCUtil(modPlc);
        var ret= modUtil.SetPlcDBValue(checkTaskInfo.PosType, checkTaskInfo.DbNumber, checkTaskInfo.PlcPos, checkTaskInfo.PZNo);
        if (ret.IsSucceed)
        if (modUtil.Connected)
        {
            //写入流程字成功后更新分拣任务
            await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
            var ret = modUtil.SetPlcDBValue(checkTaskInfo.PosType, checkTaskInfo.DbNumber, checkTaskInfo.PlcPos, checkTaskInfo.PZNo);
            if (ret.IsSucceed)
            {
                //写入流程字成功后更新分拣任务
                await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
            }
            else
            {
                throw Oops.Bah("与PCL交互失败,绑定失败!");
            }
        }
        else
        {
            throw Oops.Bah("PCL未连接,绑定失败!");
        }
        #endregion
    }
@@ -242,23 +253,35 @@
                throw Oops.Bah($"找不到工位号:{item.Port} 的设备信息");
            }
            PLCUtil modUtil = new PLCUtil(modPlc);
            var ret = modUtil.SetPlcDBValue(item.PosType, item.DbNumber, item.PlcPos, item.PZNo);
            if (ret.IsSucceed)
            if (modUtil.Connected)
            {
                //写入流程字成功后更新分拣任务
                item.OrderNo = "";
                item.TaskNo = "";
                item.LotNo = "";
                item.SkuNo = "";
                item.SkuName = "";
                item.BoxType = "";
                item.Qty = 0;
                item.PZNo = "";
                item.Status = "0";//未绑定
                var ret = modUtil.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
                if (ret.IsSucceed)
                {
                    //写入流程字成功后更新分拣任务
                    item.OrderNo = "";
                    item.TaskNo = "";
                    item.LotNo = "";
                    item.SkuNo = "";
                    item.SkuName = "";
                    item.BoxType = "";
                    item.Qty = 0;
                    item.PZNo = "";
                    item.Status = "0";//未绑定
                //更新分拣任务
                await _wcsCheckTaskRep.AsUpdateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
                    //更新分拣任务
                    await _wcsCheckTaskRep.AsUpdateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
                }
                else
                {
                    throw Oops.Bah("与PCL交互失败,结批失败!");
                }
            }
            else
            {
                throw Oops.Bah("PCL未连接,结批失败!");
            }
            //Service.WcsDevice.Dto.WcsDeviceTaskOrderDto order=  await _wcsDeviceRep.Context.Queryable<WcsDevice>()
            //    .InnerJoin<WcsPlc>((device, plc) => device.PlcId == plc.Id)
@@ -284,7 +307,7 @@
            ////下发分拣任务
            //HubUtil.PublicCheckTask(order.Adapt<Service.WcsDevice.Dto.WcsDeviceTaskOrderDto>());
            #endregion
            #endregion
        }  
    }
}