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.yuanchu.mom.dto.PersonJobResponsibilitiesDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.PersonJobResponsibilities;
import com.yuanchu.mom.mapper.PersonJobResponsibilitiesMapper;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.PersonJobResponsibilitiesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
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.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
/**
*
* 岗位职责 服务实现类
*
*
* @author
* @since 2024-10-09 02:07:49
*/
@Service
@AllArgsConstructor
public class PersonJobResponsibilitiesServiceImpl extends ServiceImpl implements PersonJobResponsibilitiesService {
@Resource
UserMapper userMapper;
@Override
public IPage personJobResponsibilitiesSelect(Page page, String userId, String departmentId, String userName) {
return baseMapper.personJobResponsibilitiesSelect(page, userId, departmentId, userName);
}
@Override
public void exportPersonJobResponsibilities(Integer id, HttpServletResponse response) {
PersonJobResponsibilities personJobResponsibilities = baseMapper.selectById(id);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
//岗位名称
String name = personJobResponsibilities.getPostName();
//所属部门
String departLims = userMapper.selectUserDepartmentLimsName(Integer.parseInt(personJobResponsibilities.getIncumbentId()));
//工作目标
String objective = personJobResponsibilities.getJobObjective();
//岗位职责
String responsibilities = personJobResponsibilities.getJobResponsibilities();
//任职人
User user = userMapper.selectById(Integer.parseInt(personJobResponsibilities.getIncumbentId()));
String incumbent = user.getName();
//任职时间
String incumbentDate = "";
if (ObjectUtils.isNotEmpty(personJobResponsibilities.getIncumbentDate())) {
incumbentDate = personJobResponsibilities.getIncumbentDate().format(formatter);
}
//主管
String supervisor = "";
if (ObjectUtils.isNotEmpty(personJobResponsibilities.getSupervisorId())) {
supervisor = userMapper.selectById(personJobResponsibilities.getSupervisorId()).getName();
}
//主管时间
String supervisorDate = "";
if (ObjectUtils.isNotEmpty(personJobResponsibilities.getSupervisorDate())) {
supervisorDate = personJobResponsibilities.getSupervisorDate().format(formatter);
}
InputStream inputStream = this.getClass().getResourceAsStream("/static/explain-deal.docx");
ConfigureBuilder builder = Configure.builder();
builder.useSpringEL(true);
String finalIncumbentDate = incumbentDate;
String finalSupervisor = supervisor;
String finalSupervisorDate = supervisorDate;
XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
new HashMap() {{
put("name", name);
put("account", user.getAccount());
put("departLims", departLims);
put("objective", objective);
put("responsibilities", responsibilities);
put("incumbent", incumbent);
put("incumbentDate", finalIncumbentDate);
put("supervisor", finalSupervisor);
put("supervisorDate", finalSupervisorDate);
}});
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("导出失败");
}
}
}