222
schangxiang@126.com
2024-06-09 06a22e3d6d75e811affc35e12d00e8fd4259d869
iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs
@@ -22,8 +22,9 @@
    [Route("api/[Controller]")]
    public class EquipmentBaseInfoService : IEquipmentBaseInfoService, IDynamicApiController, ITransient
    {
        private readonly IRepository<EquipmentBaseInfo,MasterDbContextLocator> _equipmentBaseInfoRep;
      private readonly IRepository<V_GetEquipmentAlert, MasterDbContextLocator> _v_GetEquipmentAlertRep;
        private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
        private readonly IRepository<Equipmentbaseinfolog, MasterDbContextLocator> _equipmentbaseinfologRep;
        private readonly IRepository<V_GetEquipmentAlert, MasterDbContextLocator> _v_GetEquipmentAlertRep;
        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
        private readonly IRepository<EquipmentCurrentMonitor, MasterDbContextLocator> _equipmentCurrentMonitorRep;
@@ -37,13 +38,15 @@
        /// <param name="sysDictDataRep"></param>
        /// <param name="equipmentCurrentMonitorRep"></param>
        public EquipmentBaseInfoService(
            IRepository<EquipmentBaseInfo,MasterDbContextLocator> equipmentBaseInfoRep,
         IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
            IRepository<Equipmentbaseinfolog, MasterDbContextLocator> equipmentbaseinfologRep,
            IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
            IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
            IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
            IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
            IRepository<EquipmentCurrentMonitor, MasterDbContextLocator> equipmentCurrentMonitorRep
        )
        {
            _equipmentbaseinfologRep = equipmentbaseinfologRep;
            _equipmentBaseInfoRep = equipmentBaseInfoRep;
            _v_GetEquipmentAlertRep = v_GetEquipmentAlert;
            _sysDictTypeRep = sysDictTypeRep;
@@ -65,10 +68,10 @@
                                     .Where(!string.IsNullOrEmpty(input.EquipmentId), u => u.EquipmentId == input.EquipmentId)
                                     .Where(!string.IsNullOrEmpty(input.EquipmentName), u => EF.Functions.Like(u.EquipmentName, $"%{input.EquipmentName.Trim()}%"))
                                     .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure.Equals(input.WorkingProcedure))
                                     .Where(!string.IsNullOrEmpty(input.AlertType),u=> (input.AlertType.Equals("1")&& u.IsAlertDetergent)
                                     ||(input.AlertType.Equals("2") && u.IsAlertKnifeTool)
                                     ||(input.AlertType.Equals("3") && u.IsAlertCuttingFluid)
                                     ||(input.AlertType.Equals("4") && u.IsAlert))
                                     .Where(!string.IsNullOrEmpty(input.AlertType), u => (input.AlertType.Equals("1") && u.IsAlertDetergent)
                                     || (input.AlertType.Equals("2") && u.IsAlertKnifeTool)
                                     || (input.AlertType.Equals("3") && u.IsAlertCuttingFluid)
                                     || (input.AlertType.Equals("4") && u.IsAlert))
                                     .OrderBy(PageInputOrder.OrderBuilder<EquipmentAlertSearch>(input))
                                     .ProjectToType<EquipmentAlertInfoOutput>().ToListAsync();
            return equipmentAlertInfos;
@@ -106,7 +109,7 @@
                                         CuttingFluidChangeTime = s.CuttingFluidChangeTime,
                                         Remarks = s.Remarks,
                                         CreatedTime = s.CreatedTime,
                                         TactTime=s.TactTime,
                                         TactTime = s.TactTime,
                                     })
                                     .Distinct()
                                     .OrderBy(PageInputOrder.OrderBuilder<EquipmentBaseInfoSearch>(input))
@@ -114,7 +117,7 @@
                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
            return equipmentBaseInfos;
    }
        }
        /// <summary>
        /// 根据设备基础信息管理导出Excel
@@ -129,7 +132,7 @@
                                     .Where(!string.IsNullOrEmpty(input.EquipmentName), u => u.EquipmentName == input.EquipmentName)
                                     .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => EF.Functions.Like(u.WorkingProcedure, $"%{input.WorkingProcedure.Trim()}%"))
                                     .Where(!string.IsNullOrEmpty(input.EquipmentModel), u => EF.Functions.Like(u.EquipmentModel, $"%{input.EquipmentModel.Trim()}%"))
                                     .Select(s=>new EquipmentBaseInfoExcelOutput
                                     .Select(s => new EquipmentBaseInfoExcelOutput
                                     {
                                         Id = s.Id,
                                         EquipmentId = s.EquipmentId,
@@ -146,7 +149,7 @@
                                         CuttingFluidChangeTime = s.CuttingFluidChangeTime,
                                         CuttingFluidChangeAlertThreshold = s.CuttingFluidChangeAlertThreshold,
                                         CreatedTime = s.CreatedTime.ConvertToDateTime(),
                                         UpdatedTime= s.UpdatedTime.ConvertToDateTime(),
                                         UpdatedTime = s.UpdatedTime.ConvertToDateTime(),
                                         TactTime = s.TactTime,
                                     })
                                     .Distinct()
@@ -174,13 +177,26 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("add")]
        [UnitOfWork]
        public async Task Add(AddEquipmentBaseInfoInput input)
        {
            var isExist = await _equipmentBaseInfoRep.AnyAsync(u => u.EquipmentId == input.EquipmentId, false);
            if (isExist) throw Oops.Oh($"当前设备编号已存在,新增失败!");
            var equipmentBaseInfo = input.Adapt<EquipmentBaseInfo>();
            equipmentBaseInfo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
            await _equipmentBaseInfoRep.InsertAsync(equipmentBaseInfo);
            //新增维护日志
            var log = new Equipmentbaseinfolog()
            {
                EquipmentBaseInfoId = equipmentBaseInfo.Id,
                EquipmentID = equipmentBaseInfo.EquipmentId,
                OperatorType = EquipmentbaseinfoOperatorTypeEnum.新增设备,
                OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.新增设备).ToString(),
                OperatorContent = "新增设备:" + equipmentBaseInfo.EquipmentName,
            };
            await _equipmentbaseinfologRep.InsertAsync(log);
        }
        /// <summary>
@@ -191,11 +207,11 @@
        [HttpPost("delete")]
        public async Task Delete(DeleteEquipmentBaseInfoInput input)
        {
            string[] EquiArr = new string[] {"EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
            string[] EquiArr = new string[] { "EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
            var equipmentBaseInfo = await _equipmentBaseInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
            if(EquiArr.Contains(equipmentBaseInfo.EquipmentId)) throw Oops.Oh($"系统默认的设备不能进行删除!");
            if (EquiArr.Contains(equipmentBaseInfo.EquipmentId)) throw Oops.Oh($"系统默认的设备不能进行删除!");
            await _equipmentBaseInfoRep.DeleteAsync(equipmentBaseInfo);
        }
@@ -206,13 +222,14 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("selectDelete")]
        public async Task SelectDelete(List<EquipmentBaseInfoInput>  input)
        public async Task SelectDelete(List<EquipmentBaseInfoInput> input)
        {
            StringBuilder builder = new StringBuilder();
            string[] EquiArr = new string[] { "EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
            foreach (EquipmentBaseInfoInput item in input)
            {
                if (EquiArr.Contains(item.EquipmentId)) {
                if (EquiArr.Contains(item.EquipmentId))
                {
                    if (string.IsNullOrEmpty(builder.ToString()))
                    {
@@ -227,7 +244,7 @@
            if (!string.IsNullOrEmpty(builder.ToString()))
            {
                throw Oops.Oh($"系统默认的设备【"+builder.ToString()+"】不能进行删除!");
                throw Oops.Oh($"系统默认的设备【" + builder.ToString() + "】不能进行删除!");
            }
            foreach (var item in input)
@@ -243,13 +260,42 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("edit")]
        [UnitOfWork]
        public async Task Update(UpdateEquipmentBaseInfoInput input)
        {
            var isExist = await _equipmentBaseInfoRep.AnyAsync(u => u.Id == input.Id && u.EquipmentId == input.EquipmentId, false);
            if (!isExist) throw Oops.Oh($"设备编号不能进行变更,修改失败!");
            var isExistObj = await _equipmentBaseInfoRep.Where(u => u.Id == input.Id && u.EquipmentId == input.EquipmentId, false).FirstOrDefaultAsync();
            if (isExistObj == null) throw Oops.Oh($"设备编号不能进行变更,修改失败!");
            var equipmentBaseInfo = input.Adapt<EquipmentBaseInfo>();
            await _equipmentBaseInfoRep.UpdateAsync(equipmentBaseInfo,ignoreNullValues:false);
            await _equipmentBaseInfoRep.UpdateAsync(equipmentBaseInfo, ignoreNullValues: false);
            if (isExistObj.CuttingFluidChangeTime?.ToString("yyyy-MM-dd") != equipmentBaseInfo.CuttingFluidChangeTime?.ToString("yyyy-MM-dd"))
            {
                //新增维护日志
                var log = new Equipmentbaseinfolog()
                {
                    EquipmentBaseInfoId = equipmentBaseInfo.Id,
                    EquipmentID = equipmentBaseInfo.EquipmentId,
                    OperatorType = EquipmentbaseinfoOperatorTypeEnum.切削液更换,
                    OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.切削液更换).ToString(),
                    OperatorContent = "更换时间:" + equipmentBaseInfo.CuttingFluidChangeTime?.ToString("yyyy-MM-dd"),
                };
                await _equipmentbaseinfologRep.InsertAsync(log);
            }
            if (isExistObj.Detergentchangetime?.ToString("yyyy-MM-dd") != equipmentBaseInfo.Detergentchangetime?.ToString("yyyy-MM-dd"))
            {
                //新增维护日志
                var log = new Equipmentbaseinfolog()
                {
                    EquipmentBaseInfoId = equipmentBaseInfo.Id,
                    EquipmentID = equipmentBaseInfo.EquipmentId,
                    OperatorType = EquipmentbaseinfoOperatorTypeEnum.清洗液更换,
                    OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.清洗液更换).ToString(),
                    OperatorContent = "更换时间:" + equipmentBaseInfo.Detergentchangetime?.ToString("yyyy-MM-dd"),
                };
                await _equipmentbaseinfologRep.InsertAsync(log);
            }
        }
        /// <summary>
@@ -296,9 +342,9 @@
            KnifeToolnames.Add("EOP50");
            KnifeToolnames.Add("EOP60");
            var equipmentBaseInfos = await _equipmentBaseInfoRep.DetachedEntities
                    .Where(!string.IsNullOrEmpty(Type), u => (Type.ToUpper().Equals("QUALITY")?names.Contains(u.EquipmentId):false)||(Type.ToUpper().Equals("KNIFETOOL") ? KnifeToolnames.Contains(u.EquipmentId) : false))
                    .Where(!string.IsNullOrEmpty(Type), u => (Type.ToUpper().Equals("QUALITY") ? names.Contains(u.EquipmentId) : false) || (Type.ToUpper().Equals("KNIFETOOL") ? KnifeToolnames.Contains(u.EquipmentId) : false))
                                     .ProjectToType<EquipmentBaseInfoOutput>()
                                     .OrderBy(o=>o.EquipmentId)
                                     .OrderBy(o => o.EquipmentId)
                                     .ToListAsync();
            return equipmentBaseInfos;
        }