package com.yuanchu.mom.service.impl;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.config.Configure;
|
import com.deepoove.poi.config.ConfigureBuilder;
|
import com.deepoove.poi.data.Pictures;
|
import com.yuanchu.mom.dto.PersonSupervisionControlSheetExportDto;
|
import com.yuanchu.mom.exception.ErrorException;
|
import com.yuanchu.mom.mapper.UserMapper;
|
import com.yuanchu.mom.pojo.PersonSupervisionControlSheet;
|
import com.yuanchu.mom.mapper.PersonSupervisionControlSheetMapper;
|
import com.yuanchu.mom.service.PersonSupervisionControlSheetService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.URLEncoder;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 监督记录 - 控制单 服务实现类
|
* </p>
|
*
|
* @author
|
* @since 2024-10-10 05:18:57
|
*/
|
@Service
|
public class PersonSupervisionControlSheetServiceImpl extends ServiceImpl<PersonSupervisionControlSheetMapper, PersonSupervisionControlSheet> implements PersonSupervisionControlSheetService {
|
|
@Resource
|
private UserMapper userMapper;
|
|
@Value("${file.path}")
|
private String imgUrl;
|
|
/**
|
* 导出人员监督记录纠正控制单
|
* @param supervisionRecordId
|
* @param response
|
*/
|
@Override
|
public void exportSupervisionControlSheet(Integer supervisionRecordId, HttpServletResponse response) {
|
PersonSupervisionControlSheetExportDto controlSheetExportDto = baseMapper.selectSupervisionControl(supervisionRecordId);
|
|
// 判断不符合工作发现途径是否为空
|
if (StringUtils.isNotBlank(controlSheetExportDto.getDiscoveryApproach())) {
|
List<String> splitList = StrUtil.split(controlSheetExportDto.getDiscoveryApproach(), ',');
|
for (String s : splitList) {
|
switch (s) {
|
case "0":
|
controlSheetExportDto.setDiscoveryApproach0("☑");
|
break;
|
case "1":
|
controlSheetExportDto.setDiscoveryApproach1("☑");
|
break;
|
case "2":
|
controlSheetExportDto.setDiscoveryApproach2("☑");
|
break;
|
case "3":
|
controlSheetExportDto.setDiscoveryApproach3("☑");
|
break;
|
case "4":
|
controlSheetExportDto.setDiscoveryApproach4("☑");
|
break;
|
case "5":
|
controlSheetExportDto.setDiscoveryApproach5("☑");
|
break;
|
case "6":
|
controlSheetExportDto.setDiscoveryApproach6("☑");
|
break;
|
case "7":
|
controlSheetExportDto.setDiscoveryApproach7("☑");
|
break;
|
}
|
}
|
}
|
// 发现部门
|
String discovererUrl = null;
|
if (controlSheetExportDto.getDepartmentHeadId() != null) {
|
discovererUrl = userMapper.selectById(controlSheetExportDto.getDepartmentHeadId()).getSignatureUrl();
|
if (StringUtils.isBlank(discovererUrl)) {
|
throw new ErrorException("找不到发现部门人的签名");
|
}
|
}
|
|
// 处理措施负责人
|
String responsibleUrl = null;
|
if (controlSheetExportDto.getResponsibleDepartmentPersonId() != null) {
|
responsibleUrl = userMapper.selectById(controlSheetExportDto.getResponsibleDepartmentPersonId()).getSignatureUrl();
|
if (StringUtils.isBlank(responsibleUrl)) {
|
throw new ErrorException("找不到处理措施负责人的签名");
|
}
|
}
|
|
// 技术负责人
|
String correctiveUrl = null;
|
if (controlSheetExportDto.getResponsibleDepartmentPersonId() != null) {
|
correctiveUrl = userMapper.selectById(controlSheetExportDto.getResponsibleDepartmentPersonId()).getSignatureUrl();
|
if (StringUtils.isBlank(correctiveUrl)) {
|
throw new ErrorException("找不到技术负责人的签名");
|
}
|
}
|
|
// 质量负责人
|
String qualityUrl = null;
|
if (controlSheetExportDto.getQualitySupervisorId() != null) {
|
qualityUrl = userMapper.selectById(controlSheetExportDto.getQualitySupervisorId()).getSignatureUrl();
|
if (StringUtils.isBlank(qualityUrl)) {
|
throw new ErrorException("找不到质量负责人的签名");
|
}
|
}
|
|
// 获取路径
|
InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-control-sheet.docx");
|
ConfigureBuilder builder = Configure.builder();
|
builder.useSpringEL(true);
|
String finalDiscovererUrl = discovererUrl;
|
String finalResponsibleUrl = responsibleUrl;
|
String finalCorrectiveUrl = correctiveUrl;
|
String finalQualityUrl = qualityUrl;
|
XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
|
new HashMap<String, Object>() {{
|
put("control", controlSheetExportDto);
|
put("discovererUrl", StringUtils.isNotBlank(finalDiscovererUrl) ? Pictures.ofLocal(imgUrl + "/" + finalDiscovererUrl).create() : null);
|
put("responsibleUrl", StringUtils.isNotBlank(finalResponsibleUrl) ? Pictures.ofLocal(imgUrl + "/" + finalResponsibleUrl).create() : null);
|
put("correctiveUrl", StringUtils.isNotBlank(finalCorrectiveUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectiveUrl).create() : null);
|
put("qualityUrl", StringUtils.isNotBlank(finalQualityUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).create() : null);
|
}});
|
|
try {
|
response.setContentType("application/msword");
|
String fileName = URLEncoder.encode(
|
"人员监督记录控制单", "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("导出失败");
|
}
|
|
|
}
|
}
|