using Business.Core.Utilities;
using Business.Domain;
using Business.EntityFrameworkCore;
using Business.EntityFrameworkCore.SqlRepositories;
using Business.ResourceExamineManagement;
using Business.SystemJob;
using NLog;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.MultiTenancy;
namespace Business.SystemJobManagement
{
public class SystemJobAppService : ApplicationService, ISystemJobAppService
{
///
/// 物料bom
///
private IRepository _mysql_ic_bom;
///
/// 物料bom子表
///
private IRepository _mysql_ic_bom_child;
///
/// 物料
///
private IRepository _mysql_ic_item;
///
/// 供应商
///
private IRepository _mysql_srm_supplier;
///
/// 物料采购报价单
///
private IRepository _mysql_srm_purchase;
///
/// 物料采购报价单
///
private IRepository _mysql_crm_customer;
///
/// 销售订单
///
private IRepository _mysql_crm_seorder;
///
/// 销售订单明细
///
private IRepository _mysql_crm_seorderentry;
///
/// 雪花算法
///
SnowFlake help = new SnowFlake();
private readonly BusinessDbContext _businessDbContext;
private readonly ISqlRepository _custMaster;
private readonly ISqlRepository _suppMaster;
private readonly ISqlRepository _consigneeAddressMaster;
private readonly ISqlRepository _itemMaster;
private readonly ISqlRepository _productStructureMaster;
///
/// 替代群组
///
private IRepository _mysql_ic_substitute;
///
/// 物料替代多群组
///
private IRepository _mysql_ic_substitute_group;
///
/// 物料替代多群组明细
///
private IRepository _mysql_ic_substitute_group_detail;
///
/// 工艺路径
///
private readonly IRepository _mes_technique;
private IRepository _mysql_mes_technique;
///
/// 工序
///
private readonly IRepository _mes_process;
private IRepository _mysql_mes_process;
///
/// 工艺路径关联工序
///
private readonly IRepository _mes_tech_process;
private IRepository _mysql_mes_tech_process;
///
/// 生产排产
///
private readonly ProductionScheduleAppService _productionScheduleAppService;
public SystemJobAppService(
IRepository mysql_ic_bom,
IRepository mysql_ic_bom_child,
IRepository mysql_ic_item,
IRepository mysql_srm_supplier,
IRepository mysql_srm_purchase,
IRepository mysql_crm_customer,
IRepository mysql_crm_seorder,
IRepository mysql_crm_seorderentry,
IRepository mysql_ic_substitute,
IRepository mysql_ic_substitute_group,
IRepository mysql_ic_substitute_group_detail,
IRepository mysql_mes_technique,
IRepository mysql_mes_process,
IRepository mysql_mes_tech_process,
ISqlRepository custMaster,
ISqlRepository suppMaster,
ISqlRepository consigneeAddressMaster,
ISqlRepository itemMaster,
ISqlRepository productStructureMaster,
IRepository mes_technique,
IRepository mes_process,
IRepository mes_tech_process,
ProductionScheduleAppService productionScheduleAppService,
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_srm_purchase = mysql_srm_purchase;
_mysql_crm_customer = mysql_crm_customer;
_mysql_crm_seorder = mysql_crm_seorder;
_mysql_crm_seorderentry = mysql_crm_seorderentry;
_mysql_ic_substitute = mysql_ic_substitute;
_mysql_ic_substitute_group = mysql_ic_substitute_group;
_mysql_ic_substitute_group_detail = mysql_ic_substitute_group_detail;
_mysql_mes_technique = mysql_mes_technique;
_mysql_mes_process = mysql_mes_process;
_mysql_mes_tech_process = mysql_mes_tech_process;
_custMaster = custMaster;
_suppMaster = suppMaster;
_consigneeAddressMaster = consigneeAddressMaster;
_itemMaster = itemMaster;
_productStructureMaster = productStructureMaster;
_mes_technique = mes_technique;
_mes_process = mes_process;
_mes_tech_process = mes_tech_process;
_businessDbContext = businessDbContext;
_itemMaster = itemMaster;
_productionScheduleAppService = productionScheduleAppService;
}
public string SyncWMSDataToMySQLJob()
{
try
{
//SyncCustMaster();
//SyncSuppMaster();
//SyncSalesOrdMaster();
//SyncSalesOrdMasterEntry();
//SyncItemMaster();
//SyncBom();
}
catch (Exception ex)
{
return ex.Message;
}
return "同步完成";
}
public string LogInstallJob()
{
try
{
LogManager.Configuration.Install(new NLog.Config.InstallationContext());//每天0点执行一次
}
catch (Exception ex)
{
return ex.Message;
}
return "任务执行成功";
}
public async Task SyncBaseDataToMongoDBJob()
{
try
{
//物料采购报价单
List srm_purchases = _mysql_srm_purchase.GetListAsync().Result;
if (srm_purchases.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var mosrm_purchase = ObjectMapper.Map, List>(srm_purchases);
mosrm_purchase.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(mosrm_purchase);
}
//同步物料BOM明细数据
var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
if (icbom_childs.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moIcbom_childs = ObjectMapper.Map, List>(icbom_childs);
moIcbom_childs.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moIcbom_childs);
}
//同步物料Bom数据
var icBoms = _mysql_ic_bom.GetListAsync().Result;
if (icBoms.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moIcBoms = ObjectMapper.Map, List>(icBoms);
moIcBoms.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moIcBoms);
}
//同步物料数据
var icItems = _mysql_ic_item.GetListAsync().Result;
if (icItems.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moIcItems = ObjectMapper.Map, List>(icItems);
moIcItems.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moIcItems);
}
//同步替代群组数据
var subtitutes = _mysql_ic_substitute.GetListAsync().Result;
if (subtitutes.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moSubtitutes = ObjectMapper.Map, List>(subtitutes);
moSubtitutes.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moSubtitutes);
}
//同步物料替代多群组数据
var subAlls = _mysql_ic_substitute_group.GetListAsync().Result;
if (subAlls.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moSubAlls = ObjectMapper.Map, List>(subAlls);
moSubAlls.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moSubAlls);
}
//同步物料替代多群组明细数据
var subAllDtls = _mysql_ic_substitute_group_detail.GetListAsync().Result;
if (subAllDtls.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moSubAllDtls = ObjectMapper.Map, List>(subAllDtls);
moSubAllDtls.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moSubAllDtls);
}
//同步供应商数据
var suppliers = _mysql_srm_supplier.GetListAsync().Result;
if (suppliers.Count > 0)
{
//先清空表数据
await MongoHelper.DeleteManyAsync(p => p.mysql_id != -1);
var moSuppliers = ObjectMapper.Map, List>(suppliers);
moSuppliers.ForEach(s => s.GenerateNewId(help.NextId()));
await MongoHelper.InsertManyAsync(moSuppliers);
}
}
catch (Exception ex)
{
return ex.Message;
}
return "任务执行成功";
}
////同步客户
//public void SyncCustMaster()
//{
// var customerList = _mysql_crm_customer.GetListAsync().Result;
// List custList = _custMaster.Select(a => a.Domain == "1001" && a.IsActive);
// var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Cust" && a.IsActive);
// List ItemsAdd = new List();
// 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 custList = _suppMaster.Select(a => a.Domain == "1001" && a.IsActive);
// var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Supp" && a.IsActive);
// List ItemsAdd = new List();
// 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 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 ItemsAdd = new List();
//// List ItemsUpdate = new List();
//// 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 ItemsAdd = new List();
//// List ItemsUpdate = new List();
//// 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()
//{
// bool isAll = true;//是否同步所有物料
// var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
// List custList = new List();
// if (isAll)
// {
// custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001");
// }
// else
// {
// //格努产品编码同步子级物料
// List childItems = GetChildItemNumber("", new List());
// custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001" && childItems.Distinct().Contains(a.ItemNum));
// }
// List ItemsAdd = new List();
// List srm_purchaseAdd = new List();
// 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)
// {
// long itemId = help.NextId();
// ItemsAdd.Add(new ic_item(itemId)
// {
// 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,
// batch_manager = custList[i].LotSerialControl ? 1 : 0,
// minorderqty = custList[i].MinOrd,
// minpackqty = 1,
// ordissu_days = 1,
// transportation_leadtime = 3,
// stock_leadtime = 1,
// production_leadtime = 4,
// order_leadtime = 4,
// fix_leadtime = 1,
// order_inter_val = 1,
// lead_time = 1,
// bat_change_economy = 1,
// total_tqq = 1,
// order_point = 1,
// secinv = 1,
// secinv_ratio = 1,
// self_inspection_date = 1,
// Warehousing_date = 1,
// Shipping_date = 3,
// });
// srm_purchaseAdd.Add(new srm_purchase(help.NextId())
// {
// icitem_id = itemId,
// icitem_name = custList[i].Descr,
// sourcelist_number = "HYQD12064",
// supplier_id = 10101000051,
// supplier_number = "",
// supplier_name = "广州市伟正金属构件有限公司",
// purchgroup = "",
// purcher = "",
// purchase_unit = "",
// netpurchase_price = 1,
// taxrate = 0.13m,
// currency_type = 1,
// order_rector_name = "",
// order_rector_num = "",
// factory_code = "",
// order_dept = "",
// order_price = 13,
// sale_price = 130,
// qty_min = 10,
// batch_append_qty = 10,
// 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 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 ItemsAdd = new List();
// List childItemsAdd = new List();
// 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 GetChildItemNumber(string itemNum, List 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 DoProductShceduleJob()
{
try
{
_productionScheduleAppService.DoExt();
}
catch (Exception ex)
{
return ex.Message;
}
return "任务执行成功";
}
}
}