lss
2025-05-30 38eff4fc0100131b180ffa872009b502629743f5
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using HH.WCS.JingyuNongfu.wms;
using Newtonsoft.Json;
 
namespace HH.WCS.JingyuNongfu.process
{
    /// <summary>
    /// 流程通用代码
    /// </summary>
    internal class ProcessHelper
    {
        /// <summary>
        /// 瓶盖机满托下线设置物料信息和托盘状态
        /// </summary>
        /// <param name="workOrder"></param>
        /// <param name="start"></param>
        internal static bool SetTrayInfoFull(WorkOrder workOrder, Container cntr, bool isPg = false)
        {
            //托盘信息已存在,将托盘物料表更新
            //设置容器用途
 
            var dest = workOrder.S_LinkLineNO.Trim();
            if (workOrder.S_Area != null && workOrder.S_Area.Trim() == "v8")
            {
                dest = "v8";
                //Console.WriteLine(workOrder.SQL_Area);
            }
            //if (workOrder.S_Out != null && workOrder.S_Out.Trim() == "Y") {
            //    dest = "外调";
            //    //Console.WriteLine(workOrder.SQL_Out);
            //}
            cntr.S_DEST = dest;
            cntr.S_SRC = workOrder.S_PLineNo.Trim();
            var num = workOrder.S_PCNumber;
            if (isPg && cntr.S_TYPE == "塑料托盘")
            {
                num = workOrder.S_PCNumber1;
            }
            Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}来源{cntr.S_SRC}");
            Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}目的地{cntr.S_DEST}");
            //itemcode 要改成itemname
            return ContainerHelper.BindCntrItem(cntr, workOrder.S_ItemName, $"{DateTime.Now.ToString("yyMMdd")}{workOrder.S_PLineNo.Trim()}", num, workOrder.S_WorkNo);
 
        }
 
        internal static bool SetTrayInfoZone(Container cntr, string start, string end)
        {
            //托盘信息已存在,将托盘物料表更新
            //设置容器用途
 
           
            cntr.S_DEST = end;
            cntr.S_SRC = start;
     
            Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}来源{cntr.S_SRC}");
            Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}目的地{cntr.S_DEST}");
            LogHelper.Info($"绑定容器:{cntr.S_CNTR_CODE}绑定目的地:{cntr.S_DEST}", "托盘绑定");
 
            //itemcode 要改成itemname
            return ContainerHelper.BindCntr(cntr);
 
        }
 
 
       
 
        private static List<FreeLineInfo> freeLineInfos = new List<FreeLineInfo>();
        internal static freeLineBit GetFreeLineBit(string area, int row, int col)
        {
 
            if (freeLineInfos.Count == 0)
            {
                freeLineInfos = LocationHelper.GetAllFreeLineInfo();
            }
 
            var size = freeLineInfos.Count;
            Console.WriteLine($"freeLineInfos.Count:{size}");
            var res = freeLineInfos.Where(a => a.S_AREA_CODE == area && a.N_ROW == row && col >= a.S_START_COL && col <= a.S_END_COL).FirstOrDefault();
            LogHelper.Info("自由线段信息:" + JsonConvert.SerializeObject(res), "HosttoagvTask");
            if (res != null)
            {
                return new freeLineBit { S_AREA_CODE = area, N_ROW = row, S_START_COL = res.S_START_COL, S_END_COL = res.S_END_COL, S_First_Bit = res.S_First_Bit, S_Second_Bit = res.S_Second_Bit, S_Three_Bit = res.S_Three_Bit };
            }
            return null;
        }
        public class freeLineBit
        {
            public string S_AREA_CODE { get; set; }
            public int N_ROW { get; set; }
            public int S_START_COL { get; set; }
            public int S_END_COL { get; set; }
            public int S_First_Bit { get; set; }
            public int S_Second_Bit { get; set; }
            public int S_Three_Bit { get; set; }
        }
    }
}