From b7da1f32d5d9997378b5ac535593a3f6144af46b Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 15 十月 2025 17:15:38 +0800
Subject: [PATCH] 新增AGV与堆垛机移库判断及缓存优化
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs | 122 +++++++++++++++++++++++++++++++++-------
1 files changed, 101 insertions(+), 21 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs"
index 621a3ec..186f3da 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs"
@@ -1,10 +1,22 @@
-锘縰sing System;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
using WIDESEA_IRepository;
using WIDESEA_IServices;
using WIDESEA_Model.Models;
@@ -14,37 +26,105 @@
public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService
{
private readonly IUnitOfWorkManage _unitOfWorkManage;
- public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+ private readonly ICacheService _cacheService;
+ public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
{
_unitOfWorkManage = unitOfWorkManage;
+ _cacheService = cacheService;
}
- public object GetVueDictionary(string[] dicNos)
+ //public object GetVueDictionary(string[] dicNos)
+ //{
+ // if (dicNos == null || dicNos.Count() == 0) return new string[] { };
+
+ // var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+ // {
+ // dicNo = s.DicNo,
+ // config = s.Config,
+ // dbSql = s.DBSql,
+ // list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+ // }).ToList();
+
+ // object GetSourceData(string dicNo, string dbSql, object data)
+ // {
+ // if (string.IsNullOrEmpty(dbSql))
+ // {
+ // return data as object;
+ // }
+ // return BaseDal.QueryObjectDataBySql(dbSql, null);
+ // }
+ // return dicConfig.Select(item => new
+ // {
+ // item.dicNo,
+ // item.config,
+ // data = GetSourceData(item.dicNo, item.dbSql, item.list)
+ // }).ToList();
+ //}
+
+ public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos)
{
- if (dicNos == null || dicNos.Count() == 0) return new string[] { };
+ if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>();
+ List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>();
- var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+ List<string> cacheDicNos = new List<string>();
+ foreach (string n in dicNos)
{
- dicNo = s.DicNo,
- config = s.Config,
- dbSql = s.DBSql,
- list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
- }).ToList();
-
- object GetSourceData(string dicNo, string dbSql, object data)
- {
- if (string.IsNullOrEmpty(dbSql))
+ string? str = _cacheService.Get(n);
+ if (!string.IsNullOrEmpty(str))
{
- return data as object;
+ VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+ if (vueDictionary != null)
+ {
+ vueDictionaryDTOs.Add(vueDictionary);
+ cacheDicNos.Add(n);
+ }
}
- return BaseDal.QueryObjectDataBySql(dbSql, null);
}
- return dicConfig.Select(item => new
+ if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
{
- item.dicNo,
- item.config,
- data = GetSourceData(item.dicNo, item.dbSql, item.list)
- }).ToList();
+ List<string> list = dicNos.Where(x => !cacheDicNos.Contains(x)).ToList();
+ List<Sys_Dictionary> dictionaries = BaseDal.GetDictionaries(list).ToList();
+
+ List<VueDictionaryDTO> selectDics = dictionaries.Select(s => new VueDictionaryDTO
+ {
+ DicNo = s.DicNo,
+ Config = s.Config,
+ //dbSql = s.Sql,
+ Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+ }).ToList();
+
+ foreach (var v in dictionaries)
+ {
+ if (!string.IsNullOrEmpty(v.DBSql))
+ {
+ VueDictionaryDTO? temp = selectDics.FirstOrDefault(x => x.DicNo == v.DicNo);
+ if (temp != null)
+ selectDics.Remove(temp);
+ selectDics.Add(new VueDictionaryDTO
+ {
+ Config = v.Config,
+ DicNo = v.DicNo,
+ Data = BaseDal.QueryDynamicDataBySql(v.DBSql),
+ SaveCache = false,
+ });
+ }
+ }
+
+ foreach (var item in selectDics)
+ {
+ if (!_cacheService.Exists(item.DicNo) && item.SaveCache)
+ {
+ _cacheService.Add(item.DicNo, item.Serialize());
+ }
+ }
+ vueDictionaryDTOs.AddRange(selectDics);
+ }
+
+ return vueDictionaryDTOs;
}
+
+
+
}
}
--
Gitblit v1.9.3