工序功能,台账功能

This commit is contained in:
yanghongwei 2024-05-26 00:58:35 +08:00
parent e6f9e36568
commit 6990b921fa
10 changed files with 601 additions and 2 deletions

View File

@ -120,6 +120,63 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:langguanApi.Controllers.LedgerController">
<summary>
台账相关接口
</summary>
</member>
<member name="M:langguanApi.Controllers.LedgerController.list(langguanApi.Model.reqpage)">
<summary>
Get all ledgers
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.LedgerController.Export(System.DateTime,System.DateTime)">
<summary>
Export all ledgers
</summary>
<param name="start"></param>
<param name="end"></param>
<returns></returns>
</member>
<member name="T:langguanApi.Controllers.OrganizedController">
<summary>
组织的工序
</summary>
</member>
<member name="M:langguanApi.Controllers.OrganizedController.Add(langguanApi.Model.OrganizedDto)">
<summary>
添加组织工序
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.OrganizedController.Remove(System.Collections.Generic.IEnumerable{System.String})">
<summary>
删除工序
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.OrganizedController.Update(langguanApi.Model.OrganizedUpdateDto)">
<summary>
更新工序信息
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.OrganizedController.ListAndDevice(System.Int32)">
<summary>
获取组织工序和设备信息
</summary>
<returns></returns>
</member>
<member name="M:langguanApi.Controllers.OrganizedController.List(System.Int32)">
<summary>
获取组织工序信息
</summary>
<returns></returns>
</member>
<member name="T:langguanApi.Controllers.TransportController"> <member name="T:langguanApi.Controllers.TransportController">
<summary> <summary>
清洁运输 清洁运输
@ -470,6 +527,11 @@
设备信息 设备信息
</summary> </summary>
</member> </member>
<member name="P:langguanApi.Model.Device.OrgId">
<summary>
所属组织ID
</summary>
</member>
<member name="T:langguanApi.Model.Dto.HJ212_2017"> <member name="T:langguanApi.Model.Dto.HJ212_2017">
<summary> <summary>
HJ212_2017 HJ212_2017
@ -544,6 +606,61 @@
id id
</summary> </summary>
</member> </member>
<member name="T:langguanApi.Model.Entity.Ledger">
<summary>
台账
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Ledger.InTime">
<summary>
进场日期
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Ledger.OutTime">
<summary>
出场日期
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Ledger.CarModel">
<summary>
车型
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Ledger.NewCar">
<summary>
是否是新能源车
</summary>
</member>
<member name="P:langguanApi.Model.Entity.Ledger.Emissions">
<summary>
国几排放量
</summary>
</member>
<member name="P:langguanApi.Model.Entity.LedgerDTO.InTime">
<summary>
进场日期
</summary>
</member>
<member name="P:langguanApi.Model.Entity.LedgerDTO.OutTime">
<summary>
出场日期
</summary>
</member>
<member name="P:langguanApi.Model.Entity.LedgerDTO.CarModel">
<summary>
车型
</summary>
</member>
<member name="P:langguanApi.Model.Entity.LedgerDTO.NewCar">
<summary>
是否是新能源车
</summary>
</member>
<member name="P:langguanApi.Model.Entity.LedgerDTO.Emissions">
<summary>
国几排放量
</summary>
</member>
<member name="T:langguanApi.Model.Entity.UserEntity"> <member name="T:langguanApi.Model.Entity.UserEntity">
<summary> <summary>
用户实体 用户实体
@ -748,7 +865,7 @@
</member> </member>
<member name="P:langguanApi.Model.Organized.Name"> <member name="P:langguanApi.Model.Organized.Name">
<summary> <summary>
名称 工序名称
</summary> </summary>
</member> </member>
<member name="P:langguanApi.Model.Organized.OrganizedType"> <member name="P:langguanApi.Model.Organized.OrganizedType">
@ -761,6 +878,31 @@
排序 大在前,小在后 排序 大在前,小在后
</summary> </summary>
</member> </member>
<member name="P:langguanApi.Model.OrganizedDto.Name">
<summary>
名称
</summary>
</member>
<member name="P:langguanApi.Model.OrganizedDto.OrganizedType">
<summary>
1,有组织2无组织
</summary>
</member>
<member name="P:langguanApi.Model.OrganizedDto.Order">
<summary>
排序 大在前,小在后
</summary>
</member>
<member name="P:langguanApi.Model.OrganizedUpdateDto.Id">
<summary>
工序id
</summary>
</member>
<member name="P:langguanApi.Model.OrganizedByDeviceDto.Items">
<summary>
设备列表
</summary>
</member>
<member name="T:langguanApi.Model.PackageFlag"> <member name="T:langguanApi.Model.PackageFlag">
<summary> <summary>
拆分包及应答标志 拆分包及应答标志
@ -1159,6 +1301,13 @@
<param name="ids"></param> <param name="ids"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.DeviceService.GetDeviceByOrgids(System.Collections.Generic.IEnumerable{System.String})">
<summary>
通过orgid获取设备信息
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.DeviceService.GetPage(langguanApi.Model.reqpage)"> <member name="M:langguanApi.Service.DeviceService.GetPage(langguanApi.Model.reqpage)">
<summary> <summary>
分页取数据 分页取数据
@ -1298,6 +1447,68 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:langguanApi.Service.LedgerService.AddLedger(langguanApi.Model.Entity.LedgerDTO)">
<summary>
新增数据
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.LedgerService.Export(System.DateTime,System.DateTime)">
<summary>
导出数据
</summary>
<param name="start"></param>
<param name="end"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.LedgerService.GetPage(langguanApi.Model.reqpage)">
<summary>
分页取数据
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="T:langguanApi.Service.OrganizedService">
<summary>
OrganizedService
</summary>
</member>
<member name="M:langguanApi.Service.OrganizedService.Add(langguanApi.Model.OrganizedDto)">
<summary>
Add 工序
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.OrganizedService.Update(langguanApi.Model.OrganizedUpdateDto)">
<summary>
Update
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.OrganizedService.Delete(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Delete
</summary>
<param name="ids"></param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.OrganizedService.ListAndDevice(System.Int32)">
<summary>
ListAndDevice
</summary>
<param name="OrganizedType">1,有组织2无组织</param>
<returns></returns>
</member>
<member name="M:langguanApi.Service.OrganizedService.List(System.Int32)">
<summary>
List
</summary>
<param name="OrganizedType">1,有组织2无组织</param>
<returns></returns>
</member>
<member name="T:langguanApi.Service.PingService"> <member name="T:langguanApi.Service.PingService">
<summary> <summary>
ping service ping service

View File

@ -0,0 +1,44 @@
using langguanApi.Model;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
namespace langguanApi.Controllers
{
/// <summary>
/// 台账相关接口
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class LedgerController : ControllerBase
{
private readonly LedgerService _ledgerService;
public LedgerController(LedgerService ledgerService)
{
_ledgerService = ledgerService;
}
/// <summary>
/// Get all ledgers
/// </summary>
/// <returns></returns>
[HttpGet("list")]
public async Task<IActionResult> list([FromQuery]reqpage input)
{
var result = await _ledgerService.GetPage(input);
return Ok(result);
}
/// <summary>
/// Export all ledgers
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
[HttpGet("export")]
public async Task<IActionResult> Export(DateTime start, DateTime end)
{
var result = await _ledgerService.Export(start, end);
return File(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "台账.xlsx");
}
}
}

View File

@ -0,0 +1,75 @@
using langguanApi.Model;
using langguanApi.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace langguanApi.Controllers
{
/// <summary>
/// 组织的工序
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class OrganizedController : ControllerBase
{
private readonly OrganizedService _organizedService;
public OrganizedController(OrganizedService organizedService)
{
_organizedService = organizedService;
}
/// <summary>
/// 添加组织工序
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("add")]
public async Task<IActionResult> Add(OrganizedDto input)
{
var result = await _organizedService.Add(input);
return Ok(result);
}
/// <summary>
/// 删除工序
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpDelete("remove")]
public async Task<IActionResult> Remove(IEnumerable<string> ids)
{
var result = await _organizedService.Delete(ids);
return Ok(result);
}
/// <summary>
/// 更新工序信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPut("update")]
public async Task<IActionResult> Update(OrganizedUpdateDto input)
{
var result = await _organizedService.Update(input);
return Ok(result);
}
/// <summary>
/// 获取组织工序和设备信息
/// </summary>
/// <returns></returns>
[HttpGet("listanddevice")]
public async Task<IActionResult> ListAndDevice(int OrganizedType = 1)
{
var result = await _organizedService.ListAndDevice(OrganizedType);
return Ok(result);
}
/// <summary>
/// 获取组织工序信息
/// </summary>
/// <returns></returns>
[HttpGet("list")]
public async Task<IActionResult> List(int OrganizedType = 1)
{
var result = await _organizedService.List(OrganizedType);
return Ok(result);
}
}
}

View File

@ -13,5 +13,9 @@
public string desricption { get; set; } public string desricption { get; set; }
public int state { get; set; } public int state { get; set; }
public string NickName { get; set; } public string NickName { get; set; }
/// <summary>
/// 所属组织ID
/// </summary>
public string OrgId { get; set; }
} }
} }

View File

@ -0,0 +1,54 @@
namespace langguanApi.Model.Entity
{
/// <summary>
/// 台账
/// </summary>
public class Ledger : BaseModel
{
public string CarNum { get; set; }
/// <summary>
/// 进场日期
/// </summary>
public DateTime InTime { get; set; }
/// <summary>
/// 出场日期
/// </summary>
public DateTime OutTime { get; set; }
/// <summary>
/// 车型
/// </summary>
public string CarModel { get; set; }
/// <summary>
/// 是否是新能源车
/// </summary>
public bool NewCar { get; set; }
/// <summary>
/// 国几排放量
/// </summary>
public string Emissions { get; set; }
}
public class LedgerDTO
{
public string CarNum { get; set; }
/// <summary>
/// 进场日期
/// </summary>
public DateTime InTime { get; set; }
/// <summary>
/// 出场日期
/// </summary>
public DateTime OutTime { get; set; }
/// <summary>
/// 车型
/// </summary>
public string CarModel { get; set; }
/// <summary>
/// 是否是新能源车
/// </summary>
public bool NewCar { get; set; }
/// <summary>
/// 国几排放量
/// </summary>
public string Emissions { get; set; }
}
}

View File

@ -6,7 +6,7 @@
public class Organized : BaseModel public class Organized : BaseModel
{ {
/// <summary> /// <summary>
/// 名称 /// 工序名称
/// </summary> /// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary> /// <summary>
@ -18,4 +18,33 @@
/// </summary> /// </summary>
public int Order { get; set; } public int Order { get; set; }
} }
public class OrganizedDto
{
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 1,有组织2无组织
/// </summary>
public int OrganizedType { get; set; } = 1;
/// <summary>
/// 排序 大在前,小在后
/// </summary>
public int Order { get; set; }
}
public class OrganizedUpdateDto : OrganizedDto
{
/// <summary>
/// 工序id
/// </summary>
public string Id { get; set; }
}
public class OrganizedByDeviceDto: Organized
{
/// <summary>
/// 设备列表
/// </summary>
public List<Device>Items { get; set; }
}
} }

View File

@ -80,6 +80,19 @@ namespace langguanApi.Service
return (await base.GetListWithExp(exp)).FirstOrDefault(); return (await base.GetListWithExp(exp)).FirstOrDefault();
} }
/// <summary>
/// 通过orgid获取设备信息
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task<List<Device>> GetDeviceByOrgids(IEnumerable<string> ids)
{
Expression<Func<Device, bool>> exp = filter => ids.Contains(filter.OrgId) && filter.IsDelete == false;
var list = (await base.GetListWithExp(exp)).ToList();
return list;
}
/// <summary> /// <summary>
/// 分页取数据 /// 分页取数据

View File

@ -0,0 +1,71 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using langguanApi.Model.Entity;
using Mapster;
using MathNet.Numerics.Distributions;
using Npoi.Mapper;
using Org.BouncyCastle.Asn1.IsisMtt.X509;
using System.Linq.Expressions;
namespace langguanApi.Service
{
[ServiceInjection(InjectionType.Transient)]
/// <summary>
/// Ledger service
/// </summary>
public class LedgerService : BaseService<Ledger>
{
public LedgerService(IConfiguration config) : base(config, nameof(Ledger))
{
}
/// <summary>
/// 新增数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task AddLedger(LedgerDTO input)
{
var enity = input.Adapt<Ledger>();
await base.CreateAsync(enity);
}
/// <summary>
/// 导出数据
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
public async Task<byte[]> Export(DateTime start, DateTime end)
{
Expression<Func<Ledger, bool>> exp = filter =>
filter.CreateDateTime >= start && filter.CreateDateTime <= end && filter.IsDelete == false;
var list = await base.GetListWithExp(exp);
var mapper = new Mapper();
mapper.Map<Ledger>("进场时间", s => s.InTime)
.Map<Ledger>("车牌号", s => s.CarNum)
.Map<Ledger>("车型", s => s.CarModel)
.Map<Ledger>("新能源", s => s.NewCar ? "是" : "否")
.Map<Ledger>("燃油车", s => s.Emissions)
.Map<Ledger>("出厂日间 ", s => s.OutTime)
.Format<Ledger>("yyyy-MM-dd HH:mm:ss", s => s.InTime)
.Format<Ledger>("yyyy-MM-dd HH:mm:ss", s => s.OutTime);
MemoryStream stream = new MemoryStream();
mapper.Save(stream, list.ToList(), sheetName: "sheet1", leaveOpen: true);
return stream.ToArray();
}
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetPage(reqpage input)
{
Expression<Func<Ledger, bool>> exp = filter => filter.IsDelete == false;
return await base.GetPager(new ReqPaing()
{
pageSize = input.pageSize,
current = input.current
}, exp);
}
}
}

View File

@ -0,0 +1,97 @@
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using Mapster;
using System.Linq.Expressions;
namespace langguanApi.Service
{
/// <summary>
/// OrganizedService
/// </summary>
[ServiceInjection(InjectionType.Transient)]
public class OrganizedService : BaseService<Organized>
{
private readonly DeviceService _deviceService;
public OrganizedService(IConfiguration config, DeviceService device) : base(config, nameof(Organized))
{
_deviceService = device;
}
/// <summary>
/// Add 工序
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ApiResult> Add(OrganizedDto input)
{
var entity = input.Adapt<Organized>();
await CreateAsync(entity);
return new ApiResult() { code = 0 };
}
/// <summary>
/// Update
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ApiResult> Update(OrganizedUpdateDto input)
{
var entity = input.Adapt<Organized>();
await UpdateAsync(input.Id, entity);
return new ApiResult() { code = 0 };
}
/// <summary>
/// Delete
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public async Task<ApiResult> Delete(IEnumerable<string> ids)
{
if (ids.Any())
{
foreach (var id in ids)
{
await RemoveAsync(id);
}
}
else
{
return new ApiResult() { code = 1, msg = "请选择要删除的记录" };
}
return new ApiResult() { code = 0 };
}
/// <summary>
/// ListAndDevice
/// </summary>
/// <param name="OrganizedType">1,有组织2无组织</param>
/// <returns></returns>
public async Task<ApiResult> ListAndDevice(int OrganizedType = 1)
{
Expression<Func<Organized, bool>> exp = filter => filter.OrganizedType == OrganizedType && filter.IsDelete == false;
var result = (await base.GetListWithExp(exp)).OrderByDescending(x => x.Order).ToList();
List<OrganizedByDeviceDto> list = new List<OrganizedByDeviceDto>();
var devices = await _deviceService.GetDeviceByOrgids(result.Select(s => s.Id));
foreach (var item in result)
{
list.Add(new OrganizedByDeviceDto
{
Items = devices.Where(s => s.OrgId == item.Id).ToList(),
Order = item.Order,
Name = item.Name,
OrganizedType = item.OrganizedType,
Id = item.Id
});
}
return new ApiResult() { code = 0, data = list };
}
/// <summary>
/// List
/// </summary>
/// <param name="OrganizedType">1,有组织2无组织</param>
/// <returns></returns>
public async Task<ApiResult> List(int OrganizedType = 1)
{
Expression<Func<Organized, bool>> exp = filter => filter.OrganizedType == OrganizedType && filter.IsDelete == false;
var result = (await base.GetListWithExp(exp)).OrderByDescending(x => x.Order).ToList();
return new ApiResult() { code = 0, data = result };
}
}
}

View File

@ -21,6 +21,7 @@
<PackageReference Include="MongoDB.Bson" Version="2.23.1" /> <PackageReference Include="MongoDB.Bson" Version="2.23.1" />
<PackageReference Include="MongoDB.Driver" Version="2.23.1" /> <PackageReference Include="MongoDB.Driver" Version="2.23.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Npoi.Mapper" Version="6.2.1" />
<PackageReference Include="StackExchange.Redis" Version="2.7.33" /> <PackageReference Include="StackExchange.Redis" Version="2.7.33" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup> </ItemGroup>