xiaojiao
4 天以前 5ce21dbcd0849adc3afcf28fffc8933ce717c380
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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<Dt_MaterialInfo, IDt_MaterialInfoRepository>, 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;
        }
        /// <summary>
        /// 新增组盘信息
        /// </summary>
        /// <param name="containerbindingDTO"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task<WebResponseContent>  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;
            }
 
        }
    }
}