/*
|
*所有关于Dt_materielinfo类的业务代码应在此处编写
|
*可使用repository.调用常用方法,获取EF/Dapper等信息
|
*如果需要事务请使用repository.DbContextBeginTransaction
|
*也可使用DBServerProvider.手动获取数据库相关信息
|
*用户信息、权限、角色等使用UserContext.Current操作
|
*Dt_materielinfoService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
|
*/
|
using WIDESEA.Core.BaseProvider;
|
using WIDESEA.Core.Extensions.AutofacManager;
|
using WIDESEA.Entity.DomainModels;
|
using System.Linq;
|
using WIDESEA.Core.Utilities;
|
using System.Linq.Expressions;
|
using WIDESEA.Core.Extensions;
|
using Microsoft.EntityFrameworkCore;
|
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.AspNetCore.Http;
|
using WIDESEA.Services.IRepositories;
|
using System;
|
using WIDESEA.Core.ManageUser;
|
using WIDESEA.Core.Enums;
|
using WIDESEA.Core.Services;
|
using System.Threading.Tasks;
|
using Newtonsoft.Json;
|
using System.Collections.Generic;
|
using Microsoft.Extensions.Caching.Memory;
|
using WIDESEA.Services.Repositories;
|
using WIDESEA_Common.LogEnum;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA.Common.SubType;
|
|
namespace WIDESEA.Services.Services
|
{
|
public partial class dt_rulerService
|
{
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
private readonly Idt_rulerRepository _repository;//访问数据库
|
|
[ActivatorUtilitiesConstructor]
|
public dt_rulerService(
|
Idt_rulerRepository dbRepository,
|
IHttpContextAccessor httpContextAccessor
|
)
|
: base(dbRepository)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
_repository = dbRepository;
|
//多租户会用到这init代码,其他情况可以不用
|
//base.Init(dbRepository);
|
}
|
|
public override WebResponseContent Add(SaveModel saveDataModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string trainType = saveDataModel.MainData["ruler_trainType"].ToString();
|
string madeUnit = saveDataModel.MainData["ruler_madeUnit"].ToString();
|
string standard = saveDataModel.MainData["ruler_standard"].ToString();
|
string type = saveDataModel.MainData["ruler_type"].ToString();
|
string charstr = saveDataModel.MainData["ruler_char"].ToString();
|
string length = saveDataModel.MainData["ruler_length"].ToString();
|
string style = saveDataModel.MainData["ruler_style"].ToString();
|
|
if (charstr.Length != 1) throw new Exception("分割类型字符长度仅限1个");
|
|
if (!length.Contains("|")) throw new Exception("截取类型格式异常,应为*|*");
|
|
if (repository.Exists(x => x.ruler_trainType == trainType && x.ruler_madeUnit == madeUnit && x.ruler_standard == standard))
|
{
|
throw new Exception($"已存在{trainType}车型、{madeUnit}厂家,{standard}新旧类型的规则,无需添加");
|
}
|
|
|
dt_ruler ruler1 = new dt_ruler
|
{
|
ruler_name = "",
|
ruler_trainType = trainType,
|
ruler_char = charstr,
|
ruler_length = length,
|
ruler_style = style,
|
ruler_type = type,
|
ruler_madeUnit = madeUnit,
|
ruler_standard = standard,
|
ruler_create = UserContext.Current.UserName,
|
ruler_createTime = DateTime.Now,
|
|
};
|
repository.Add(ruler1, true);
|
return content.OK("添加成功");
|
|
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
|
public override WebResponseContent Update(SaveModel saveDataModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
int keyID = Convert.ToInt32(saveDataModel.MainData["ruler_id"]);
|
string trainType = saveDataModel.MainData["ruler_trainType"].ToString();
|
string madeUnit = saveDataModel.MainData["ruler_madeUnit"].ToString();
|
string standard = saveDataModel.MainData["ruler_standard"].ToString();
|
string type = saveDataModel.MainData["ruler_type"].ToString();
|
string charstr = saveDataModel.MainData["ruler_char"].ToString();
|
string length = saveDataModel.MainData["ruler_length"].ToString();
|
string style = saveDataModel.MainData["ruler_style"].ToString();
|
|
//if (repository.Exists(x => x.ruler_trainType == trainType && x.ruler_madeUnit == madeUnit && x.ruler_standard == standard))
|
//{
|
// throw new Exception($"已存在{trainType}车型、{madeUnit}厂家,{standard}新旧类型的规则,禁止修改!");
|
//}
|
|
dt_ruler ruler = repository.FindFirst(x => x.ruler_id == keyID);
|
ruler.ruler_trainType = trainType;
|
ruler.ruler_madeUnit = madeUnit;
|
ruler.ruler_standard = standard;
|
ruler.ruler_type = type;
|
ruler.ruler_char = charstr;
|
ruler.ruler_length = length;
|
ruler.ruler_style = style;
|
ruler.ruler_name = "";
|
ruler.ruler_create = UserContext.Current.UserName;
|
ruler.ruler_createTime = DateTime.Now;
|
|
repository.Update(ruler, true);
|
|
return content.OK("修改成功");
|
}
|
catch (Exception ex)
|
{
|
|
return content.Error(ex.Message);
|
}
|
}
|
|
|
public WebResponseContent GetDateTimeByRule(string trainType, string madeUnit, string standard, string zcCode)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string subDate = string.Empty;
|
dt_ruler ruler = repository.FindFirst(x => x.ruler_trainType == trainType && x.ruler_madeUnit == madeUnit && x.ruler_standard == standard);
|
if (null == ruler)
|
{
|
content.Code = "404";
|
return content.Error("未匹配到规则");
|
}
|
|
if (ruler.ruler_type == SubType.Split.ToString()) //分割类型
|
{
|
subDate = zcCode.Split(ruler.ruler_char)[0];
|
}
|
else if (ruler.ruler_type == SubType.Sub.ToString()) //截取类型
|
{
|
int subStart = Convert.ToInt32(ruler.ruler_length.Split('|')[0]);
|
int subEnd = Convert.ToInt32(ruler.ruler_length.Split('|')[1]);
|
|
string dateValue = zcCode.Substring(subStart, subEnd);
|
//DateTime.Parse(datetime);
|
subDate = GetDateByRulerStyle(ruler, dateValue);
|
}
|
|
return content.OK(data: subDate);
|
}
|
catch (Exception ex)
|
{
|
return content.Error($"{ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 根据规则截取日期和日期格式后 整合成新日期
|
/// </summary>
|
/// <param name="ruler"></param>
|
/// <returns></returns>
|
private string GetDateByRulerStyle(dt_ruler ruler, string dateValue)
|
{
|
string NewDate = string.Empty;
|
switch (ruler.ruler_style)
|
{
|
case "MMyy":
|
NewDate = "20" + dateValue.Substring(2, 2) + "-" + dateValue.Substring(0, 2) + "-01"; break;
|
case "yyyyMMDD":
|
NewDate = dateValue.Substring(0, 4) + "-" + dateValue.Substring(4, 2) + "-" + dateValue.Substring(6, 2); break;
|
case "yy-MM":
|
NewDate = "20" + dateValue.Split("-")[0] + "-" + dateValue.Split("-")[1] + "-01"; break;
|
case "MM/yy":
|
NewDate = "20" + dateValue.Split("/")[1] + "-" + dateValue.Split("/")[0] + "-01"; break;
|
case "DDMMyy":
|
NewDate = "20" + dateValue.Substring(4, 2) + "-" + dateValue.Substring(2, 2) + "-" + dateValue.Substring(0, 2); break;
|
case "yyMM":
|
NewDate = "20" + dateValue.Substring(0, 2) + "-" + dateValue.Substring(2, 2) + "-01"; break;
|
case "yyyy-MM":
|
NewDate = dateValue.Split("-")[0] + "-" + dateValue.Split("-")[1] + "-01"; break;
|
case "MM-yy":
|
NewDate = "20" + dateValue.Split("-")[1] + "-" + dateValue.Split("-")[0] + "-01"; break;
|
default:
|
NewDate = "";
|
break;
|
}
|
return NewDate;
|
|
|
//if (ruler.ruler_style == "MMyy")
|
// return NewDate = "20" + dateValue.Substring(2, 2) + "-" + dateValue.Substring(0, 2) + "-01";
|
|
//if (ruler.ruler_style == "yyyyMMDD")
|
// return NewDate = dateValue.Substring(0, 4) + "-" + dateValue.Substring(4, 2) + "-" + dateValue.Substring(6, 2);
|
|
|
|
}
|
|
}
|
}
|