Parcourir la source

PR转PO开发,部分提交。

tangdi il y a 2 ans
Parent
commit
619a7e03ee

+ 51 - 89
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -33,28 +33,6 @@ using Volo.Abp.DependencyInjection;
 using Volo.Abp.Domain.Repositories;
 using Volo.Abp.MultiTenancy;
 using Volo.Abp.Uow;
-<<<<<<< HEAD
-using Spire.Pdf.Exporting.XPS.Schema;
-using Business.PriorityManagement;
-using Newtonsoft.Json.Linq;
-using Business.Dto;
-using NetTopologySuite.Simplify;
-using System.Transactions;
-using Spire.Pdf.General.Render.Decode.Jpeg2000.j2k.codestream;
-using Volo.Abp.ObjectMapping;
-using SixLabors.ImageSharp;
-using static System.Formats.Asn1.AsnWriter;
-using System.Collections;
-using static Spire.Pdf.General.Render.Decode.Jpeg2000.j2k.codestream.HeaderInfo;
-using Spire.Pdf.General.Render.Decode.Jpeg2000.j2k.wavelet.synthesis;
-using Volo.Abp.TenantManagement;
-using System.IO;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Drawing.Drawing2D;
-using Spire.Pdf.Lists;
-using System.Globalization;
-=======
->>>>>>> 77f337b0a4bd0a0ff4f2e65d6a9dfd2ee3c0997c
 
 namespace Business.ResourceExamineManagement
 {
@@ -532,8 +510,6 @@ namespace Business.ResourceExamineManagement
         }
         #endregion
 
-
-
         /// <summary>
         /// 资源检查
         /// </summary>
@@ -547,14 +523,8 @@ namespace Business.ResourceExamineManagement
             {
                 throw new NotImplementedException("请输入正确的订单号!");
             }
-            Array alist = ids.Split(',');
-
             ResourceCheckInputDto input = new ResourceCheckInputDto();
-            input.sorderId = new List<long>();
-            foreach (string longid in alist)
-            {
-                input.sorderId.Add(long.Parse(longid));
-            }
+            input.sorderId = AnalysisIdList(ids);
             //资源检查结果
             PschedDto rtn = new PschedDto();
             List<crm_seorder> sorders = new List<crm_seorder>();
@@ -1261,14 +1231,14 @@ namespace Business.ResourceExamineManagement
             DateTime starttime = toTime.AddDays(1);
             DateTime endtime = toTime.AddDays(8);
             List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.pr_rarrive_date >= starttime && s.pr_rarrive_date <= endtime && (s.state == 1 || s.state == 3)).Result;
-            List<srm_purchase> purchaselist = _mysql_srm_purchase.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.icitem_id) && prlist.Select(c => c.pr_purchaseid).Contains(s.supplier_id)).Result;
-
+            
             if (prlist.Any())
             {
-                var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prlist);
+                List<srm_supplier> itemsupplierList = new List<srm_supplier>();
+                List<srm_purchase> purchaselist = _mysql_srm_purchase.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.icitem_id) && prlist.Select(c => c.pr_purchaseid).Contains(s.supplier_id)).Result;
+                List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
                 PoActionListDto poaction = new PoActionListDto();
-
-                //AutoCreatePOFromPR(prlist, bangid, icitemlist, itemsupplierList, poaction);
+                AutoCreatePOFromPR(prlist, ic_Items, itemsupplierList, poaction);
             }
         }
 
@@ -1803,18 +1773,18 @@ namespace Business.ResourceExamineManagement
             }
             return isSameWeek;
         }
-        private void AutoCreatePOFromPR(List<mo_srm_pr_main> list, long bangid, List<mo_ic_item> icitemlist, List<mo_srm_supplier> itemsupplierList, PoActionListDto poaction)
+        private void AutoCreatePOFromPR(List<srm_pr_main> list , List<ic_item> icitemlist, List<srm_supplier> itemsupplierList, PoActionListDto poaction)
         {
             var zcPr = list.Where(a => a.pr_billno.StartsWith("PR")).ToList();
             if (zcPr.Any())
             {
-                AutoCreatePOFromPRByType(zcPr, bangid, icitemlist, itemsupplierList, poaction,1);
+                AutoCreatePOFromPRByType(zcPr, icitemlist, itemsupplierList, poaction,1);
             }
 
             var wwPr = list.Where(a => a.pr_billno.StartsWith("WWPR")).ToList();
             if (wwPr.Any())
             {
-                AutoCreatePOFromPRByType(wwPr, bangid, icitemlist, itemsupplierList, poaction,2);
+                AutoCreatePOFromPRByType(wwPr, icitemlist, itemsupplierList, poaction,2);
             }
         }
         /// <summary>
@@ -1826,10 +1796,15 @@ namespace Business.ResourceExamineManagement
         /// <param name="itemsupplierList"></param>
         /// <param name="poaction"></param>
         /// <param name="poType">1正常PO,2是委外</param>
-        private void AutoCreatePOFromPRByType(List<mo_srm_pr_main> list, long bangid, List<mo_ic_item> itemList, List<mo_srm_supplier> itemsupplierList, PoActionListDto poaction,int poType)
+        private void AutoCreatePOFromPRByType(List<srm_pr_main> list, List<ic_item> itemList, List<srm_supplier> itemsupplierList, PoActionListDto poaction,int poType)
         {
-            List<mo_srm_po_main> polist = new List<mo_srm_po_main>();
-            List<mo_srm_po_list> podetaillist = new List<mo_srm_po_list>();
+            List<srm_po_main> polist = new List<srm_po_main>();
+            List<srm_po_list> podetaillist = new List<srm_po_list>();
+            //合并条件:目前传入的数据是一周的数据,暂时不考虑多周数据合并。
+            //标准类 1.销售订单产生 2.计划工单产生
+            //物料属性 VMI类 费用类
+
+
             //var itemList = _ic_item.Find(a => a.tenant_id == input.tenantId && a.factory_id == input.factoryId).Result;
             //将PR按供应商和物料和日期(一周内)进行合并,生成PO
             //1.按照供应商、需求日期排序
@@ -1842,18 +1817,17 @@ namespace Business.ResourceExamineManagement
                 mo_srm_po_occupy srm_Po_Occupy = new mo_srm_po_occupy();
                 srm_Po_Occupy.id = help.NextId();
                 srm_Po_Occupy.mysql_id = help.NextId();
-                srm_Po_Occupy.bang_id = bangid;
+                //srm_Po_Occupy.bang_id = bangid;
                 srm_Po_Occupy.morder_mo = item.pr_mono;
                 srm_Po_Occupy.qty = item.pr_aqty;
                 srm_Po_Occupy.eid = item.sentry_id;
 
                 if (item.pr_purchaseid != supplierId)
                 {
-                    var itemsupplier = itemsupplierList.Find(a => a.mysql_id == item.pr_purchaseid && a.tenant_id == param.tenantId && a.factory_id == param.factoryId);
+                    var itemsupplier = itemsupplierList.Find(a => a.Id == item.pr_purchaseid);
                     //新建一个PO
-                    mo_srm_po_main po_Main = new mo_srm_po_main();
-                    po_Main.id = help.NextId();
-                    po_Main.mysql_id = help.NextId();
+                    srm_po_main po_Main = new srm_po_main();
+                    po_Main.GenerateNewId(help.NextId());
                     po_Main.po_billno = poType==1? GetMaxSerialNumber(416188684804165) : GetMaxSerialNumber(416555323363397);
                     po_Main.po_purchaser = item.pr_purchaser;
                     po_Main.po_purchaser_no = item.pr_purchaser_num;
@@ -1879,22 +1853,20 @@ namespace Business.ResourceExamineManagement
                     po_Main.create_time = DateTime.Now;
                     po_Main.factory_id = param.factoryId;
                     po_Main.tenant_id = param.tenantId;
-                    po_Main.bang_id = bangid;
                     po_Main.po_delivery = 1;
                     polist.Add(po_Main);
 
-                    mo_srm_po_list podetail = new mo_srm_po_list();
-                    podetail.id = help.NextId();
-                    podetail.mysql_id = help.NextId();
-                    podetail.po_id = po_Main.mysql_id;
+                    srm_po_list podetail = new srm_po_list();
+                    podetail.GenerateNewId(help.NextId());
+                    podetail.po_id = po_Main.Id;
                     podetail.po_billno = po_Main.po_billno;
                     podetail.polist_row = podetaillist.Where(a => a.po_billno == po_Main.po_billno).Count() + 1;
-                    podetail.pr_id = item.mysql_id;
+                    podetail.pr_id = item.Id;
                     podetail.pr_billno = item.pr_billno;
                     podetail.pr_purchase_id = po_Main.supplier_id;
                     podetail.pr_purchase_name = po_Main.supplier_name;
                     podetail.icitem_id = item.icitem_id;
-                    podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
+                    podetail.ItemNum = itemList.First(a => a.Id == item.icitem_id).number;
                     podetail.icitem_name = item.icitem_name;
                     podetail.qty = item.pr_aqty;
                     podetail.netprice = item.pr_price;
@@ -1910,11 +1882,10 @@ namespace Business.ResourceExamineManagement
                     podetail.create_time = DateTime.Now;
                     podetail.factory_id = param.factoryId;
                     podetail.tenant_id = param.tenantId;
-                    podetail.bang_id = bangid;
                     podetail.stock_id = 1;
                     podetaillist.Add(podetail);
 
-                    srm_Po_Occupy.polist_id = podetail.mysql_id;
+                    srm_Po_Occupy.polist_id = podetail.Id;
                     srm_Po_Occupy.polist_row = podetail.polist_row;
                     srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
                     srm_Po_Occupy.stime = podetail.create_time;
@@ -1929,7 +1900,7 @@ namespace Business.ResourceExamineManagement
                     if (IsSameWeek(supplierDate, item.pr_rarrive_date.Value))
                     {
                         var pomain = polist.FindAll(x => x.supplier_id == item.pr_purchaseid).OrderByDescending(b => b.create_time).First();
-                        List<mo_srm_po_list> detail = podetaillist.FindAll(a => a.po_billno == pomain.po_billno && a.icitem_id == item.icitem_id);
+                        List<srm_po_list> detail = podetaillist.FindAll(a => a.po_billno == pomain.po_billno && a.icitem_id == item.icitem_id);
                         if (detail.Count > 0)
                         {
                             //TODO:只能记录一条PR,可能需要先合PR
@@ -1940,7 +1911,7 @@ namespace Business.ResourceExamineManagement
                             detail[0].plan_qty = detail[0].plan_qty + item.pr_aqty;
                             detail[0].rarrdate = item.pr_rarrive_date;
 
-                            srm_Po_Occupy.polist_id = detail[0].mysql_id;
+                            srm_Po_Occupy.polist_id = detail[0].Id;
                             srm_Po_Occupy.polist_row = detail[0].polist_row;
                             srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
                             srm_Po_Occupy.stime = detail[0].create_time;
@@ -1950,18 +1921,17 @@ namespace Business.ResourceExamineManagement
                         else
                         {
                             //不存在同一种物料新增一条明细
-                            mo_srm_po_list podetail = new mo_srm_po_list();
-                            podetail.id = help.NextId();
-                            podetail.mysql_id = help.NextId();
-                            podetail.po_id = pomain.mysql_id;
+                            srm_po_list podetail = new srm_po_list();
+                            podetail.GenerateNewId(help.NextId());
+                            podetail.po_id = pomain.Id;
                             podetail.po_billno = pomain.po_billno;
                             podetail.polist_row = podetaillist.Where(a => a.po_billno == pomain.po_billno).Count() + 1;
-                            podetail.pr_id = item.mysql_id;
+                            podetail.pr_id = item.Id;
                             podetail.pr_billno = item.pr_billno;
                             podetail.pr_purchase_id = pomain.supplier_id;
                             podetail.pr_purchase_name = pomain.supplier_name;
                             podetail.icitem_id = item.icitem_id;
-                            podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
+                            podetail.ItemNum = itemList.First(a => a.Id == item.icitem_id).number;
                             podetail.icitem_name = item.icitem_name;
                             podetail.qty = item.pr_aqty;
                             podetail.netprice = item.pr_price;
@@ -1977,11 +1947,11 @@ namespace Business.ResourceExamineManagement
                             podetail.create_time = DateTime.Now;
                             podetail.factory_id = param.factoryId;
                             podetail.tenant_id = param.tenantId;
-                            podetail.bang_id = bangid;
+                            //podetail.bang_id = bangid;
                             podetail.stock_id = 1;
                             podetaillist.Add(podetail);
 
-                            srm_Po_Occupy.polist_id = podetail.mysql_id;
+                            srm_Po_Occupy.polist_id = podetail.Id;
                             srm_Po_Occupy.polist_row = podetail.polist_row;
                             srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
                             srm_Po_Occupy.stime = podetail.create_time;
@@ -1993,11 +1963,10 @@ namespace Business.ResourceExamineManagement
                     else
                     {
                         //不在同一周需要新建一张PO
-                        var itemsupplier = itemsupplierList.Find(a => a.mysql_id == item.pr_purchaseid && a.tenant_id == param.tenantId && a.factory_id == param.factoryId);
+                        var itemsupplier = itemsupplierList.Find(a => a.Id == item.pr_purchaseid);
                         //新建一个PO单
-                        mo_srm_po_main po_Main = new mo_srm_po_main();
-                        po_Main.id = help.NextId();
-                        po_Main.mysql_id = help.NextId();
+                        srm_po_main po_Main = new srm_po_main();
+                        po_Main.GenerateNewId(help.NextId());
                         po_Main.po_billno = poType == 1 ? GetMaxSerialNumber(416188684804165) : GetMaxSerialNumber(416555323363397);
                         po_Main.po_purchaser = item.pr_purchaser;
                         po_Main.po_purchaser_no = item.pr_purchaser_num;
@@ -2023,22 +1992,20 @@ namespace Business.ResourceExamineManagement
                         po_Main.create_time = DateTime.Now;
                         po_Main.factory_id = param.factoryId;
                         po_Main.tenant_id = param.tenantId;
-                        po_Main.bang_id = bangid;
                         po_Main.po_delivery = 1;
                         polist.Add(po_Main);
 
-                        mo_srm_po_list podetail = new mo_srm_po_list();
-                        podetail.id = help.NextId();
-                        podetail.mysql_id = help.NextId();
-                        podetail.po_id = po_Main.mysql_id;
+                        srm_po_list podetail = new srm_po_list();
+                        podetail.GenerateNewId(help.NextId());
+                        podetail.po_id = po_Main.Id;
                         podetail.po_billno = po_Main.po_billno;
                         podetail.polist_row = podetaillist.Where(a => a.po_billno == po_Main.po_billno).Count() + 1;
-                        podetail.pr_id = item.mysql_id;
+                        podetail.pr_id = item.Id;
                         podetail.pr_billno = item.pr_billno;
                         podetail.pr_purchase_id = po_Main.supplier_id;
                         podetail.pr_purchase_name = po_Main.supplier_name;
                         podetail.icitem_id = item.icitem_id;
-                        podetail.ItemNum = itemList.First(a => a.mysql_id == item.icitem_id).number;
+                        podetail.ItemNum = itemList.First(a => a.Id == item.icitem_id).number;
                         podetail.icitem_name = item.icitem_name;
                         podetail.qty = item.pr_aqty;
                         podetail.netprice = item.pr_price;
@@ -2054,11 +2021,10 @@ namespace Business.ResourceExamineManagement
                         podetail.create_time = DateTime.Now;
                         podetail.factory_id = param.factoryId;
                         podetail.tenant_id = param.tenantId;
-                        podetail.bang_id = bangid;
                         podetail.stock_id = 1;
                         podetaillist.Add(podetail);
 
-                        srm_Po_Occupy.polist_id = podetail.mysql_id;
+                        srm_Po_Occupy.polist_id = podetail.Id;
                         srm_Po_Occupy.polist_row = podetail.polist_row;
                         srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
                         srm_Po_Occupy.stime = podetail.create_time;
@@ -2078,15 +2044,11 @@ namespace Business.ResourceExamineManagement
                 poaction.poOccupiesList.Add(srm_Po_Occupy);
             }
 
-            List<srm_po_main> po_mainlist = ObjectMapper.Map<List<mo_srm_po_main>, List<srm_po_main>>(polist);
-            var po_listlist = ObjectMapper.Map<List<mo_srm_po_list>, List<srm_po_list>>(podetaillist);
 
-            poaction.poMain.AddRange(po_mainlist);
-            poaction.polist.AddRange(po_listlist);
-            poaction.mopoMain.AddRange(polist);
-            poaction.mopolist.AddRange(podetaillist);
+            poaction.poMain.AddRange(polist);
+            poaction.polist.AddRange(podetaillist);
             List<PurOrdMaster> purOrdMasters = new List<PurOrdMaster>();
-            po_mainlist.ForEach(a =>
+            polist.ForEach(a =>
             {
                 purOrdMasters.Add(new PurOrdMaster
                 {
@@ -2108,7 +2070,7 @@ namespace Business.ResourceExamineManagement
             });
             poaction.poMasterList.AddRange(purOrdMasters);
             List<PurOrdDetail> purOrdDetails = new List<PurOrdDetail>();
-            po_listlist.ForEach(a =>
+            podetaillist.ForEach(a =>
             {
                 purOrdDetails.Add(new PurOrdDetail
                 {
@@ -2526,8 +2488,8 @@ namespace Business.ResourceExamineManagement
                 {
                     var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
                     PoActionListDto poaction = new PoActionListDto();
-
-                    AutoCreatePOFromPR(prmainlist, bangid, icitemlist, itemsupplierList, poaction);
+                    //TODO:工单齐套检查需要调整
+                    //AutoCreatePOFromPR(prmainlist, bangid, icitemlist, itemsupplierList, poaction);
                     using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
                     {
                         try