From f344c6a0626b480cfeaf380b82f71b6553a9b429 Mon Sep 17 00:00:00 2001
From: duyongjia <adu_555@163.com>
Date: 星期三, 25 十二月 2024 09:33:24 +0800
Subject: [PATCH] 原料出库修改

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_JobService.cs |  223 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 185 insertions(+), 38 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_JobService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_JobService.cs"
index 6e8479a..98fc363 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_JobService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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);
+                                        }
                                     }
                                 }
                             }
                         }
+
+                        //鍚屾鍒癢MS鍑哄簱鍗曚腑
+                        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();
                     }
+
+                    
                 }
 
             }

--
Gitblit v1.9.3