SigningUpForWorkJob.cs
2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using Hh.Mes.POJO.Entity;
using Hh.Mes.POJO.EnumEntitys;
using Hh.Mes.POJO.Response;
using Hh.Mes.Service;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace Quartz.Job.Jobs
{
/// <summary>
/// 定时推送报工数据至MES系统
/// 命名空间 Quartz.Job.Jobs 保持一致
/// </summary>
public class SigningUpForWorkJob : JobBase
{
public override void ExecuteJob(IJobExecutionContext context)
{
try
{
Stopwatch stopwatch = Stopwatch.StartNew();
//ai 是默认的测试数据。不报工MES
var busWorkOrderTopKeys = _dbContext.Queryable<bus_workOrder_top>()
.Where(x => x.workReportStatus != (int)EnumWorkReportTopStatus.已报工 && x.createBy != "ai")
.OrderBy(x => x.updateTime)//根据更新时间排序
.Take(10)
.Select(x => x.topKeys).ToList();
//每执行一次,应当修改一次时间,当数据量较多时,可以保证能循环取到其他数据
_dbContext.Updateable<bus_workOrder_top>()
.SetColumns(x => x.updateTime == DateTime.Now)
.Where(x => busWorkOrderTopKeys.Contains(x.topKeys))
.ExecuteCommand();
//待报工数据
var busWorkOrderHeadKeys = _dbContext.Queryable<bus_workOrder_head>()
.Where(x => busWorkOrderTopKeys.Contains(x.topKeys))
.Select(x => x.keys).ToList();
var result = new List<Response>();
var service = new ProcessFeedbackService();
foreach (var headKeys in busWorkOrderHeadKeys)
{
var temp = service.SigningUpForWorkToMES(headKeys);
result.Add(temp);
}
var errorCount = result.Where(x => x.Code != 200 && x.Code != 210).Count();
stopwatch.Stop();
//_log.EnqueueJobLog(nameof(SigningUpForWorkJob), "工序反馈", $"{nameof(bus_workOrder_head)}", "定时器", $"[执行完成] 总数:{busWorkOrderHeadKeys.Count},失败:{errorCount},耗时:{stopwatch.Elapsed}", "");
}
catch (Exception ex)
{
_log.EnqueueJobLog(nameof(SigningUpForWorkJob), "工序反馈", $"{nameof(bus_workOrder_head)}", "定时器", $"[执行失败] {ex.Message}", "");
}
}
}
}