ソースを参照

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

Murphy 2 年 前
コミット
a76be6b4af

+ 2 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1516,6 +1516,7 @@ namespace Business.ResourceExamineManagement
                 srm_Pr.pr_mono = mes_morder.morder_no;//关联工单号
                 srm_Pr.entity_id = 1;//工单行号
             }
+            srm_Pr.supplier_type = supplier.supplier_type;
             srm_Pr.IsRequireGoods = supplier.IsRequireGoods;
             srm_Pr.pr_purchaseid = supplier.supplier_id;//供应商id  
             srm_Pr.pr_purchasenumber = supplier.supplier_number;//供应商编码
@@ -1538,7 +1539,7 @@ namespace Business.ResourceExamineManagement
             if (plan_date != null)
             {
                 //-1为提前一天准备
-                srm_Pr.pr_sarrive_date = plan_date.GetValueOrDefault().AddDays(-1);
+                srm_Pr.pr_sarrive_date = plan_date.GetValueOrDefault().AddDays(-1 - (int)(Math.Ceiling(plan.clean_leadtime.GetValueOrDefault())));
                 srm_Pr.pr_ssend_date = srm_Pr.pr_sarrive_date.Value.AddDays(-(int)Math.Floor(supplier.lead_time.GetValueOrDefault()));//系统建议下单日期
                 if (srm_Pr.pr_ssend_date < DateTime.Now.AddDays(1))
                 {

+ 6 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -61,11 +61,12 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         public int ProductTime(ProdExamineParamDto param)
         {
-            var rtOps = routingOps.Where(s => s.RoutingCode == param.ItemNum && s.Domain == param.Domain && s.MilestoneOp == true).ToList();
-            if (rtOps.Any())
-            { 
-                decimal maxRt = rtOps.Max(s => s.RunTime);
-                decimal sumRt = rtOps.Sum(s => s.RunTime);
+            var allOps = routingOps.Where(s => s.RoutingCode == param.ItemNum && s.Domain == param.Domain).ToList();
+
+            if (allOps.Any())
+            {
+                decimal maxRt = allOps.Max(s => s.RunTime);
+                decimal sumRt = allOps.Sum(s => s.RunTime);
                 decimal totalTime = (param.QtyOrd - 1) * maxRt + sumRt;//总计生产小时
                 return (int)(Math.Floor(totalTime / 8));
             }

+ 46 - 12
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -20,6 +20,7 @@ using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
+using RazorEngine.Compilation.ImpromptuInterface.Optimization;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.Design;
@@ -1020,10 +1021,10 @@ namespace Business.ResourceExamineManagement
                 {
                     return JsonConvert.SerializeObject("所选包含已评审通过采购申请,请重新选择。");
                 }*/
-                var list = prlist.GroupBy(s => new { s.icitem_id, s.pr_purchaseid, s.IsRequireGoods });
+                var list = prlist.GroupBy(s => new { s.icitem_id, s.pr_purchaseid, s.IsRequireGoods, s.supplier_type });
                 if (list.Count() > 1)
                 {
-                    return JsonConvert.SerializeObject("所选行的物料编码、供应商名称、采购类型必须相同");
+                    return JsonConvert.SerializeObject("所选行的物料编码、供应商名称、采购类型、供应类别必须相同");
                 }
             }
             else {
@@ -1114,12 +1115,12 @@ namespace Business.ResourceExamineManagement
             {
                 bool bl = pr.sentry_id == null;//区分是销售订单和非销售订单的合并。
                 //找到是否生成了新的PR  当前数据是否已经产生合并,则不再合并。
-                var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && (s.sentry_id == null) == bl);
+                var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type==pr.supplier_type && (s.sentry_id == null) == bl);
                 //var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id);
                 if (newPr == null)
                 {
                     //有多条才进行合并
-                    var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && (s.sentry_id == null) == bl).ToList();
+                    var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type == pr.supplier_type && (s.sentry_id == null) == bl).ToList();
                     //var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id).ToList();
                     if (ilist.Count > 1)
                     {
@@ -1305,10 +1306,10 @@ namespace Business.ResourceExamineManagement
         public async Task<string> PrAutoApprove(string companyid)
         {
             //直接按间隔多少天一次来处理数据,定时任务按周四来考虑。
-            DateTime toTime = new DateTime(2023, 7, 6);
+            DateTime toTime = DateTime.Now;
             DateTime starttime = toTime.AddDays(1);
             DateTime endtime = toTime.AddDays(8);
-            List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.IsRequireGoods == 0 && s.pr_sarrive_date >= starttime &&
+            List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.IsRequireGoods == 1 && s.pr_sarrive_date >= starttime &&
             s.pr_sarrive_date <= endtime && s.state == 1).Result;
 
             if (prlist.Any())
@@ -1393,6 +1394,10 @@ namespace Business.ResourceExamineManagement
             {
                 return JsonConvert.SerializeObject("包含采购申请,不允许与要货令转采购订单。");
             }
+            if (prlist.Select(s => s.supplier_type).Count() > 1)
+            {
+                return JsonConvert.SerializeObject("供应类别不同,不允许一起转采购订单。");
+            }
             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<srm_supplier> itemsupplierList = _mysql_srm_supplier.GetListAsync(s => prlist.Select(c => c.pr_purchaseid).Contains(s.Id)).Result;
             var purclist = purchaselist.GroupBy(s => new { s.supplier_type, s.supplier_id });
@@ -1615,6 +1620,17 @@ namespace Business.ResourceExamineManagement
                         p.pr_billno = nbrlistDto[index].NbrResult;
                     }
                     index++;
+                    if (p.pr_purchaseid.GetValueOrDefault() == 0)
+                    {
+                        //数据丢失
+                        var list = _mysql_srm_purchase.GetListAsync(s => s.icitem_id == p.icitem_id).Result;
+                        if (list.Any())
+                        {
+                            p.pr_purchaseid = list[0].supplier_id;
+                            p.pr_purchasename = list[0].supplier_name;
+                            p.pr_purchasenumber = list[0].supplier_number;
+                        }
+                    }
                 }
             }
             
@@ -2183,6 +2199,7 @@ namespace Business.ResourceExamineManagement
                 po_Main.po_note = "";
                 po_Main.po_order_type = 1;
                 po_Main.po_total = 0;
+                po_Main.supplier_type = dto.supplier_type;
                 po_Main.currency = pr.currencytype;
                 po_Main.bill_type = poType;
                 po_Main.supplier_id = pr.pr_purchaseid;
@@ -2270,16 +2287,17 @@ namespace Business.ResourceExamineManagement
                 purOrdMasters.Add(new PurOrdMaster
                 {
                     Domain = domain,
-                    Potype = poType==1?"po":"pw",
+                    Potype = poType == 1 ? "po" : "pw",
                     PurOrd = a.po_billno,
                     Buyer = a.po_purchaser_no,
                     OrdDate = a.po_ssend_date,
                     Curr = "CNY",
                     Supp = a.supplier_no,
-                    Tax1 = a.po_tax_rate,
+                    Tax1 = a.po_tax_rate.GetValueOrDefault(),
                     Department = a.purchasing_orgname,
                     CustPhone = a.suppliertelephone,
                     CustAddress = a.supplierdddress,
+                    USAGE = a.supplier_type,
                     IsActive = true,
                     CreateTime = a.create_time,
                     UpdateTime = a.update_time
@@ -2301,9 +2319,9 @@ namespace Business.ResourceExamineManagement
                     ItemNum = a.ItemNum,
                     QtyOrded = a.qty.GetValueOrDefault(),
                     QtyReceived = a.rqty.GetValueOrDefault(),
-                    PurCost = a.price,
-                    StdCost = a.price / (1 + a.rate),
-                    TaxRate = a.rate,
+                    PurCost = a.price.GetValueOrDefault(),
+                    StdCost = a.price.GetValueOrDefault() / (1 + a.rate.GetValueOrDefault()),
+                    TaxRate = a.rate.GetValueOrDefault(),
                     DueDate = a.rarrdate
                 });
             });
@@ -3602,7 +3620,7 @@ namespace Business.ResourceExamineManagement
             nbrMasterList.Add(newNbr);
             List<string> headAccount = new List<string>();
             int i = 1;
-            bool typed = string.IsNullOrEmpty(workord.Typed);
+            bool typed = !string.IsNullOrEmpty(workord.Typed);
             detail.ForEach(a =>
             {
                 var find = itemLocList?.Find(c => c.ItemNum == a.ItemNum);
@@ -3788,6 +3806,22 @@ namespace Business.ResourceExamineManagement
                 //改到发布日计划时更新。
                 //dbPeriodSequences.ForEach(p => { p.Status = "r"; });
                 workOrdMasters.ForEach(p => { p.Status = "r"; });
+                var nbrlistDto = _serialNumberAppService.GetBillNo(workOrdMasters[0].Domain, "WOlot", workOrdMasters.Count, userAccount, 1);
+                if (nbrlistDto.Any())
+                {
+                    int index = 0;
+                    foreach (var nm in nbrMasterList)
+                    {
+                        var nbrDtls = nbrDetailList.Where(s => s.Nbr == nm.Nbr).ToList();
+                        if (nbrlistDto[index] != null)
+                        {
+                            nm.Nbr = nbrlistDto[index].NbrResult;
+                            nbrDtls.ForEach(i => { i.Nbr = nm.Nbr; });
+                        }
+                        index++;
+                    }
+                }
+
 
                 //清理掉库存占用  这里考虑的是资源检查的占用没有完全占用备料单数据,而其他数据再进行齐套检查时,无法考虑到备料单的占用。
                 var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => workOrdMasters.Select(x => x.WorkOrd).Contains(s.morder_mo) && s.factory_id.ToString() == domain).Result;

+ 236 - 225
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -4,9 +4,12 @@ using Business.EntityFrameworkCore;
 using Business.EntityFrameworkCore.SqlRepositories;
 using Business.ResourceExamineManagement;
 using Business.SystemJob;
+using EFCore.BulkExtensions;
+using MongoDB.Driver.Linq;
 using NLog;
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading.Tasks;
 using Volo.Abp.Application.Services;
 using Volo.Abp.Domain.Repositories;
@@ -290,95 +293,97 @@ namespace Business.SystemJobManagement
             return "任务执行成功";
         }
 
-        ////同步客户
-        //public void SyncCustMaster()
-        //{
-        //    var customerList = _mysql_crm_customer.GetListAsync().Result;
-        //    List<CustMaster> custList = _custMaster.Select(a => a.Domain == "1001" && a.IsActive);
-        //    var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Cust" && a.IsActive);
-        //    List<crm_customer> ItemsAdd = new List<crm_customer>();
-        //    if (custList != null && custList.Count > 0)
-        //    {
-        //        for (int i = 0; i < custList.Count; i++)
-        //        {
-        //            long domain = Convert.ToInt64(custList[i].Domain);
-        //            long factory_id = domain % 1000;
-        //            long tenant_id = domain - factory_id;
-        //            var cust = customerList.Find(x => x.customer_no == custList[i].Cust && x.tenant_id == 1000 && x.factory_id == 1001);
-        //            if (cust is null)
-        //            {
-        //                ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Cust);
-        //                var customer = new crm_customer
-        //                {
-        //                    customer_no = custList[i].Cust,
-        //                    customer_name = address is null ? address.Name : "",
-        //                    telephone = address is null ? address.Telephone : "",
-        //                    email = address is null ? address.AttentionEmail : "",
-        //                    contact = address is null ? address.Attention1 : "",
-        //                    post_code = address is null ? address.Post : "",
-        //                    country = address is null ? address.Country : "",
-        //                    province = address is null ? address.State : "",
-        //                    city = address is null ? address.City : "",
-        //                    region = address is null ? address.State : "",
-        //                    address = address is null ? address.Address1 : "",
-        //                    short_name = custList[i].SortName,
-        //                    carrying_aos = Convert.ToInt32(custList[i].CustShippingLT),
-        //                    currency = custList[i].Curr,
-        //                    employee_name = custList[i].Salesperson1,
-        //                    factory_id = 1001,
-        //                    tenant_id = 1000
-        //                };
-        //                customer.GenerateNewId(help.NextId());
-        //                ItemsAdd.Add(customer);
-        //            }
-        //        }
-        //        _businessDbContext.BulkInsert(ItemsAdd);
-        //    }
-        //}
-
-        ////同步供应商
-        //public void SyncSuppMaster()
-        //{
-        //    var suppList = _mysql_srm_supplier.GetListAsync().Result;
-        //    List<SuppMaster> custList = _suppMaster.Select(a => a.Domain == "1001" && a.IsActive);
-        //    var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Supp" && a.IsActive);
-        //    List<srm_supplier> ItemsAdd = new List<srm_supplier>();
-        //    if (custList != null && custList.Count > 0)
-        //    {
-        //        for (int i = 0; i < custList.Count; i++)
-        //        {
-        //            long domain = Convert.ToInt64(custList[i].Domain.ToString());
-        //            long factory_id = domain % 1000;
-        //            long tenant_id = domain - factory_id;
-        //            var supp = suppList.Find(x => x.supplier_no == custList[i].Supp.ToString() && x.tenant_id == factory_id && x.factory_id == tenant_id);
-        //            if (supp is null)
-        //            {
-        //                ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Supp);
-        //                var supplier = new srm_supplier
-        //                {
-        //                    supplier_no = custList[i].Supp,
-        //                    supplier_name = address is null ? address.Name : "",
-        //                    supplier_short_name = custList[i].SortName,
-        //                    country = address is null ? address.Country : "",
-        //                    state = address is null ? address.State : "",
-        //                    region = address is null ? address.City : "",
-        //                    contact = address is null ? address.Attention1 : "",
-        //                    telephone = address is null ? address.Telephone : "",
-        //                    post_code = address is null ? address.Post : "",
-        //                    email = address is null ? address.AttentionEmail : "",
-        //                    currency = custList[i].Curr,
-        //                    supply_type = custList[i].Type,
-        //                    settlement = custList[i].CrTerms,
-        //                    factory_id = factory_id,
-        //                    tenant_id = tenant_id
-        //                };
-        //                supplier.GenerateNewId(help.NextId());
-        //                ItemsAdd.Add(supplier);
-        //            }
-        //        }
-        //        _businessDbContext.BulkInsert(ItemsAdd);
-        //    }
-        //}
+        //同步客户
+        public void SyncCustMaster()
+        {
+            var customerList = _mysql_crm_customer.GetListAsync().Result;
+            List<CustMaster> custList = _custMaster.Select(a => a.IsActive);
+            var addressList = _consigneeAddressMaster.Select(a => a.Typed == "Cust" && a.IsActive);
+            List<crm_customer> ItemsAdd = new List<crm_customer>();
+            if (custList != null && custList.Count > 0)
+            {
+                for (int i = 0; i < custList.Count; i++)
+                {
+                    long domain = Convert.ToInt64(custList[i].Domain);
+                    long factory_id = domain;
+                    long tenant_id = 1000;
+                    var cust = customerList.Find(x => x.customer_no == custList[i].Cust);
+                    if (cust is null)
+                    {
+                        ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Cust);
+                        var customer = new crm_customer
+                        {
+                            customer_no = custList[i].Cust,
+                            customer_name = address is null ? address.Name : "",
+                            telephone = address is null ? address.Telephone : "",
+                            email = address is null ? address.AttentionEmail : "",
+                            contact = address is null ? address.Attention1 : "",
+                            post_code = address is null ? address.Post : "",
+                            country = address is null ? address.Country : "",
+                            province = address is null ? address.State : "",
+                            city = address is null ? address.City : "",
+                            region = address is null ? address.State : "",
+                            address = address is null ? address.Address1 : "",
+                            short_name = custList[i].SortName,
+                            carrying_aos = Convert.ToInt32(custList[i].CustShippingLT),
+                            currency = custList[i].Curr,
+                            employee_name = custList[i].Salesperson1,
+                            factory_id = factory_id,
+                            tenant_id=tenant_id,
+                            company_id = tenant_id
+                        };
+                        customer.GenerateNewId(help.NextId());
+                        ItemsAdd.Add(customer);
+                    }
+                }
+                _businessDbContext.BulkInsert(ItemsAdd);
+            }
+        }
+
+        //同步供应商
+        public void SyncSuppMaster()
+        {
+            var suppList = _mysql_srm_supplier.GetListAsync().Result;
+            List<SuppMaster> custList = _suppMaster.Select(a => a.IsActive);
+            var addressList = _consigneeAddressMaster.Select(a => a.Typed == "Supp" && a.IsActive);
+            List<srm_supplier> ItemsAdd = new List<srm_supplier>();
+            if (custList != null && custList.Count > 0)
+            {
+                for (int i = 0; i < custList.Count; i++)
+                {
+                    long domain = Convert.ToInt64(custList[i].Domain.ToString());
+                    long factory_id = domain;
+                    long tenant_id = 1000;
+                    var supp = suppList.Find(x => x.supplier_no == custList[i].Supp.ToString() && x.company_id == tenant_id && x.factory_id == factory_id);
+                    if (supp is null)
+                    {
+                        ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Supp);
+                        var supplier = new srm_supplier
+                        {
+                            supplier_no = custList[i].Supp,
+                            supplier_name = address is not null ? address.Name : "",
+                            supplier_short_name = custList[i].SortName,
+                            country = address is not null ? address.Country : "",
+                            state = address is not null ? address.State : "",
+                            region = address is not null ? address.City : "",
+                            contact = address is not null ? address.Attention1 : "",
+                            telephone = address is not null ? address.Telephone : "",
+                            post_code = address is not null ? address.Post : "",
+                            email = address is not null ? address.AttentionEmail : "",
+                            currency = custList[i].Curr,
+                            supply_type = custList[i].Type,
+                            settlement = custList[i].CrTerms,
+                            factory_id = factory_id,
+                            tenant_id = tenant_id,
+                            company_id = tenant_id
+                        };
+                        supplier.GenerateNewId(help.NextId());
+                        ItemsAdd.Add(supplier);
+                    }
+                }
+                _businessDbContext.BulkInsert(ItemsAdd);
+            }
+        }
         //////同步销售订单
         ////public void SyncSalesOrdMaster()
         ////{
@@ -590,21 +595,21 @@ namespace Business.SystemJobManagement
         ////    }
         ////}
 
-        /*//同步物料
+        //同步物料
         public void SyncItemMaster()
         {
             bool isAll = true;//是否同步所有物料
-            var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
+            var ic_itemList = _mysql_ic_item.GetListAsync().Result;
             List<ItemMaster> custList = new List<ItemMaster>();
             if (isAll)
             {
-                custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001");
+                custList = _itemMaster.Select(a => a.IsActive);
             }
             else
             {
                 //格努产品编码同步子级物料
                 List<string> childItems = GetChildItemNumber("", new List<string>());
-                custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001" && childItems.Distinct().Contains(a.ItemNum));
+                custList = _itemMaster.Select(a => a.IsActive && childItems.Distinct().Contains(a.ItemNum));
             }
             List<ic_item> ItemsAdd = new List<ic_item>();
             List<srm_purchase> srm_purchaseAdd = new List<srm_purchase>();
@@ -612,7 +617,7 @@ namespace Business.SystemJobManagement
             {
                 for (int i = 0; i < custList.Count; i++)
                 {
-                    var ic_item = ic_itemList.Find(x => x.number == custList[i].ItemNum && x.tenant_id == 1000 && x.factory_id == 1001);
+                    var ic_item = ic_itemList.Find(x => x.number == custList[i].ItemNum);
                     if (ic_item == null)
                     {
                         long itemId = help.NextId();
@@ -624,9 +629,9 @@ namespace Business.SystemJobManagement
                             fversion = "",//版本号
                             //ext.FErpClsID == "配置类" ? 0 : ext.FErpClsID == "自制" ? 1 : ext.FErpClsID == "委外" ? 2 : ext.FErpClsID == "外购" ? 3 : ext.FErpClsID == "虚拟" ? 4 : ext.FErpClsID == "费用" ? 5 : ext.FErpClsID == "服务" ? 6 : -1;
                             //erp_cls = custList[i].PurMfg == "P" ? 3 : 1,//物料属性
-                            erp_cls = custList[i].ItemNum == "1.SD1.D.0056-F" || custList[i].ItemNum == "1.ZC1.D.0001" || custList[i].ItemNum == "1.BW1.D.0030" ? 1 : 3,
+                            erp_cls = custList[i].PurMfg == "P" ? 3 : 1,//物料属性
                             //erp_cls_name = custList[i].PurMfg == "P" ? "外购" : "自制",//物料属性名称
-                            erp_cls_name = custList[i].ItemNum == "1.SD1.D.0056-F" || custList[i].ItemNum == "1.ZC1.D.0001" || custList[i].ItemNum == "1.BW1.D.0030" ? "自制" : "外购",
+                            erp_cls_name = custList[i].PurMfg == "P" ? "外购" : "自制",//物料属性名称
                             unit = custList[i].UM,//单位
                             item_level = 0,//物料等级
                             source = "",//来源
@@ -644,11 +649,12 @@ namespace Business.SystemJobManagement
                             allowserial = custList[i].LotSerialControl ? 1 : 0,//序列号管理
                             photo = "",//图片
                             enable_warning = 1,//启用预警
-                            factory_id = 1001,
-                            tenant_id = 1000,
+                            factory_id =long.Parse(custList[i].Domain),
+                            company_id = 1000,
+                            tenant_id=1000,
                             IsDeleted = false,
                             clean_leadtime = custList[i].MFGMTTR,
-                            is_clean= custList[i].IssuePolicy ? 1 : 0,
+                            is_clean = custList[i].IssuePolicy ? 1 : 0,
                             batch_manager = custList[i].LotSerialControl ? 1 : 0,
                             minorderqty = custList[i].MinOrd,
                             minpackqty = 1,
@@ -670,7 +676,7 @@ namespace Business.SystemJobManagement
                             Warehousing_date = 1,
                             Shipping_date = 3,
                         });
-                        srm_purchaseAdd.Add(new srm_purchase(help.NextId())
+                        /*srm_purchaseAdd.Add(new srm_purchase(help.NextId())
                         {
                             icitem_id = itemId,
                             icitem_name = custList[i].Descr,
@@ -695,135 +701,140 @@ namespace Business.SystemJobManagement
                             factory_id = 1001,
                             tenant_id = 1000,
                             IsDeleted = false
-                        });
+                        });*/
                     }
                 }
             }
             _businessDbContext.BulkInsert(ItemsAdd);
-            _businessDbContext.BulkInsert(srm_purchaseAdd);
-        }*/
-
-        //public void SyncBom()
-        //{
-        //    var ic_bomList = _mysql_ic_bom.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
-        //    var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
-        //    var ic_bomchildList = _mysql_ic_bom_child.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001 && (a.bom_number == "1.SD1.D.0056-F" || a.bom_number == "1.ZC1.D.0001" || a.bom_number == "1.BW1.D.0030")).Result;
-        //    List<ProductStructureMaster> wmsBomList = _productStructureMaster.Select(a => a.Domain == "1001" && (a.ParentItem == "1.SD1.D.0056-F" || a.ParentItem == "1.ZC1.D.0001" || a.ParentItem == "1.BW1.D.0030") && a.IsActive);
-        //    List<ic_bom> ItemsAdd = new List<ic_bom>();
-        //    List<ic_bom_child> childItemsAdd = new List<ic_bom_child>();
-        //    if (wmsBomList != null && wmsBomList.Count > 0)
-        //    {
-        //        var ItemMasterDS = wmsBomList.Select(a => a.ParentItem).Distinct().ToList();
-        //        foreach (var c in ItemMasterDS)
-        //        {
-        //            var icbom = ic_bomList.Find(x => x.item_number == c && x.tenant_id == 1000 && x.factory_id == 1001);
-        //            var ItemList = wmsBomList.Where(a => a.ParentItem == c);
-        //            var item = ic_itemList.Find(a => a.number == c);
-        //            if (item == null)
-        //            {
-        //                continue;
-        //            }
-        //            if (icbom == null)
-        //            {
-        //                long domain = Convert.ToInt64(ItemList.First().Domain);
-        //                long factory_id = domain % 1000;
-        //                long tenant_id = domain - factory_id;
-        //                var bom = new ic_bom(help.NextId())
-        //                {
-        //                    bom_number = c,
-        //                    icitem_id = item.Id,
-        //                    item_name = item.name,
-        //                    item_number = c,
-        //                    version = ItemList.First().Refs,
-        //                    factory_id = 1001,
-        //                    tenant_id = 1000,
-        //                    IsDeleted = false,
-        //                    use_status = 1
-        //                };
-        //                ItemsAdd.Add(bom);
-        //                foreach (var child in ItemList)
-        //                {
-        //                    var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
-        //                    if (itemchild == null) { continue; }
-        //                    var bomchild = new ic_bom_child(help.NextId())
-        //                    {
-        //                        bom_id = bom.Id,
-        //                        bom_number = bom.bom_number,
-        //                        icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
-        //                        item_number = child.ComponentItem,
-        //                        item_name = itemchild == null ? "" : itemchild.name,
-        //                        unit = child.UM,
-        //                        qty = child.Qty,
-        //                        entryid = child.SequenceNum,
-        //                        erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
-        //                        begin_day = child.StartEff,
-        //                        end_day = child.EndEff,
-        //                        child_num = child.SequenceNum,
-        //                        version = child.Refs,
-        //                        factory_id = 1001,
-        //                        tenant_id = 1000,
-        //                        IsDeleted = false,
-        //                        use_status = 1
-        //                    };
-        //                    childItemsAdd.Add(bomchild);
-        //                }
-        //            }
-        //            else
-        //            {
-        //                foreach (var child in ItemList)
-        //                {
-        //                    var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
-        //                    if (itemchild == null) { continue; }
-        //                    var icbomchild = ic_bomchildList.Find(s => s.bom_number == c && s.item_number == child.ComponentItem);
-        //                    if (icbomchild == null)
-        //                    {
-        //                        var bomchild = new ic_bom_child(help.NextId())
-        //                        {
-        //                            bom_id = icbom.Id,
-        //                            bom_number = icbom.bom_number,
-        //                            icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
-        //                            item_number = child.ComponentItem,
-        //                            item_name = itemchild == null ? "" : itemchild.name,
-        //                            unit = child.UM,
-        //                            qty = child.Qty,
-        //                            entryid = child.SequenceNum,
-        //                            erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
-        //                            begin_day = child.StartEff,
-        //                            end_day = child.EndEff,
-        //                            child_num = child.SequenceNum,
-        //                            version = child.Refs,
-        //                            factory_id = 1001,
-        //                            tenant_id = 1000,
-        //                            IsDeleted = false,
-        //                            use_status = 1
-        //                        };
-        //                        childItemsAdd.Add(bomchild);
-        //                    }
-        //                }
-        //            }
-
-
-        //        }
-        //        _businessDbContext.BulkInsert(ItemsAdd);
-        //        _businessDbContext.BulkInsert(childItemsAdd);
-        //    }
-        //}
-
-        ////循环获取子级物料编码,包括产品本身,有重复的结果去重即可
-        //public List<string> GetChildItemNumber(string itemNum, List<string> list)
-        //{
-        //    list.Add(itemNum);
-        //    var productStructures = _productStructureMaster.Select(p => p.ParentItem == itemNum && p.Domain == "1001" && p.IsActive);
-        //    list.AddRange(productStructures.Select(a => a.ComponentItem));
-        //    foreach (var item in productStructures)
-        //    {
-        //        if (item.StructureType.ToUpper() == "X")
-        //        {
-        //            GetChildItemNumber(item.ComponentItem, list);
-        //        }
-        //    }
-        //    return list;
-        //}
+            //_businessDbContext.BulkInsert(srm_purchaseAdd);
+        }
+
+        public void SyncBom()
+        {
+            var ic_bomList = _mysql_ic_bom.GetListAsync().Result;
+            var ic_itemList = _mysql_ic_item.GetListAsync().Result;
+            var ic_bomchildList = _mysql_ic_bom_child.GetListAsync().Result;
+            List<ProductStructureMaster> wmsBomList = _productStructureMaster.Select(a => a.IsActive);
+            List<ic_bom> ItemsAdd = new List<ic_bom>();
+            List<ic_bom_child> childItemsAdd = new List<ic_bom_child>();
+            if (wmsBomList != null && wmsBomList.Count > 0)
+            {
+                var ItemMasterDS = wmsBomList.Select(a => a.ParentItem).Distinct().ToList();
+                foreach (var c in ItemMasterDS)
+                {
+                    var icbom = ic_bomList.Find(x => x.item_number == c);
+                    var ItemList = wmsBomList.Where(a => a.ParentItem == c);
+                    var item = ic_itemList.Find(a => a.number == c);
+                    if (item == null)
+                    {
+                        continue;
+                    }
+                    if (icbom == null)
+                    {
+                        long domain = Convert.ToInt64(ItemList.First().Domain);
+                        long factory_id = domain % 1000;
+                        long tenant_id = domain - factory_id;
+                        var bom = new ic_bom(help.NextId())
+                        {
+                            bom_number = c,
+                            icitem_id = item.Id,
+                            item_name = item.name,
+                            item_number = c,
+                            version = ItemList.First().Refs,
+                            factory_id = item.factory_id,
+                            company_id = item.company_id,
+                            tenant_id = item.company_id,
+                            IsDeleted = false,
+                            use_status = 1
+                        };
+                        ItemsAdd.Add(bom);
+                        foreach (var child in ItemList)
+                        {
+                            var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
+                            if (itemchild == null) { continue; }
+                            var bomchild = new ic_bom_child(help.NextId())
+                            {
+                                bom_id = bom.Id,
+                                bom_number = bom.bom_number,
+                                icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
+                                item_number = child.ComponentItem,
+                                item_name = itemchild == null ? "" : itemchild.name,
+                                unit = child.UM,
+                                qty = child.Qty,
+                                entryid = child.SequenceNum,
+                                erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
+                                begin_day = child.StartEff,
+                                end_day = child.EndEff,
+                                child_num = child.SequenceNum,
+                                version = child.Refs,
+                                factory_id = item.factory_id,
+                                company_id = item.company_id,
+                                tenant_id = item.company_id,
+                                IsDeleted = false,
+                                Op = child.Op,
+                                use_status = 1
+                            };
+                            childItemsAdd.Add(bomchild);
+                        }
+                    }
+                    else
+                    {
+                        foreach (var child in ItemList)
+                        {
+                            var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
+                            if (itemchild == null) { continue; }
+                            var icbomchild = ic_bomchildList.Find(s => s.bom_number == c && s.item_number == child.ComponentItem);
+                            if (icbomchild == null)
+                            {
+                                var bomchild = new ic_bom_child(help.NextId())
+                                {
+                                    bom_id = icbom.Id,
+                                    bom_number = icbom.bom_number,
+                                    icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
+                                    item_number = child.ComponentItem,
+                                    item_name = itemchild == null ? "" : itemchild.name,
+                                    unit = child.UM,
+                                    qty = child.Qty,
+                                    entryid = child.SequenceNum,
+                                    erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
+                                    begin_day = child.StartEff,
+                                    end_day = child.EndEff,
+                                    child_num = child.SequenceNum,
+                                    version = child.Refs,
+                                    factory_id = item.factory_id,
+                                    company_id = item.company_id,
+                                    tenant_id = item.company_id,
+                                    IsDeleted = false,
+                                    Op = child.Op,
+                                    use_status = 1
+                                };
+                                childItemsAdd.Add(bomchild);
+                            }
+                        }
+                    }
+
+
+                }
+                _businessDbContext.BulkInsert(ItemsAdd);
+                _businessDbContext.BulkInsert(childItemsAdd);
+            }
+        }
+
+        //循环获取子级物料编码,包括产品本身,有重复的结果去重即可
+        public List<string> GetChildItemNumber(string itemNum, List<string> list)
+        {
+            list.Add(itemNum);
+            var productStructures = _productStructureMaster.Select(p => p.ParentItem == itemNum && p.Domain == "1001" && p.IsActive);
+            list.AddRange(productStructures.Select(a => a.ComponentItem));
+            foreach (var item in productStructures)
+            {
+                if (item.StructureType.ToUpper() == "X")
+                {
+                    GetChildItemNumber(item.ComponentItem, list);
+                }
+            }
+            return list;
+        }
 
         public string DoProductScheduleJob()
         {

+ 6 - 0
MicroServices/Business/Business.Domain/MongoDB/SRM/mo_srm_po_main.cs

@@ -194,5 +194,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("计算id")]
         public long? bang_id { get; set; }
+
+        /// <summary>
+        /// 供应类别
+        /// </summary>
+        [Comment("供应类别")]
+        public string supplier_type { get; set; }
     }
 }

+ 6 - 0
MicroServices/Business/Business.Domain/MongoDB/SRM/mo_srm_pr_main.cs

@@ -253,5 +253,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("采购类型")]
         public int IsRequireGoods { get; set; }
+
+        /// <summary>
+        /// 供应类别
+        /// </summary>
+        [Comment("供应类别")]
+        public string supplier_type { get; set; }
     }
 }

+ 7 - 1
MicroServices/Business/Business.Domain/StructuredDB/MES/IC/PurOrdMaster.cs

@@ -71,7 +71,7 @@ namespace Business.Domain
         /// </summary>
         [Precision(23, 10)]
         [Comment("税率")]
-        public decimal? Tax1 { get; set; }
+        public decimal Tax1 { get; set; }
 
         /// <summary>
         /// 部门
@@ -129,5 +129,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("类型")]
         public string ReqBy { get; set; }
+
+        /// <summary>
+        /// 供应类别
+        /// </summary>
+        [Comment("供应类别")]
+        public string USAGE { get; set; }
     }
 }

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

@@ -142,5 +142,11 @@ namespace Business.Domain
         public long BusinessID { get; set; }
 
         public string SalesJob { get; set; }
+
+        /// <summary>
+        /// 生产批次号
+        /// </summary>
+        [Comment("批次序列")]
+        public string LotSerial { get; set; }
     }
 }

+ 6 - 0
MicroServices/Business/Business.Domain/StructuredDB/SRM/srm_po_main.cs

@@ -196,5 +196,11 @@ namespace Business.Domain
         [Comment("计算id")]
         [NotMapped]
         public long? bang_id { get; set; }
+
+        /// <summary>
+        /// 供应类别
+        /// </summary>
+        [Comment("供应类别")]
+        public string supplier_type { get; set; }
     }
 }

+ 6 - 0
MicroServices/Business/Business.Domain/StructuredDB/SRM/srm_pr_main.cs

@@ -244,5 +244,11 @@ namespace Business.Domain
         /// </summary>
         [Comment("采购类型")]
         public int IsRequireGoods { get; set; }
+
+        /// <summary>
+        /// 供应类别
+        /// </summary>
+        [Comment("供应类别")]
+        public string supplier_type { get; set; }
     }
 }

+ 3 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -46,6 +46,9 @@ namespace Business.EntityFrameworkCore
         public DbSet<ProdLineDetailRunCrew> ProdLineDetailRunCrew { get; set; }
         public DbSet<ResourceOccupancyTime> ResourceOccupancyTime { get; set; }
 
+        public DbSet<SuppMaster> SuppMaster { get; set; }
+
+        public DbSet<ConsigneeAddressMaster> ConsigneeAddressMaster { get; set; }
         /// <summary>
         /// ÅŲúÒì³£¼Ç¼±í
         /// </summary>