天天看點

更新或者添加資料報表總結

1,開始之前這裡關鍵是用的了(映射),在你的DTO入參字段必須包含Model中的字段(Model字段忽略)

注意:這裡我隻列舉了年報的DTO,其實還有半年報的,倆個公共部分DTO我已經提取出來了

更新或者添加資料報表總結
更新或者添加資料報表總結
1 /// <summary>
  2     /// 海外倉情況表 年報
  3     /// </summary>
  4     /// 
  5     public class OverseasWarehouseSituationYearReportBusDTO 
  6     {
  7 
  8         /// <summary>
  9         /// 企業主鍵ID  
 10         /// </summary>
 11         public Guid? MainId { get; set; }
 12 
 13         /// <summary>
 14         /// 企業名稱
 15         /// </summary>
 16         public string EntName { get; set; }
 17 
 18         /// <summary>
 19         /// 統一信用代碼
 20         /// </summary>
 21         public string EntSCCCode { get; set; }
 22 
 23 
 24         /// <summary>
 25         /// 報表主鍵ID  
 26         /// </summary>
 27         public Guid ReportId { get; set; }
 28 
 29         /// <summary>
 30         /// 報表主表
 31         /// </summary>
 32         public EntInfoReportDTO EntInfoReport { get; set; }
 33 
 34         /// <summary>
 35         /// 海外倉資訊填寫(年報)
 36         /// </summary>
 37         public OverseasWarehouseSituationYearReportDTO OverseasWarehouseSituationYearReportDTO { get; set; }
 38 
 39 
 40         /// <summary>
 41         /// 海外倉的所在地(年報)
 42         /// </summary>
 43         public List<OverseasHomeYearReportDTO> OverseasHomeYearReportDTO { get; set; }
 44     }
 45 
 46 
 47  /// <summary>
 48     /// 海外倉情況表 年報
 49     /// </summary>
 50     /// 
 51     public class OverseasWarehouseSituationYearReportDTO: PublicOverseasWarehouseSituationDTO
 52     {
 53         /// <summary>
 54         /// 資料狀态
 55         /// </summary>
 56         // public State State { get; set; }
 57     }
 58 
 59 
 60 
 61     /// <summary>
 62     /// 海外倉情況表(DTO)(公共部分)
 63     /// </summary>
 64     public class PublicOverseasWarehouseSituationDTO : TenantBaseEntityDTO
 65     {
 66 
 67         #region  *Id,*企業ID,*年份
 68         /// <summary>
 69         /// Id
 70         /// </summary>
 71         public Guid Id { get; set; }
 72 
 73         /// <summary>
 74         /// 企業id外鍵
 75         /// </summary>
 76         public Guid MainId { get; set; }
 77 
 78 
 79         /// <summary>
 80         /// 報表id外鍵
 81         /// </summary>
 82         public Guid ReportId { get; set; }
 83 
 84         
 85         /// <summary>
 86         /// 年份
 87         /// </summary>
 88         public int Year { get; set; }
 89         #endregion
 90 
 91 
 92 
 93         #region 企業情況
 94 
 95         /// <summary>
 96         /// 省份
 97         /// </summary>
 98         public int? Province { get; set; }
 99 
100         /// <summary>
101         /// 市
102         /// </summary>
103         public int? City { get; set; }
104 
105         /// <summary>
106         /// 區
107         /// </summary>
108         public int? Area { get; set; }
109 
110         /// <summary>
111         /// 門牌号
112         /// </summary>
113         public string Addresses { get; set; }
114 
115 
116 
117         /// <summary>
118         /// 企業性質(0-國有,1-私企, 2-外資)
119         /// </summary>
120         public int? Enterprise { get; set; }
121 
122 
123         /// <summary>
124         /// 有無企業***投資證書(0-有,1-無)
125         /// </summary>
126         public bool? IsCertificate { get; set; }
127 
128 
129         /// <summary>
130         /// 企業性質海外倉的數量
131         /// </summary>
132         public int? WarehouseCount { get; set; }
133 
134         /// <summary>
135         /// 聘用***員工總人數
136         /// </summary>
137         public int? OverseasEmployees { get; set; }
138 
139         /// <summary>
140         /// 訂單進行中心(個)
141         /// </summary>
142         public int? OrderCenter { get; set; }
143 
144         /// <summary>
145         /// 日均處理訂單量(個)
146         /// </summary>
147         public int? AverageDeal { get; set; }
148 
149         /// <summary>
150         /// 本年度累計發貨單數(萬票)
151         /// </summary>
152         public decimal? DeliverySingular { get; set; }
153 
154 
155         #endregion
156 
157 
158         #region *建立時間,*是否删除,*修改時間
159         /// <summary>
160         /// 建立時間
161         /// </summary>
162         public DateTime CreateTime { get; set; }
163 
164         /// <summary>
165         /// 是否删除
166         /// </summary>
167         public bool IsDel { get; set; }
168 
169         /// <summary>
170         /// 修改時間
171         /// </summary>
172         public DateTime LastModiTime { get; set; }
173         #endregion
174 
175 
176     }
177 
178  /// <summary>
179     /// 海外倉所在地(附表)年報
180     /// </summary>
181     public class OverseasHomeYearReportDTO: PublicOverseasHomeDTO
182     {
183        
184     }
185 
186 
187     /// <summary>
188     /// 海外倉所在地(附表)半年報
189     /// </summary>
190     public class OverseasHomeHalfYearReportDTO : PublicOverseasHomeDTO
191     {
192         /// <summary>
193         /// 半年報(0-上半年,1-下半年)
194         /// </summary>
195         public int? HalfYear { get; set; }
196 
197     }
198 
199 
200     /// <summary>
201     /// 海外倉所在地(附表)(公共部分)
202     /// </summary>
203     public class PublicOverseasHomeDTO : TenantBaseEntityDTO
204     {
205         /// <summary>
206         /// 主鍵
207         /// </summary>
208         public Guid Id { get; set; }
209         /// <summary>
210         /// 企業id外鍵
211         /// </summary>
212         public Guid MainId { get; set; }
213 
214         /// <summary>
215         /// 報表id外鍵
216         /// </summary>
217         public Guid ReportId { get; set; }
218 
219         /// <summary>
220         /// 年份
221         /// </summary>
222         public int Year { get; set; }
223 
224 
225 
226         /// <summary>
227         /// 對應主表的外鍵
228         /// </summary>
229         public Guid WarehouseId { get; set; }
230 
231 
232         /// <summary>
233         /// 海外倉所在地(國家)
234         /// </summary>
235         public string WarehouseHome { get; set; }
236 
237 
238         /// <summary>
239         /// 海外倉所在地(城市)
240         /// </summary>
241         public string WarehouseHomeCity { get; set; }
242         
243 
244         /// <summary>
245         /// 投入營運時間
246         /// </summary>
247         public DateTime? OperatingTime { get; set; }
248 
249 
250         /// <summary>
251         /// 投資規模(萬元)
252         /// </summary>
253         public decimal? OperatingSize { get; set; }
254 
255 
256         /// <summary>
257         /// 倉儲面積(㎡)
258         /// </summary>
259         public decimal? Warehousearea { get; set; }
260 
261 
262         /// <summary>
263         /// 聘用***員工(人)
264         /// </summary>
265         public int? EmployCount { get; set; }
266 
267 
268         #region 海外倉經營情況
269 
270         /// <summary>
271         /// 海外倉營業收入(萬元)
272         /// </summary>
273         public decimal? WarehouseIncome { get; set; }
274 
275         /// <summary>
276         /// 營運成本(萬元)
277         /// </summary>
278         public decimal? OperatingCost { get; set; }
279 
280         /// <summary>
281         /// 營業利潤(萬元)
282         /// </summary>
283         public decimal? BusinessProfits { get; set; }
284 
285         /// <summary>
286         /// 企業性質(0-自建(獨資/合資),1-租賃(第三方海外倉),2-亞馬遜FBA倉)
287         /// </summary>
288         public int? EnterpriseNature { get; set; }
289 
290         /// <summary>
291         /// 海外倉建倉模式(0-購買海外空地自建,1-租海外空地自建海外倉,2-租賃海外倉庫改建海外倉,3-與海外倉庫合作共建海外倉)
292         /// </summary>
293         public string OverseasPositions { get; set; }
294 
295 
296         /// <summary>
297         /// 海外倉服務功能(0-倉儲, 1-發貨, 2-FBA退換貨、修理,3-保稅,4-FBA中轉,5-運輸資源整合,6-金融保險,7-其他)
298         /// </summary>
299         public string OverseasService { get; set; }
300 
301         /// <summary>
302         /// 海外倉服務功能(其他填寫)
303         /// </summary>
304         public string OverseasServiceOther { get; set; }
305 
306 
307         /// <summary>
308         /// 企業性質(0-是(服務企業數量(個)) 1-否(自用))
309         /// </summary>
310         public bool? IsEnterpriseNature { get; set; }
311 
312         /// <summary>
313         /// 服務企業數量(條件是企業性質為是)
314         /// </summary>
315         public int? ServiceNumber { get; set; }
316         #endregion
317 
318 
319         #region *建立時間,*是否删除,*修改時間
320         /// <summary>
321         /// 建立時間
322         /// </summary>
323         public DateTime CreateTime { get; set; }
324 
325         /// <summary>
326         /// 是否删除
327         /// </summary>
328         public bool IsDel { get; set; }
329 
330         /// <summary>
331         /// 修改時間
332         /// </summary>
333         public DateTime LastModiTime { get; set; }
334         #endregion
335 
336     }      

DTO

2,DTO我們已經準備好了,下面就開始寫業務邏輯層了,直接OverseasWarehouseSituationYearReportBusDTO以這個入參

注意:這裡是配合了查詢方法(在下一個随筆中會展現出來)一起寫的代碼

更新或者添加資料報表總結
更新或者添加資料報表總結
1 #region 更新或插入海外倉情況報表年報
  2         /// <summary>
  3         /// 更新或插入海外倉情況報表年報
  4         /// </summary>
  5         /// <param name="dto">實體</param>
  6         /// <returns></returns>
  7         public async Task<ResultWithNoData> AddOrUpdateOverseasWarehouseSituationYearReport(OverseasWarehouseSituationYearReportBusDTO dto)
  8         {
  9             ResultWithNoData res = new ResultWithNoData(false, "操作失敗", null);
 10             await using var transaction = await _context.Database.BeginTransactionAsync();
 11             try
 12             {
 13                 var dataInfo = await GetOverseasWarehouseSituationYearReportFirstOrDefaultAsync(dto.ReportId);
 14                 if (!dataInfo.MainId.HasValue)
 15                 {
 16                     res.Msg = "企業資訊未完善";
 17                     return res;
 18                 }
 19                 if (dataInfo.EntInfoReport == null)
 20                 {
 21                     res.Msg = "無報表記錄";
 22                     return res;
 23                 }
 24                 else if (dataInfo.EntInfoReport != null && (dataInfo.EntInfoReport.State == State.待稽核 || dataInfo.EntInfoReport.State == State.稽核已認證))
 25                 {
 26                     res.Msg = "請勿重複送出";
 27                     return res;
 28                 }
 29 
 30                 dto.OverseasWarehouseSituationYearReportDTO.RegionID = dataInfo.EntInfoReport.RegionID;
 31                 dto.OverseasWarehouseSituationYearReportDTO.ReportId = dto.ReportId;
 32                 dto.OverseasWarehouseSituationYearReportDTO.MainId = dto.MainId.Value;
 33                 dto.OverseasWarehouseSituationYearReportDTO.IsDel = false;
 34                 dto.OverseasWarehouseSituationYearReportDTO.Year = dataInfo.EntInfoReport.Year;
 35                 dto.OverseasWarehouseSituationYearReportDTO.LastModiTime = DateTime.Now;
 36                 dto.OverseasHomeYearReportDTO.ForEach(c => { c.RegionID = dataInfo.EntInfoReport.RegionID;  c.ReportId = dataInfo.ReportId; c.MainId = dto.MainId.Value; ; c.Year = dto.OverseasWarehouseSituationYearReportDTO.Year; c.CreateTime = DateTime.Now; c.LastModiTime = DateTime.Now; });
 37 
 38 
 39 
 40                 if (dto.EntInfoReport.State == State.待稽核)
 41                     dataInfo.EntInfoReport.State = State.待稽核;
 42                 if (dto.EntInfoReport.State != State.待稽核 && dataInfo.EntInfoReport.State == State.無)
 43                     dataInfo.EntInfoReport.State = State.草稿資料;
 44 
 45                 dataInfo.EntInfoReport.StatisticalHead = dto.EntInfoReport.StatisticalHead;
 46                 dataInfo.EntInfoReport.FillPeople = dto.EntInfoReport.FillPeople;
 47                 dataInfo.EntInfoReport.FillPhone = dto.EntInfoReport.FillPhone;
 48                 dataInfo.EntInfoReport.LastModiTime = DateTime.Now;
 49                 _context.EntInfoReport.Update(_mapper.Map<EntInfoReport>(dataInfo.EntInfoReport));
 50 
 51                 if (dataInfo.OverseasWarehouseSituationYearReportDTO != null)
 52                 {
 53                     _context.OverseasWarehouseSituationYearReport.Update(_mapper.Map<OverseasWarehouseSituationYearReport>(dto.OverseasWarehouseSituationYearReportDTO));
 54                 }
 55                 else
 56                 {
 57                     dto.OverseasWarehouseSituationYearReportDTO.Id = Guid.NewGuid();
 58                     await _context.OverseasWarehouseSituationYearReport.AddAsync(_mapper.Map<OverseasWarehouseSituationYearReport>(dto.OverseasWarehouseSituationYearReportDTO));
 59                 }
 60 
 61                 foreach (var item in dto.OverseasHomeYearReportDTO)
 62                 {
 63                     item.WarehouseId = dto.OverseasWarehouseSituationYearReportDTO.Id;
 64                     if (dataInfo.OverseasHomeYearReportDTO.Where(c => c.Id == item.Id).Any())
 65                     {
 66                         _context.OverseasHomeYearReport.Update(_mapper.Map<OverseasHomeYearReport>(item));
 67                     }
 68                     else
 69                     {
 70                         item.Id = Guid.NewGuid();
 71                         await _context.OverseasHomeYearReport.AddAsync(_mapper.Map<OverseasHomeYearReport>(item));
 72                     }
 73                 }
 74 
 75                 //删除操作
 76                 foreach (var item in dataInfo.OverseasHomeYearReportDTO)
 77                 {
 78                     if (!dto.OverseasHomeYearReportDTO.Where(c => c.Id == item.Id).Any())
 79                     {
 80                         item.IsDel = true;
 81                         _context.OverseasHomeYearReport.Update(_mapper.Map<OverseasHomeYearReport>(item));
 82                     }
 83                 }
 84 
 85                 var i = await _context.SaveChangesAsync();
 86                 await transaction.CommitAsync();
 87                 if (i > 0)
 88                 {
 89                     res.Res = true;
 90                     res.Msg = "操作成功";
 91                     res.Data = dto;
 92                 }
 93                 return res;
 94             }
 95             catch (Exception e)
 96             {
 97 
 98                 throw;
 99             }
100         }
101         #endregion      

View Service

3,這裡一個就是控制器層了,直接調用業務層就好了,中間用一個接口來轉接一下

更新或者添加資料報表總結
更新或者添加資料報表總結
1  #region 更新或插入海外倉情況表年報
2         /// <summary>
3         /// 更新或插入海外倉情況表年報
4         /// </summary>
5         /// <param name="dto">實體</param>
6         /// <returns></returns>
7         Task<ResultWithNoData> AddOrUpdateOverseasWarehouseSituationYearReport(OverseasWarehouseSituationYearReportBusDTO dto);
8         #endregion      

View IService

更新或者添加資料報表總結
更新或者添加資料報表總結
1 #region 送出或儲存海外倉情況報表(年報)
 2         /// <summary>
 3         /// 送出或儲存海外倉情況報表(年報)
 4         /// </summary>
 5         /// <param name="model">查詢實體</param>
 6         /// <returns></returns>
 7         [HttpPost(nameof(AddOverseasWarehouseSituationYearReport))]
 8         public async Task<ResultWithNoData> AddOverseasWarehouseSituationYearReport(OverseasWarehouseSituationYearReportBusDTO model)
 9         {
10             ResultWithNoData res = new ResultWithNoData(false, "操作失敗", null);
11 
12             if (model.EntInfoReport != null && model.EntInfoReport.State != State.待稽核 && model.EntInfoReport.State != State.草稿資料)
13                 return res;
14 
15             model.MainId = CurrentObjectId;
16 
17             res = await OverseasWarehouseSituationYearReportService.AddOrUpdateOverseasWarehouseSituationYearReport(model);
18             return res;
19         }
20         #endregion      

View Controllers

繼續閱讀