diff --git a/ZR.Admin.WebApi/Controllers/Business/CamWorkerController.cs b/ZR.Admin.WebApi/Controllers/Business/CamWorkerController.cs new file mode 100644 index 0000000..47e22a0 --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/Business/CamWorkerController.cs @@ -0,0 +1,100 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Model.Business.Dto; +using ZR.Model.Business; +using ZR.Service.Business.IBusinessService; + +//创建时间:2025-08-18 +namespace ZR.Admin.WebApi.Controllers.Business +{ + /// + /// 工作人员记录 + /// + [Route("business/CamWorker")] + public class CamWorkerController : BaseController + { + /// + /// 工作人员记录接口 + /// + private readonly ICamWorkerService _CamWorkerService; + + public CamWorkerController(ICamWorkerService CamWorkerService) + { + _CamWorkerService = CamWorkerService; + } + + /// + /// 查询工作人员记录列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "camworker:list")] + public IActionResult QueryCamWorker([FromQuery] CamWorkerQueryDto parm) + { + var response = _CamWorkerService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询工作人员记录详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "camworker:query")] + public IActionResult GetCamWorker(long Id) + { + var response = _CamWorkerService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加工作人员记录 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "camworker:add")] + [Log(Title = "工作人员记录", BusinessType = BusinessType.INSERT)] + public IActionResult AddCamWorker([FromBody] CamWorkerDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _CamWorkerService.AddCamWorker(modal); + + return SUCCESS(response); + } + + /// + /// 更新工作人员记录 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "camworker:edit")] + [Log(Title = "工作人员记录", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateCamWorker([FromBody] CamWorkerDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _CamWorkerService.UpdateCamWorker(modal); + + return ToResponse(response); + } + + /// + /// 删除工作人员记录 + /// + /// + [HttpPost("delete/{ids}")] + [ActionPermissionFilter(Permission = "camworker:delete")] + [Log(Title = "工作人员记录", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteCamWorker([FromRoute]string ids) + { + var idArr = Tools.SplitAndConvert(ids); + + return ToResponse(_CamWorkerService.Delete(idArr)); + } + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/Controllers/Business/CamWorkrecordController.cs b/ZR.Admin.WebApi/Controllers/Business/CamWorkrecordController.cs new file mode 100644 index 0000000..165e25a --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/Business/CamWorkrecordController.cs @@ -0,0 +1,100 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Model.Business.Dto; +using ZR.Model.Business; +using ZR.Service.Business.IBusinessService; + +//创建时间:2025-08-18 +namespace ZR.Admin.WebApi.Controllers.Business +{ + /// + /// 工作记录 + /// + [Route("business/CamWorkrecord")] + public class CamWorkrecordController : BaseController + { + /// + /// 工作记录接口 + /// + private readonly ICamWorkrecordService _CamWorkrecordService; + + public CamWorkrecordController(ICamWorkrecordService CamWorkrecordService) + { + _CamWorkrecordService = CamWorkrecordService; + } + + /// + /// 查询工作记录列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "camworkrecord:list")] + public IActionResult QueryCamWorkrecord([FromQuery] CamWorkrecordQueryDto parm) + { + var response = _CamWorkrecordService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询工作记录详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "camworkrecord:query")] + public IActionResult GetCamWorkrecord(int Id) + { + var response = _CamWorkrecordService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加工作记录 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "camworkrecord:add")] + [Log(Title = "工作记录", BusinessType = BusinessType.INSERT)] + public IActionResult AddCamWorkrecord([FromBody] CamWorkrecordDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _CamWorkrecordService.AddCamWorkrecord(modal); + + return SUCCESS(response); + } + + /// + /// 更新工作记录 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "camworkrecord:edit")] + [Log(Title = "工作记录", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateCamWorkrecord([FromBody] CamWorkrecordDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _CamWorkrecordService.UpdateCamWorkrecord(modal); + + return ToResponse(response); + } + + /// + /// 删除工作记录 + /// + /// + [HttpPost("delete/{ids}")] + [ActionPermissionFilter(Permission = "camworkrecord:delete")] + [Log(Title = "工作记录", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteCamWorkrecord([FromRoute]string ids) + { + var idArr = Tools.SplitAndConvert(ids); + + return ToResponse(_CamWorkrecordService.Delete(idArr, "删除工作记录")); + } + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs index 479ed7d..8c79cb6 100644 --- a/ZR.Admin.WebApi/Controllers/CommonController.cs +++ b/ZR.Admin.WebApi/Controllers/CommonController.cs @@ -5,10 +5,15 @@ using Microsoft.Extensions.Options; using MiniExcelLibs; using ZR.Infrastructure.IPTools; +using ZR.Model.Business.Dto; +using ZR.Model.Business; using ZR.Model.Dto; using ZR.Model.System; using ZR.ServiceCore.Resources; +using ZR.Service.Business.IBusinessService; +using ZR.Service.Business; +using System.Threading.Tasks; namespace ZR.Admin.WebApi.Controllers { @@ -28,6 +33,15 @@ namespace ZR.Admin.WebApi.Controllers public readonly ISysDeptService _deptService; public readonly ISysDictDataService sysDictDataService; /// + /// 工作记录接口 + /// + private readonly ICamWorkrecordService _CamWorkrecordService; + + /// + /// 工作人员记录接口 + /// + private readonly ICamWorkerService _CamWorkerService; + /// /// CommonController 构造函数 /// /// @@ -41,7 +55,9 @@ namespace ZR.Admin.WebApi.Controllers IWebHostEnvironment webHostEnvironment, ISysFileService fileService, ISysDeptService deptService, - ISysDictDataService sysDictDataService) + ISysDictDataService sysDictDataService, + ICamWorkrecordService _CamWorkrecordService, + ICamWorkerService camWorkerService) { WebHostEnvironment = webHostEnvironment; SysFileService = fileService; @@ -49,6 +65,8 @@ namespace ZR.Admin.WebApi.Controllers _localizer = stringLocalizer; _deptService = deptService; this.sysDictDataService = sysDictDataService; + this._CamWorkrecordService = _CamWorkrecordService; + _CamWorkerService = camWorkerService; } /// @@ -228,5 +246,43 @@ namespace ZR.Admin.WebApi.Controllers return SUCCESS(new { logo = file?.AccessUrl ?? "", deptList, construction = list }); } + + /// + /// 添加工作记录 + /// + /// + [HttpPost] + [Route("/addworkrecord")] + public async Task AddCamWorkRecord([FromBody] CamRecordWorkDto parm) + { + if (parm.Workers == null || parm.Workers.Count == 0) + { + return ToResponse(ResultCode.PARAM_ERROR, "请选择工作人员"); + } + if (string.IsNullOrEmpty(parm.Image)) + { + return ToResponse(ResultCode.PARAM_ERROR, "请上传图片"); + } + var modal = parm.Adapt().ToCreate(HttpContext); + modal.CreateTime = DateTime.Now; + modal.UpdateTime = DateTime.Now; + modal = await _CamWorkrecordService.Insertable(modal).ExecuteReturnEntityAsync(); + var response = _CamWorkrecordService.AddCamWorkrecord(modal); + var workid = response.Id; + var workers = new List(); + foreach (var item in parm.Workers) + { + var worker = new CamWorker() + { + WorkrecordId = workid, + WorkerName = item, + CreateTime = DateTime.Now, + UpdateTime = DateTime.Now + }; + workers.Add(worker); + } + _CamWorkerService.AsInsertable(workers).ExecuteCommand(); + return SUCCESS(response); + } } } diff --git a/ZR.Model/Business/CamWorker.cs b/ZR.Model/Business/CamWorker.cs new file mode 100644 index 0000000..f94b58d --- /dev/null +++ b/ZR.Model/Business/CamWorker.cs @@ -0,0 +1,37 @@ + +namespace ZR.Model.Business +{ + /// + /// 工作人员记录 + /// + [SugarTable("cam_worker")] + public class CamWorker + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long Id { get; set; } + + /// + /// 施工记录Id + /// + public int WorkrecordId { get; set; } + + /// + /// 人员 + /// + public string WorkerName { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 更新时间 + /// + public DateTime? UpdateTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Model/Business/CamWorkrecord.cs b/ZR.Model/Business/CamWorkrecord.cs new file mode 100644 index 0000000..eda2b91 --- /dev/null +++ b/ZR.Model/Business/CamWorkrecord.cs @@ -0,0 +1,72 @@ + +namespace ZR.Model.Business +{ + /// + /// 工作记录 + /// + [SugarTable("cam_workrecord")] + public class CamWorkrecord + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 部门名称 + /// + public string DeptName { get; set; } + + /// + /// 图片 + /// + public string ImageUrl { get; set; } + + /// + /// 拍照时间 + /// + public DateTime? RecordTime { get; set; } + + /// + /// 经度 + /// + public string Longitude { get; set; } + + /// + /// 纬度 + /// + public string Latitude { get; set; } + + /// + /// 拍照地址 + /// + public string Address { get; set; } + + /// + /// 工作内容 + /// + public string Content { get; set; } + + /// + /// 状态 + /// + public string StatusName { get; set; } + + /// + /// 备注 + /// + public string Remarks { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 更新时间 + /// + public DateTime? UpdateTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Model/Business/Dto/CamWorkerDto.cs b/ZR.Model/Business/Dto/CamWorkerDto.cs new file mode 100644 index 0000000..31cde2c --- /dev/null +++ b/ZR.Model/Business/Dto/CamWorkerDto.cs @@ -0,0 +1,32 @@ + +namespace ZR.Model.Business.Dto +{ + /// + /// 工作人员记录查询对象 + /// + public class CamWorkerQueryDto : PagerInfo + { + } + + /// + /// 工作人员记录输入输出对象 + /// + public class CamWorkerDto + { + [Required(ErrorMessage = "主键不能为空")] + public long Id { get; set; } + + [Required(ErrorMessage = "施工记录Id不能为空")] + public int WorkrecordId { get; set; } + + [Required(ErrorMessage = "人员不能为空")] + public string WorkerName { get; set; } + + public DateTime? CreateTime { get; set; } + + public DateTime? UpdateTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/ZR.Model/Business/Dto/CamWorkrecordDto.cs b/ZR.Model/Business/Dto/CamWorkrecordDto.cs new file mode 100644 index 0000000..fefca1c --- /dev/null +++ b/ZR.Model/Business/Dto/CamWorkrecordDto.cs @@ -0,0 +1,106 @@ + +namespace ZR.Model.Business.Dto +{ + /// + /// 工作记录查询对象 + /// + public class CamWorkrecordQueryDto : PagerInfo + { + public string DeptName { get; set; } + public string Address { get; set; } + public string Content { get; set; } + public string StatusName { get; set; } + } + + /// + /// 工作记录输入输出对象 + /// + public class CamWorkrecordDto + { + [Required(ErrorMessage = "主键不能为空")] + public int Id { get; set; } + + public string DeptName { get; set; } + + public string ImageUrl { get; set; } + + public DateTime? RecordTime { get; set; } + + public string Longitude { get; set; } + + public string Latitude { get; set; } + + public string Address { get; set; } + + public string Content { get; set; } + + public string StatusName { get; set; } + + public string Remarks { get; set; } + + public DateTime? CreateTime { get; set; } + + public DateTime? UpdateTime { get; set; } + + + + [ExcelColumn(Name = "状态")] + public string StatusNameLabel { get; set; } + } + + /// + /// + /// + public class CamRecordWorkDto + { + /// + /// 部门名称 + /// + public string DeptName { get; set; } + + /// + /// 图片地址 + /// + public string Image { get; set; } + + /// + /// 工作记录时间 + /// + public DateTime? RecordTime { get; set; } + + /// + /// 经度 + /// + public string Longitude { get; set; } + + /// + /// 纬度 + /// + public string Latitude { get; set; } + + /// + /// 工作地点 + /// + public string Address { get; set; } + + /// + /// 工作内容 + /// + public string Content { get; set; } + + /// + /// 状态 + /// + public string StatusName { get; set; } + + /// + ///备注 + /// + public string Remarks { get; set; } + + /// + /// + /// + public List Workers { get; set; } + } +} \ No newline at end of file diff --git a/ZR.Service/Business/CamWorkerService.cs b/ZR.Service/Business/CamWorkerService.cs new file mode 100644 index 0000000..faf010e --- /dev/null +++ b/ZR.Service/Business/CamWorkerService.cs @@ -0,0 +1,80 @@ +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using ZR.Model.Business.Dto; +using ZR.Model.Business; +using ZR.Repository; +using ZR.Service.Business.IBusinessService; + +namespace ZR.Service.Business +{ + /// + /// 工作人员记录Service业务层处理 + /// + [AppService(ServiceType = typeof(ICamWorkerService), ServiceLifetime = LifeTime.Transient)] + public class CamWorkerService : BaseService, ICamWorkerService + { + /// + /// 查询工作人员记录列表 + /// + /// + /// + public PagedInfo GetList(CamWorkerQueryDto parm) + { + var predicate = QueryExp(parm); + + var response = Queryable() + //.OrderBy("Id desc") + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public CamWorker GetInfo(long Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加工作人员记录 + /// + /// + /// + public CamWorker AddCamWorker(CamWorker model) + { + return Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改工作人员记录 + /// + /// + /// + public int UpdateCamWorker(CamWorker model) + { + return Update(model, true); + } + + /// + /// 查询导出表达式 + /// + /// + /// + private static Expressionable QueryExp(CamWorkerQueryDto parm) + { + var predicate = Expressionable.Create(); + + return predicate; + } + } +} \ No newline at end of file diff --git a/ZR.Service/Business/CamWorkrecordService.cs b/ZR.Service/Business/CamWorkrecordService.cs new file mode 100644 index 0000000..f0e26ca --- /dev/null +++ b/ZR.Service/Business/CamWorkrecordService.cs @@ -0,0 +1,84 @@ +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using ZR.Model.Business.Dto; +using ZR.Model.Business; +using ZR.Repository; +using ZR.Service.Business.IBusinessService; + +namespace ZR.Service.Business +{ + /// + /// 工作记录Service业务层处理 + /// + [AppService(ServiceType = typeof(ICamWorkrecordService), ServiceLifetime = LifeTime.Transient)] + public class CamWorkrecordService : BaseService, ICamWorkrecordService + { + /// + /// 查询工作记录列表 + /// + /// + /// + public PagedInfo GetList(CamWorkrecordQueryDto parm) + { + var predicate = QueryExp(parm); + + var response = Queryable() + //.OrderBy("Id desc") + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public CamWorkrecord GetInfo(int Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加工作记录 + /// + /// + /// + public CamWorkrecord AddCamWorkrecord(CamWorkrecord model) + { + return Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改工作记录 + /// + /// + /// + public int UpdateCamWorkrecord(CamWorkrecord model) + { + return Update(model, true, "修改工作记录"); + } + + /// + /// 查询导出表达式 + /// + /// + /// + private static Expressionable QueryExp(CamWorkrecordQueryDto parm) + { + var predicate = Expressionable.Create(); + + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.DeptName), it => it.DeptName == parm.DeptName); + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Address), it => it.Address.Contains(parm.Address)); + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Content), it => it.Content.Contains(parm.Content)); + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.StatusName), it => it.StatusName == parm.StatusName); + return predicate; + } + } +} \ No newline at end of file diff --git a/ZR.Service/Business/IBusinessService/ICamWorkerService.cs b/ZR.Service/Business/IBusinessService/ICamWorkerService.cs new file mode 100644 index 0000000..8bb97ed --- /dev/null +++ b/ZR.Service/Business/IBusinessService/ICamWorkerService.cs @@ -0,0 +1,21 @@ +using ZR.Model.Business.Dto; +using ZR.Model.Business; + +namespace ZR.Service.Business.IBusinessService +{ + /// + /// 工作人员记录service接口 + /// + public interface ICamWorkerService : IBaseService + { + PagedInfo GetList(CamWorkerQueryDto parm); + + CamWorker GetInfo(long Id); + + + CamWorker AddCamWorker(CamWorker parm); + int UpdateCamWorker(CamWorker parm); + + + } +} diff --git a/ZR.Service/Business/IBusinessService/ICamWorkrecordService.cs b/ZR.Service/Business/IBusinessService/ICamWorkrecordService.cs new file mode 100644 index 0000000..96d33ac --- /dev/null +++ b/ZR.Service/Business/IBusinessService/ICamWorkrecordService.cs @@ -0,0 +1,21 @@ +using ZR.Model.Business.Dto; +using ZR.Model.Business; + +namespace ZR.Service.Business.IBusinessService +{ + /// + /// 工作记录service接口 + /// + public interface ICamWorkrecordService : IBaseService + { + PagedInfo GetList(CamWorkrecordQueryDto parm); + + CamWorkrecord GetInfo(int Id); + + + CamWorkrecord AddCamWorkrecord(CamWorkrecord parm); + int UpdateCamWorkrecord(CamWorkrecord parm); + + + } +}