package com.yuanchu.mom.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.config.Configure;
|
import com.deepoove.poi.config.ConfigureBuilder;
|
import com.deepoove.poi.data.FilePictureRenderData;
|
import com.yuanchu.mom.dto.PersonPostAuthorizationRecordDto;
|
import com.yuanchu.mom.exception.ErrorException;
|
import com.yuanchu.mom.mapper.UserMapper;
|
import com.yuanchu.mom.pojo.PersonPostAuthorizationRecord;
|
import com.yuanchu.mom.mapper.PersonPostAuthorizationRecordMapper;
|
import com.yuanchu.mom.pojo.User;
|
import com.yuanchu.mom.service.PersonPostAuthorizationRecordService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import net.sourceforge.pinyin4j.PinyinHelper;
|
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
|
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
|
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
|
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
|
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.time.LocalDateTime;
|
import java.util.HashMap;
|
|
/**
|
* <p>
|
* 任职授权记录 服务实现类
|
* </p>
|
*
|
* @author
|
* @since 2024-10-09 10:48:17
|
*/
|
@Service
|
public class PersonPostAuthorizationRecordServiceImpl extends ServiceImpl<PersonPostAuthorizationRecordMapper, PersonPostAuthorizationRecord> implements PersonPostAuthorizationRecordService {
|
|
@Resource
|
UserMapper userMapper;
|
|
@Value("${file.path}")
|
private String imgUrl;
|
|
@Override
|
public IPage<PersonPostAuthorizationRecordDto> personPostAuthorizationRecordPage(Page page, Integer departLimsId, Integer userId, String userName) {
|
return baseMapper.personPostAuthorizationRecordPage(page, departLimsId, userId, userName);
|
}
|
|
@Override
|
public void exportPersonPostAuthorizationRecord(Integer id, HttpServletResponse response) {
|
PersonPostAuthorizationRecord personPostAuthorizationRecord = baseMapper.selectById(id);
|
//姓名
|
User user = userMapper.selectById(personPostAuthorizationRecord.getUserId());
|
String name = user.getName();
|
//姓名英文
|
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
|
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
|
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
StringBuilder pinyinBuilder = new StringBuilder();
|
for (int i = 0; i < name.length(); i++) {
|
char c = name.charAt(i);
|
// 判断是否是汉字
|
if (Character.toString(c).matches("[\\u4E00-\\u9FFF]")) {
|
// 获取汉字的拼音数组
|
String[] pinyinArray = new String[0];
|
try {
|
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
|
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
|
|
}
|
if (pinyinArray!= null && pinyinArray.length > 0) {
|
pinyinBuilder.append(pinyinArray[0]);
|
}
|
} else {
|
pinyinBuilder.append(c);
|
}
|
}
|
String nameEn = pinyinBuilder.toString();
|
//理论知识考试成绩
|
String num1=personPostAuthorizationRecord.getNum1();
|
//操作技能考试成绩
|
String num2=personPostAuthorizationRecord.getNum2();
|
//证书编号
|
String code = personPostAuthorizationRecord.getCertificateNumber();
|
//发证时间
|
LocalDateTime createTime = personPostAuthorizationRecord.getCreateTime();
|
String year = createTime.getYear() + "";
|
String mon = createTime.getMonth().getValue() + "";
|
String day = createTime.getDayOfMonth() + "";
|
//个人照片
|
if (ObjectUtils.isEmpty(user.getPictureUrl())) {
|
throw new ErrorException(name+"的个人照片没有上传");
|
}
|
String pictureUrl = user.getPictureUrl();
|
|
|
InputStream inputStream = this.getClass().getResourceAsStream("/static/credentials-deal.docx");
|
ConfigureBuilder builder = Configure.builder();
|
builder.useSpringEL(true);
|
XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
|
new HashMap<String, Object>() {{
|
put("name", name);
|
put("nameEn", nameEn);
|
put("num1", num1);
|
put("num2", num2);
|
put("code", code);
|
put("year", year);
|
put("mon", mon);
|
put("day", day);
|
put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + pictureUrl));
|
}});
|
|
try {
|
response.setContentType("application/msword");
|
String fileName = URLEncoder.encode(
|
name+"的岗位职业资格正式", "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("导出失败");
|
}
|
|
}
|
}
|