获取出库任务.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using NPOI.SS.Formula.PTG;
  2. using PlcSiemens.Core.Extension;
  3. using ServiceCenter.Redis;
  4. using ServiceCenter.SqlSugars;
  5. using SqlSugar;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using WCS.Core;
  13. using WCS.Entity;
  14. using WCS.WorkEngineering.Worlds;
  15. namespace WCS.WorkEngineering.Systems
  16. {
  17. /// <summary>
  18. /// 获取出库任务
  19. /// </summary>
  20. [BelongTo(typeof(MainWorld))]
  21. [Description("获取出库任务")]
  22. [Order(order: OrderType.Before, typeof(堆垛机))]
  23. public class 获取出库任务 : DeviceSystem<EntityEx<Device>>
  24. {
  25. protected override bool ParallelDo => true;
  26. public override void Do(EntityEx<Device> obj)
  27. {
  28. SqlSugarHelper.Do(db =>
  29. {
  30. //每5fenzhong重置出库缓存位数量,防止异常导致数量不对影响出库效率
  31. if (DateTime.Now.Minute % 5== 0 && DateTime.Now.Second == 0)
  32. {
  33. var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(w => w.BusType == "装箱码垛"
  34. && w.Type == TaskType.OutDepot && w.Status > Entity.TaskStatus.NewBuild
  35. && w.Status < Entity.TaskStatus.码垛缓存放行
  36. && !SqlFunc.IsNullOrEmpty(w.AddrTo)
  37. ).ToList();
  38. tasks.GroupBy(g => g.AddrTo).Select(s => new { addTo = s.Key, cnt = s.Count() }).ForEach(task =>
  39. {
  40. if (!string.IsNullOrEmpty(task.addTo)&& MainWorld.Redis.Exists($"stockOperateNum{task.addTo}"))
  41. {
  42. MainWorld.Redis.Del($"stockOperateNum{task.addTo}");
  43. MainWorld.Redis.IncrBy($"stockOperateNum{task.addTo}", task.cnt);
  44. }
  45. });
  46. }
  47. var srmStockTasks = db.Default.SqlQueryable<V_TaskOut>("select * from V_TaskOut").ToList();
  48. if (srmStockTasks == null || !srmStockTasks.Any())
  49. return;
  50. MainWorld.Redis.Del("StockTasks");
  51. srmStockTasks.ForEach(item =>
  52. {
  53. MainWorld.Redis.HSet("StockTasks", item.SRM, item);
  54. });
  55. });
  56. }
  57. public override bool Select(Device dev)
  58. {
  59. return dev.Code == "SXOut";
  60. }
  61. }
  62. }