using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_DTO.PDA; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_BasicInfoService { public class Dt_MaterialInfoService : ServiceBase, IDt_MaterialInfoService { private readonly IDt_ContainerInfoRepository _ContainerInfoRepository; private readonly IUnitOfWorkManage _unitOfWorkManage; public Dt_MaterialInfoService(IDt_MaterialInfoRepository BaseDal, IDt_ContainerInfoRepository dt_ContainerInfoRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _ContainerInfoRepository = dt_ContainerInfoRepository; _unitOfWorkManage = unitOfWorkManage; } /// /// 新增组盘信息 /// /// /// /// public async Task ContainerbindingAsync([FromBody] ContainerbindingDTO containerbindingDTO) { WebResponseContent content = new WebResponseContent(); try { _unitOfWorkManage.BeginTran(); Dt_MaterialInfo dt_MaterialInfo = await BaseDal.QueryFirstAsync(x => x.ContainerCode == containerbindingDTO.VehicleNumber); if (dt_MaterialInfo != null) return content.Error("当前容器已绑定 请勿重复提交"); dt_MaterialInfo = await BaseDal.QueryFirstAsync(x => x.MaterialName == containerbindingDTO.materSn); if (dt_MaterialInfo != null) return content.Error("当前零件号已存在 请勿重复提交"); dt_MaterialInfo = new Dt_MaterialInfo(); dt_MaterialInfo.MaterialName = containerbindingDTO.materSn; dt_MaterialInfo.ContainerCode = containerbindingDTO.VehicleNumber; dt_MaterialInfo.Position = containerbindingDTO.Position; dt_MaterialInfo.Carmodel = containerbindingDTO.Carmodel; string s = App.User.UserName; await BaseDal.AddDataAsync(dt_MaterialInfo); // 2. 执行一定会报错的代码:除以零 //int a = 1; //int b = 0; //int result = a / b; // 这里会抛出 DivideByZeroException Dt_ContainerInfo containerInfo = await _ContainerInfoRepository.QueryFirstAsync(x => x.ContainerCode == containerbindingDTO.VehicleNumber); if (containerInfo == null) { containerInfo = new Dt_ContainerInfo(); containerInfo.RequestId = Guid.NewGuid().ToString().Replace("-", ""); containerInfo.ContainerCode = containerbindingDTO.VehicleNumber; await _ContainerInfoRepository.AddDataAsync(containerInfo); } _unitOfWorkManage.CommitTran(); return content.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content.Error(ex.Message); throw; } } } }