111
yanjinhui
2025-03-26 da2e87c2a05debbcc7dac5efb5d13c92d533782f
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using WIDESEA_ISerialPortRepository;
using WIDESEA_SerialPortRepository;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.HttpContextUser;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
 
namespace WIDESEAWCS_TaskInfoService
{
    public class PutakeServer : ServiceBase<Dt_Putake, IPutakeRepository>, IPutakeServer
    {
        private IUnitOfWorkManage _uniUnitOfWorkManage;
        private INjTaskRepository _iNjTaskRepository;
        
 
        public PutakeServer(IPutakeRepository BaseDal, IUnitOfWorkManage uniUnitOfWorkManage, INjTaskRepository iNjTaskRepository ) : base(BaseDal)
        {
            _uniUnitOfWorkManage = uniUnitOfWorkManage;//数据库事务
            _iNjTaskRepository= iNjTaskRepository;
          
            
        }
        public override PageGridData<Dt_Putake> GetPageData(PageDataOptions options)
        {
            OrderByParameters = new Dictionary<string, SqlSugar.OrderByType>
            {
                   { nameof(Dt_Putake.Pustatus),SqlSugar.OrderByType.Asc },
                  // { nameof(Dt_Putake.CreateDate),SqlSugar.OrderByType.Asc }//按状态和创建时间升序排序
            };
            return base.GetPageData(options);
        }
 
        private enum cond
        {
            待领筒=0,
            待作业=1,
            待归筒=2,
            待质检=3,
            已完成=4
        }
 
 
        //修改下发任务表的任务状态
        public WebResponseContent ChangeStatus(string id,string gruops)
        {
            try
            {
                var putakeList = BaseDal.QueryData(i => i.Grouptype == gruops && i.Pustatus != (int)cond.已完成).ToList();
                var putake = putakeList.Where(i => i.Njtakeid == id).FirstOrDefault();
                var nj = _iNjTaskRepository.QueryData(i => i.NJtaskID == id).FirstOrDefault();
                if (putake == null)
                {
                    return new WebResponseContent { Status = false, Message = "未找到该任务" };
                }
 
                //把数据库中的 int 值转换为 `cond` 枚举:
                if (!Enum.IsDefined(typeof(cond), putake.Pustatus))
                {
                    return new WebResponseContent { Status = false, Message = "当前状态不合法,无法更新" };
                }
 
                cond currentStatus = (cond)putake.Pustatus;  // int -> 枚举转换
 
                switch (currentStatus)
                {
                    
                    case cond.待领筒: //
                        if(putakeList.Where(a=>a.Pustatus== (int)cond.待作业).Count() > 0)
                        {
                            return new WebResponseContent { Status = false, Message = "当前有作业未完成,请先完成正在执行的作业" };
                        }
                        putake.Pustatus = (int)cond.待作业; // 枚举转 int
                        if (gruops=="机械")
                        {
 
                        }
                        if (gruops == "电气")
                        {
 
                        }
                        if (gruops == "地沟")
                        {
 
                        }
                        break;
                    case cond.待作业://开始作业,开始时间
                        putake.Pustatus = (int)cond.待归筒;
                        if (gruops == "机械")
                        {
                            nj.startTime_LC = DateTime.Now;//开始时间
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "电气")
                        {
                            nj!.startTime_DQ = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "地沟")
                        {
                            nj!.startTime_DG = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        break;
                    case cond.待归筒://确认归还,完成时间
                        putake.Pustatus = (int)cond.待质检;
                        if (gruops == "机械")
                        {
                            nj.endTime_LC = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "电气")
                        {
                            nj.endTime_DQ = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "地沟")
                        {
                            nj.endTime_DG = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        break;
                    case cond.待质检: // 完成质检时间
                        putake.Pustatus = (int)cond.已完成;
 
                        //DateTime latestTime = new DateTime(1900, 1, 1, 0, 0, 0);
 
                        if (gruops == "机械")
                        {
                            nj!.confirmTime_LC = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "电气")
                        {
                            nj!.confirmTime_DQ = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
                        if (gruops == "地沟")
                        {
                            nj!.confirmTime_DG = DateTime.Now;
                            nj.createTime = DateTime.Now;
                        }
 
                        // 获取最后一次完成的时间
                        // latestTime = (DateTime)new[] { nj.confirmTime_LC, nj.confirmTime_DQ, nj.confirmTime_DG }.Max(); // 取最新的时间
 
                        DateTime? latestTime = new[] { nj.confirmTime_LC, nj.confirmTime_DQ, nj.confirmTime_DG }
                                .Where(t => t.HasValue)  // 过滤掉 null
                                .Select(t => t.Value)    // 取出非空的值
                                .DefaultIfEmpty(DateTime.Now) // 若数组为空,使用当前时间
                                .Max();  // 取最大时间
                        nj.endTime = latestTime; // 赋值最新时间
                        putake.Finishedtime = DateTime.Now;
                        break;
                    case cond.已完成:
                        return new WebResponseContent { Status = false, Message = "当前状态已是最终状态,无法再更新" };
                    default:
                        return new WebResponseContent { Status = false, Message = "未知状态,无法更新" };
                }
 
 
                _iNjTaskRepository.UpdateData(nj);
                BaseDal.UpdateData(putake);
 
                return new WebResponseContent { Status = true, Data = putake };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = "更新失败:" + ex.Message };
            }
        }
 
        //根据条件(组)展示下发任务表
        public WebResponseContent ShowPutake(string group)
        {
            try
            {
                var dg = BaseDal.QueryData(i=>i.Grouptype== group);
 
                return new WebResponseContent { Status = true, Data = dg };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = $"查看失败:{ex}" };
            }
        }
 
        //查看这个下发任务的中任务表中的详情数据(和njtaskServe中一样)
        public WebResponseContent GetNjtake(string njid)
        {
            try
            {
                var Nj = _iNjTaskRepository.QueryData(i => i.NJtaskID == njid).FirstOrDefault();
 
                if (Nj != null)
                {
                    
                    return new WebResponseContent { Status = true, Data = Nj };
                }
                else {
                    return new WebResponseContent { Status = false,Message="没有找到" };
                }
 
 
                
            }
            catch (Exception ex)
            {
 
             
                return new WebResponseContent { Status = false, Message = "更新失败:" + ex.Message };
            }
        }
 
 
      
 
    }
}