123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using Hotline.Application.ExportWord;
- using Hotline.Orders;
- using Hotline.Share.Dtos.OrderExportWord;
- using MapsterMapper;
- using Microsoft.AspNetCore.Mvc;
- using XF.Domain.Repository;
- namespace Hotline.Api.Controllers
- {
- public class ExportWordController : BaseController
- {
- private readonly IOrderRepository _orderRepository;
- private readonly IWordHelperService _wordHelperService;
- private readonly IMapper _mapper;
- private readonly IRepository<OrderVisit> _orderVisitRepository;
- private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
- private readonly ILogger<ExportWordController> _logger;
- public ExportWordController(IOrderRepository orderRepository,
- IWordHelperService wordHelperService,
- IMapper mapper,
- IRepository<OrderVisit> orderVisitRepository,
- IRepository<OrderVisitDetail> orderVisitedDetailRepository,
- ILogger<ExportWordController> logger)
- {
- _orderRepository = orderRepository;
- _wordHelperService = wordHelperService;
- _mapper = mapper;
- _orderVisitRepository = orderVisitRepository;
- _orderVisitedDetailRepository = orderVisitedDetailRepository;
- _logger = logger;
- }
- /// <summary>
- /// 工单交办单导出
- /// </summary>
- /// <returns></returns>
- [HttpPost("order_submission_form")]
- public async Task<IActionResult> OrderSubmissionForm([FromBody] List<string> Ids)
- {
- var streams = new Dictionary<string, Stream>();
- var path = $"{Directory.GetCurrentDirectory()}/Template/AssignmentForm.doc";
- foreach (var item in Ids)
- {
- var order = await _orderRepository.GetAsync(item, HttpContext.RequestAborted);
- if (order == null)
- continue;
- var exportTest = _mapper.Map<OrderSubmissionForm>(order);
- //查询回访信息
- var visitData = await _orderVisitRepository.GetAsync(p => p.OrderId == order.Id, HttpContext.RequestAborted);
- if (visitData != null)
- {
- //回访明细
- var visitDetail = await _orderVisitedDetailRepository.Queryable().Where(p => p.VisitId == visitData.Id && p.VisitTarget == Share.Enums.Order.EVisitTarget.Org).ToListAsync();
- string visit = "";
- foreach (var itemVisit in visitDetail)
- {
- visit += "回访部门:" + itemVisit.VisitOrgName;
- visit += " \n办件结果:" + itemVisit.OrgProcessingResults?.Value + " 办事态度:" + itemVisit.OrgHandledAttitude?.Value + "\n";
- if (itemVisit.VisitOrgCode == order.ActualHandleOrgCode)
- exportTest.VisitContent = "回访内容:" + itemVisit.VisitContent;
- }
- exportTest.VisitOrg = visit;
- }
- if (Ids.Count > 1)
- streams.Add(order.No + path.Substring(path.LastIndexOf(".")), _wordHelperService.WordStream(path, exportTest));
- else
- {
- var btyes = _wordHelperService.WordByte(path, exportTest);
- HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");
- return File(btyes, "application/vnd.ms-word", order.No + path.Substring(path.LastIndexOf(".")));
- }
- }
- //调用压缩方法 进行压缩 (接收byte[] 数据)
- byte[] fileBytes = _wordHelperService.ConvertZipStream(streams);
- HttpContext.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");
- var name = DateTime.Now.ToString("yyyyMMddHHmmss");
- return File(fileBytes, "application/octet-stream", $"{name}.zip");
- }
- }
- }
|