duyongjia
2024-12-27 b879053cc8414be35ea60e4c1667039053e3f6e5
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs
@@ -1,4 +1,6 @@
using AutoMapper;
using LogLibrary.Log;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -18,10 +20,12 @@
using WIDESEA_IBasicService;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_InboundRepository;
using WIDESEA_IStockService;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_Model;
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Inbound;
using WIDESEA_Model.Models.System.Request;
namespace WIDESEA_InboundService
@@ -139,12 +143,11 @@
        /// </summary>
        /// <param name="materielGroupDTO"></param>
        /// <returns></returns>
        public WebResponseContent ReturnMaterielGroup(MaterielGroupDTO materielGroupDTO)
        public WebResponseContent ReturnMaterielGroup(MaterielGroupDTO materielGroupDTO, ReturnInventoryRequest inventoryRequest)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                materielGroupDTO.OrderNo = GetOrderNo();
                Dt_StockInfo? stockInfo = _stockService.StockInfoService.GetStockByPalletCode(materielGroupDTO.PalletCode);
                (bool, string, object?) result = CheckMaterielGroupParam(materielGroupDTO, stockInfo);
                if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
@@ -153,68 +156,32 @@
                    stockInfo = new Dt_StockInfo();
                    stockInfo.PalletCode = materielGroupDTO.PalletCode;
                    stockInfo.StockStatus = StockStatusEmun.组盘暂存.ObjToInt();
                    stockInfo.Creater = "立库WMS";
                    stockInfo.Creater = "WMS";
                    stockInfo.Details = new List<Dt_StockInfoDetail>();
                }
                List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                List<Dt_LabelMaster> notExistLabels = new List<Dt_LabelMaster>();
                foreach (var lablel in materielGroupDTO.SerialNumbers)
                foreach (var item in inventoryRequest.DATA)
                {
                    Dt_LabelMaster labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == lablel);
                    if (labmaster == null)
                    {
                        //通过条码接口同步条码主数据
                        var res = _sys_JobService.GetLabMaster(lablel);
                        if (res != null && res.Status)
                        {
                            labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == lablel);
                            if (labmaster == null)
                            {
                                notExistLabels.Add(labmaster);
                            }
                        }
                        else
                        {
                            return content = WebResponseContent.Instance.Error("组盘条码在上游WMS系统中不存在!");
                        }
                    }
                    if (labmaster != null)
                    {
                        //主数据条码状态允许组盘:01已收料待质检,02已收料无需质检,03待进仓已质检,09已下架;
                        //主数据条码状态不允许组盘:00创建,04已质检待退货,05收料房退货,06库房退货,07已进仓,08已上架,10已出库,11已冻结,12已锁定,20关闭的;
                        if (labmaster.LABEL_STATUS == "00" || labmaster.LABEL_STATUS == "04" || labmaster.LABEL_STATUS == "05" || labmaster.LABEL_STATUS == "06" || labmaster.LABEL_STATUS == "07" || labmaster.LABEL_STATUS == "08" || labmaster.LABEL_STATUS == "10" || labmaster.LABEL_STATUS == "11" || labmaster.LABEL_STATUS == "12" || labmaster.LABEL_STATUS == "20")
                        {
                            return content = WebResponseContent.Instance.Error("主数据条码状态不允许组盘!条码状态:" + labmaster.LABEL_STATUS);
                        }
                    }
                }
                if (notExistLabels.Count == 0)
                {
                    foreach (var item in materielGroupDTO.SerialNumbers)
                    {
                        Dt_LabelMaster labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == item);
                        Dt_StockInfoDetail dt_StockInfoDetail = new Dt_StockInfoDetail();
                        dt_StockInfoDetail.Status = 0;
                        dt_StockInfoDetail.OrderNo = materielGroupDTO.OrderNo;
                        dt_StockInfoDetail.StockId = stockInfo.Id != 0 ? stockInfo.Id : 0;
                        dt_StockInfoDetail.MaterielCode = labmaster.MATNR;
                        dt_StockInfoDetail.MaterielName = labmaster.MAKTX;
                        dt_StockInfoDetail.BatchNo = labmaster.BATCH;
                        dt_StockInfoDetail.SerialNumber = labmaster.LABEL_NO;
                        dt_StockInfoDetail.StockQuantity = int.Parse(labmaster.BOX_QTY);
                    dt_StockInfoDetail.MaterielCode = item.MATNR;
                    dt_StockInfoDetail.MaterielName = "";
                    dt_StockInfoDetail.BatchNo = "";
                    dt_StockInfoDetail.SerialNumber = item.LABEL_NO;
                    dt_StockInfoDetail.StockQuantity = int.Parse(item.QTY);
                        dt_StockInfoDetail.OutboundQuantity = 0;
                        dt_StockInfoDetail.Creater = "System";
                    dt_StockInfoDetail.Creater = "WMS";
                        stockInfoDetails.Add(dt_StockInfoDetail);
                        stockInfo.Details.AddRange(stockInfoDetails);
                    }
                    content = MaterielGroupUpdateData(stockInfo);
                }
                else
                {
                    content = WebResponseContent.Instance.Error("组盘条码在上游WMS系统中不存在!");
                }
            }
            catch (Exception ex)
@@ -235,16 +202,58 @@
        /// <returns></returns>
        public ReturnInventoryResponse returnInventory(ReturnInventoryRequest inventoryRequest)
        {
            string inparam = JsonConvert.SerializeObject(inventoryRequest);
            new LogFactory().GetLog("WMS接口").InfoFormat(true, "returnInventory", "余料退回信息", $"{inparam}");
            ReturnInventoryResponse response= new ReturnInventoryResponse();
            MaterielGroupDTO materielGroupDTO = new MaterielGroupDTO();
            materielGroupDTO.PalletCode = inventoryRequest.TPNUM;
            materielGroupDTO.OrderNo = inventoryRequest.IZLID; //退货入库指令
            List<string> SerialNumbers = new List<string>();
            //保存回退数据到本地
            Dt_MainReturnInventory dt_MainReturnInventory = new Dt_MainReturnInventory();
            dt_MainReturnInventory.WH_NUMBER= inventoryRequest.WH_NUMBER;
            dt_MainReturnInventory.BUSINESS_CODE = inventoryRequest.BUSINESS_CODE;
            dt_MainReturnInventory.BUSINESS_NAME = inventoryRequest.BUSINESS_NAME;
            dt_MainReturnInventory.WERKS = inventoryRequest.WERKS;
            dt_MainReturnInventory.LGORT = inventoryRequest.LGORT;
            dt_MainReturnInventory.TOTAL_RETURN_QTY=inventoryRequest.TOTAL_RETURN_QTY;
            dt_MainReturnInventory.RETURN_NO = inventoryRequest.RETURN_NO;
            dt_MainReturnInventory.RETURN_ITEM_NO = inventoryRequest.RETURN_ITEM_NO;
            dt_MainReturnInventory.TPNUM = inventoryRequest.TPNUM;
            dt_MainReturnInventory.YLZD1 = inventoryRequest.YLZD1;
            dt_MainReturnInventory.YLZD2 = inventoryRequest.YLZD2;
            dt_MainReturnInventory.YLZD3 = inventoryRequest.YLZD3;
            dt_MainReturnInventory.YLZD4 = inventoryRequest.YLZD4;
            dt_MainReturnInventory.YLZD5 = inventoryRequest.YLZD5;
            dt_MainReturnInventory.IZLID = inventoryRequest.IZLID;
            dt_MainReturnInventory.SYSNOD = inventoryRequest.SYSNOD;
            dt_MainReturnInventory.MO_NO = inventoryRequest.MO_NO;
            foreach (ReturnInventory item in inventoryRequest.DATA)
            {
                Dt_ReturnInventoryDetail dt_ReturnInventoryDetail = new Dt_ReturnInventoryDetail();
                dt_ReturnInventoryDetail.LABEL_NO = item.LABEL_NO;
                dt_ReturnInventoryDetail.SOBKZ = item.SOBKZ;
                dt_ReturnInventoryDetail.UNIT = item.UNIT;
                dt_ReturnInventoryDetail.LGORT = item.LGORT;
                dt_ReturnInventoryDetail.QTY = item.QTY;
                dt_ReturnInventoryDetail.LIFNR = item.LIFNR;
                dt_ReturnInventoryDetail.F_LGORT = item.F_LGORT;
                dt_ReturnInventoryDetail.MATNR  = item.MATNR;
                _ReturnInventoryDetailRepository.AddData(dt_ReturnInventoryDetail);
                SerialNumbers.Add(item.LABEL_NO);
            }
            ReturnMaterielGroup(materielGroupDTO);
            materielGroupDTO.SerialNumbers = SerialNumbers;
            _mainReturnInventoryRepository.AddData(dt_MainReturnInventory);
            WebResponseContent content =  ReturnMaterielGroup(materielGroupDTO, inventoryRequest);
            if(content.Status)
            {
                response.MSGTY = "S";
            }
            else
            {
                response.MSGTY = "E";
                response.MSGTX = content.Message;
            }
            return response;
        }
        /// <summary>