/*
*所有关于Dt_mes_goods_info类的业务代码应在此处编写
*可使用repository.调用常用方法,获取EF/Dapper等信息
*如果需要事务请使用repository.DbContextBeginTransaction
*也可使用DBServerProvider.手动获取数据库相关信息
*用户信息、权限、角色等使用UserContext.Current操作
*Dt_mes_goods_infoService对增、删、改查、导入、导出、审核业务代码扩展参照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 System.Security.Cryptography;
using System.Text;
using WIDESEA.Services.Repositories;
using WIDESEA.Core.ManageUser;
using Microsoft.Extensions.Caching.Memory;
using HttpContext = WIDESEA.Core.Utilities.HttpContext;
using Microsoft.Extensions.Logging;
using WIDESEA.Core.Services;
using WIDESEA.Common;
using WIDESEA.Services.Services.ToMes;
namespace WIDESEA.Services.Services
{
public partial class Dt_mes_goods_infoService
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IDt_mes_goods_infoRepository _repository;//访问数据库
[ActivatorUtilitiesConstructor]
public Dt_mes_goods_infoService(
IDt_mes_goods_infoRepository dbRepository,
IHttpContextAccessor httpContextAccessor
)
: base(dbRepository)
{
_httpContextAccessor = httpContextAccessor;
_repository = dbRepository;
//多租户会用到这init代码,其他情况可以不用
//base.Init(dbRepository);
}
///
/// 添加一条轴承信息记录
///
///
///
public static WebResponseContent AddGoodsInformation(SaveModel saveModel)
{
WebResponseContent content = new WebResponseContent();
try
{
string code = saveModel.MainData["inUnit"].ToString();
//getInfoByBearingXMLEntity xmlEntity = ToMesService.Mes_GetBearingInfo(code);
//if (null != xmlEntity)
//{
// if ("S".Equal(xmlEntity.FLAG))
// {
// Dt_mes_goods_info mesInfo = Dt_mes_goods_infoRepository.Instance.FindFirst(x => x.mesInfo_number == code);
// if (null != mesInfo)
// throw new Exception("已经录入过以上信息,请检查相关信息." + code);
// Dt_container_detail detail = Dt_container_detailRepository.Instance.FindFirst(r => r.containerdtl_number == code);
// if (null != detail)
// throw new Exception("条码已存在库内,请检查相关信息." + code);
// Dt_materielinfo materiel = Dt_materielinfoRepository.Instance.FindFirst(r => r.materiel_id == xmlEntity.TRAINTYPE);
// if (null == materiel)
// throw new Exception("当前车型未在车型管理进行维护,请先维护." + xmlEntity.TRAINTYPE);
// mesInfo = new Dt_mes_goods_info()
// {
// mesInfo_carType = xmlEntity.TRAINTYPE,
// mesInfo_createDate = DateTime.Now,
// mesInfo_createType = "mes",
// mesInfo_inUnit = "智粤",
// mesInfo_id = Guid.NewGuid(),
// mesInfo_madeDate = DateTime.Now,
// mesInfo_madeUnit = xmlEntity.MANUFACTOR,
// mesInfo_number = code,
// mesInfo_qrCode = xmlEntity.BEARING,
// mesInfo_standard = (xmlEntity.MAINFREQ.Equal("0") || xmlEntity.MAINFREQ.Equal("R0")) ? "新品" : "旧品",
// mesInfo_weight = ""
// };
// }
// else
// throw new Exception($"获取{code}轴承信息失败.{xmlEntity.ERROR}");
//}
//else
// throw new Exception($"获取{code}轴承信息失败.");
string inUnit = "广州南";
string madeUnit = "中国中车";
string carType = code.Split(" ")[0];
string type = code.Split(" ")[1];
string madeDate = "2023-05-07";
string _number = "123456789";
string standard = "新品";
string addType = "Scan";
string sourceStr = inUnit + madeUnit + carType + type + madeDate + _number + standard;
//暂时用MD5加密来替代唯一码的生成
string uniCodeQr = MD5Encrypt64(sourceStr);
uniCodeQr = uniCodeQr.Substring(0, 4);
Dt_mes_goods_info tmpInfo = Dt_mes_goods_infoRepository.Instance.FindFirst(x => x.mesInfo_qrCode == uniCodeQr);
if (tmpInfo != null)
{
throw new Exception("已经录入过以上信息,请检查相关信息");
}
Dt_mes_goods_info info = new Dt_mes_goods_info();
info.mesInfo_id = Guid.NewGuid();
info.mesInfo_inUnit = inUnit;
info.mesInfo_madeUnit = madeUnit;
info.mesInfo_carType = carType;
info.mesInfo_type = type;
info.mesInfo_madeDate = DateTime.Parse(madeDate);
info.mesInfo_number = _number;
info.mesInfo_standard = standard;
info.mesInfo_createType = addType;
info.mesInfo_qrCode = uniCodeQr;
info.mesInfo_createDate = DateTime.Now;
Dt_mes_goods_infoRepository.Instance.Add(info, true);
content.OK("录入轴承信息成功");
}
catch (Exception ex)
{
content.Error("录入轴承信息失败:" + ex.Message);
}
Logger.AddLog(Core.Enums.LoggerType.Add, saveModel, content, content);
return content;
}
public override WebResponseContent Add(SaveModel saveDataModel)
{
string sourceStr =
saveDataModel.MainData["mesInfo_inUnit"].ToString() +
saveDataModel.MainData["mesInfo_madeUnit"].ToString() +
saveDataModel.MainData["mesInfo_carType"].ToString() +
saveDataModel.MainData["mesInfo_type"].ToString() +
saveDataModel.MainData["mesInfo_madeDate"].ToString() +
saveDataModel.MainData["mesInfo_number"].ToString() +
saveDataModel.MainData["mesInfo_standard"].ToString();
//暂时用MD5加密来替代唯一码的生成
string uniCodeQr = MD5Encrypt64(sourceStr);
uniCodeQr = uniCodeQr.Substring(0, 4);
Dt_general_info general_Info = Dt_general_infoRepository.Instance.FindFirst(x => true);
saveDataModel.MainData.Add("mesInfo_qrCode", uniCodeQr);
saveDataModel.MainData.Add("mesInfo_createType", general_Info.general_bak_1); //UserContext.Current.UserTrueName
saveDataModel.MainData.Add("mesInfo_createDate", DateTime.Now);
return base.Add(saveDataModel);
}
///
/// MD5加密,暂时用来模拟生成唯一码
///
///
///
public static string MD5Encrypt64(string str)
{
string cl = str;
MD5 md5 = MD5.Create();
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
return Convert.ToBase64String(s);
}
///
/// 打印生成的轴承唯一码
///
///
///
public static WebResponseContent PrintGoodsQrCode(SaveModel saveModel)
{
WebResponseContent content = new WebResponseContent();
try
{
string qrCode = saveModel.MainData["qrCode"].ToString();
//这里接打印动作
content.OK();
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
}
}