更新或者添加数据报表总结

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

 

posted @ 2020-12-23 09:59  阿华~  阅读(136)  评论(0)    收藏  举报