wangxinhui
2024-09-23 a3eb67538c4716aef9967f1e6301720cce095e3c
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
using System;
using System.Threading;
using WIDESEA_Common;
using WIDESEA_Common.Tools;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WCS.WCSClient;
 
namespace WIDESEA_WCS.JobsPart.AGV
{
    public partial class AGVServer
    {
        /// <summary>
        /// 取消agv任务
        /// </summary>
        public void CanselAgvTask(dt_agvtask task, PLCClient client)
        {
            Send(task, client);
            //等待处理
            Thread.Sleep(1000);
            int taskSendRespone = Convert.ToInt32(client.ReadValue(TaskDBName.taskInteractiveR.ToString()));
            if (taskSendRespone == 1)
            {
                //复位
                client.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                freeDB.Add(new dt_agvtask_hty()
                {
                    hty_pkid = Guid.NewGuid(),
                    agv_id = Guid.Empty,
                    agv_tasknum = task.agv_tasknum,
                    agv_materielid = task.agv_materielid,
                    agv_qty = task.agv_qty,
                    agv_createtime = task.agv_createtime,
                    agv_realesstime = task.agv_realesstime,
                    agv_executingBeginTime = task.agv_executingBeginTime,
                    agv_executingEndTime = task.agv_executingEndTime,
                    agv_completeBeginTime = task.agv_completeBeginTime,
                    agv_finishedtime = DateTime.Now,
                    agv_taskstate = AGVTaskStateEnum.Cancel.ToString(),
                    agv_tasktype = task.agv_tasktype,
                    agv_fromaddress = task.agv_fromaddress,
                    agv_toaddress = task.agv_toaddress,
                    agv_operatetype = string.Empty,
                    agv_compeletor = task.agv_userid,
                    agv_completedate = DateTime.Now,
                    agv_grade = task.agv_grade,
                    agv_userid = task.agv_userid,
                    agv_barcode = task.agv_barcode,
                    agv_code = task.agv_code,
                    agv_worktype = task.agv_worktype
                });
                //移入历史
                freeDB.Remove(task);
            }
            else
            {
                //任务下发其它错误
                WriteLog.GetLog().Write($"【异常】任务{task.agv_tasknum},下发取消后反馈异常,反馈值{taskSendRespone}。" + "\n", client.PLCName);
 
                task.agv_taskstate = AGVTaskStateEnum.CancelAbnormal.ToString();
                freeDB.Update(task).UpdateColumns(t => new { t.agv_taskstate }).ExecuteAffrows();
                //复位
                client.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
            }
        }
    }
}