WYB
2021-03-22 91b8cdad021ab052e4991f3d41834a6f0ddc36b8
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
 
using JiepeiWMS.IServices;
using JiepeiWMS.Model.Models;
using JiepeiWMS.Services.BASE;
using JiepeiWMS.IRepository.Base;
using System.Threading.Tasks;
using JiepeiWMS.IRepository.UnitOfWork;
using JiepeiWMS.Common;
using JiepeiWMS.Common.HttpRestSharp;
using JiepeiWMS.Model.BllModels;
using System;
using JiepeiWMS.Extends;
using System.Linq;
 
namespace JiepeiWMS.Services
{
    public class WMSupplierServices : BaseServices<WMSupplier>, IWMSupplierServices
    {
        private readonly IBaseRepository<WMSupplier> _dal;
        private readonly IBaseRepository<WMSupplier_Type> _daltype;
        private readonly IUnitOfWork _DB;
        public WMSupplierServices(IBaseRepository<WMSupplier> dal, IBaseRepository<WMSupplier_Type> daltype, IUnitOfWork DB)
        {
            this._dal = dal;
            this._daltype = daltype;
            base.BaseDal = dal;
            _DB = DB;
 
        }
        /// <summary>
        /// 供应商添加
        /// </summary>
        /// <param name="Model"></param>
        /// <param name="UserId"></param>
        /// <returns></returns>
        public async Task<string> AddSupplierInfo(WMSupplier Model, int UserId)
        {
            _DB.BeginTran();
            try
            {
                if (Model == null)
                {
                    throw new Exception("模型为空,无法添加数据!");
                }
 
                //同步到OA系统
                var apioahost = Appsettings.app("AppSettings", "ApiOAHost");
                var result = HttpHelper.PostApi<ApiFinanceResult>(apioahost + "/api/Supplier/SaveOrUpdateSupplier", new
                {
                    appsecret = "kw3j5k32ur38rnerkKJHk83",
                    timestamp = DateTime.Now._ToTimestamp(),
                    SupName = Model.Name,
                    SupShortName = Model.ShortName,
                    OrgCode = Model.UnifiedCode,
                    SupCharge = Model.LegalRepresentative,
                    SupPhone = Model.Phone,
                    SupEmail = Model.PostalCode,
                    SupAddress = Model.Address,
                    SupTypeId = Model.ArrayType
                });
                if (result == null || result.Code != 1)
                {
                    _DB.RollbackTran();
                    return result == null || string.IsNullOrEmpty(result.Message) ? "请求OA供应商接口失败" : result.Message;
                }
                //返回值OA的供应商id
                Model.OASupplierId = Convert.ToInt32(result.Data.OaSupId);
                Model.UnifiedCode = result.Data.OaSupCode;
                var Id = await _dal.Add(Model);
                //循环往供应商类型中间表插入数据
                for (int i = 0, c = Model.ArrayType.Length; i < c; i++)
                {
                    if (Id > 0)
                    {
                        var WMSupplierTypeId = Model.ArrayType[i];
                        WMSupplier_Type wt = new WMSupplier_Type();
                        wt.WMSupplierId = Id;
                        wt.WMSupplierTypeId = WMSupplierTypeId;
                        wt.IsDeleted = false;
                        var TypeId = await _daltype.Add(wt);
                    }
 
                }
                _DB.CommitTran();
 
            }
            catch (Exception ex)
            {
 
                _DB.RollbackTran();
                return ex.ToString();
            }
 
            return string.Empty;
        }
 
 
        /// <summary>
        /// 更新供应商OASupplierId
        /// </summary>
        /// <param name="Model">模型</param>
        /// <param name="UserId">操作人id</param>
        /// <returns></returns>
        public async Task<string> EditSupplierInfo()
        {
            try
            {
                var SupplierIdList = (await _daltype.Query()).Select(x => x.WMSupplierId).Distinct();
                var Listmodel = await BaseDal.Query(w => SupplierIdList.Contains(w.Id));
                //var Listmodel = await BaseDal.Query(w => w.OASupplierId == 0);
                foreach (var item in Listmodel)
                {
                    //将分类id转为数组
                    var supid = (await _daltype.Query(d => d.WMSupplierId == item.Id)).Select(d => d.Id.ToString()).ToArray();
                    //同步到OA系统
                    var apioahost = Appsettings.app("AppSettings", "ApiOAHost");
                    var result = HttpHelper.PostApi<ApiFinanceResult>(apioahost + "/api/Supplier/SaveOrUpdateSupplier", new
                    {
                        appsecret = "kw3j5k32ur38rnerkKJHk83",
                        timestamp = DateTime.Now._ToTimestamp(),
                        OaSupId = item.OASupplierId,
                        SupName = item.Name,
                        SupShortName = item.ShortName,
                        OrgCode = item.UnifiedCode,
                        SupCharge = item.LegalRepresentative,
                        SupPhone = item.Phone,
                        SupEmail = item.PostalCode,
                        SupAddress = item.Address,
                        SupTypeId = supid,
                    });
                    if (result == null || result.Code != 1)
                    {
                        throw new Exception("请求OA供应商接口失败,result值:" + result + ";");
                    }
                    //返回值OA的参数并赋值
                    item.OASupplierId = Convert.ToInt32(result.Data.OaSupId);
                    item.UnifiedCode = !string.IsNullOrWhiteSpace(result.Data.OaSupCode) ? result.Data.OaSupCode : item.UnifiedCode;
                    item.Name = !string.IsNullOrWhiteSpace(result.Data.OaSupName) ? result.Data.OaSupName : item.Name;
                    var OAId = BaseDal.ExecuteSqlCommand(@"update dbo.WMSupplier set OASupplierId=" + item.OASupplierId + ",UnifiedCode='" + item.UnifiedCode + "',Name='" + item.Name + "' where Id =" + item.Id + "");
                }
            }
            catch (Exception ex)
            {
                _DB.RollbackTran();
                return ex.ToString();
            }
            return string.Empty;
        }
    }
}