duyongjia
2024-12-25 f344c6a0626b480cfeaf380b82f71b6553a9b429
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_JobService.cs
@@ -23,6 +23,8 @@
using WIDESEA_Core.Log;
using WIDESEA_DTO.System;
using WIDESEA_IBasicRepository;
using WIDESEA_IOutboundRepository;
using WIDESEA_IOutboundService;
using WIDESEA_ISystemRepository;
using WIDESEA_ISystemService;
using WIDESEA_Model;
@@ -41,9 +43,10 @@
        private readonly IOutBoundOrderBYDRepository _outBoundOrderBYDRepository;
        private readonly IOutboundOrderDetailBYDRepository _outboundOrderDetailByDRepository;
        private readonly IOutboundOrderDetail_LabelsBYDRepository _outboundOrderDetailLabelsByDRepository;
        private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository;
        private readonly IOutboundOrderRepository _outboundOrderRepository;
        public Sys_JobService(ISys_JobRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService,ILabelMasterRepository labelMasterRepository, IOutBoundOrderBYDRepository outBoundOrderBYDRepository, IOutboundOrderDetailBYDRepository outboundOrderDetailByDRepository, IOutboundOrderDetail_LabelsBYDRepository outboundOrderDetailLabelsByDRepository) : base(BaseDal)
        public Sys_JobService(ISys_JobRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService,ILabelMasterRepository labelMasterRepository, IOutBoundOrderBYDRepository outBoundOrderBYDRepository, IOutboundOrderDetailBYDRepository outboundOrderDetailByDRepository, IOutboundOrderDetail_LabelsBYDRepository outboundOrderDetailLabelsByDRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _cacheService = cacheService;
@@ -51,6 +54,8 @@
            _outBoundOrderBYDRepository = outBoundOrderBYDRepository;
            _outboundOrderDetailByDRepository = outboundOrderDetailByDRepository;
            _outboundOrderDetailLabelsByDRepository = outboundOrderDetailLabelsByDRepository;
            _outboundOrderRepository = outboundOrderRepository;
            _outboundOrderDetailRepository = outboundOrderDetailRepository;
        }
        /// <summary>
@@ -246,51 +251,193 @@
                        List<OutStoreData> outStoreList = JsonConvert.DeserializeObject<List<OutStoreData>>(newdata);
                        foreach (var item in outStoreList)
                        {
                            Dt_OutBoundOrderBYD outBoundOrderBYD = new Dt_OutBoundOrderBYD();
                            outBoundOrderBYD.REQUIREMENT_NO = item.REQUIREMENT_NO;
                            outBoundOrderBYD.WRKS = item.WERKS;
                            outBoundOrderBYD.WH_NUMBER = item.WH_NUMBER;
                            outBoundOrderBYD.SYSNOD = item.SYSNOD;
                            outBoundOrderBYD.BUSINESS_CODE = item.BUSINESS_CODE;
                            outBoundOrderBYD.BUSINESS_NAME = item.BUSINESS_NAME;
                            outBoundOrderBYD.LGORT=item.LGORT;
                            outBoundOrderBYD.STATION=item.STATION;
                            outBoundOrderBYD.MO_NO = item.MO_NO;
                            outBoundOrderBYD.SAP_OUT_NO = item.SAP_OUT_NO;
                            outBoundOrderBYD.RECEIVE_LGORT = item.RECEIVE_LGORT;
                            outBoundOrderBYD.OVERSTEP_REQ_FLAG = item.OVERSTEP_REQ_FLAG;
                            outBoundOrderBYD.SPLIT=item.SPLIT;
                            outBoundOrderBYD.STATUS=item.STATUS;
                            outBoundOrderBYD.CREATE_PERSON=item.CREATE_PERSON;
                            outBoundOrderBYD.CREATE_DATE=item.CREATE_DATE;
                            _outBoundOrderBYDRepository.AddData(outBoundOrderBYD);
                            foreach (var detail in item.ITEMS)
                            Dt_OutBoundOrderBYD bydOrder = _outBoundOrderBYDRepository.QueryFirst(x => x.REQUIREMENT_NO == item.REQUIREMENT_NO);
                            if (bydOrder != null)//更新
                            {
                                Dt_OutboundOrderDetailBYD outboundOrderDetailBYD = new Dt_OutboundOrderDetailBYD();
                                outboundOrderDetailBYD.REQUIREMENT_NO = outBoundOrderBYD.REQUIREMENT_NO;
                                outboundOrderDetailBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                outboundOrderDetailBYD.MATNR=detail.MATNR;
                                outboundOrderDetailBYD.BATCH=detail.BATCH;
                                outboundOrderDetailBYD.QTY=detail.QTY;
                                outboundOrderDetailBYD.GEAR=detail.GEAR;
                                outboundOrderDetailBYD.PI_NO=detail.PI_NO;
                                _outboundOrderDetailByDRepository.AddData(outboundOrderDetailBYD);
                                foreach (var label in detail.LABELS)
                                bydOrder.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                bydOrder.WRKS = item.WERKS;
                                bydOrder.WH_NUMBER = item.WH_NUMBER;
                                bydOrder.SYSNOD = item.SYSNOD;
                                bydOrder.BUSINESS_CODE = item.BUSINESS_CODE;
                                bydOrder.BUSINESS_NAME = item.BUSINESS_NAME;
                                bydOrder.LGORT = item.LGORT;
                                bydOrder.STATION = item.STATION;
                                bydOrder.MO_NO = item.MO_NO;
                                bydOrder.SAP_OUT_NO = item.SAP_OUT_NO;
                                bydOrder.RECEIVE_LGORT = item.RECEIVE_LGORT;
                                bydOrder.OVERSTEP_REQ_FLAG = item.OVERSTEP_REQ_FLAG;
                                bydOrder.SPLIT = item.SPLIT;
                                bydOrder.STATUS = item.STATUS;
                                bydOrder.CREATE_PERSON = item.CREATE_PERSON;
                                bydOrder.CREATE_DATE = item.CREATE_DATE;
                                _outBoundOrderBYDRepository.UpdateData(bydOrder);
                                foreach (var detail in item.ITEMS)
                                {
                                    if (label != null)
                                    Dt_OutboundOrderDetailBYD byddetail = _outboundOrderDetailByDRepository.QueryFirst(x => x.REQUIREMENT_NO == item.REQUIREMENT_NO && x.REQUIREMENT_ITEM_NO == detail.REQUIREMENT_ITEM_NO);
                                    if (byddetail != null)
                                    {
                                        Dt_OutboundOrderDetail_LabelsBYD outboundOrderDetail_LabelsBYD = new Dt_OutboundOrderDetail_LabelsBYD();
                                        outboundOrderDetail_LabelsBYD.LABEL_NO = label.LABLEL_NO;
                                        outboundOrderDetail_LabelsBYD.CONTENT_LABEL_NO = label.CONTENT_LABLEL_NO;
                                        outboundOrderDetail_LabelsBYD.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                        outboundOrderDetail_LabelsBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                        _outboundOrderDetailLabelsByDRepository.AddData(outboundOrderDetail_LabelsBYD);
                                        byddetail.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                        byddetail.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                        byddetail.MATNR = detail.MATNR;
                                        byddetail.BATCH = detail.BATCH;
                                        byddetail.BATCH = detail.BATCH;
                                        byddetail.QTY = detail.QTY;
                                        byddetail.GEAR = detail.GEAR;
                                        byddetail.PI_NO = detail.PI_NO;
                                        _outboundOrderDetailByDRepository.UpdateData(byddetail);
                                    }
                                    else
                                    {
                                        Dt_OutboundOrderDetailBYD newdetail = new Dt_OutboundOrderDetailBYD();
                                        newdetail.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                        newdetail.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                        newdetail.MATNR = detail.MATNR;
                                        newdetail.BATCH = detail.BATCH;
                                        newdetail.BATCH = detail.BATCH;
                                        newdetail.QTY = detail.QTY;
                                        newdetail.GEAR = detail.GEAR;
                                        newdetail.PI_NO = detail.PI_NO;
                                        _outboundOrderDetailByDRepository.AddData(newdetail);
                                    }
                                }
                            }
                            else
                            {
                                Dt_OutBoundOrderBYD outBoundOrderBYD = new Dt_OutBoundOrderBYD();
                                outBoundOrderBYD.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                outBoundOrderBYD.WRKS = item.WERKS;
                                outBoundOrderBYD.WH_NUMBER = item.WH_NUMBER;
                                outBoundOrderBYD.SYSNOD = item.SYSNOD;
                                outBoundOrderBYD.BUSINESS_CODE = item.BUSINESS_CODE;
                                outBoundOrderBYD.BUSINESS_NAME = item.BUSINESS_NAME;
                                outBoundOrderBYD.LGORT = item.LGORT;
                                outBoundOrderBYD.STATION = item.STATION;
                                outBoundOrderBYD.MO_NO = item.MO_NO;
                                outBoundOrderBYD.SAP_OUT_NO = item.SAP_OUT_NO;
                                outBoundOrderBYD.RECEIVE_LGORT = item.RECEIVE_LGORT;
                                outBoundOrderBYD.OVERSTEP_REQ_FLAG = item.OVERSTEP_REQ_FLAG;
                                outBoundOrderBYD.SPLIT = item.SPLIT;
                                outBoundOrderBYD.STATUS = item.STATUS;
                                outBoundOrderBYD.CREATE_PERSON = item.CREATE_PERSON;
                                outBoundOrderBYD.CREATE_DATE = item.CREATE_DATE;
                                _outBoundOrderBYDRepository.AddData(outBoundOrderBYD);
                                foreach (var detail in item.ITEMS)
                                {
                                    Dt_OutboundOrderDetailBYD outboundOrderDetailBYD = new Dt_OutboundOrderDetailBYD();
                                    outboundOrderDetailBYD.REQUIREMENT_NO = outBoundOrderBYD.REQUIREMENT_NO;
                                    outboundOrderDetailBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                    outboundOrderDetailBYD.MATNR = detail.MATNR;
                                    outboundOrderDetailBYD.BATCH = detail.BATCH;
                                    outboundOrderDetailBYD.QTY = detail.QTY;
                                    outboundOrderDetailBYD.GEAR = detail.GEAR;
                                    outboundOrderDetailBYD.PI_NO = detail.PI_NO;
                                    _outboundOrderDetailByDRepository.AddData(outboundOrderDetailBYD);
                                    foreach (var label in detail.LABELS)
                                    {
                                        if (label != null)
                                        {
                                            Dt_OutboundOrderDetail_LabelsBYD outboundOrderDetail_LabelsBYD = new Dt_OutboundOrderDetail_LabelsBYD();
                                            outboundOrderDetail_LabelsBYD.LABEL_NO = label.LABLEL_NO;
                                            outboundOrderDetail_LabelsBYD.CONTENT_LABEL_NO = label.CONTENT_LABLEL_NO;
                                            outboundOrderDetail_LabelsBYD.REQUIREMENT_NO = item.REQUIREMENT_NO;
                                            outboundOrderDetail_LabelsBYD.REQUIREMENT_ITEM_NO = detail.REQUIREMENT_ITEM_NO;
                                            _outboundOrderDetailLabelsByDRepository.AddData(outboundOrderDetail_LabelsBYD);
                                        }
                                    }
                                }
                            }
                        }
                        //同步到WMS出库单中
                        foreach(var item in outStoreList)
                        {
                            if (item != null)
                            {
                                Dt_OutboundOrder outOrder =_outboundOrderRepository.QueryFirst(x=>x.OrderNo==item.REQUIREMENT_NO);
                                if (outOrder != null)
                                {
                                    outOrder.OrderNo = item.REQUIREMENT_NO;
                                    outOrder.UpperOrderNo = "";
                                    outOrder.OrderType = (int)OutOrderTypeEnum.Issue;
                                    outOrder.OrderStatus = (int)OutboundStatusEnum.未开始;
                                    outOrder.CreateType = (int)CreateType.UpperSystemPush;
                                    outOrder.Creater = "System";
                                    _outboundOrderRepository.UpdateData(outOrder);
                                    foreach (var orderdetail in item.ITEMS)
                                    {
                                        Dt_OutboundOrderDetail detail = _outboundOrderDetailRepository.QueryFirst(x => x.OrderId == outOrder.Id && x.Remark == orderdetail.REQUIREMENT_ITEM_NO);
                                        if (detail != null)
                                        {
                                            detail.OrderId = outOrder.Id;
                                            detail.MaterielCode = orderdetail.MATNR;
                                            detail.BatchNo = orderdetail.BATCH;
                                            detail.OrderQuantity = Convert.ToDecimal(orderdetail.QTY);
                                            detail.LockQuantity = 0;
                                            detail.OverOutQuantity = 0;
                                            detail.OrderDetailStatus = (int)OrderDetailStatusEnum.New;
                                            detail.Creater = "System";
                                            detail.Remark = orderdetail.REQUIREMENT_ITEM_NO;
                                            _outboundOrderDetailRepository.UpdateData(detail);
                                        }
                                        else
                                        {
                                            Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail();
                                            outboundOrderDetail.OrderId = outOrder.Id;
                                            outboundOrderDetail.MaterielCode = orderdetail.MATNR;
                                            outboundOrderDetail.BatchNo = orderdetail.BATCH;
                                            outboundOrderDetail.OrderQuantity = Convert.ToDecimal(orderdetail.QTY);
                                            outboundOrderDetail.LockQuantity = 0;
                                            outboundOrderDetail.OverOutQuantity = 0;
                                            outboundOrderDetail.OrderDetailStatus = (int)OrderDetailStatusEnum.New;
                                            outboundOrderDetail.Creater = "System";
                                            outboundOrderDetail.Remark = orderdetail.REQUIREMENT_ITEM_NO;
                                            _outboundOrderDetailRepository.AddData(outboundOrderDetail);
                                        }
                                    }
                                }
                                else
                                {
                                    Dt_OutboundOrder outboundOrder = new Dt_OutboundOrder();
                                    outboundOrder.OrderNo = item.REQUIREMENT_NO;
                                    outboundOrder.UpperOrderNo = "";
                                    outboundOrder.OrderType = (int)OutOrderTypeEnum.Issue;
                                    outboundOrder.OrderStatus = (int)OutboundStatusEnum.未开始;
                                    outboundOrder.CreateType = (int)CreateType.UpperSystemPush;
                                    outboundOrder.Creater = "System";
                                    _outboundOrderRepository.AddData(outboundOrder);
                                    Dt_OutboundOrder outOrdertemp = _outboundOrderRepository.QueryFirst(x => x.OrderNo == item.REQUIREMENT_NO);
                                    foreach (var orderdetail in item.ITEMS)
                                    {
                                        Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail();
                                        outboundOrderDetail.OrderId = outOrdertemp.Id;
                                        outboundOrderDetail.MaterielCode = orderdetail.MATNR;
                                        outboundOrderDetail.BatchNo = orderdetail.BATCH;
                                        outboundOrderDetail.OrderQuantity =Convert.ToDecimal(orderdetail.QTY);
                                        outboundOrderDetail.LockQuantity = 0;
                                        outboundOrderDetail.OverOutQuantity = 0;
                                        outboundOrderDetail.OrderDetailStatus = (int)OrderDetailStatusEnum.New;
                                        outboundOrderDetail.Creater="System";
                                        outboundOrderDetail.Remark = orderdetail.REQUIREMENT_ITEM_NO;
                                        _outboundOrderDetailRepository.AddData(outboundOrderDetail);
                                    }
                                }
                            }
                        }
                        content = WebResponseContent.Instance.OK();
                    }
                }
            }