Просмотр исходного кода

委外加工要货令自动生成

Pengxy 1 год назад
Родитель
Сommit
142ab5d808

+ 1 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/PoActionListDto.cs

@@ -17,5 +17,6 @@ namespace Business.ResourceExamineManagement.Dto
         public List<srm_po_occupy> poOccupiesList { get; set; } = new List<srm_po_occupy>();
         public List<srm_po_occupy> poOccupiesList { get; set; } = new List<srm_po_occupy>();
         public List<PurOrdMaster> poMasterList { get; set; } = new List<PurOrdMaster>();
         public List<PurOrdMaster> poMasterList { get; set; } = new List<PurOrdMaster>();
         public List<PurOrdDetail> poDetailList { get; set; } = new List<PurOrdDetail>();
         public List<PurOrdDetail> poDetailList { get; set; } = new List<PurOrdDetail>();
+        public List<PurOrdDetailBatch> poDetailBatchList { get; set; } = new List<PurOrdDetailBatch>();
     }
     }
 }
 }

+ 58 - 8
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -21,6 +21,7 @@ using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using MongoDB.Driver.Linq;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Newtonsoft.Json.Linq;
+using NUglify.JavaScript.Syntax;
 using Org.BouncyCastle.Crypto;
 using Org.BouncyCastle.Crypto;
 using SixLabors.ImageSharp;
 using SixLabors.ImageSharp;
 using System;
 using System;
@@ -1591,6 +1592,18 @@ namespace Business.ResourceExamineManagement
                                 }
                                 }
                             });
                             });
                             _purOrdDetail.Insert(poaction.poDetailList);
                             _purOrdDetail.Insert(poaction.poDetailList);
+                            if (poaction.poDetailBatchList.Any())
+                            {
+                                var detailNbrList = _purOrdDetail.Select(a => a.Domain == poaction.poMasterList[0].Domain && nbrs.Contains(a.PurOrd));
+                                poaction.poDetailBatchList.ForEach(b => {
+                                    
+                                    var detail= detailNbrList.Where(d=>d.PurOrd==b.PurOrd && d.Line==b.Line).FirstOrDefault();
+                                    if (detail != null)
+                                    {
+                                        b.PurOrdDetailRecID = detail.RecID;
+                                    }
+                                });
+                            }
                         }
                         }
                         await unitOfWork.CompleteAsync();
                         await unitOfWork.CompleteAsync();
                     }
                     }
@@ -2406,16 +2419,16 @@ namespace Business.ResourceExamineManagement
         }
         }
         private void AutoCreatePOFromPR(List<srm_pr_main> list, List<ic_item> icitemlist, List<srm_supplier> itemsupplierList, List<srm_purchase> purchaselist, PoActionListDto poaction)
         private void AutoCreatePOFromPR(List<srm_pr_main> list, List<ic_item> icitemlist, List<srm_supplier> itemsupplierList, List<srm_purchase> purchaselist, PoActionListDto poaction)
         {
         {
-            var zcPr = list.Where(a => a.pr_billno.StartsWith("PR")).ToList();
+            var zcPr = list.Where(a => a.pr_billno.StartsWith("PR") && a.supplier_type != "委外" && a.IsRequireGoods == 1).ToList();
             if (zcPr.Any())
             if (zcPr.Any())
             {
             {
                 AutoCreatePOFromPRByType(zcPr, icitemlist, itemsupplierList, purchaselist, poaction, 1);
                 AutoCreatePOFromPRByType(zcPr, icitemlist, itemsupplierList, purchaselist, poaction, 1);
             }
             }
-            /*var wwPr = list.Where(a => a.pr_billno.StartsWith("WWPR")).ToList();
+            var wwPr = list.Where(a => a.supplier_type=="委外" && a.IsRequireGoods==1).ToList();
             if (wwPr.Any())
             if (wwPr.Any())
             {
             {
-                AutoCreatePOFromPRByType(wwPr, icitemlist, itemsupplierList, purchaselist, poaction,2);
-            }*/
+                AutoCreatePOFromPRByType(wwPr, icitemlist, itemsupplierList, purchaselist, poaction, 2);
+            }
         }
         }
         /// <summary>
         /// <summary>
         /// 根据PR生成PO
         /// 根据PR生成PO
@@ -2583,8 +2596,8 @@ namespace Business.ResourceExamineManagement
             }
             }
             poaction.poMain.AddRange(polist);
             poaction.poMain.AddRange(polist);
             poaction.polist.AddRange(podetaillist);
             poaction.polist.AddRange(podetaillist);
-
-            var nbrlistDto = _serialNumberAppService.GetBillNo(domain, "DO", polist.Count, "admin", 1);
+            
+            var nbrlistDto = _serialNumberAppService.GetBillNo(domain, poType==2?"pw": "DO", polist.Count, "admin", 1);
             int index = 0;
             int index = 0;
             foreach (var p in polist)
             foreach (var p in polist)
             {
             {
@@ -2611,6 +2624,7 @@ namespace Business.ResourceExamineManagement
                 {
                 {
                     case "标准":
                     case "标准":
                     case "VMI":
                     case "VMI":
+                    case "委外":
                         break;
                         break;
                     case "研发":
                     case "研发":
                         buyer = "130";
                         buyer = "130";
@@ -2622,7 +2636,7 @@ namespace Business.ResourceExamineManagement
                 purOrdMasters.Add(new PurOrdMaster
                 purOrdMasters.Add(new PurOrdMaster
                 {
                 {
                     Domain = domain,
                     Domain = domain,
-                    Potype = poType == 1 ? "po" : "pw",
+                    Potype = poType == 1 ? "po" : "PW",
                     PurOrd = a.po_billno,
                     PurOrd = a.po_billno,
                     Buyer = buyer,
                     Buyer = buyer,
                     OrdDate = a.po_ssend_date,
                     OrdDate = a.po_ssend_date,
@@ -2650,7 +2664,7 @@ namespace Business.ResourceExamineManagement
                 purOrdDetails.Add(new PurOrdDetail
                 purOrdDetails.Add(new PurOrdDetail
                 {
                 {
                     Domain = domain,
                     Domain = domain,
-                    Potype = poType == 1 ? "po" : "pw",
+                    Potype = poType == 1 ? "po" : "PW",
                     PurOrd = a.po_billno,
                     PurOrd = a.po_billno,
                     IsActive = true,
                     IsActive = true,
                     CreateTime = a.create_time,
                     CreateTime = a.create_time,
@@ -2670,6 +2684,42 @@ namespace Business.ResourceExamineManagement
                     ReqLine = 1,
                     ReqLine = 1,
                     Status = ""
                     Status = ""
                 });
                 });
+                if (poType == 2)
+                {
+                    var icbom = _mysql_ic_bom.GetListAsync(i=>i.bom_number== a.ItemNum).Result;
+                    var bomlist = _mysql_b_bom_pretreatment.GetListAsync(b=>b.sourceid==icbom.First().Id && b.item_number!= a.ItemNum).Result;
+                    if (bomlist.Any())
+                    {
+                        var items = _itemMaster.Select(m=> bomlist.Select(b=>b.item_number).ToList().Contains(m.ItemNum));
+                        List<PurOrdDetailBatch> purOrdDetailBatches = new List<PurOrdDetailBatch>();
+                        short num = 1;
+                        foreach (var item in bomlist)
+                        {
+                            purOrdDetailBatches.Add(new PurOrdDetailBatch
+                            {
+                                Domain = domain,
+                                Potype = "PW",
+                                PurOrd = a.po_billno,
+                                IsActive = true,
+                                IsConfirm = true,
+                                CreateTime = a.create_time,
+                                UpdateTime = a.update_time,
+                                Line = line,
+                                Batch= num,
+                                Location = items.Where(m=>m.ItemNum== item.item_number).First().Location,
+                                UM = item.unit,
+                                ItemNum = a.ItemNum,
+                                SuppItem= item.item_number,
+                                QtyOrded = a.qty.GetValueOrDefault(),
+                                QtyBO= item.qty.GetValueOrDefault() + ((item.qty.GetValueOrDefault() * item.Scrap ) / 100),
+                                QtyReleased= a.qty.GetValueOrDefault()* (item.qty.GetValueOrDefault() + ((item.qty.GetValueOrDefault() * item.Scrap) / 100)),
+                                Status = ""
+                            });
+                            num++;
+                        }
+                        poaction.poDetailBatchList.AddRange(purOrdDetailBatches);
+                    }
+                }
             });
             });
             poaction.poDetailList.AddRange(purOrdDetails);
             poaction.poDetailList.AddRange(purOrdDetails);
         }
         }

+ 155 - 0
MicroServices/Business/Business.Domain/StructuredDB/MES/IC/PurOrdDetailBatch.cs

@@ -0,0 +1,155 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Domain
+{
+    /// <summary>
+    /// 采购订单组件明细表
+    /// </summary>
+    [Comment("采购订单组件明细表")]
+    public class PurOrdDetailBatch
+    {
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Comment("主键")]
+        [Key]
+        public int RecID { get; set; }
+
+        public int PurOrdDetailRecID { get; set; }
+
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        [Comment("域名")]
+        public string Domain { get; set; }
+
+        /// <summary>
+        /// 类型
+        /// </summary>
+        [Comment("类型")]
+        public string Potype { get; set; }
+
+        /// <summary>
+        /// PO单号
+        /// </summary>
+        [Comment("PO单号")]
+        public string PurOrd { get; set; }
+
+
+        /// <summary>
+        /// 明细表行号
+        /// </summary>
+        [Comment("明细表行号")]
+        public short Line { get; set; }
+
+        /// <summary>
+        /// 行号
+        /// </summary>
+        [Comment("行号")]
+        public short Batch { get; set; }
+
+        /// <summary>
+        /// 物料编码
+        /// </summary>
+        [StringLength(100)]
+        [Comment("物料编码")]
+        public string ItemNum { get; set; }
+
+        /// <summary>
+        /// 组件物料编码
+        /// </summary>
+        [StringLength(100)]
+        [Comment("组件物料编码")]
+        public string SuppItem { get; set; }
+
+        /// <summary>
+        /// 订单数量
+        /// </summary>
+        [Precision(23, 10)]
+        [Comment("订单数量")]
+        public decimal QtyOrded { get; set; }
+
+        /// <summary>
+        /// 已收货数量
+        /// </summary>
+        [Precision(23, 10)]
+        [Comment("已收货数量")]
+        public decimal QtyReceived { get; set; }
+
+        /// <summary>
+        /// BOM单位用量
+        /// </summary>
+        [Precision(23, 10)]
+        [Comment("BOM单位用量")]
+        public decimal? QtyBO { get; set; }
+
+        /// <summary>
+        /// PurOrdDetail.QtyOrded*BOM单位用量(按单位规则向上取整)
+        /// </summary>
+        [Precision(23, 10)]
+        [Comment("PurOrdDetail.QtyOrded*BOM单位用量(按单位规则向上取整)")]
+        public decimal? QtyReleased { get; set; }
+
+        /// <summary>
+        /// 单位
+        /// </summary>
+        [Comment("单位")]
+        public string UM { get; set; }
+
+        /// <summary>
+        /// 是否有效:1-有效;0-无效
+        /// </summary>
+        [Comment("是否有效")]
+        public bool IsActive { get; set; }
+
+        /// <summary>
+        /// 是否确认:1-有效;0-无效
+        /// </summary>
+        [Comment("是否确认")]
+        public bool IsConfirm { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("创建时间")]
+        public DateTime? CreateTime { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        [Comment("创建人")]
+        public string CreateUser { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [Comment("修改时间")]
+        public DateTime? UpdateTime { get; set; }
+
+        /// <summary>
+        /// 修改人
+        /// </summary>
+        [Comment("修改人")]
+        public string UpdateUser { get; set; }
+
+        /// <summary>
+        /// 库位
+        /// </summary>
+        [Comment("库位")]
+        public string Location { get; set; }
+
+        /// <summary>
+        /// 状态
+        /// </summary>
+        [Comment("状态")]
+        public string Status { get; set; }
+
+    }
+}

+ 30 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -1502,3 +1502,33 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-03T12:07:08.5457034+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-03T12:07:08.5457034+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-03T12:07:08.5506359+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-03T12:07:08.5506359+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-03T12:07:08.552434+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-03T12:07:08.552434+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:26:59.1471325+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:26:59.1832665+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:26:59.1861031+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:26:59.1877975+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:26:59.1922592+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-13T09:26:59.1941754+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:42:17.7024563+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:42:17.7327413+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:42:17.7362814+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:42:17.7379585+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:42:17.7422834+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-13T09:42:17.7438128+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:49:50.0783516+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:49:50.1304165+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:49:50.1341151+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:49:50.1358316+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:49:50.1376108+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-13T09:49:50.1450898+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:58:22.5709703+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:58:22.622453+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:58:22.6291163+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:58:22.6308691+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-13T09:58:22.6330194+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-13T09:58:22.6414043+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2024-12-13T10:02:56.2714829+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2024-12-13T10:02:56.3303704+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2024-12-13T10:02:56.3359591+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2024-12-13T10:02:56.3378393+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2024-12-13T10:02:56.3396666+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2024-12-13T10:02:56.3470681+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}