Browse Source

自动校秤优化

1693994901 1 month ago
parent
commit
d4907cab05
1 changed files with 55 additions and 20 deletions
  1. 55 20
      wms.service/Service/CPService.cs

+ 55 - 20
wms.service/Service/CPService.cs

@@ -1,6 +1,7 @@
 using AutoMapper;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using NPOI.SS.Formula.Functions;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -5482,39 +5483,73 @@ namespace wms.service.Service
             var sysconfig = _sysconfigrepository.GetFirst(p => p.Code == "AutomaticCalibration");
             var config = _sysconfigrepository.GetFirst(p => p.Code == "AutomaticCalibration").SContent;
 
+            var isContinue = false;
             if (sysconfig != null && !string.IsNullOrEmpty(sysconfig.Default3))
             {
-                hour = Convert.ToInt16(sysconfig.Default3);
-            }
+                if (sysconfig.Default3.Contains(","))
+                {
+                    var nums = sysconfig.Default3.Split(",");
+                    for (int i = 0; i < nums.Length; i++)
+                    {
+                        hour = Convert.ToInt16(nums[i]);
+                        if (!ShouldTriggerScaleTask(config, hour))
+                        {
+                            continue;
+                        }
 
-            if (!ShouldTriggerScaleTask(config, hour))
-            {
-                result.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
-                result.ResMsg = "不在可执行范围内";
-                return result;
+                        //检查今天早上十点-十点五十九之间是否执行过
+                        DateTime now1 = DateTime.Now;
+                        // 当天 10:00 开始
+                        DateTime startTime1 = new DateTime(now1.Year, now1.Month, now1.Day, hour, 0, 0);
+                        // 当天 10:59 结束
+                        DateTime endTime1 = new DateTime(now1.Year, now1.Month, now1.Day, hour, 59, 59);
+                        if (_wcstaskold.AsQueryable().Where(p => p.AddTime >= startTime1 && p.AddTime < endTime1 && p.BusType.Contains("砝码")).SplitTable(p => p.Take(2)).Any())
+                        {
+                            continue;
+                        }
+                        isContinue = true;
+                        break;
+                    }
+                }
+                else
+                {
+                    hour = Convert.ToInt16(sysconfig.Default3);
+                    if (!ShouldTriggerScaleTask(config, hour))
+                    {
+                        result.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
+                        result.ResMsg = "不在可执行范围内";
+                        return result;
+                    }
+                    //检查今天早上十点-十点五十九之间是否执行过
+                    DateTime now = DateTime.Now;
+                    // 当天 10:00 开始
+                    DateTime startTime = new DateTime(now.Year, now.Month, now.Day, hour, 0, 0);
+                    // 当天 10:59 结束
+                    DateTime endTime = new DateTime(now.Year, now.Month, now.Day, hour, 59, 59);
+                    if (_wcstaskold.AsQueryable().Where(p => p.AddTime >= startTime && p.AddTime < endTime && p.BusType.Contains("砝码")).SplitTable(p => p.Take(2)).Any())
+                    {
+                        result.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
+                        result.ResMsg = "本周期内已执行过";
+                        return result;
+                    }
+                    isContinue = true;
+                }               
             }
-
-
-            //检查今天早上十点-十点五十九之间是否执行过
-            DateTime now = DateTime.Now;
-            // 当天 10:00 开始
-            DateTime startTime = new DateTime(now.Year, now.Month, now.Day, hour, 0, 0);
-            // 当天 10:59 结束
-            DateTime endTime = new DateTime(now.Year, now.Month, now.Day, hour, 59, 59);
-            if (_wcstaskold.AsQueryable().Where(p => p.AddTime > startTime && p.AddTime < endTime && p.BusType.Contains("砝码")).SplitTable(p=>p.Take(2)).Any())
+                       
+            if (_wcstaskinfo.IsAny(p => p.AddrTo == deviceId && p.Status == TaskStatus.NewBuild))
             {
                 result.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
-                result.ResMsg = "本周期内已执行过";
+                result.ResMsg = deviceId + "存在未执行任务,请勿重复申请";
                 return result;
             }
 
-            if (_wcstaskinfo.IsAny(p => p.AddrTo == deviceId && p.Status == TaskStatus.NewBuild))
+
+            if (!isContinue)
             {
                 result.ResCode = ResponseStatusCodeEnum.EquipInfoNotExist.GetHashCode();
-                result.ResMsg = deviceId + "存在未执行任务,请勿重复申请";
+                result.ResMsg = "不满足出库条件";
                 return result;
             }
-
             var locationlist = from loc in _baseWarecellrepository.GetList(p => p.IsStop == 0 && p.StateNum == LocationState.LocationState_Full.GetHashCode())
                                join stock in _billnowrepository.GetList(p => p.InvStateCode == InvState.InvEcecState_In.ToString() && p.ExecStateCode == InvLockState.InvState_Normal.ToString())
                                on loc.ContGrpBarCode equals stock.ContGrpBarCode