schangxiang@126.com
2025-09-04 5df8a085b6c9334a04ed8b90be110d1fbcd3bc89
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using yunneiPda.EnumDefine;
using yunneiPda.orm;
 
 
namespace yunneiPda
{
    /// <summary>
    /// 增补创建的扩展帮助类 【EditBy shaocx,2022-02-05】
    /// </summary>
    public class MyExtendHelper
    {
        public static void SetPlcTaskNoAgvTaskNo(ref task newTask)
        {
            //记录PLC任务号和AGV任务号 【EditBy shaocx,2022-03-28】
            yunneiPda.WCSserver.DeviceTaskNoEntity deviceTaskNoEntity = MyExtendHelper.CreateTaskId();
            newTask.PlcTaskNo = deviceTaskNoEntity.PlcTaskNo;
            newTask.AgvTaskNo = deviceTaskNoEntity.AgvTaskNo;
        }
 
        /// <summary>
        /// 生成设备任务号
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="positionId"></param>
        /// <returns></returns>
        public static yunneiPda.WCSserver.DeviceTaskNoEntity CreateTaskId()
        {
            yunneiPda.WCSserver.DeviceTaskNoEntity entity = null;
            using (WCSserver.IyunneiWcfClient client = new WCSserver.IyunneiWcfClient())
            {
                entity = client.CreateTaskId();
            }
            if (entity == null)
            {
                throw new Exception("创建任务号失败");
            }
            return entity;
        }
 
        /// <summary>
        /// 通过站点ID获取库存
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="positionId"></param>
        /// <returns></returns>
        public static productStock GetProductStockById(dbmodel mod, long positionId)
        {
            productStock stock = mod.productStock.FirstOrDefault(x => x.positionId == positionId);
            return stock;
        }
        /// <summary>
        /// 通过站点名字获取库存
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="positionId"></param>
        /// <returns></returns>
        public static productStock GetProductStockByName(dbmodel mod, string positionName)
        {
            var place = mod.position.FirstOrDefault(x => x.positionName == positionName);
            if (place == null)
            {
                throw new Exception("根据名字" + positionName + "没有找到库位");
            }
            productStock stock = GetProductStockById(mod, place.positionId);
            return stock;
        }
 
        /// <summary>
        /// 根据站点,是否存在未完成的任务
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="positionName"></param>
        /// <returns>true:存在,false:不存在</returns>
        public static bool IsExistNoFinishedTask(dbmodel mod, string positionName, ref task _task)
        {
            var queryStatus = (int)taskStatus.完成;
            var queryStatus2 = (int)taskStatus.作废;
            _task = mod.task.FirstOrDefault(x => x.taskStatus != queryStatus
                && x.taskStatus != queryStatus2
                && (
                   x.sourcePlace == positionName || x.toPlace == positionName
               ));
            if (_task == null)
            {
                return false;
            }
            return true;
        }
    }
}