lss
2025-05-19 c378b390c2b98c00135d055de6896d2d5a8ccdd3
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
using HH.WCS.DaYang.wms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
 
namespace HH.WCS.DaYang.core {
    internal class WMSCore {
        /// <summary>
        /// 遍历定版的发货单,生产分拣单主表和子表(也可以手动调接口触发)
        /// </summary>
        internal static void CheckShippingOrder() {
            //1.0、获取已经定版的发货单,生产分拣单子表和主表,设置【发货单】的业务状态 N_B_STATE = 1(待分拣)
            //2.0、如果发货单C_AUTO_SORTING=Y,则自动将分拣单状态设置为开始配货
 
        }
        /// <summary>
        /// 开始配货创建分拣单明细(改成调接口触发)
        /// </summary>
        internal static void CheckSortingOrder() {
            //new SortingOrder().N_B_STATE
            //1.0、获取 N_B_STATE = 1 (开始配货)状态的分拣单
            //2.0、遍历分拣单子表,创建分拣单明细,更新分拣单子表的明细汇总F_ACC_S_QTY
            //3.0、全部分拣单子表的明细创建完毕,子表明细汇总和子表数量一致,更新分拣单状态,N_B_STATE = 2配货完成
            //4.0、如果分拣单是自动作业,就直接更新到 N_B_STATE = 3开始作业
            //WMSHelper.GetWaitingSortingOrderList();
 
        }
 
    
        
 
        /// <summary>
        /// 作业启动,创建子任务
        /// </summary>
        internal static void Start() {
 
            List<WMSTask> list = WMSHelper.GetWaitingOperationList();
            if (list.Count > 0) {
                //空托回库任务创建
                list.ForEach(a => {
                    if (a.N_TYPE == 1) {
                        if (!string.IsNullOrEmpty(a.S_END_LOC)) 
                        {
                            string JbwLoc = "";
                            //创建agv搬运任务
                            var wcsTask1 = new WCSTask
                            {
                                S_OP_CODE = a.S_CODE,
                                S_OP_NAME = "入库",
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_START_LOC = a.S_START_LOC,
                                S_END_LOC = JbwLoc,
                                N_SCHEDULE_TYPE = 1,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
 
                            };
                            //创建wcs回库任务
                            var wcsTask2 = new WCSTask
                            {
                                S_OP_CODE = a.S_CODE,
                                S_OP_NAME = "入库",
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_START_LOC = JbwLoc,
                                S_END_LOC = a.S_END_LOC,
                                N_SCHEDULE_TYPE = 2,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
 
                            };
                            if (WCSHelper.CreateTask(wcsTask1)&& WCSHelper.CreateTask(wcsTask2)) 
                            {
                                //更新作业状态为执行
                                a.N_B_STATE = 1;
                                a.S_B_STATE = "执行";
                                WMSHelper.UpdateTaskState(a);
                            }
                        }
                    }
                
                });
 
            }
        }
    }
}