using System; using SqlSugar; using Infrastructure.Attribute; using Infrastructure.Extensions; using ZR.Model; using ZR.Repository; using System.Linq; using ZR.Model.MES.dev; using ZR.Model.MES.dev.Dto; using ZR.Service.MES.dev.IService; namespace ZR.Service.MES.dev { /// /// 报修单Service业务层处理 /// [AppService(ServiceType = typeof(IDeviceRepairService), ServiceLifetime = LifeTime.Transient)] public class DeviceRepairService : BaseService, IDeviceRepairService { /// /// 查询报修单列表 /// /// /// public PagedInfo GetList(DeviceRepairQueryDto parm) { var predicate = Expressionable.Create() .AndIF(!string.IsNullOrEmpty(parm.RepairOrder), dr => dr.RepairOrder.Contains(parm.RepairOrder)) .AndIF(!string.IsNullOrEmpty(parm.RepairPeron), dr => dr.RepairPeron.Contains(parm.RepairPeron)) .AndIF(!string.IsNullOrEmpty(parm.Phone), dr => dr.Phone.Contains(parm.Phone)) .AndIF(parm.FkDeviceId > 0, dr => dr.FkDeviceId == parm.FkDeviceId) .AndIF(!string.IsNullOrEmpty(parm.Type), dr => dr.Type == parm.Type) .AndIF(parm.Status > -1, dr => dr.Status == parm.Status) .AndIF(parm.TimeRange != null && (parm.TimeRange[0] > new DateTime(1990, 1, 1)), dr => dr.CreatedTime >= parm.TimeRange[0]) .AndIF(parm.TimeRange != null && (parm.TimeRange[1] > new DateTime(1990, 1, 1)), dr => dr.CreatedTime <= parm.TimeRange[1]) ; var response = Queryable() .LeftJoin((dr, da) => dr.FkDeviceId == da.Id) .Where(predicate.ToExpression()) .Select() .ToPage(parm); //.ToPage(parm); return response; } /// /// 获取详情 /// /// /// public DeviceRepair GetInfo(string Id) { var response = Queryable() .Where(x => x.Id == Id) .First(); return response; } /// /// 添加报修单 /// /// /// public DeviceRepair AddDeviceRepair(DeviceRepair model) { model.Id = SnowFlakeSingle.Instance.NextId().ToString(); model.RepairOrder = GetNextRepairNo(); model.Status = 1; return Context.Insertable(model).ExecuteReturnEntity(); } /// /// 生成维修单编号 /// /// public string GetNextRepairNo() { string split = "-"; string titleStr = "MR"; string timeStr = DateTime.Now.ToString("yyyyMMdd"); var predicate = Expressionable.Create() .And(it => it.RepairOrder.Contains(timeStr)); var lastDeviceRepair = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(it => it.Id) .First(); if (lastDeviceRepair != null && lastDeviceRepair.RepairOrder != null) { if (int.TryParse(lastDeviceRepair.RepairOrder.Split(split)[2], out int lastNum)) { return titleStr + split + timeStr + split + (lastNum + 1).ToString("000"); } else { return titleStr + split + timeStr + split + "001"; } } else { return titleStr + split + timeStr + split + "001"; } } /// /// 修改报修单 /// /// /// public int UpdateDeviceRepair(DeviceRepair model) { //var response = Update(w => w.Id == model.Id, it => new DeviceRepair() //{ // RepairOrder = model.RepairOrder, // Type = model.Type, // RepairPeron = model.RepairPeron, // Phone = model.Phone, // FaultDescription = model.FaultDescription, // File = model.File, // Status = model.Status, // CreatedBy = model.CreatedBy, // CreatedTime = model.CreatedTime, // UpdatedBy = model.UpdatedBy, // UpdatedTime = model.UpdatedTime, //}); //return response; return Update(model, true); } } }