StationForBlankingConveyorExcute.cs
5.43 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using HHECS.Application.Enums;
using HHECS.BllModel;
using HHECS.Communication;
using HHECS.Communication.PLC;
using HHECS.Dal;
using HHECS.DAL.Repository;
using HHECS.Executor.EquipmentHandler;
using HHECS.Infrastructure.CommonHelper;
using HHECS.Model.Entities;
using HHECS.Model.Enums;
using System;
using System.Collections.Generic;
namespace HHECS.EquipmentExcute.CacheShelf
{
/// <summary>
/// 输送线站台
/// </summary>
public class StationForBlankingConveyorExcute : StationExecute
{
public StationForBlankingConveyorExcute(EquipmentType equipmentType) :base(equipmentType)
{
}
/// <summary>
/// 地址请求的处理
/// 注意:allEquipments引用所有设备,此为共享应用
/// </summary>
/// <param name="station"></param>
/// <param name="allEquipments"></param>
/// <param name="plc"></param>
/// <returns></returns>
public override BllResult ExcuteRequest(Equipment station, List<Equipment> allEquipments, PLCCore plc, User user)
{
BllResult plcResult = NewSendAckToPlc(station, plc, StationMessageFlag.WCSPLCACK, StationLoadStatus.ArriveReply,
"0", 0);
return BllResultFactory.Success($"处理上料输送线的位置到达成功");
}
/// <summary>
/// 位置到达的处理
/// 注意:allEquipments引用所有设备,此为共享应用
/// </summary>
/// <param name="station"></param>
/// <param name="allEquipments"></param>
/// <param name="plc"></param>
/// <returns></returns>
public override BllResult ExcuteArrive(Equipment station, List<Equipment> allEquipments, PLCCore plc, User user)
{
try
{
BusWorkOrderDetail busWorkOrderDetail =null;
var busWorkOrderHeadRepository = new BusWorkOrderHeadRepository();
var busworkOrderDetailRepository = new BusWorkOrderDetailRepository();
var stepTraceRepository = new BaseStepTraceRepository();
// 获取位置到达的工序任务头
var getResult = GetArriveWorkOrderHead(station, busWorkOrderHeadRepository, out BusWorkOrderHead workOrderHead);
if (!getResult.Success) return getResult;
//更新数据
workOrderHead.NowOprSequenceCode = workOrderHead.NextOprSequenceCode;
workOrderHead.NowStationCode = station.WorkStationCode;
workOrderHead.NextOprSequenceCode = "0";
workOrderHead.NextStationCode = "0";
workOrderHead.State = StepTraceStatus.生产完成.GetIndexInt();
workOrderHead.UpdateTime = DateTime.Now;
workOrderHead.UpdateBy = user.UserCode;
busWorkOrderDetail = busworkOrderDetailRepository.Where(x => x.OprSequenceCode == workOrderHead.NowOprSequenceCode).First();
busWorkOrderDetail.ActualEndTime = DateTime.Now;
busWorkOrderDetail.State = EnumWorkOrderStatus.已完成.GetIndexInt();
var wcsProductType = DALHelper.GetFreeSql().GetRepository<BaseProductHeader>().Where(u => u.ProductCode == workOrderHead.ProductHeaderCode).First().WcsProductType;
var arriveRealAddress = station[StationProps.ArriveRealAddress.ToString()];
using (var uw = DALHelper.GetFreeSql().CreateUnitOfWork())
{
try
{
busWorkOrderHeadRepository.UnitOfWork = uw;
busworkOrderDetailRepository.UnitOfWork = uw;
//更新工序跟踪表
busWorkOrderHeadRepository.Update(workOrderHead);
busworkOrderDetailRepository.Update(busWorkOrderDetail);
BllResult plcResult=NewSendAckToPlc(station, plc, StationMessageFlag.WCSPLCACK, StationLoadStatus.ArriveReply, workOrderHead.Id.ToString(), wcsProductType, "0", "0", 0);
if (plcResult.Success)
{
uw.Commit();
return BllResultFactory.Success($"处理工位【{station.WorkStationCode}】的设备【{station.Name}】位置到达成功,在制品ID【{workOrderHead.Id}】相关信息写入设备成功");
}
else
{
uw?.Rollback();
return BllResultFactory.Error($"处理工位【{station.WorkStationCode}】的设备【{station.Name}】位置到达失败,在制品ID【{workOrderHead.Id}】信息没写入设备失败,原因:{plcResult.Msg}");
}
}
catch (Exception ex)
{
uw?.Rollback();
return BllResultFactory.Exception(ex,$"处理工位【{station.WorkStationCode}】的设备【{station.Name}】位置到达的时候,处理在制品ID【{workOrderHead.Id}】发生异常,原因:{ex.Message}");
}
}
}
catch (Exception ex)
{
return BllResultFactory.Exception(ex,$"处理工位【{station.WorkStationCode}】的设备【{station.Name}】位置到达时候,发生异常:{ex.Message}");
}
}
}
}