package com.yuanchu.mom.service.impl;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.config.Configure;
|
import com.yuanchu.mom.common.GetLook;
|
import com.yuanchu.mom.common.PrintChina;
|
import com.yuanchu.mom.dto.InspectionOrderExportDto;
|
import com.yuanchu.mom.dto.ProcessOrderDto;
|
import com.yuanchu.mom.exception.ErrorException;
|
import com.yuanchu.mom.mapper.InsOrderMapper;
|
import com.yuanchu.mom.mapper.UserMapper;
|
import com.yuanchu.mom.pojo.*;
|
import com.yuanchu.mom.mapper.ProcessOrderMapper;
|
import com.yuanchu.mom.pojo.InspectionOrderDetail;
|
import com.yuanchu.mom.service.ProcessOrderService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
|
import com.yuanchu.mom.utils.XWPFDocumentUtils;
|
import com.yuanchu.mom.utils.QueryWrappers;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.URLEncoder;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 要求、标书和合同评审 服务实现类
|
* </p>
|
*
|
* @author
|
* @since 2024-11-05 03:06:20
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class ProcessOrderServiceImpl extends ServiceImpl<ProcessOrderMapper, ProcessOrder> implements ProcessOrderService {
|
|
@Resource
|
private ProcessOrderMapper processOrderMapper;
|
|
@Resource
|
InsOrderMapper insOrderMapper;
|
|
@Resource
|
private UserMapper userMapper;
|
|
@Override
|
public Map<String, Object> pageProcessOrder(Page page, ProcessOrderDto processOrderDto) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(ProcessOrderDto.class));
|
map.put("body", processOrderMapper.pageProcessOrder(page, QueryWrappers.queryWrappers(processOrderDto)));
|
return map;
|
}
|
|
@Override
|
public ProcessOrderDto getProcessOrder(Integer id) {
|
return processOrderMapper.getProcessOrder(id);
|
}
|
|
@Override
|
public int doProcessOrder(ProcessOrder processOrder) {
|
if (ObjectUtils.isNotEmpty(processOrder.getComprehensiveUser())) {
|
User user = userMapper.selectById(processOrder.getComprehensiveUser());
|
if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到综合室签名人的电子签名,请上传电子签名!");
|
}
|
if (ObjectUtils.isNotEmpty(processOrder.getIssueUser())) {
|
User user = userMapper.selectById(processOrder.getIssueUser());
|
if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到领样员的电子签名,请上传电子签名!");
|
}
|
return processOrderMapper.updateById(processOrder);
|
}
|
|
|
@Override
|
public void exportInspectionOrder(Integer id, HttpServletResponse response) {
|
ProcessOrder processOrder = baseMapper.selectById(id);
|
InspectionOrderExportDto inspectionOrderExportDto = extracted(processOrder);
|
List<InspectionOrderDetail> list = baseMapper.selectInsOrder(processOrder.getInsOrderId());
|
int index = 1;
|
for (InspectionOrderDetail inspectionOrderDetail : list) {
|
inspectionOrderDetail.setIndex(index);
|
index++;
|
}
|
|
// 获取路径
|
InputStream inputStream = this.getClass().getResourceAsStream("/static/inspection-order.docx");
|
Configure configure = Configure.builder()
|
.bind("inspectionOrderDetailList", new HackLoopTableRenderPolicy())
|
.build();
|
XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
|
new HashMap<String, Object>() {{
|
put("inspectionOrder", inspectionOrderExportDto);
|
put("inspectionOrderDetailList", list);
|
}});
|
|
// 处理换行问题
|
XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
|
try {
|
response.setContentType("application/msword");
|
String fileName = URLEncoder.encode(
|
inspectionOrderExportDto.getSample(), "UTF-8");
|
response.setHeader("Content-disposition",
|
"attachment;filename=" + fileName + ".docx");
|
OutputStream os = response.getOutputStream();
|
template.write(os);
|
os.flush();
|
os.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new RuntimeException("导出失败");
|
}
|
}
|
|
private InspectionOrderExportDto extracted(ProcessOrder processOrder) {
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
InspectionOrderExportDto inspectionOrderExportDto = new InspectionOrderExportDto();
|
ProcessOrderDto processOrderDto = getProcessOrder(processOrder.getId());
|
BeanUtils.copyProperties(processOrderDto, inspectionOrderExportDto);
|
if (processOrderDto.getCreateTime() != null) {
|
inspectionOrderExportDto.setCommissionDateString(processOrderDto.getCreateTime().format(formatter));
|
}
|
if (processOrder.getComprehensiveTime() != null) {
|
inspectionOrderExportDto.setReceiptDataString(processOrder.getComprehensiveTime().format(formatter));
|
}
|
if (processOrder.getIssueTime() != null) {
|
inspectionOrderExportDto.setSampleDataString(processOrder.getIssueTime().format(formatter));
|
}
|
if (processOrderDto.getAppointed() != null) {
|
inspectionOrderExportDto.setAppointedString(processOrderDto.getAppointed().format(formatter));
|
}
|
|
inspectionOrderExportDto.setIsLeave1(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 1 ? "☑" : "□");
|
inspectionOrderExportDto.setIsLeave2(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 0 ? "☑" : "□");
|
inspectionOrderExportDto.setSend0(processOrderDto.getSend() != null && processOrderDto.getSend() == 1 ? "☑" : "□");
|
inspectionOrderExportDto.setSend1(processOrderDto.getSend() != null && processOrderDto.getSend() == 0 ? "☑" : "□");
|
inspectionOrderExportDto.setProcessing0(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 0 ? "☑" : "□");
|
inspectionOrderExportDto.setProcessing1(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 1 ? "☑" : "□");
|
if (ObjectUtils.isNotEmpty(processOrder.getRule())) {
|
inspectionOrderExportDto.setCriterionRule0(processOrder.getRule().equals("不考虑不确定度") ? "☑" : "□");
|
inspectionOrderExportDto.setCriterionRule1(processOrder.getRule().contains("-") ? "☑" : "□");
|
inspectionOrderExportDto.setCriterionRuleRemark(processOrder.getRule().contains("-") ? processOrder.getRule().split("-")[1] : "");
|
}
|
return inspectionOrderExportDto;
|
}
|
}
|