Ver código fonte

采购单同步逻辑调整。

tangdi 2 anos atrás
pai
commit
40e2c1787a

+ 38 - 7
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -64,6 +64,8 @@ namespace Business.SystemJobManagement
         /// </summary>
         private IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
 
+        private IRepository<srm_po_occupy, long> _mysql_srm_po_occupy;
+
         /// <summary>
         /// 雪花算法
         /// </summary>
@@ -169,6 +171,7 @@ namespace Business.SystemJobManagement
          ISqlRepository<PurOrdDetail> purOrdDetail,
          IRepository<srm_po_main, long> srm_po_main,
          IRepository<srm_po_list, long> srm_po_list,
+         IRepository<srm_po_occupy, long> mysql_srm_po_occupy,
          ISqlRepository<NbrMaster> nbrMaster,
          ISqlRepository<NbrDetail> nbrDetail,
          IRepository<ic_item_stockoccupy, long> ic_item_stockoccupy,
@@ -210,6 +213,7 @@ namespace Business.SystemJobManagement
             _srm_po_list = srm_po_list;
             _nbrMaster = nbrMaster;
             _nbrDetail = nbrDetail;
+            _mysql_srm_po_occupy = mysql_srm_po_occupy;
             _ic_item_stockoccupy = ic_item_stockoccupy;
             _ASNBOLShipperDetail = ASNBOLShipperDetail;
         }
@@ -1066,12 +1070,10 @@ namespace Business.SystemJobManagement
             var pomains = _srm_po_main.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid && masters.Select(c => c.PurOrd).Contains(x.po_billno)).Result;
             var polists = _srm_po_list.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid && pomains.Select(c => c.Id).Contains(x.po_id.GetValueOrDefault())).Result;
             List<ic_item> itemList = _mysql_ic_item.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid).Result;
-            List<srm_po_main> poList = new List<srm_po_main>();
-            List<srm_po_list> detailList = new List<srm_po_list>();
 
+            List<srm_po_occupy> occList = new List<srm_po_occupy>();
             List<srm_po_main> addPo = new List<srm_po_main>();
             List<srm_po_main> updatePo = new List<srm_po_main>();
-
             List<srm_po_list> addPolist = new List<srm_po_list>();
             List<srm_po_list> updatePolist = new List<srm_po_list>();
 
@@ -1125,7 +1127,6 @@ namespace Business.SystemJobManagement
                         addPo.Add(po);
                     }
                     po.state = GetPurOrdStatus(m.Status);
-
                     var dtls = details.Where(x => x.PurOrdRecID == m.RecID).ToList();
                     var plists = polists.Where(x => x.po_id == po.Id).ToList();
                     foreach (var dtl in dtls)
@@ -1133,14 +1134,16 @@ namespace Business.SystemJobManagement
                         var plist = plists.Find(x => x.number == dtl.ItemNum);
                         if (plist != null)
                         {
-                            plist.state = dtl.Status.ToUpper() == "C" ? 0 : 1;
+                            plist.state = dtl.Status == null ? 1 : dtl.Status.ToUpper() == "C" ? 0 : 1;
                             updatePolist.Add(plist);
                         }
                         else
                         {
                             plist = new srm_po_list();
-
+                            plist.po_id = po.Id;
+                            plist.po_billno = po.po_billno;
                             plist.GenerateNewId(help.NextId());
+                            plist.polist_row = dtl.ReqLine;
                             var icitem = itemList.Find(a => a.number == dtl.ItemNum);
                             if (icitem == null)
                             {
@@ -1167,12 +1170,36 @@ namespace Business.SystemJobManagement
                             plist.company_id = po.company_id;
                             plist.tenant_id = po.tenant_id;
                             plist.stock_id = 1;
-                            plist.state = dtl.Status.ToUpper() == "C" ? 0 : 1;
+                            plist.state = dtl.Status == null ? 1 : dtl.Status.ToUpper() == "C" ? 0 : 1;
                             plist.pr_billno = dtl.Req;
                             addPolist.Add(plist);
                         }
                     }
                 }
+                if (addPolist.Any())
+                {
+                    var srmPrs = _businessDbContext.srm_pr_main.Where(s => s.company_id.ToString() == companyid && addPolist.Select(x => x.pr_billno).Contains(s.pr_billno) && s.state == 1).ToList();
+                    var occupylist = _mysql_srm_po_occupy.GetListAsync(x => srmPrs.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                    /*var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id.ToString() == companyid && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(s => s.company_id.ToString() == companyid && addPolist.Select(x => x.pr_billno).Contains(s.pr_billno) && s.state == 1), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
+                    List<srm_po_occupy> occupylist = new List<srm_po_occupy>();
+                    for (int i = 0; i < occupyListLINQ.Count; i++)
+                    {
+                        occupylist.Add(occupyListLINQ[i].p);
+                    }*/
+                    occupylist.ForEach(x =>
+                    {
+                        var pr = srmPrs.Find(c => c.Id == x.polist_id);
+                        if (pr != null)
+                        {
+                            var addplist = addPolist.Find(f => f.pr_billno == pr.pr_billno);
+                            if (addplist != null)
+                            {
+                                x.polist_id = addplist.Id;
+                                occList.Add(x);
+                            }
+                        }
+                    });
+                }
                 if (addPo.Any())
                 {
                     await _businessDbContext.BulkInsertAsync(addPo);
@@ -1185,6 +1212,10 @@ namespace Business.SystemJobManagement
                 {
                     await _businessDbContext.BulkInsertAsync(addPolist);
                 }
+                if (occList.Any())
+                {
+                    await _businessDbContext.BulkUpdateAsync(occList);
+                }
                 if (updatePolist.Any())
                 {
                     await _businessDbContext.BulkUpdateAsync(updatePolist);

+ 0 - 1
MicroServices/Business/Business.Domain/StructuredDB/SRM/srm_po_list.cs

@@ -11,7 +11,6 @@ namespace Business.Domain
     /// </summary>
     [CollectionName("dopbase", "srm_po_list")]
     [Comment("采购订单明细详情")]
-    [Index(nameof(po_billno), nameof(polist_row), nameof(tenant_id), nameof(company_id), nameof(factory_id), IsUnique = true)]
     public class srm_po_list : BaseEntity
     {
         /// <summary>

+ 1 - 1
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContextModelCreatingExtensions.cs

@@ -83,7 +83,7 @@ namespace Business.EntityFrameworkCore
             builder.Entity<srm_po_list>(b =>
             {
                 b.ToTable("srm_po_list");
-                b.HasIndex(b => new { b.po_billno, b.number,b.tenant_id, b.company_id, b.factory_id });
+                //b.HasIndex(b => new { b.po_billno, b.number,b.tenant_id, b.company_id, b.factory_id });
                 b.ConfigureByConvention();
                 b.Property(x => x.Id).ValueGeneratedNever();//迁移sqlserver默认是自增,需要配置一下
             });

+ 2 - 2
MicroServices/Business/Business.Host/BusinessHostModule.cs

@@ -236,7 +236,7 @@ namespace Business
 
 
             //[Index(nameof(po_billno), nameof(polist_row), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
-            var indexModel_mo_srm_po_list = new CreateIndexModel<mo_srm_po_list>(
+            /*var indexModel_mo_srm_po_list = new CreateIndexModel<mo_srm_po_list>(
                Builders<mo_srm_po_list>.IndexKeys.
                Ascending(_ => _.po_billno).
                Ascending(_ => _.polist_row).
@@ -252,7 +252,7 @@ namespace Business
                    Unique = true,  //唯一值索引
                });
             //mongoCollection_mo_srm_po_list.Indexes.CreateOne(indexModel_mo_srm_po_list);
-            MongoHelper<mo_srm_po_list>.CreatIndexAsync(indexModel_mo_srm_po_list);
+            MongoHelper<mo_srm_po_list>.CreatIndexAsync(indexModel_mo_srm_po_list);*/
 
             //[Index(nameof(po_billno), nameof(tenant_id), nameof(factory_id), IsUnique = true)]
             CreateIndexModel<mo_srm_po_main> indexModel_mo_srm_po_main = new CreateIndexModel<mo_srm_po_main>(