Ver código fonte

部分问题修复提交。

tangdi 2 anos atrás
pai
commit
d55b829f74

+ 7 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs

@@ -132,5 +132,12 @@ namespace Business.ResourceExamineManagement
         /// <param name="dto"></param>
         /// <returns></returns>
         Task<string> BindingSubstitute(BindingSubstituteDto dto);
+
+        /// <summary>
+        /// BOM¹ØÁªÌæ´ú·½°¸
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        Task<string> PrSendSAP(string companyid);
     }
 }

+ 5 - 22
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3217,7 +3217,8 @@ namespace Business.Replenishment
                     if (returnList.Any())
                     {
                         WorkOrdDetail woDetail = null;
-                        var calereturnList = returnList.Select(x => x.item_number).Distinct().ToList();
+                        var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
+                        short num = 1;
                         foreach (var caleNumber in calereturnList)
                         {
                             var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
@@ -3233,12 +3234,14 @@ namespace Business.Replenishment
                             woDetail.Status = "";
                             woDetail.IsActive = true;
                             woDetail.CreateTime = DateTime.Now;
+                            woDetail.Line = num;
                             woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
                             if (workOrd.QtyOrded != 0)
                             {
                                 woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);
                             }
                             workOrdDetails.Add(woDetail);
+                            num++;
                         }
                     }
                 }
@@ -3813,7 +3816,6 @@ namespace Business.Replenishment
                     if (list.Any())
                         rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
                 }
-                string seqSql = "";
                 if (prmainlist.Any())
                 {
                     var nbrlistDto = _serialNumberAppService.GetBillNo(prmainlist[0].factory_id.ToString(), "PR", prmainlist.Count, "admin", 1);
@@ -3838,22 +3840,6 @@ namespace Business.Replenishment
                             }
                         }
                     }
-                    var prapplyList = prmainlist.Where(s => s.IsRequireGoods != 1).ToList();
-                    if (prapplyList.Any())
-                    {
-                        //请购单插入事务
-                        var rstSeqId = _serialNumberAppService.GetSeqIdList(prapplyList[0].factory_id.ToString(), 1, 1);
-                        long seqId = 0;
-                        if (long.TryParse(rstSeqId, out seqId))
-                        {
-                            prapplyList.ForEach(p =>
-                            {
-                                seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
-                                    "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.mysql_id.ToString() + ",getdate(),'',getdate(),'');";
-                                seqId++;
-                            });
-                        }
-                    }
                 }
 
                 //获取工单数据
@@ -3877,10 +3863,6 @@ namespace Business.Replenishment
                         {
                             var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
                             _businessDbContext.BulkInsert(pr_mainlist);
-                            if (!string.IsNullOrEmpty(seqSql))
-                            {
-                                _businessBangDbContext.Database.ExecuteSqlRaw(seqSql);
-                            }
                         }
                         if (_CalcBomViewAppService.newStockOccList.Any())
                         {
@@ -3892,6 +3874,7 @@ namespace Business.Replenishment
                         {
                             _CalcBomViewAppService.srm_Po_OccupiesInsert.ForEach(s => { s.company_id = param.company_id; s.factory_id = param.factoryId; });
                             var srmpooccupyInsert = ObjectMapper.Map<List<mo_srm_po_occupy>, List<srm_po_occupy>>(_CalcBomViewAppService.srm_Po_OccupiesInsert);
+                            srmpooccupyInsert.ForEach(x => { x.GenerateNewId(help.NextId()); });
                             _businessDbContext.BulkInsert(srmpooccupyInsert);
                         }
                         await unitOfWork.CompleteAsync();

+ 63 - 48
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1131,7 +1131,7 @@ namespace Business.ResourceExamineManagement
             return JsonConvert.SerializeObject("ok");
         }
 
-        //PR自动合并--要货令
+        //PR自动合并
         public void PrAutoMerge(string companyid)
         {
             //直接按间隔多少天一次来处理数据,定时任务按周四来考虑。
@@ -1218,9 +1218,6 @@ namespace Business.ResourceExamineManagement
                     }
                 }
             }
-            
-            //将采购申请推送SAP
-
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
             {
                 try
@@ -1248,6 +1245,58 @@ namespace Business.ResourceExamineManagement
             }
         }
 
+        /// <summary>
+        /// 采购申请推送SAP
+        /// </summary>
+        /// <param name="companyid"></param>
+        public async Task<string> PrSendSAP(string companyid)
+        {
+            DateTime toTime = DateTime.Now;
+            DateTime starttime = toTime.Date.AddDays(1);
+            DateTime endtime = toTime.Date.AddDays(7);
+            //取出采购申请数据
+            List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1 && s.IsRequireGoods == 0).Result;
+            string seqSql = "";
+            if (prapplyList.Any())
+            {
+                //请购单插入事务
+                var rstSeqId = _serialNumberAppService.GetSeqIdList(prapplyList[0].factory_id.ToString(), 1, 1);
+                long seqId = 0;
+                if (long.TryParse(rstSeqId, out seqId))
+                {
+                    prapplyList.ForEach(p =>
+                    {
+                        p.state = 2;
+                        seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
+                            "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.Id.ToString() + ",getdate(),'',getdate(),'');";
+                        seqId++;
+                    });
+                }
+                using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
+                {
+                    try
+                    {
+                        if (!string.IsNullOrEmpty(seqSql))
+                        {
+                            _businessBangDbContext.Database.ExecuteSqlRaw(seqSql);
+                        }
+                        await _mysql_srm_pr_main.UpdateManyAsync(prapplyList);
+                        await unitOfWork.CompleteAsync();
+                    }
+                    catch (Exception e)
+                    {
+                        unitOfWork.Dispose();
+                        new NLogHelper("ResourceExamineAppService").WriteLog("PrSendSAP", "写入采购单推送SAP事务失败:" + e.Message, _currentTenant.Id.ToString());
+                        return e.Message;
+                    };
+                }
+                return "ok";
+            }
+            else {
+                return "一周内暂无需要推送SAP的采购单。";
+            }
+        }
+
 
         /// <summary>
         /// 解析按周频率送货方式
@@ -1635,7 +1684,7 @@ namespace Business.ResourceExamineManagement
             //PO占用记录
             List<mo_srm_po_occupy> po_occupy = await _srm_po_occupy.GetListAsync(s => seIds.Contains(s.eid.Value) && bangidList.Contains(s.bang_id.Value));
             List<mo_srm_pr_main> prmainlist = await _srm_pr_main.GetListAsync(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
-            string seqSql = "";
+            
             if (prmainlist.Any())
             {
                 var nbrlistDto = _serialNumberAppService.GetBillNo(prmainlist[0].factory_id.ToString(), "PR", prmainlist.Count, "admin", 1);
@@ -1661,22 +1710,6 @@ namespace Business.ResourceExamineManagement
                         }
                     }
                 }
-                var prapplyList = prmainlist.Where(s => s.IsRequireGoods != 1).ToList();
-                if (prapplyList.Any())
-                {
-                    //请购单插入事务
-                    var rstSeqId = _serialNumberAppService.GetSeqIdList(prapplyList[0].factory_id.ToString(), 1, 1);
-                    long seqId = 0;
-                    if (long.TryParse(rstSeqId, out seqId))
-                    {
-                        prapplyList.ForEach(p =>
-                        {
-                            seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
-                                "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.mysql_id.ToString() + ",getdate(),'',getdate(),'');";
-                            seqId++;
-                        });
-                    }
-                }
             }
             
             List<mo_ic_item_stockoccupy> item_stockoccupy = await _ic_item_stockoccupy.GetListAsync(s => seIds.Contains(s.orderentry_id.Value) && bangidList.Contains(s.bang_id));
@@ -1689,10 +1722,6 @@ namespace Business.ResourceExamineManagement
                     //批量保存 后期考虑子工单
                     if (moderlist.Any())
                     {
-                        if (!string.IsNullOrEmpty(seqSql))
-                        {
-                            _businessBangDbContext.Database.ExecuteSqlRaw(seqSql);
-                        }
                         _businessDbContext.BulkInsert(moderlist);
                         if (workOrds.Any())
                         {
@@ -3319,7 +3348,8 @@ namespace Business.ResourceExamineManagement
                     if (returnList.Any())
                     {
                         WorkOrdDetail woDetail = null;
-                        var calereturnList = returnList.Select(x => x.item_number).Distinct().ToList();
+                        var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
+                        short num = 1;
                         foreach (var caleNumber in calereturnList)
                         {
                             var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
@@ -3335,6 +3365,7 @@ namespace Business.ResourceExamineManagement
                             woDetail.Status = "";
                             woDetail.IsActive = true;
                             woDetail.CreateTime = DateTime.Now;
+                            woDetail.Line = num;
                             woDetail.QtyRequired = caleList.Sum(c => c.needCount);
                             woDetail.WorkOrdMasterRecID = workord.RecID;
                             if (workord.QtyOrded != 0)
@@ -3342,6 +3373,7 @@ namespace Business.ResourceExamineManagement
                                 woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.QtyOrded, 10);
                             }
                             workOrdDetails.Add(woDetail);
+                            num++;
                         }
                     }
                 }
@@ -3367,7 +3399,6 @@ namespace Business.ResourceExamineManagement
                     if (list.Any())
                         rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
                 }
-                string seqSql = "";
                 if (prmainlist.Any())
                 {
                     var nbrlistDto = _serialNumberAppService.GetBillNo(prmainlist[0].factory_id.ToString(), "PR", prmainlist.Count, "admin", 1);
@@ -3392,22 +3423,6 @@ namespace Business.ResourceExamineManagement
                             }
                         }
                     }
-                    var prapplyList = prmainlist.Where(s => s.IsRequireGoods != 1).ToList();
-                    if (prapplyList.Any())
-                    {
-                        //请购单插入事务
-                        var rstSeqId = _serialNumberAppService.GetSeqIdList(prapplyList[0].factory_id.ToString(), 1, 1);
-                        long seqId = 0;
-                        if (long.TryParse(rstSeqId, out seqId))
-                        {
-                            prapplyList.ForEach(p =>
-                            {
-                                seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
-                                    "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.mysql_id.ToString() + ",getdate(),'',getdate(),'');";
-                                seqId++;
-                            });
-                        }
-                    }
                 }
 
                 //获取工单数据
@@ -3433,10 +3448,6 @@ namespace Business.ResourceExamineManagement
                         {
                             var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
                             _businessDbContext.BulkInsert(pr_mainlist);
-                            if (!string.IsNullOrEmpty(seqSql))
-                            {
-                                _businessBangDbContext.Database.ExecuteSqlRaw(seqSql);
-                            }
                         }
                         if (_CalcBomViewAppService.newStockOccList.Any())
                         {
@@ -3448,6 +3459,7 @@ namespace Business.ResourceExamineManagement
                         {
                             _CalcBomViewAppService.srm_Po_OccupiesInsert.ForEach(s => { s.company_id = param.company_id; s.factory_id = param.factoryId; });
                             var srmpooccupyInsert = ObjectMapper.Map<List<mo_srm_po_occupy>, List<srm_po_occupy>>(_CalcBomViewAppService.srm_Po_OccupiesInsert);
+                            srmpooccupyInsert.ForEach(x => { x.GenerateNewId(help.NextId()); });
                             _businessDbContext.BulkInsert(srmpooccupyInsert);
                         }
                         if (delWorkOrddetails.Any())
@@ -4241,7 +4253,8 @@ namespace Business.ResourceExamineManagement
                     if (returnList.Any())
                     {
                         WorkOrdDetail woDetail = null;
-                        var calereturnList = returnList.Select(x => x.item_number).Distinct().ToList();
+                        var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
+                        short num = 1;
                         foreach (var caleNumber in calereturnList)
                         {
                             var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
@@ -4257,12 +4270,14 @@ namespace Business.ResourceExamineManagement
                             woDetail.Status = "";
                             woDetail.IsActive = true;
                             woDetail.CreateTime = DateTime.Now;
+                            woDetail.Line = num;
                             woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
                             if (workOrd.QtyOrded != 0)
                             {
                                 woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);
                             }
                             workOrdDetails.Add(woDetail);
+                            num++;
                         }
                     }
                 }

+ 6 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/WorkOrdDetail.cs

@@ -104,5 +104,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("损耗率")]
         public decimal Yield { get; set; }
+
+        /// <summary>
+        /// 序号
+        /// </summary>
+        [Comment("序号")]
+        public short Line { get; set; }
     }
 }

+ 12 - 0
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -236,5 +236,17 @@ namespace Business.Controllers
         {
             return _ResourceExamineAppService.BindingSubstitute(dto);
         }
+
+        /// <summary>
+        /// Pr自动合并
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("PrSendSAP")]
+        public Task<string> PrSendSAP(string companyid)
+        {
+            return _ResourceExamineAppService.PrSendSAP(companyid);
+        }
     }
 }