SystemJobAppService.cs 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061
  1. using Abp.Application.Services;
  2. using Abp.Dependency;
  3. using Business.Business.Dto;
  4. using Business.Core.MongoDBHelper;
  5. using Business.Core.Utilities;
  6. using Business.Dto;
  7. using Business.EntityFrameworkCore;
  8. using Business.EntityFrameworkCore.SqlRepositories;
  9. using Business.Model.MES.IC;
  10. using Business.Model.Production;
  11. using Business.Model.Sale;
  12. using Business.Model.SRM;
  13. using Business.Model.Tech;
  14. using Business.MongoModel.MES.IC;
  15. using Business.MongoModel.SRM;
  16. using Business.MongoModel.Tech;
  17. using Business.ResourceExamineManagement;
  18. using Business.SystemJob;
  19. using EFCore.BulkExtensions;
  20. using NLog;
  21. using System;
  22. using System.Collections.Generic;
  23. using System.Linq;
  24. using System.Threading.Tasks;
  25. using System.Transactions;
  26. using Volo.Abp.Domain.Repositories;
  27. using Volo.Abp.MultiTenancy;
  28. namespace Business.SystemJobManagement
  29. {
  30. public class SystemJobAppService : ApplicationService, ISystemJobAppService
  31. {
  32. /// <summary>
  33. /// 物料bom
  34. /// </summary>
  35. private IRepository<ic_bom, long> _mysql_ic_bom;
  36. private readonly IMongoDB<mo_ic_bom> _ic_bom;
  37. /// <summary>
  38. /// 物料bom子表
  39. /// </summary>
  40. private IRepository<ic_bom_child, long> _mysql_ic_bom_child;
  41. private readonly IMongoDB<mo_ic_bom_child> _ic_bom_child;
  42. /// <summary>
  43. /// 物料
  44. /// </summary>
  45. private IRepository<ic_item, long> _mysql_ic_item;
  46. private readonly IMongoDB<mo_ic_item> _ic_item;
  47. /// <summary>
  48. /// 供应商
  49. /// </summary>
  50. private IRepository<srm_supplier, long> _mysql_srm_supplier;
  51. private readonly IMongoDB<mo_srm_supplier> _srm_supplier;
  52. /// <summary>
  53. /// 物料采购报价单
  54. /// </summary>
  55. private IRepository<srm_purchase, long> _mysql_srm_purchase;
  56. private readonly IMongoDB<mo_srm_purchase> _srm_purchase;
  57. /// <summary>
  58. /// 物料采购报价单
  59. /// </summary>
  60. private IRepository<crm_customer, long> _mysql_crm_customer;
  61. /// <summary>
  62. /// 销售订单
  63. /// </summary>
  64. private IRepository<crm_seorder, long> _mysql_crm_seorder;
  65. /// <summary>
  66. /// 销售订单明细
  67. /// </summary>
  68. private IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
  69. /// <summary>
  70. /// 雪花算法
  71. /// </summary>
  72. SnowFlake help = new SnowFlake();
  73. private readonly BusinessDbContext _businessDbContext;
  74. private readonly ISqlRepository<CustMaster> _custMaster;
  75. private readonly ISqlRepository<SuppMaster> _suppMaster;
  76. private readonly ISqlRepository<ConsigneeAddressMaster> _consigneeAddressMaster;
  77. private readonly ISqlRepository<ItemMaster> _itemMaster;
  78. private readonly ISqlRepository<ProductStructureMaster> _productStructureMaster;
  79. /// <summary>
  80. /// 替代群组
  81. /// </summary>
  82. private readonly IMongoDB<mo_ic_substitute> _ic_substitute;
  83. private IRepository<ic_substitute, long> _mysql_ic_substitute;
  84. /// <summary>
  85. /// 物料替代多群组
  86. /// </summary>
  87. private readonly IMongoDB<mo_ic_substitute_group> _ic_substitute_group;
  88. private IRepository<ic_substitute_group, long> _mysql_ic_substitute_group;
  89. /// <summary>
  90. /// 物料替代多群组明细
  91. /// </summary>
  92. private readonly IMongoDB<mo_ic_substitute_group_detail> _ic_substitute_group_detail;
  93. private IRepository<ic_substitute_group_detail, long> _mysql_ic_substitute_group_detail;
  94. /// <summary>
  95. /// 工艺路径
  96. /// </summary>
  97. private readonly IMongoDB<mo_mes_technique> _mes_technique;
  98. private IRepository<mes_technique, long> _mysql_mes_technique;
  99. /// <summary>
  100. /// 工序
  101. /// </summary>
  102. private readonly IMongoDB<mo_mes_process> _mes_process;
  103. private IRepository<mes_process, long> _mysql_mes_process;
  104. /// <summary>
  105. /// 工艺路径关联工序
  106. /// </summary>
  107. private readonly IMongoDB<mo_mes_tech_process> _mes_tech_process;
  108. private IRepository<mes_tech_process, long> _mysql_mes_tech_process;
  109. /// <summary>
  110. /// 工单
  111. /// </summary>
  112. private ISqlRepository<WorkOrdMaster> _workOrdMaster;
  113. /// <summary>
  114. /// 工单物料明细
  115. /// </summary>
  116. private ISqlRepository<WorkOrdDetail> _workOrdDetail;
  117. /// <summary>
  118. /// 工单工艺路线明细
  119. /// </summary>
  120. private ISqlRepository<WorkOrdRouting> _workOrdRouting;
  121. /// <summary>
  122. /// 库存主数据
  123. /// </summary>
  124. private ISqlRepository<InvMaster> _invMaster;
  125. /// <summary>
  126. /// 生产线明细
  127. /// </summary>
  128. private ISqlRepository<ProdLineDetail> _prodLineDetail;
  129. /// <summary>
  130. /// 生产周期明细
  131. /// </summary>
  132. private ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
  133. /// <summary>
  134. /// 排产结果明细
  135. /// </summary>
  136. private ISqlRepository<ScheduleResultOpMaster> _scheduleResultOpMaster;
  137. /// <summary>
  138. /// 工作日历数据
  139. /// </summary>
  140. private ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
  141. /// <summary>
  142. /// 产线休息时间记录表
  143. /// </summary>
  144. private ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
  145. /// <summary>
  146. /// 节假日记录表
  147. /// </summary>
  148. private ISqlRepository<HolidayMaster> _holidayMaster;
  149. private readonly ICurrentTenant _currentTenant;
  150. /// <summary>
  151. /// 工作日历数据
  152. /// </summary>
  153. private List<ShopCalendarWorkCtr> calendars;
  154. /// <summary>
  155. /// 产线休息记录数据
  156. /// </summary>
  157. private List<QualityLineWorkDetail> qualityLines;
  158. /// <summary>
  159. /// 节假日记录数据
  160. /// </summary>
  161. private List<HolidayMaster> holidays;
  162. /// <summary>
  163. /// 生产排产
  164. /// </summary>
  165. private readonly ProductionScheduleAppService _productionScheduleAppService;
  166. public SystemJobAppService(
  167. IRepository<ic_bom, long> mysql_ic_bom,
  168. IRepository<ic_bom_child, long> mysql_ic_bom_child,
  169. IRepository<ic_item, long> mysql_ic_item,
  170. IRepository<srm_supplier, long> mysql_srm_supplier,
  171. IRepository<srm_purchase, long> mysql_srm_purchase,
  172. IRepository<crm_customer, long> mysql_crm_customer,
  173. IRepository<crm_seorder, long> mysql_crm_seorder,
  174. IRepository<crm_seorderentry, long> mysql_crm_seorderentry,
  175. IRepository<ic_substitute, long> mysql_ic_substitute,
  176. IRepository<ic_substitute_group, long> mysql_ic_substitute_group,
  177. IRepository<ic_substitute_group_detail, long> mysql_ic_substitute_group_detail,
  178. IRepository<mes_technique, long> mysql_mes_technique,
  179. IRepository<mes_process, long> mysql_mes_process,
  180. IRepository<mes_tech_process, long> mysql_mes_tech_process,
  181. ISqlRepository<CustMaster> custMaster,
  182. ISqlRepository<SuppMaster> suppMaster,
  183. ISqlRepository<ConsigneeAddressMaster> consigneeAddressMaster,
  184. ISqlRepository<ItemMaster> itemMaster,
  185. ISqlRepository<ProductStructureMaster> productStructureMaster,
  186. ISqlRepository<WorkOrdMaster> workOrdMaster,
  187. ISqlRepository<WorkOrdDetail> workOrdDetail,
  188. ISqlRepository<WorkOrdRouting> workOrdRouting,
  189. ISqlRepository<ProdLineDetail> prodLineDetail,
  190. ISqlRepository<PeriodSequenceDet> periodSequenceDet,
  191. ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
  192. ISqlRepository<InvMaster> invMaster,
  193. ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
  194. ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
  195. ISqlRepository<HolidayMaster> holidayMaster,
  196. ICurrentTenant currentTenant,
  197. IMongoDB<mo_ic_bom> ic_bom,
  198. IMongoDB<mo_ic_bom_child> ic_bom_child,
  199. IMongoDB<mo_ic_item> ic_item,
  200. IMongoDB<mo_ic_substitute> ic_substitute,
  201. IMongoDB<mo_ic_substitute_group> ic_substitute_group,
  202. IMongoDB<mo_ic_substitute_group_detail> ic_substitute_group_detail,
  203. IMongoDB<mo_srm_supplier> srm_supplier,
  204. IMongoDB<mo_mes_technique> mes_technique,
  205. IMongoDB<mo_mes_process> mes_process,
  206. IMongoDB<mo_mes_tech_process> mes_tech_process,
  207. IMongoDB<mo_srm_purchase> srm_purchase,
  208. ProductionScheduleAppService productionScheduleAppService,
  209. BusinessDbContext businessDbContext
  210. )
  211. {
  212. _mysql_ic_bom = mysql_ic_bom;
  213. _mysql_ic_bom_child = mysql_ic_bom_child;
  214. _mysql_ic_item = mysql_ic_item;
  215. _mysql_srm_supplier = mysql_srm_supplier;
  216. _mysql_srm_purchase = mysql_srm_purchase;
  217. _mysql_crm_customer = mysql_crm_customer;
  218. _mysql_crm_seorder = mysql_crm_seorder;
  219. _mysql_crm_seorderentry = mysql_crm_seorderentry;
  220. _mysql_ic_substitute = mysql_ic_substitute;
  221. _mysql_ic_substitute_group = mysql_ic_substitute_group;
  222. _mysql_ic_substitute_group_detail = mysql_ic_substitute_group_detail;
  223. _mysql_mes_technique = mysql_mes_technique;
  224. _mysql_mes_process = mysql_mes_process;
  225. _mysql_mes_tech_process = mysql_mes_tech_process;
  226. _custMaster = custMaster;
  227. _suppMaster = suppMaster;
  228. _consigneeAddressMaster = consigneeAddressMaster;
  229. _itemMaster = itemMaster;
  230. _productStructureMaster = productStructureMaster;
  231. _ic_bom = ic_bom;
  232. _ic_bom_child = ic_bom_child;
  233. _ic_item = ic_item;
  234. _ic_substitute = ic_substitute;
  235. _ic_substitute_group = ic_substitute_group;
  236. _ic_substitute_group_detail = ic_substitute_group_detail;
  237. _srm_supplier = srm_supplier;
  238. _mes_technique = mes_technique;
  239. _mes_process = mes_process;
  240. _mes_tech_process = mes_tech_process;
  241. _srm_purchase = srm_purchase;
  242. _businessDbContext = businessDbContext;
  243. _itemMaster = itemMaster;
  244. _workOrdMaster = workOrdMaster;
  245. _workOrdDetail = workOrdDetail;
  246. _workOrdRouting = workOrdRouting;
  247. _prodLineDetail = prodLineDetail;
  248. _periodSequenceDet = periodSequenceDet;
  249. _scheduleResultOpMaster = scheduleResultOpMaster;
  250. _invMaster = invMaster;
  251. _shopCalendarWorkCtr = shopCalendarWorkCtr;
  252. _qualityLineWorkDetail = qualityLineWorkDetail;
  253. _holidayMaster = holidayMaster;
  254. _currentTenant = currentTenant;
  255. _productionScheduleAppService = productionScheduleAppService;
  256. }
  257. public string SyncWMSDataToMySQLJob()
  258. {
  259. try
  260. {
  261. //SyncCustMaster();
  262. //SyncSuppMaster();
  263. //SyncSalesOrdMaster();
  264. //SyncSalesOrdMasterEntry();
  265. //SyncItemMaster();
  266. //SyncBom();
  267. }
  268. catch (Exception ex)
  269. {
  270. return ex.Message;
  271. }
  272. return "同步完成";
  273. }
  274. public string LogInstallJob()
  275. {
  276. try
  277. {
  278. LogManager.Configuration.Install(new NLog.Config.InstallationContext());//每天0点执行一次
  279. }
  280. catch (Exception ex)
  281. {
  282. return ex.Message;
  283. }
  284. return "任务执行成功";
  285. }
  286. public string SyncBaseDataToMongoDBJob()
  287. {
  288. try
  289. {
  290. //物料采购报价单
  291. //var srm_purchase = _mysql_srm_purchase.GetListAsync().Result;
  292. //if (srm_purchase.Count > 0)
  293. //{
  294. // //先清空表数据
  295. // _srm_purchase.Delete(p => p.mysql_id != -1);
  296. // List<mo_srm_purchase> mosrm_purchase = ObjectMapper.Map<List<srm_purchase>, List<mo_srm_purchase>>(srm_purchase);
  297. // mosrm_purchase.ForEach(s => s.id = help.NextId());
  298. // _srm_purchase.InsertMany(mosrm_purchase);
  299. //}
  300. /*//同步物料BOM明细数据
  301. var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
  302. if (icbom_childs.Count > 0)
  303. {
  304. //先清空表数据
  305. await _ic_bom_child.Delete(p => p.mysql_id != -1);
  306. var moIcbom_childs = ObjectMapper.Map<List<ic_bom_child>, List<mo_ic_bom_child>>(icbom_childs);
  307. moIcbom_childs.ForEach(s => s.id = help.NextId());
  308. //插入数据
  309. await _ic_bom_child.InsertMany(moIcbom_childs);
  310. }*/
  311. /*//同步物料Bom数据
  312. var icBoms = _mysql_ic_bom.GetListAsync().Result;
  313. if (icBoms.Count > 0)
  314. {
  315. //先清空表数据
  316. await _ic_bom.Delete(p => p.mysql_id != -1);
  317. var moIcBoms = ObjectMapper.Map<List<ic_bom>, List<mo_ic_bom>>(icBoms);
  318. moIcBoms.ForEach(s => s.id = help.NextId());
  319. //插入数据
  320. await _ic_bom.InsertMany(moIcBoms);
  321. }
  322. //同步物料BOM明细数据
  323. var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
  324. if (icbom_childs.Count > 0)
  325. {
  326. //先清空表数据
  327. await _ic_bom_child.Delete(p => p.mysql_id != -1);
  328. var moIcbom_childs = ObjectMapper.Map<List<ic_bom_child>, List<mo_ic_bom_child>>(icbom_childs);
  329. moIcbom_childs.ForEach(s => s.id = help.NextId());
  330. //插入数据
  331. await _ic_bom_child.InsertMany(moIcbom_childs);
  332. }
  333. ////工厂物料明细表
  334. //var ic_factory_details = _mysql_ic_factory_details.GetListAsync().Result;
  335. //if (ic_factory_details.Count > 0)
  336. //{
  337. // //先清空表数据
  338. // await _ic_factory_details.Delete(p => p.mysql_id != -1);
  339. // var moIc_factory_details = ObjectMapper.Map<List<ic_factory_details>, List<mo_ic_factory_details>>(ic_factory_details);
  340. // moIc_factory_details.ForEach(s => s.id = help.NextId());
  341. // await _ic_factory_details.InsertMany(moIc_factory_details);
  342. //}
  343. //同步物料数据
  344. var icItems = _mysql_ic_item.GetListAsync().Result;
  345. if (icItems.Count > 0)
  346. {
  347. //先清空表数据
  348. await _ic_item.Delete(p => p.mysql_id != -1);
  349. var moIcItems = ObjectMapper.Map<List<ic_item>, List<mo_ic_item>>(icItems);
  350. moIcItems.ForEach(s => s.id = help.NextId());
  351. //插入数据
  352. await _ic_item.InsertMany(moIcItems);
  353. }
  354. //同步替代群组数据
  355. var subtitutes = _mysql_ic_substitute.GetListAsync().Result;
  356. if (subtitutes.Count > 0)
  357. {
  358. //先清空表数据
  359. await _ic_substitute.Delete(p => p.mysql_id != -1);
  360. var moSubtitutes = ObjectMapper.Map<List<ic_substitute>, List<mo_ic_substitute>>(subtitutes);
  361. moSubtitutes.ForEach(s => s.id = help.NextId());
  362. //插入数据
  363. await _ic_substitute.InsertMany(moSubtitutes);
  364. }
  365. //同步物料替代多群组数据
  366. var subAlls = _mysql_ic_substitute_group.GetListAsync().Result;
  367. if (subAlls.Count > 0)
  368. {
  369. //先清空表数据
  370. await _ic_substitute_group.Delete(p => p.mysql_id != -1);
  371. var moSubAlls = ObjectMapper.Map<List<ic_substitute_group>, List<mo_ic_substitute_group>>(subAlls);
  372. moSubAlls.ForEach(s => s.id = help.NextId());
  373. //插入数据
  374. await _ic_substitute_group.InsertMany(moSubAlls);
  375. }
  376. //同步物料替代多群组明细数据
  377. var subAllDtls = _mysql_ic_substitute_group_detail.GetListAsync().Result;
  378. if (subAllDtls.Count > 0)
  379. {
  380. //先清空表数据
  381. await _ic_substitute_group_detail.Delete(p => p.mysql_id != -1);
  382. var moSubAllDtls = ObjectMapper.Map<List<ic_substitute_group_detail>, List<mo_ic_substitute_group_detail>>(subAllDtls);
  383. moSubAllDtls.ForEach(s => s.id = help.NextId());
  384. //插入数据
  385. await _ic_substitute_group_detail.InsertMany(moSubAllDtls);
  386. }
  387. //同步供应商数据
  388. var suppliers = _mysql_srm_supplier.GetListAsync().Result;
  389. if (suppliers.Count > 0)
  390. {
  391. //先清空表数据
  392. await _srm_supplier.Delete(p => p.mysql_id != -1);
  393. var moSuppliers = ObjectMapper.Map<List<srm_supplier>, List<mo_srm_supplier>>(suppliers);
  394. moSuppliers.ForEach(s => s.id = help.NextId());
  395. //插入数据
  396. await _srm_supplier.InsertMany(moSuppliers);
  397. }
  398. //同步工艺路径数据
  399. var techs = _mysql_mes_technique.GetListAsync().Result;
  400. if (techs.Count > 0)
  401. {
  402. //先清空表数据
  403. await _mes_technique.Delete(p => p.mysql_id != -1);
  404. var moTechs = ObjectMapper.Map<List<mes_technique>, List<mo_mes_technique>>(techs);
  405. moTechs.ForEach(s => s.id = help.NextId());
  406. //插入数据
  407. await _mes_technique.InsertMany(moTechs);
  408. }
  409. //同步工序数据
  410. var processes = _mysql_mes_process.GetListAsync().Result;
  411. if (suppliers.Count > 0)
  412. {
  413. //先清空表数据
  414. await _mes_process.Delete(p => p.mysql_id != -1);
  415. var moProcesses = ObjectMapper.Map<List<mes_process>, List<mo_mes_process>>(processes);
  416. moProcesses.ForEach(s => s.id = help.NextId());
  417. //插入数据
  418. await _mes_process.InsertMany(moProcesses);
  419. }
  420. //同步工艺关联工序数据
  421. var tech_procs = _mysql_mes_tech_process.GetListAsync().Result;
  422. if (tech_procs.Count > 0)
  423. {
  424. //先清空表数据
  425. await _mes_tech_process.Delete(p => p.mysql_id != -1);
  426. var moTech_procs = ObjectMapper.Map<List<mes_tech_process>, List<mo_mes_tech_process>>(tech_procs);
  427. moTech_procs.ForEach(s => s.id = help.NextId());
  428. //插入数据
  429. await _mes_tech_process.InsertMany(moTech_procs);
  430. }
  431. ////物料采购计划表
  432. //var ic_plan = _mysql_ic_plan.GetListAsync().Result;
  433. //if (ic_plan.Count > 0)
  434. //{
  435. // //先清空表数据
  436. // await _ic_plan.Delete(p => p.mysql_id != -1);
  437. // var moIc_plan = ObjectMapper.Map<List<ic_plan>, List<mo_ic_plan>>(ic_plan);
  438. // moIc_plan.ForEach(s => s.id = help.NextId());
  439. // await _ic_plan.InsertMany(moIc_plan);
  440. //}
  441. //物料采购报价单
  442. var srm_purchase = _mysql_srm_purchase.GetListAsync().Result;
  443. if (srm_purchase.Count > 0)
  444. {
  445. //先清空表数据
  446. await _srm_purchase.Delete(p => p.mysql_id != -1);
  447. var mosrm_purchase = ObjectMapper.Map<List<srm_purchase>, List<mo_srm_purchase>>(srm_purchase);
  448. mosrm_purchase.ForEach(s => s.id = help.NextId());
  449. await _srm_purchase.InsertMany(mosrm_purchase);
  450. }*/
  451. }
  452. catch (Exception ex)
  453. {
  454. return ex.Message;
  455. }
  456. return "任务执行成功";
  457. }
  458. ////同步客户
  459. //public void SyncCustMaster()
  460. //{
  461. // var customerList = _mysql_crm_customer.GetListAsync().Result;
  462. // List<CustMaster> custList = _custMaster.Select(a => a.Domain == "1001" && a.IsActive);
  463. // var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Cust" && a.IsActive);
  464. // List<crm_customer> ItemsAdd = new List<crm_customer>();
  465. // if (custList != null && custList.Count > 0)
  466. // {
  467. // for (int i = 0; i < custList.Count; i++)
  468. // {
  469. // long domain = Convert.ToInt64(custList[i].Domain);
  470. // long factory_id = domain % 1000;
  471. // long tenant_id = domain - factory_id;
  472. // var cust = customerList.Find(x => x.customer_no == custList[i].Cust && x.tenant_id == 1000 && x.factory_id == 1001);
  473. // if (cust is null)
  474. // {
  475. // ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Cust);
  476. // var customer = new crm_customer
  477. // {
  478. // customer_no = custList[i].Cust,
  479. // customer_name = address is null ? address.Name : "",
  480. // telephone = address is null ? address.Telephone : "",
  481. // email = address is null ? address.AttentionEmail : "",
  482. // contact = address is null ? address.Attention1 : "",
  483. // post_code = address is null ? address.Post : "",
  484. // country = address is null ? address.Country : "",
  485. // province = address is null ? address.State : "",
  486. // city = address is null ? address.City : "",
  487. // region = address is null ? address.State : "",
  488. // address = address is null ? address.Address1 : "",
  489. // short_name = custList[i].SortName,
  490. // carrying_aos = Convert.ToInt32(custList[i].CustShippingLT),
  491. // currency = custList[i].Curr,
  492. // employee_name = custList[i].Salesperson1,
  493. // factory_id = 1001,
  494. // tenant_id = 1000
  495. // };
  496. // customer.GenerateNewId(help.NextId());
  497. // ItemsAdd.Add(customer);
  498. // }
  499. // }
  500. // _businessDbContext.BulkInsert(ItemsAdd);
  501. // }
  502. //}
  503. ////同步供应商
  504. //public void SyncSuppMaster()
  505. //{
  506. // var suppList = _mysql_srm_supplier.GetListAsync().Result;
  507. // List<SuppMaster> custList = _suppMaster.Select(a => a.Domain == "1001" && a.IsActive);
  508. // var addressList = _consigneeAddressMaster.Select(a => a.Domain == "1001" && a.Typed == "Supp" && a.IsActive);
  509. // List<srm_supplier> ItemsAdd = new List<srm_supplier>();
  510. // if (custList != null && custList.Count > 0)
  511. // {
  512. // for (int i = 0; i < custList.Count; i++)
  513. // {
  514. // long domain = Convert.ToInt64(custList[i].Domain.ToString());
  515. // long factory_id = domain % 1000;
  516. // long tenant_id = domain - factory_id;
  517. // var supp = suppList.Find(x => x.supplier_no == custList[i].Supp.ToString() && x.tenant_id == factory_id && x.factory_id == tenant_id);
  518. // if (supp is null)
  519. // {
  520. // ConsigneeAddressMaster address = addressList.Find(a => a.Address == custList[i].Supp);
  521. // var supplier = new srm_supplier
  522. // {
  523. // supplier_no = custList[i].Supp,
  524. // supplier_name = address is null ? address.Name : "",
  525. // supplier_short_name = custList[i].SortName,
  526. // country = address is null ? address.Country : "",
  527. // state = address is null ? address.State : "",
  528. // region = address is null ? address.City : "",
  529. // contact = address is null ? address.Attention1 : "",
  530. // telephone = address is null ? address.Telephone : "",
  531. // post_code = address is null ? address.Post : "",
  532. // email = address is null ? address.AttentionEmail : "",
  533. // currency = custList[i].Curr,
  534. // supply_type = custList[i].Type,
  535. // settlement = custList[i].CrTerms,
  536. // factory_id = factory_id,
  537. // tenant_id = tenant_id
  538. // };
  539. // supplier.GenerateNewId(help.NextId());
  540. // ItemsAdd.Add(supplier);
  541. // }
  542. // }
  543. // _businessDbContext.BulkInsert(ItemsAdd);
  544. // }
  545. //}
  546. //////同步销售订单
  547. ////public void SyncSalesOrdMaster()
  548. ////{
  549. //// var customerList = _mysql_crm_customer.GetListAsync().Result;
  550. //// var saleOrderList = _mysql_crm_seorder.GetListAsync().Result;
  551. //// 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");
  552. //// List<crm_seorder> ItemsAdd = new List<crm_seorder>();
  553. //// List<crm_seorder> ItemsUpdate = new List<crm_seorder>();
  554. //// if (ItemMasterDS != null && ItemMasterDS.Tables.Count > 0 && ItemMasterDS.Tables[0].Rows.Count > 0)
  555. //// {
  556. //// for (int i = 0; i < ItemMasterDS.Tables[0].Rows.Count; i++)
  557. //// {
  558. //// long domain = Convert.ToInt64(ItemMasterDS.Tables[0].Rows[i]["Domain"].ToString());
  559. //// long factory_id = domain % 1000;
  560. //// long tenant_id = domain - factory_id;
  561. //// var custno = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString();
  562. //// var cust = customerList.Find(a => a.customer_no == custno && a.factory_id == factory_id && a.tenant_id == tenant_id);
  563. //// long? custom_id = cust is null ? cust.Id : null;
  564. //// 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);
  565. //// if (saleorder is null)
  566. //// {
  567. //// var order = new crm_seorder
  568. //// {
  569. //// bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString(),
  570. //// custom_id = custom_id,
  571. //// custom_name = ItemMasterDS.Tables[0].Rows[i]["CustomName"].ToString(),
  572. //// custom_no = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString(),
  573. //// //custom_level = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? "外购" : "自制",
  574. //// date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  575. //// rdate = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"],
  576. //// //urgent = "",
  577. //// currency = ItemMasterDS.Tables[0].Rows[i]["Curr"].ToString() == "RMB" ? 1 : 0,
  578. //// exchange_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  579. //// //biller = ItemMasterDS.Tables[0].Rows[i]["NetWeightUM"].ToString(),
  580. //// //emp_no = (decimal)ItemMasterDS.Tables[0].Rows[i]["Length"],
  581. //// emp_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  582. //// //auditor = (decimal)ItemMasterDS.Tables[0].Rows[i]["Height"],
  583. //// //audit_date = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? 1 : 0,
  584. //// //status = 1,
  585. //// //closed = "",
  586. //// //op_time = 1,
  587. //// bill_from = "",
  588. //// //project_name = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["LotSerialControl"]) == true ? 1 : 0,
  589. //// //project_code = "",
  590. //// out_stock_type = 1,//TODO
  591. //// //sale_dept_id = "",
  592. //// //sale_dept_name = 1,
  593. //// //sale_dept_code = 1,
  594. //// //create_dept = 1
  595. //// factory_id = factory_id,
  596. //// tenant_id = tenant_id
  597. //// };
  598. //// order.GenerateNewId();
  599. //// ItemsAdd.Add(order);
  600. //// }
  601. //// else
  602. //// {
  603. //// saleorder.bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
  604. //// saleorder.custom_id = custom_id;
  605. //// saleorder.custom_name = ItemMasterDS.Tables[0].Rows[i]["CustomName"].ToString();
  606. //// saleorder.custom_no = ItemMasterDS.Tables[0].Rows[i]["Cust"].ToString();
  607. //// //custom_level = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? "外购" : "自制",
  608. //// saleorder.date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"];
  609. //// saleorder.rdate = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"];
  610. //// saleorder.urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["Sequence"];
  611. //// saleorder.currency = ItemMasterDS.Tables[0].Rows[i]["Curr"].ToString() == "RMB" ? 1 : 0;
  612. //// saleorder.exchange_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"];
  613. //// //biller = ItemMasterDS.Tables[0].Rows[i]["NetWeightUM"].ToString(),
  614. //// //emp_no = (decimal)ItemMasterDS.Tables[0].Rows[i]["Length"],
  615. //// saleorder.emp_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString();
  616. //// //auditor = (decimal)ItemMasterDS.Tables[0].Rows[i]["Height"],
  617. //// //audit_date = ItemMasterDS.Tables[0].Rows[i]["PurMfg"].ToString() == "P" ? 1 : 0,
  618. //// //status = 1,
  619. //// //closed = "",
  620. //// //op_time = 1,
  621. //// saleorder.bill_from = "";
  622. //// saleorder.project_name = ItemMasterDS.Tables[0].Rows[i]["ProjectName"].ToString();
  623. //// saleorder.project_code = ItemMasterDS.Tables[0].Rows[i]["Project"].ToString();
  624. //// saleorder.out_stock_type = 1;//TODO
  625. //// //sale_dept_id = "",
  626. //// //sale_dept_name = 1,
  627. //// //sale_dept_code = 1,
  628. //// //create_dept = 1
  629. //// ItemsUpdate.Add(saleorder);
  630. //// }
  631. //// }
  632. //// //_businessDbContext.crm_seorder.Delete();
  633. //// _businessDbContext.crm_seorder.BulkInsert(ItemsAdd);
  634. //// _businessDbContext.crm_seorder.BulkUpdate(ItemsUpdate);
  635. //// }
  636. ////}
  637. //////同步销售订单明细
  638. ////public void SyncSalesOrdMasterEntry()
  639. ////{
  640. //// var saleOrderEntryList = _mysql_crm_seorderentry.GetListAsync().Result;
  641. //// var saleOrderList = _mysql_crm_seorder.GetListAsync().Result;
  642. //// 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");
  643. //// List<crm_seorderentry> ItemsAdd = new List<crm_seorderentry>();
  644. //// List<crm_seorderentry> ItemsUpdate = new List<crm_seorderentry>();
  645. //// if (ItemMasterDS != null && ItemMasterDS.Tables.Count > 0 && ItemMasterDS.Tables[0].Rows.Count > 0)
  646. //// {
  647. //// for (int i = 0; i < ItemMasterDS.Tables[0].Rows.Count; i++)
  648. //// {
  649. //// long domain = Convert.ToInt64(ItemMasterDS.Tables[0].Rows[i]["Domain"].ToString());
  650. //// long factory_id = domain % 1000;
  651. //// long tenant_id = domain - factory_id;
  652. //// var bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
  653. //// var seorder = saleOrderList.Find(a => a.bill_no == bill_no && a.factory_id == factory_id && a.tenant_id == tenant_id);
  654. //// long? seorder_id = seorder is null ? seorder.Id : null;
  655. //// var saleorderentry = saleOrderEntryList.Find(x => x.bill_no == bill_no && x.tenant_id == factory_id && x.factory_id == tenant_id);
  656. //// if (saleorderentry is null)
  657. //// {
  658. //// var entry = new crm_seorderentry
  659. //// {
  660. //// seorder_id = seorder_id,
  661. //// bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString(),
  662. //// entry_seq = (int?)ItemMasterDS.Tables[0].Rows[i]["Line"],
  663. //// item_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString(),
  664. //// item_name = ItemMasterDS.Tables[0].Rows[i]["Descr"].ToString(),
  665. //// specification = ItemMasterDS.Tables[0].Rows[i]["Descr1"].ToString(),
  666. //// //urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["PLPriority"],
  667. //// bom_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString(),
  668. //// unit = ItemMasterDS.Tables[0].Rows[i]["UM"].ToString(),
  669. //// qty = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyOrded"],
  670. //// //price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
  671. //// //tax_price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  672. //// //tax_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  673. //// amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
  674. //// //discount_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  675. //// discount_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Disc"],
  676. //// //total_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  677. //// plan_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"],
  678. //// //date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  679. //// //planner_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  680. //// //planner_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  681. //// remark = ItemMasterDS.Tables[0].Rows[i]["Remark"].ToString(),
  682. //// //soure_bill_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  683. //// custom_order_bill_no = ItemMasterDS.Tables[0].Rows[i]["CustPO"].ToString(),
  684. //// //custom_order_entryid = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  685. //// //sys_capacity_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  686. //// //adjust_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  687. //// //mrp_closed = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  688. //// custom_order_itemno = ItemMasterDS.Tables[0].Rows[i]["CustItem"].ToString(),
  689. //// state = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["Status"]),//TODO
  690. //// deliver_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyShipped"],
  691. //// returned_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyReturned"],
  692. //// //se_reject_reason = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  693. //// //out_stock_type = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  694. //// //is_checked = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  695. //// //sys_material_date = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  696. //// contract_no = ItemMasterDS.Tables[0].Rows[i]["Contract"].ToString(),
  697. //// //create_dept = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"])
  698. //// factory_id = factory_id,
  699. //// tenant_id = tenant_id
  700. //// };
  701. //// entry.GenerateNewId();
  702. //// ItemsAdd.Add(entry);
  703. //// }
  704. //// else
  705. //// {
  706. //// saleorderentry.seorder_id = seorder_id;
  707. //// saleorderentry.bill_no = ItemMasterDS.Tables[0].Rows[i]["SalesOrd"].ToString();
  708. //// saleorderentry.entry_seq = (int?)ItemMasterDS.Tables[0].Rows[i]["Line"];
  709. //// saleorderentry.item_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString();
  710. //// saleorderentry.item_name = ItemMasterDS.Tables[0].Rows[i]["Descr"].ToString();
  711. //// saleorderentry.specification = ItemMasterDS.Tables[0].Rows[i]["Descr1"].ToString();
  712. //// //urgent = (int?)ItemMasterDS.Tables[0].Rows[i]["PLPriority"],
  713. //// saleorderentry.bom_number = ItemMasterDS.Tables[0].Rows[i]["ItemNum"].ToString();
  714. //// saleorderentry.unit = ItemMasterDS.Tables[0].Rows[i]["UM"].ToString();
  715. //// saleorderentry.qty = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyOrded"];
  716. //// //price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"],
  717. //// //tax_price = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  718. //// //tax_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  719. //// saleorderentry.amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Price"];
  720. //// //discount_rate = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  721. //// saleorderentry.discount_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["Disc"];
  722. //// //total_amount = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  723. //// saleorderentry.plan_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["RequiredDate"];
  724. //// //date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  725. //// //planner_name = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  726. //// //planner_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  727. //// saleorderentry.remark = ItemMasterDS.Tables[0].Rows[i]["Remark"].ToString();
  728. //// //soure_bill_no = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  729. //// saleorderentry.custom_order_bill_no = ItemMasterDS.Tables[0].Rows[i]["CustPO"].ToString();
  730. //// //custom_order_entryid = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  731. //// //sys_capacity_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  732. //// //adjust_date = (DateTime?)ItemMasterDS.Tables[0].Rows[i]["OrdDate"],
  733. //// //mrp_closed = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  734. //// saleorderentry.custom_order_itemno = ItemMasterDS.Tables[0].Rows[i]["CustItem"].ToString();
  735. //// saleorderentry.state = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["Status"]);//TODO
  736. //// //rnumber = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  737. //// //deliver_notice_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["ExchRate"],
  738. //// saleorderentry.deliver_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyShipped"];
  739. //// saleorderentry.returned_count = (decimal?)ItemMasterDS.Tables[0].Rows[i]["QtyReturned"];
  740. //// //se_reject_reason = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  741. //// //out_stock_type = ItemMasterDS.Tables[0].Rows[i]["Salesperson1"].ToString(),
  742. //// //is_checked = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  743. //// //sys_material_date = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"]),
  744. //// saleorderentry.contract_no = ItemMasterDS.Tables[0].Rows[i]["Contract"].ToString();
  745. //// //create_dept = Convert.ToBoolean(ItemMasterDS.Tables[0].Rows[i]["OrdDate"])
  746. //// ItemsUpdate.Add(saleorderentry);
  747. //// }
  748. //// }
  749. //// //_businessDbContext.crm_seorder.Delete();
  750. //// _businessDbContext.crm_seorderentry.BulkInsert(ItemsAdd);
  751. //// _businessDbContext.crm_seorderentry.BulkUpdate(ItemsUpdate);
  752. //// }
  753. ////}
  754. ////同步物料
  755. //public void SyncItemMaster()
  756. //{
  757. // bool isAll = true;//是否同步所有物料
  758. // var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
  759. // List<ItemMaster> custList = new List<ItemMaster>();
  760. // if (isAll)
  761. // {
  762. // custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001");
  763. // }
  764. // else
  765. // {
  766. // //格努产品编码同步子级物料
  767. // List<string> childItems = GetChildItemNumber("", new List<string>());
  768. // custList = _itemMaster.Select(a => a.IsActive && a.Domain == "1001" && childItems.Distinct().Contains(a.ItemNum));
  769. // }
  770. // List<ic_item> ItemsAdd = new List<ic_item>();
  771. // List<srm_purchase> srm_purchaseAdd = new List<srm_purchase>();
  772. // if (custList != null && custList.Count > 0)
  773. // {
  774. // for (int i = 0; i < custList.Count; i++)
  775. // {
  776. // var ic_item = ic_itemList.Find(x => x.number == custList[i].ItemNum && x.tenant_id == 1000 && x.factory_id == 1001);
  777. // if (ic_item == null)
  778. // {
  779. // long itemId = help.NextId();
  780. // ItemsAdd.Add(new ic_item(itemId)
  781. // {
  782. // number = custList[i].ItemNum, //物料编码
  783. // name = custList[i].Descr, //物料名称
  784. // model = custList[i].Descr1,//规格型号
  785. // fversion = "",//版本号
  786. // //ext.FErpClsID == "配置类" ? 0 : ext.FErpClsID == "自制" ? 1 : ext.FErpClsID == "委外" ? 2 : ext.FErpClsID == "外购" ? 3 : ext.FErpClsID == "虚拟" ? 4 : ext.FErpClsID == "费用" ? 5 : ext.FErpClsID == "服务" ? 6 : -1;
  787. // //erp_cls = custList[i].PurMfg == "P" ? 3 : 1,//物料属性
  788. // 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,
  789. // //erp_cls_name = custList[i].PurMfg == "P" ? "外购" : "自制",//物料属性名称
  790. // 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" ? "自制" : "外购",
  791. // unit = custList[i].UM,//单位
  792. // item_level = 0,//物料等级
  793. // source = "",//来源
  794. // iskeyitem = custList[i].IsMainMas ? 1 : 0,//是否关键件
  795. // net_weight = (decimal)custList[i].NetWeight,//净重
  796. // maund = custList[i].NetWeightUM,//重量单位
  797. // length = (decimal)custList[i].Length,//长度
  798. // width = (decimal)custList[i].Width,//宽度
  799. // height = (decimal)custList[i].Height,//高度
  800. // allowpur = custList[i].PurMfg == "P" ? 1 : 0,//允许采购
  801. // allowsale = 1,//允许销售
  802. // allowmanu = custList[i].PurMfg == "L" ? 1 : 0,//允许生产
  803. // allowout = 1,//允许委外
  804. // allowbatch = custList[i].LotSerialControl ? 1 : 0,//批号管理
  805. // allowserial = custList[i].LotSerialControl ? 1 : 0,//序列号管理
  806. // photo = "",//图片
  807. // enable_warning = 1,//启用预警
  808. // factory_id = 1001,
  809. // tenant_id = 1000,
  810. // IsDeleted = false,
  811. // batch_manager = custList[i].LotSerialControl ? 1 : 0,
  812. // minorderqty = custList[i].MinOrd,
  813. // minpackqty = 1,
  814. // ordissu_days = 1,
  815. // transportation_leadtime = 3,
  816. // stock_leadtime = 1,
  817. // production_leadtime = 4,
  818. // order_leadtime = 4,
  819. // fix_leadtime = 1,
  820. // order_inter_val = 1,
  821. // lead_time = 1,
  822. // bat_change_economy = 1,
  823. // total_tqq = 1,
  824. // order_point = 1,
  825. // secinv = 1,
  826. // secinv_ratio = 1,
  827. // self_inspection_date = 1,
  828. // Warehousing_date = 1,
  829. // Shipping_date = 3,
  830. // });
  831. // srm_purchaseAdd.Add(new srm_purchase(help.NextId())
  832. // {
  833. // icitem_id = itemId,
  834. // icitem_name = custList[i].Descr,
  835. // sourcelist_number = "HYQD12064",
  836. // supplier_id = 10101000051,
  837. // supplier_number = "",
  838. // supplier_name = "广州市伟正金属构件有限公司",
  839. // purchgroup = "",
  840. // purcher = "",
  841. // purchase_unit = "",
  842. // netpurchase_price = 1,
  843. // taxrate = 0.13m,
  844. // currency_type = 1,
  845. // order_rector_name = "",
  846. // order_rector_num = "",
  847. // factory_code = "",
  848. // order_dept = "",
  849. // order_price = 13,
  850. // sale_price = 130,
  851. // qty_min = 10,
  852. // batch_append_qty = 10,
  853. // factory_id = 1001,
  854. // tenant_id = 1000,
  855. // IsDeleted = false
  856. // });
  857. // }
  858. // }
  859. // }
  860. // _businessDbContext.BulkInsert(ItemsAdd);
  861. // _businessDbContext.BulkInsert(srm_purchaseAdd);
  862. //}
  863. //public void SyncBom()
  864. //{
  865. // var ic_bomList = _mysql_ic_bom.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
  866. // var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
  867. // 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;
  868. // 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);
  869. // List<ic_bom> ItemsAdd = new List<ic_bom>();
  870. // List<ic_bom_child> childItemsAdd = new List<ic_bom_child>();
  871. // if (wmsBomList != null && wmsBomList.Count > 0)
  872. // {
  873. // var ItemMasterDS = wmsBomList.Select(a => a.ParentItem).Distinct().ToList();
  874. // foreach (var c in ItemMasterDS)
  875. // {
  876. // var icbom = ic_bomList.Find(x => x.item_number == c && x.tenant_id == 1000 && x.factory_id == 1001);
  877. // var ItemList = wmsBomList.Where(a => a.ParentItem == c);
  878. // var item = ic_itemList.Find(a => a.number == c);
  879. // if (item == null)
  880. // {
  881. // continue;
  882. // }
  883. // if (icbom == null)
  884. // {
  885. // long domain = Convert.ToInt64(ItemList.First().Domain);
  886. // long factory_id = domain % 1000;
  887. // long tenant_id = domain - factory_id;
  888. // var bom = new ic_bom(help.NextId())
  889. // {
  890. // bom_number = c,
  891. // icitem_id = item.Id,
  892. // item_name = item.name,
  893. // item_number = c,
  894. // version = ItemList.First().Refs,
  895. // factory_id = 1001,
  896. // tenant_id = 1000,
  897. // IsDeleted = false,
  898. // use_status = 1
  899. // };
  900. // ItemsAdd.Add(bom);
  901. // foreach (var child in ItemList)
  902. // {
  903. // var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
  904. // if (itemchild == null) { continue; }
  905. // var bomchild = new ic_bom_child(help.NextId())
  906. // {
  907. // bom_id = bom.Id,
  908. // bom_number = bom.bom_number,
  909. // icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
  910. // item_number = child.ComponentItem,
  911. // item_name = itemchild == null ? "" : itemchild.name,
  912. // unit = child.UM,
  913. // qty = child.Qty,
  914. // entryid = child.SequenceNum,
  915. // erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
  916. // begin_day = child.StartEff,
  917. // end_day = child.EndEff,
  918. // child_num = child.SequenceNum,
  919. // version = child.Refs,
  920. // factory_id = 1001,
  921. // tenant_id = 1000,
  922. // IsDeleted = false,
  923. // use_status = 1
  924. // };
  925. // childItemsAdd.Add(bomchild);
  926. // }
  927. // }
  928. // else
  929. // {
  930. // foreach (var child in ItemList)
  931. // {
  932. // var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
  933. // if (itemchild == null) { continue; }
  934. // var icbomchild = ic_bomchildList.Find(s => s.bom_number == c && s.item_number == child.ComponentItem);
  935. // if (icbomchild == null)
  936. // {
  937. // var bomchild = new ic_bom_child(help.NextId())
  938. // {
  939. // bom_id = icbom.Id,
  940. // bom_number = icbom.bom_number,
  941. // icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
  942. // item_number = child.ComponentItem,
  943. // item_name = itemchild == null ? "" : itemchild.name,
  944. // unit = child.UM,
  945. // qty = child.Qty,
  946. // entryid = child.SequenceNum,
  947. // erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
  948. // begin_day = child.StartEff,
  949. // end_day = child.EndEff,
  950. // child_num = child.SequenceNum,
  951. // version = child.Refs,
  952. // factory_id = 1001,
  953. // tenant_id = 1000,
  954. // IsDeleted = false,
  955. // use_status = 1
  956. // };
  957. // childItemsAdd.Add(bomchild);
  958. // }
  959. // }
  960. // }
  961. // }
  962. // _businessDbContext.BulkInsert(ItemsAdd);
  963. // _businessDbContext.BulkInsert(childItemsAdd);
  964. // }
  965. //}
  966. ////循环获取子级物料编码,包括产品本身,有重复的结果去重即可
  967. //public List<string> GetChildItemNumber(string itemNum, List<string> list)
  968. //{
  969. // list.Add(itemNum);
  970. // var productStructures = _productStructureMaster.Select(p => p.ParentItem == itemNum && p.Domain == "1001" && p.IsActive);
  971. // list.AddRange(productStructures.Select(a => a.ComponentItem));
  972. // foreach (var item in productStructures)
  973. // {
  974. // if (item.StructureType.ToUpper() == "X")
  975. // {
  976. // GetChildItemNumber(item.ComponentItem, list);
  977. // }
  978. // }
  979. // return list;
  980. //}
  981. public string DoProductShceduleJob()
  982. {
  983. try
  984. {
  985. _productionScheduleAppService.DoExt();
  986. }
  987. catch (Exception ex)
  988. {
  989. return ex.Message;
  990. }
  991. return "任务执行成功";
  992. }
  993. }
  994. }