| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555 |
- using Business.Core.Utilities;
- using Business.EntityFrameworkCore;
- using Business.EntityFrameworkCore.SqlRepositories;
- using Business.Model.MES.IC;
- using Business.Model.Sale;
- using Business.Model.SRM;
- using EFCore.BulkExtensions;
- using Microsoft.EntityFrameworkCore;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using System.Linq;
- using Volo.Abp.Application.Services;
- using Volo.Abp.Domain.Repositories;
- namespace Business.SyncDataManagement
- {
- /// <summary>
- /// 同步mysql数据到mongodb
- /// </summary>
- public class SyncWMSDataAppService : ApplicationService
- {
- #region 服务
- /// <summary>
- /// 物料bom
- /// </summary>
- private IRepository<ic_bom, long> _mysql_ic_bom;
- /// <summary>
- /// 物料bom子表
- /// </summary>
- private IRepository<ic_bom_child, long> _mysql_ic_bom_child;
- /// <summary>
- /// 物料
- /// </summary>
- private IRepository<ic_item, long> _mysql_ic_item;
- /// <summary>
- /// 供应商
- /// </summary>
- private IRepository<srm_supplier, long> _mysql_srm_supplier;
- /// <summary>
- /// 物料采购计划表
- /// </summary>
- private IRepository<ic_plan, long> _mysql_ic_plan;
- /// <summary>
- /// 物料工厂明细表
- /// </summary>
- private IRepository<ic_factory_details, long> _mysql_ic_factory_details;
- /// <summary>
- /// 物料采购报价单
- /// </summary>
- private IRepository<srm_purchase, long> _mysql_srm_purchase;
- /// <summary>
- /// 物料采购报价单
- /// </summary>
- private IRepository<crm_customer, long> _mysql_crm_customer;
- /// <summary>
- /// 销售订单
- /// </summary>
- private IRepository<crm_seorder, long> _mysql_crm_seorder;
- /// <summary>
- /// 销售订单明细
- /// </summary>
- private IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
- /// <summary>
- /// 雪花算法
- /// </summary>
- SnowFlake help = new SnowFlake();
- private readonly BusinessDbContext _businessDbContext;
- private readonly ISqlRepository<CustMaster> _custMaster;
- private readonly ISqlRepository<SuppMaster> _suppMaster;
- private readonly ISqlRepository<ConsigneeAddressMaster> _consigneeAddressMaster;
- private readonly ISqlRepository<ItemMaster> _itemMaster;
- private readonly ISqlRepository<ProductStructureMaster> _productStructureMaster;
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- public SyncWMSDataAppService(
- IRepository<ic_bom, long> mysql_ic_bom,
- IRepository<ic_bom_child, long> mysql_ic_bom_child,
- IRepository<ic_check, long> mysql_ic_check,
- IRepository<ic_item, long> mysql_ic_item,
- IRepository<srm_supplier, long> mysql_srm_supplier,
- IRepository<ic_factory_details, long> mysql_ic_factory_details,
- IRepository<srm_purchase, long> mysql_srm_purchase,
- IRepository<ic_plan, long> mysql_ic_plan,
- IRepository<crm_customer, long> mysql_crm_customer,
- IRepository<crm_seorder, long> mysql_crm_seorder,
- IRepository<crm_seorderentry, long> mysql_crm_seorderentry,
- ISqlRepository<CustMaster> custMaster,
- ISqlRepository<SuppMaster> suppMaster,
- ISqlRepository<ConsigneeAddressMaster> consigneeAddressMaster,
- ISqlRepository<ItemMaster> itemMaster,
- ISqlRepository<ProductStructureMaster> productStructureMaster,
- BusinessDbContext businessDbContext
- )
- {
- _mysql_ic_bom = mysql_ic_bom;
- _mysql_ic_bom_child = mysql_ic_bom_child;
- _mysql_ic_item = mysql_ic_item;
- _mysql_srm_supplier = mysql_srm_supplier;
- _mysql_ic_factory_details = mysql_ic_factory_details;
- _mysql_srm_purchase = mysql_srm_purchase;
- _mysql_ic_plan = mysql_ic_plan;
- _mysql_crm_customer = mysql_crm_customer;
- _mysql_crm_seorder = mysql_crm_seorder;
- _mysql_crm_seorderentry = mysql_crm_seorderentry;
- _custMaster = custMaster;
- _suppMaster = suppMaster;
- _consigneeAddressMaster = consigneeAddressMaster;
- _itemMaster = itemMaster;
- _productStructureMaster = productStructureMaster;
- _businessDbContext = businessDbContext;
- }
- /// <summary>
- /// 同步WMS基础数据到MySQL
- /// </summary>
- /// <returns></returns>
- /// <exception cref="NotImplementedException"></exception>
- public void SyncWMSDataToMySQL()
- {
- //SyncCustMaster();
- //SyncSuppMaster();
- //SyncSalesOrdMaster();
- //SyncSalesOrdMasterEntry();
- //SyncItemMaster();
- SyncBom();
- }
- //同步客户
- 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();
- 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();
- ItemsAdd.Add(supplier);
- }
- }
- _businessDbContext.BulkInsert(ItemsAdd);
- }
- }
- ////同步销售订单
- //public void SyncSalesOrdMaster()
- //{
- // var customerList = _mysql_crm_customer.GetListAsync().Result;
- // var saleOrderList = _mysql_crm_seorder.GetListAsync().Result;
- // var ItemMasterDS = _repository.SelectDataBaseBySql("SELECT A.SalesOrd,C.SortName AS CustomName,A.SoldTo AS Cust,A.OrdDate,A.RequiredDate,A.Sequence,A.Curr,A.ExchRate,A.Salesperson1,A.Project,B.Descr AS ProjectName,A.[Domain] from SalesOrdMaster A INNER JOIN CustMaster C ON A.SoldTo=C.Cust and A.[Domain]=C.[Domain]\r\nLEFT JOIN ProjectMaster B On A.Project=B.Project AND A.[Domain]=B.[Domain] ", "SalesOrdMaster");
- // List<crm_seorder> ItemsAdd = new List<crm_seorder>();
- // List<crm_seorder> ItemsUpdate = new List<crm_seorder>();
- // if (ItemMasterDS != null && ItemMasterDS.Tables.Count > 0 && ItemMasterDS.Tables[0].Rows.Count > 0)
- // {
- // for (int i = 0; i < ItemMasterDS.Tables[0].Rows.Count; i++)
- // {
- // long domain = Convert.ToInt64(ItemMasterDS.Tables[0].Rows[i]["Domain"].ToString());
- // long factory_id = domain % 1000;
- // long tenant_id = domain - factory_id;
- // var custno = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString();
- // var cust = customerList.Find(a => a.customer_no == custno && a.factory_id == factory_id && a.tenant_id == tenant_id);
- // long? custom_id = cust is null ? cust.Id : null;
- // var saleorder = saleOrderList.Find(x => x.bill_no == ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString() && x.tenant_id == factory_id && x.factory_id == tenant_id);
- // if (saleorder is null)
- // {
- // var order = new crm_seorder
- // {
- // bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString(),
- // custom_id = custom_id,
- // custom_name = ItemMasterDS.Tables[0].Rows[i]["CustomName"].ToString(),
- // custom_no = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString(),
- // //custom_level = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? "外购" : "自制",
- // date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // rdate = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"],
- // //urgent = "",
- // currency = ItemMasterDS.Tables[0].Rows[i]["Curr"].ToString() == "RMB" ? 1 : 0,
- // exchange_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // //biller = ItemMasterDS.Tables[0].Rows[i]["NetWeightUM"].ToString(),
- // //emp_no = (decimal)ItemMasterDS.Tables[0].Rows[i]["Length"],
- // emp_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //auditor = (decimal)ItemMasterDS.Tables[0].Rows[i]["Height"],
- // //audit_date = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? 1 : 0,
- // //status = 1,
- // //closed = "",
- // //op_time = 1,
- // bill_from = "",
- // //project_name = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["LotSerialControl"]) == true ? 1 : 0,
- // //project_code = "",
- // out_stock_type = 1,//TODO
- // //sale_dept_id = "",
- // //sale_dept_name = 1,
- // //sale_dept_code = 1,
- // //create_dept = 1
- // factory_id = factory_id,
- // tenant_id = tenant_id
- // };
- // order.GenerateNewId();
- // ItemsAdd.Add(order);
- // }
- // else
- // {
- // saleorder.bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
- // saleorder.custom_id = custom_id;
- // saleorder.custom_name = ItemMasterDS.Tables[0].Rows[i]["CustomName"].ToString();
- // saleorder.custom_no = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString();
- // //custom_level = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? "外购" : "自制",
- // saleorder.date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"];
- // saleorder.rdate = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"];
- // saleorder.urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["Sequence"];
- // saleorder.currency = ItemMasterDS.Tables[0].Rows[i]["Curr"].ToString() == "RMB" ? 1 : 0;
- // saleorder.exchange_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"];
- // //biller = ItemMasterDS.Tables[0].Rows[i]["NetWeightUM"].ToString(),
- // //emp_no = (decimal)ItemMasterDS.Tables[0].Rows[i]["Length"],
- // saleorder.emp_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString();
- // //auditor = (decimal)ItemMasterDS.Tables[0].Rows[i]["Height"],
- // //audit_date = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? 1 : 0,
- // //status = 1,
- // //closed = "",
- // //op_time = 1,
- // saleorder.bill_from = "";
- // saleorder.project_name = ItemMasterDS.Tables[0].Rows[i]["ProjectName"].ToString();
- // saleorder.project_code = ItemMasterDS.Tables[0].Rows[i]["Project"].ToString();
- // saleorder.out_stock_type = 1;//TODO
- // //sale_dept_id = "",
- // //sale_dept_name = 1,
- // //sale_dept_code = 1,
- // //create_dept = 1
- // ItemsUpdate.Add(saleorder);
- // }
- // }
- // //_businessDbContext.crm_seorder.Delete();
- // _businessDbContext.crm_seorder.BulkInsert(ItemsAdd);
- // _businessDbContext.crm_seorder.BulkUpdate(ItemsUpdate);
- // }
- //}
- ////同步销售订单明细
- //public void SyncSalesOrdMasterEntry()
- //{
- // var saleOrderEntryList = _mysql_crm_seorderentry.GetListAsync().Result;
- // var saleOrderList = _mysql_crm_seorder.GetListAsync().Result;
- // var ItemMasterDS = _repository.SelectDataBaseBySql("SELECT A.SalesOrd,A.Line,C.Descr,C.Descr1,A.ItemNum,A.UM,A.QtyOrded,A.Price,A.Disc,A.RequiredDate,A.Remark,B.CustPO,A.CustItem,A.Status,A.QtyShipped,A.QtyReturned,B.Contract,A.Domain from SalesOrdDetail A INNER JOIN SalesOrdMaster B On A.SalesOrd=B.SalesOrd and A.[Domain]=B.[Domain] INNER JOIN ItemMaster C on A.ItemNum=C.ItemNum and A.[Domain]=C.[Domain]", "SalesOrdDetail");
- // List<crm_seorderentry> ItemsAdd = new List<crm_seorderentry>();
- // List<crm_seorderentry> ItemsUpdate = new List<crm_seorderentry>();
- // if (ItemMasterDS != null && ItemMasterDS.Tables.Count > 0 && ItemMasterDS.Tables[0].Rows.Count > 0)
- // {
- // for (int i = 0; i < ItemMasterDS.Tables[0].Rows.Count; i++)
- // {
- // long domain = Convert.ToInt64(ItemMasterDS.Tables[0].Rows[i]["Domain"].ToString());
- // long factory_id = domain % 1000;
- // long tenant_id = domain - factory_id;
- // var bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
- // var seorder = saleOrderList.Find(a => a.bill_no == bill_no && a.factory_id == factory_id && a.tenant_id == tenant_id);
- // long? seorder_id = seorder is null ? seorder.Id : null;
- // var saleorderentry = saleOrderEntryList.Find(x => x.bill_no == bill_no && x.tenant_id == factory_id && x.factory_id == tenant_id);
- // if (saleorderentry is null)
- // {
- // var entry = new crm_seorderentry
- // {
- // seorder_id = seorder_id,
- // bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString(),
- // entry_seq = (int?)ItemMasterDS.Tables[0].Rows[i]["Line"],
- // item_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString(),
- // item_name = ItemMasterDS.Tables[0].Rows[i]["Descr"].ToString(),
- // specification = ItemMasterDS.Tables[0].Rows[i]["Descr1"].ToString(),
- // //urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["PLPriority"],
- // bom_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString(),
- // unit = ItemMasterDS.Tables[0].Rows[i]["UM"].ToString(),
- // qty = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyOrded"],
- // //price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
- // //tax_price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // //tax_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
- // //discount_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // discount_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Disc"],
- // //total_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // plan_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"],
- // //date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //planner_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //planner_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // remark = ItemMasterDS.Tables[0].Rows[i]["Remark"].ToString(),
- // //soure_bill_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // custom_order_bill_no = ItemMasterDS.Tables[0].Rows[i]["CustPO"].ToString(),
- // //custom_order_entryid = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //sys_capacity_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //adjust_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //mrp_closed = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // custom_order_itemno = ItemMasterDS.Tables[0].Rows[i]["CustItem"].ToString(),
- // state = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["Status"]),//TODO
- // deliver_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyShipped"],
- // returned_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyReturned"],
- // //se_reject_reason = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //out_stock_type = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //is_checked = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // //sys_material_date = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // contract_no = ItemMasterDS.Tables[0].Rows[i]["Contract"].ToString(),
- // //create_dept = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"])
- // factory_id = factory_id,
- // tenant_id = tenant_id
- // };
- // entry.GenerateNewId();
- // ItemsAdd.Add(entry);
- // }
- // else
- // {
- // saleorderentry.seorder_id = seorder_id;
- // saleorderentry.bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
- // saleorderentry.entry_seq = (int?)ItemMasterDS.Tables[0].Rows[i]["Line"];
- // saleorderentry.item_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString();
- // saleorderentry.item_name = ItemMasterDS.Tables[0].Rows[i]["Descr"].ToString();
- // saleorderentry.specification = ItemMasterDS.Tables[0].Rows[i]["Descr1"].ToString();
- // //urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["PLPriority"],
- // saleorderentry.bom_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString();
- // saleorderentry.unit = ItemMasterDS.Tables[0].Rows[i]["UM"].ToString();
- // saleorderentry.qty = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyOrded"];
- // //price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
- // //tax_price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // //tax_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // saleorderentry.amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"];
- // //discount_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // saleorderentry.discount_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Disc"];
- // //total_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // saleorderentry.plan_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"];
- // //date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //planner_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //planner_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // saleorderentry.remark = ItemMasterDS.Tables[0].Rows[i]["Remark"].ToString();
- // //soure_bill_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // saleorderentry.custom_order_bill_no = ItemMasterDS.Tables[0].Rows[i]["CustPO"].ToString();
- // //custom_order_entryid = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //sys_capacity_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //adjust_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
- // //mrp_closed = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // saleorderentry.custom_order_itemno = ItemMasterDS.Tables[0].Rows[i]["CustItem"].ToString();
- // saleorderentry.state = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["Status"]);//TODO
- // //rnumber = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // //deliver_notice_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
- // saleorderentry.deliver_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyShipped"];
- // saleorderentry.returned_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyReturned"];
- // //se_reject_reason = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //out_stock_type = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
- // //is_checked = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // //sys_material_date = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
- // saleorderentry.contract_no = ItemMasterDS.Tables[0].Rows[i]["Contract"].ToString();
- // //create_dept = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"])
- // ItemsUpdate.Add(saleorderentry);
- // }
- // }
- // //_businessDbContext.crm_seorder.Delete();
- // _businessDbContext.crm_seorderentry.BulkInsert(ItemsAdd);
- // _businessDbContext.crm_seorderentry.BulkUpdate(ItemsUpdate);
- // }
- //}
- //同步物料
- public void SyncItemMaster()
- {
- var ic_itemList = _mysql_ic_item.GetListAsync(a=>a.tenant_id==1000 && a.factory_id==1001).Result;
- var custList = _itemMaster.Select(a => a.IsActive);
- List<ic_item> ItemsAdd = new List<ic_item>();
- if (custList != null && custList.Count > 0)
- {
- 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);
- if (ic_item == null)
- {
- ItemsAdd.Add(new ic_item(help.NextId())
- {
- number = custList[i].ItemNum, //物料编码
- name = custList[i].Descr, //物料名称
- model = custList[i].Descr1,//规格型号
- 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_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" ? "自制" : "外购",
- unit = custList[i].UM,//单位
- item_level = 0,//物料等级
- source = "",//来源
- iskeyitem = custList[i].IsMainMas ? 1 : 0,//是否关键件
- net_weight = (decimal)custList[i].NetWeight,//净重
- maund = custList[i].NetWeightUM,//重量单位
- length = (decimal)custList[i].Length,//长度
- width = (decimal)custList[i].Width,//宽度
- height = (decimal)custList[i].Height,//高度
- allowpur = custList[i].PurMfg == "P" ? 1 : 0,//允许采购
- allowsale = 1,//允许销售
- allowmanu = custList[i].PurMfg == "L" ? 1 : 0,//允许生产
- allowout = 1,//允许委外
- allowbatch = custList[i].LotSerialControl ? 1 : 0,//批号管理
- allowserial = custList[i].LotSerialControl ? 1 : 0,//序列号管理
- photo = "",//图片
- enable_warning = 1,//启用预警
- factory_id = 1001,
- tenant_id = 1000,
- IsDeleted = false
- });
- }
- }
- }
- _businessDbContext.BulkInsert(ItemsAdd);
- }
- 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;
- 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 item = ic_itemList.Find(a => a.number == c);
- var ItemList = wmsBomList.Where(a=>a.ParentItem ==c);
- 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==null ? help.NextId() : item.Id,
- item_name= item==null? "" : 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);
- 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? "" : item.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);
- }
- }
- }
- }
|