/* *所有关于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; } } }