成品入库上传ERP新增销售单号字段,成品出库上传MES及外包装机新增订单出货数量字段
已修改5个文件
224 ■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesShipmentOrderSync.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPProInboundModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs 198 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MES/MesShipmentOrderSync.cs
@@ -54,6 +54,10 @@
        /// </summary>
        public string ProductVersion { get; set; }
        /// <summary>
        /// è®¢å•出货数量
        /// </summary>
        public float ShipmentQty { get; set; }
        /// <summary>
        /// å‡ºè´§æ•°é‡
        /// </summary>
        public float Qty { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/Model/ERPProInboundModel.cs
@@ -82,6 +82,10 @@
        /// </summary>
        public string XLocation { get; set; }
        /// <summary>
        /// é”€å”®å•号
        /// </summary>
        public string ChangeSoNumber { get; set; }
        /// <summary>
        /// å‰æ¿æ•°
        /// </summary>
        public float Xqty { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -1608,14 +1608,15 @@
                    ERPProItemsItem proItemsItem = new ERPProItemsItem()
                    {
                        PartNum = item.ProductCode,
                        Rev=item.ProductVersion,
                        DateCode=item.DateCode,
                        BatchNumber= item.ProductCode,
                        XLocation=item.XSite,
                        Xqty=item.XQty,
                        QtySet=item.SETQty,
                        QtyPcs=item.OKPCSQTY,
                        WoList=new List<ERPProListItem>()
                        Rev = item.ProductVersion,
                        DateCode = item.DateCode,
                        BatchNumber = item.ProductCode,
                        XLocation = item.XSite,
                        ChangeSoNumber = item.SaleOrder,
                        Xqty = item.XQty,
                        QtySet = item.SETQty,
                        QtyPcs = item.OKPCSQTY,
                        WoList = new List<ERPProListItem>()
                        {
                            new ERPProListItem()
                            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesProductService.cs
@@ -429,6 +429,7 @@
            {
                ProductCode = proOutOrderDetail.PCode,
                ProductVersion = proOutOrderDetail.PVer,
                ShipmentQty= outProStockInfo.OrderQuantity,
                Qty = outProStockInfo.AssignQuantity,
                DateCode = outProStockInfo.DateCode,
                SaleOrder = proOutOrderDetail.SaleOrder,
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -847,112 +847,116 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        private static object _requestZH = new object();
        public WebResponseContent RequestZHInboundTask(string agvTaskCode, string palletCode, string palletType, string materialLot)
        {
            WebResponseContent content = new WebResponseContent();
            try
            lock (_requestZH)
            {
                //获取阻焊库存信息
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
                //获取库存记录
                List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
                  x.WarehouseId == warehouse.WarehouseId && x.PalletCode== palletCode).Includes(x => x.Details).ToList();
                if (stockInfos.Count > 0)
                WebResponseContent content = new WebResponseContent();
                try
                {
                    return content.Error($"载具托盘已存在");
                }
                Dt_StockInfo? stockInfoOld = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == materialLot));
                if (stockInfoOld != null)
                {
                    return content.Error($"库存信息已存在");
                }
                    //获取阻焊库存信息
                    Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
                    //获取库存记录
                    List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
                      x.WarehouseId == warehouse.WarehouseId && x.PalletCode == palletCode).Includes(x => x.Details).ToList();
                    if (stockInfos.Count > 0)
                    {
                        return content.Error($"载具托盘已存在");
                    }
                    Dt_StockInfo? stockInfoOld = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == materialLot));
                    if (stockInfoOld != null)
                    {
                        return content.Error($"库存信息已存在");
                    }
                Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
                if(task != null)
                {
                    return content.Error($"托盘{palletCode}已经存在任务,请勿重复下达");
                    Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
                    if (task != null)
                    {
                        return content.Error($"托盘{palletCode}已经存在任务,请勿重复下达");
                    }
                    Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletType);
                    if (palletTypeInfo == null)
                    {
                        return content.Error($"托盘类型信息不存在");
                    }
                    //获取阻焊批次
                    WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
                    if (!requestLotInfo.Status)
                    {
                        return content.Error($"请求阻焊批次信息失败,{requestLotInfo.Message}");
                    }
                    MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
                    //MesLotInfoModel mesLotInfo = new MesLotInfoModel()
                    //{
                    //    Product="FH001",
                    //    ProductVersion="A1",
                    //    Qty=20,
                    //    LotNo= materialLot,
                    //    IsFullNumber=true
                    //};
                    Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                    {
                        MaterielSpec = mesLotInfo.ProductVersion,
                        BatchNo = materialLot,
                        EffectiveDate = mesLotInfo.DateCode ?? " ",
                        MaterielCode = mesLotInfo.Product,
                        InboundOrderRowNo = 0,
                        MaterielName = mesLotInfo.Product,
                        ProductionDate = mesLotInfo.DateCode ?? " ",
                        OrderNo = "",
                        OutboundQuantity = 0,
                        SerialNumber = materialLot,
                        StockQuantity = (float)mesLotInfo.Qty,
                        Status = StockStatusEmun.入库确认.ObjToInt(),
                        Unit = "Lot",
                        Remark = mesLotInfo.IsFullNumber ? "满Lot" : "不满Lot"
                    };
                    Dt_StockInfo stockInfo = new Dt_StockInfo()
                    {
                        PalletCode = palletCode,
                        PalletType = palletTypeInfo.PalletType,
                        WarehouseId = warehouse.WarehouseId,
                        StockStatus = StockStatusEmun.入库确认.ObjToInt(),
                        Details = new List<Dt_StockInfoDetail> { stockInfoDetail }
                    };
                    //生成退库任务
                    Dt_Task taskIn = new()
                    {
                        CurrentAddress = "AGV_ZH",
                        Grade = 0,
                        PalletCode = palletCode,
                        NextAddress = "",
                        Roadway = "SC01_ZH",
                        SourceAddress = "AGV_ZH",
                        TargetAddress = "",
                        TaskStatus = (int)TaskStatusEnum.New,
                        TaskType = palletTypeInfo.LocaitonCount == 2 ? (int)TaskTypeEnum.InZHProductLarge : (int)TaskTypeEnum.InZHProductSmall,
                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                        PalletType = palletTypeInfo.PalletType,
                        WarehouseId = warehouse.WarehouseId,
                        MaterielCode = mesLotInfo.Product,
                        Quantity = (float)mesLotInfo.Qty,
                        BatchNo = mesLotInfo.LotNo
                    };
                    _unitOfWorkManage.BeginTran();
                    Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
                    BaseDal.AddData(taskIn);
                    //BaseDal.AddData(task);
                    _unitOfWorkManage.CommitTran();
                    //将任务推送到WCS
                    PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH", agvTaskCode);
                    content.OK(data: taskIn);
                }
                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x=>x.CodeStartStr== palletType);
                if (palletTypeInfo == null)
                catch (Exception ex)
                {
                    return content.Error($"托盘类型信息不存在");
                    _unitOfWorkManage.RollbackTran();
                    content.Error(ex.Message);
                }
                //获取阻焊批次
                WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
                if (!requestLotInfo.Status)
                {
                    return content.Error($"请求阻焊批次信息失败,{requestLotInfo.Message}");
                }
                MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
                //MesLotInfoModel mesLotInfo = new MesLotInfoModel()
                //{
                //    Product="FH001",
                //    ProductVersion="A1",
                //    Qty=20,
                //    LotNo= materialLot,
                //    IsFullNumber=true
                //};
                Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                {
                    MaterielSpec = mesLotInfo.ProductVersion,
                    BatchNo = materialLot,
                    EffectiveDate = mesLotInfo.DateCode ?? " ",
                    MaterielCode = mesLotInfo.Product,
                    InboundOrderRowNo =  0,
                    MaterielName = mesLotInfo.Product,
                    ProductionDate = mesLotInfo.DateCode ?? " ",
                    OrderNo = "",
                    OutboundQuantity = 0,
                    SerialNumber = materialLot,
                    StockQuantity = (float)mesLotInfo.Qty,
                    Status = StockStatusEmun.入库确认.ObjToInt(),
                    Unit = "Lot",
                    Remark= mesLotInfo.IsFullNumber?"满Lot":"不满Lot"
                };
                Dt_StockInfo stockInfo = new Dt_StockInfo()
                {
                    PalletCode = palletCode,
                    PalletType = palletTypeInfo.PalletType,
                    WarehouseId = warehouse.WarehouseId,
                    StockStatus = StockStatusEmun.入库确认.ObjToInt(),
                    Details = new List<Dt_StockInfoDetail> { stockInfoDetail }
                };
                //生成退库任务
                Dt_Task taskIn = new()
                {
                    CurrentAddress = "AGV_ZH",
                    Grade = 0,
                    PalletCode = palletCode,
                    NextAddress = "",
                    Roadway = "SC01_ZH",
                    SourceAddress = "AGV_ZH",
                    TargetAddress = "",
                    TaskStatus = (int)TaskStatusEnum.New,
                    TaskType = palletTypeInfo.LocaitonCount==2? (int)TaskTypeEnum.InZHProductLarge : (int)TaskTypeEnum.InZHProductSmall,
                    TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                    PalletType = palletTypeInfo.PalletType,
                    WarehouseId = warehouse.WarehouseId,
                    MaterielCode = mesLotInfo.Product,
                    Quantity = (float)mesLotInfo.Qty,
                    BatchNo = mesLotInfo.LotNo
                };
                _unitOfWorkManage.BeginTran();
                Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
                BaseDal.AddData(taskIn);
                //BaseDal.AddData(task);
                _unitOfWorkManage.CommitTran();
                //将任务推送到WCS
                PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH", agvTaskCode);
                content.OK(data: taskIn);
                return content;
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        public readonly string[] OutStartPonits = { "5230", "5237", "5244" };