| | |
| | | package com.ruoyi.staff.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | import com.ruoyi.project.system.domain.SysPost; |
| | | import com.ruoyi.project.system.mapper.SysDeptMapper; |
| | | import com.ruoyi.project.system.mapper.SysPostMapper; |
| | | import com.ruoyi.staff.dto.StaffOnJobImportDto; |
| | | import com.ruoyi.staff.dto.StaffOnJobDto; |
| | | import com.ruoyi.staff.dto.StaffOnJobImportDto; |
| | | import com.ruoyi.staff.mapper.StaffContractMapper; |
| | | import com.ruoyi.staff.mapper.StaffLeaveMapper; |
| | | import com.ruoyi.staff.mapper.StaffOnJobMapper; |
| | |
| | | import freemarker.template.Configuration; |
| | | import freemarker.template.Template; |
| | | import lombok.AllArgsConstructor; |
| | | |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.io.OutputStreamWriter; |
| | | import java.io.StringWriter; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.time.Instant; |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | import java.util.HashMap; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @AllArgsConstructor |
| | | @Service |
| | | public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob> implements IStaffOnJobService { |
| | | public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob> implements IStaffOnJobService { |
| | | |
| | | @Autowired |
| | | private StaffOnJobMapper staffOnJobMapper; |
| | |
| | | private SysPostMapper sysPostMapper; |
| | | @Autowired |
| | | private SysDeptMapper sysDeptMapper; |
| | | |
| | | @Autowired |
| | | private StaffContractMapper staffContractMapper; |
| | | @Autowired |
| | | private StaffLeaveMapper staffLeaveMapper; |
| | | |
| | | |
| | | //å¨èåå·¥å°è´¦å页æ¥è¯¢ |
| | | @Override |
| | | public IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob) { |
| | | return staffOnJobMapper.staffOnJobListPage(page,staffOnJob); |
| | | IPage<StaffOnJobDto> result = staffOnJobMapper.staffOnJobListPage(page, staffOnJob); |
| | | fillNationFallback(result.getRecords()); |
| | | return result; |
| | | } |
| | | |
| | | //æ°å¢å
¥è |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int add(StaffOnJobDto staffOnJobPrams) { |
| | | String[] ignoreProperties = {"id"};//æé¤id屿§ |
| | | // 夿ç¼å·æ¯å¦åå¨ |
| | | List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo())); |
| | | if (staffOnJobs.size()>0){ |
| | | throw new BaseException("ç¼å·ä¸º"+staffOnJobPrams.getStaffNo()+"çå工已ç»åå¨,æ æ³æ°å¢!!!"); |
| | | } |
| | | // å建å
¥èæ°æ® |
| | | staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime()); |
| | | staffOnJobPrams.setStaffState(1); |
| | | staffOnJobMapper.insert(staffOnJobPrams); |
| | | public int add(StaffOnJobDto staffOnJobParams) { |
| | | syncStaffBasicFields(staffOnJobParams); |
| | | |
| | | // å建ååè®°å½ |
| | | List<StaffOnJob> existedStaffNo = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery() |
| | | .eq(StaffOnJob::getStaffNo, staffOnJobParams.getStaffNo())); |
| | | if (!CollectionUtils.isEmpty(existedStaffNo)) { |
| | | throw new BaseException("Duplicate staffNo: " + staffOnJobParams.getStaffNo()); |
| | | } |
| | | |
| | | staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime()); |
| | | staffOnJobParams.setStaffState(1); |
| | | staffOnJobMapper.insert(staffOnJobParams); |
| | | |
| | | StaffContract staffContract = new StaffContract(); |
| | | staffContract.setStaffOnJobId(staffOnJobPrams.getId()); |
| | | staffContract.setContractTerm(staffOnJobPrams.getContractTerm()); |
| | | staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime()); |
| | | staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime()); |
| | | staffContract.setStaffOnJobId(staffOnJobParams.getId()); |
| | | staffContract.setContractTerm(staffOnJobParams.getContractTerm()); |
| | | staffContract.setContractStartTime(staffOnJobParams.getContractStartTime()); |
| | | staffContract.setContractEndTime(staffOnJobParams.getContractEndTime()); |
| | | return staffContractMapper.insert(staffContract); |
| | | } |
| | | |
| | | //æ´æ°å
¥èä¿¡æ¯ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int update(Long id, StaffOnJobDto staffOnJobParams) { |
| | | // å¤æå¯¹è±¡æ¯å¦åå¨ |
| | | syncStaffBasicFields(staffOnJobParams); |
| | | staffOnJobParams.setId(id); |
| | | |
| | | StaffOnJob job = staffOnJobMapper.selectById(id); |
| | | if (job == null){ |
| | | throw new BaseException("ç¼å·ä¸º"+staffOnJobParams.getStaffNo()+"çåå·¥ä¸åå¨,æ æ³æ´æ°!!!"); |
| | | if (job == null) { |
| | | throw new BaseException("Staff not found, id=" + id); |
| | | } |
| | | |
| | | String[] ignoreProperties = {"id"};//æé¤æ´æ°å±æ§ |
| | | if (StringUtils.isNotBlank(staffOnJobParams.getStaffNo())) { |
| | | List<StaffOnJob> existedStaffNo = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery() |
| | | .eq(StaffOnJob::getStaffNo, staffOnJobParams.getStaffNo()) |
| | | .ne(StaffOnJob::getId, id)); |
| | | if (!CollectionUtils.isEmpty(existedStaffNo)) { |
| | | throw new BaseException("Duplicate staffNo: " + staffOnJobParams.getStaffNo()); |
| | | } |
| | | } |
| | | |
| | | // è·åææ°ååæ°æ®ï¼å¹¶ä¸æ´æ° |
| | | String[] ignoreProperties = {"id"}; |
| | | StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery() |
| | | .eq(StaffContract::getStaffOnJobId, id) |
| | | .last("limit 1") |
| | | .orderByDesc(StaffContract::getId)); |
| | | if (contract != null){ |
| | | BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties); |
| | | .orderByDesc(StaffContract::getId) |
| | | .last("limit 1")); |
| | | if (contract != null) { |
| | | BeanUtils.copyProperties(staffOnJobParams, contract, ignoreProperties); |
| | | staffContractMapper.updateById(contract); |
| | | } |
| | | |
| | | // æ´æ°åå·¥æ°æ® |
| | | staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime()); |
| | | return staffOnJobMapper.updateById(staffOnJobParams); |
| | | } |
| | | |
| | | //å é¤å
¥è |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int delStaffOnJobs(List<Integer> ids) { |
| | | // å é¤å
¥èæ°æ® |
| | | staffOnJobMapper.deleteBatchIds(ids); |
| | | // å é¤ç¦»èæ°æ® |
| | | staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids)); |
| | | // å é¤ååæ°æ® |
| | | return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids)); |
| | | } |
| | | |
| | | // ç»ç¾åå |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int renewContract(Long id, StaffContract staffContract) { |
| | | // å¤æå¯¹è±¡æ¯å¦åå¨ |
| | | StaffOnJob job = staffOnJobMapper.selectById(id); |
| | | if (job == null){ |
| | | throw new BaseException("该åå·¥ä¸åå¨,æ æ³æ´æ°!!!"); |
| | | if (job == null) { |
| | | throw new BaseException("Staff not found, id=" + id); |
| | | } |
| | | |
| | | // å¢å åå |
| | | StaffContract newStaffContract = new StaffContract(); |
| | | newStaffContract.setStaffOnJobId(id); |
| | | newStaffContract.setContractTerm(staffContract.getContractTerm()); |
| | |
| | | newStaffContract.setContractEndTime(staffContract.getContractEndTime()); |
| | | staffContractMapper.insert(newStaffContract); |
| | | |
| | | // æ´æ°åå·¥ååè¿ææ¶é´ |
| | | job.setContractExpireTime(staffContract.getContractEndTime()); |
| | | staffOnJobMapper.updateById(job); |
| | | return 0; |
| | | } |
| | | |
| | | //å¨èå工详æ
|
| | | @Override |
| | | public StaffOnJobDto staffOnJobDetail(Long id) { |
| | | StaffOnJob staffOnJob = staffOnJobMapper.selectById(id); |
| | | StaffOnJob staffOnJob = staffOnJobMapper.selectById(id); |
| | | if (staffOnJob == null) { |
| | | throw new IllegalArgumentException("该åå·¥ä¸åå¨"); |
| | | throw new BaseException("Staff not found, id=" + id); |
| | | } |
| | | |
| | | StaffOnJobDto staffOnJobDto = new StaffOnJobDto(); |
| | | BeanUtils.copyProperties(staffOnJob, staffOnJobDto); |
| | | // æ¥è¯¢å²ä½åç§° |
| | | |
| | | if (staffOnJob.getSysPostId() != null) { |
| | | SysPost post = sysPostMapper.selectPostById(staffOnJob.getSysPostId().longValue()); |
| | | if (post != null) { |
| | |
| | | } |
| | | } |
| | | |
| | | // æ¥è¯¢ååä¿¡æ¯ |
| | | StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery() |
| | | .eq(StaffContract::getStaffOnJobId, staffOnJob.getId()) |
| | | .last("limit 1") |
| | | .orderByDesc(StaffContract::getId)); |
| | | if (contract != null){ |
| | | .orderByDesc(StaffContract::getId) |
| | | .last("limit 1")); |
| | | if (contract != null) { |
| | | staffOnJobDto.setContractTerm(contract.getContractTerm()); |
| | | staffOnJobDto.setContractStartTime(contract.getContractStartTime()); |
| | | staffOnJobDto.setContractEndTime(contract.getContractEndTime()); |
| | | } |
| | | |
| | | fillNationFallback(staffOnJobDto); |
| | | return staffOnJobDto; |
| | | } |
| | | |
| | | //å¨èåå·¥å¯¼åº |
| | | @Override |
| | | public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) { |
| | | List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); |
| | | ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class); |
| | | fillNationFallback(staffOnJobs); |
| | | ExcelUtil<StaffOnJobDto> util = new ExcelUtil<>(StaffOnJobDto.class); |
| | | util.exportExcel(response, staffOnJobs, "å¨èåå·¥å°è´¦å¯¼åº"); |
| | | } |
| | | |
| | | @Override |
| | | public List<StaffOnJobDto> staffOnJobList(StaffOnJob staffOnJob) { |
| | | return staffOnJobMapper.staffOnJobList(staffOnJob); |
| | | List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob); |
| | | fillNationFallback(staffOnJobs); |
| | | return staffOnJobs; |
| | | } |
| | | |
| | | @Override |
| | |
| | | ExcelUtil<StaffOnJobImportDto> util = new ExcelUtil<>(StaffOnJobImportDto.class); |
| | | List<StaffOnJobImportDto> staffOnJobs = util.importExcel(file.getInputStream()); |
| | | if (CollectionUtils.isEmpty(staffOnJobs)) { |
| | | throw new BaseException("模æ¿é误æå¯¼å
¥æ°æ®ä¸ºç©º"); |
| | | throw new BaseException("Import data is empty"); |
| | | } |
| | | |
| | | Map<String, SysPost> postMap = buildPostMap(); |
| | |
| | | if (e instanceof BaseException) { |
| | | throw (BaseException) e; |
| | | } |
| | | throw new BaseException("导å
¥å¤±è´¥ï¼è¯·æ£æ¥æ¨¡æ¿æ ¼å¼æ¯å¦æ£ç¡®"); |
| | | throw new BaseException("Import failed, please check template and data format"); |
| | | } |
| | | } |
| | | |
| | |
| | | String deptName = normalizeValue(row.getDeptName()); |
| | | |
| | | if (StringUtils.isBlank(staffNo)) { |
| | | throw new BaseException("第" + rowNum + "è¡åå·¥ç¼å·ä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " staffNo cannot be blank"); |
| | | } |
| | | if (!importedStaffNos.add(staffNo)) { |
| | | throw new BaseException("第" + rowNum + "è¡åå·¥ç¼å·éå¤ï¼" + staffNo); |
| | | throw new BaseException("Row " + rowNum + " duplicated staffNo: " + staffNo); |
| | | } |
| | | if (StringUtils.isBlank(normalizeValue(row.getStaffName()))) { |
| | | throw new BaseException("第" + rowNum + "è¡åå·¥å§åä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " staffName cannot be blank"); |
| | | } |
| | | if (StringUtils.isBlank(postName)) { |
| | | throw new BaseException("第" + rowNum + "è¡å²ä½ä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " postName cannot be blank"); |
| | | } |
| | | if (StringUtils.isBlank(deptName)) { |
| | | throw new BaseException("第" + rowNum + "è¡é¨é¨ä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " deptName cannot be blank"); |
| | | } |
| | | if (row.getContractStartTime() == null) { |
| | | throw new BaseException("第" + rowNum + "è¡ååå¼å§æ¥æä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " contractStartTime cannot be blank"); |
| | | } |
| | | if (row.getContractEndTime() == null) { |
| | | throw new BaseException("第" + rowNum + "è¡ååç»ææ¥æä¸è½ä¸ºç©º"); |
| | | throw new BaseException("Row " + rowNum + " contractEndTime cannot be blank"); |
| | | } |
| | | if (row.getEntryDate() == null) { |
| | | throw new BaseException("Row " + rowNum + " entryDate cannot be blank"); |
| | | } |
| | | |
| | | SysPost post = postMap.get(postName); |
| | | if (post == null) { |
| | | throw new BaseException("第" + rowNum + "è¡å²ä½ä¸å卿已åç¨ï¼" + postName); |
| | | throw new BaseException("Row " + rowNum + " post not found or disabled: " + postName); |
| | | } |
| | | SysDept dept = deptMap.get(deptName); |
| | | if (dept == null) { |
| | | throw new BaseException("第" + rowNum + "è¡é¨é¨ä¸å卿已åç¨ï¼" + deptName); |
| | | throw new BaseException("Row " + rowNum + " dept not found or disabled: " + deptName); |
| | | } |
| | | |
| | | StaffOnJobDto staffOnJobDto = new StaffOnJobDto(); |
| | |
| | | staffOnJobDto.setStaffNo(staffNo); |
| | | staffOnJobDto.setStaffName(normalizeValue(row.getStaffName())); |
| | | staffOnJobDto.setSex(normalizeValue(row.getSex())); |
| | | staffOnJobDto.setNativePlace(normalizeValue(row.getNativePlace())); |
| | | staffOnJobDto.setNation(normalizeValue(row.getNation())); |
| | | staffOnJobDto.setNativePlace(normalizeValue(row.getNation())); |
| | | staffOnJobDto.setBirthDate(row.getBirthDate()); |
| | | staffOnJobDto.setIdentityCard(normalizeValue(row.getIdentityCard())); |
| | | staffOnJobDto.setAdress(normalizeValue(row.getAdress())); |
| | | staffOnJobDto.setFirstStudy(normalizeValue(row.getFirstStudy())); |
| | | staffOnJobDto.setProfession(normalizeValue(row.getProfession())); |
| | | staffOnJobDto.setAge(normalizeValue(row.getAge())); |
| | | staffOnJobDto.setPhone(normalizeValue(row.getPhone())); |
| | | staffOnJobDto.setEmergencyContact(normalizeValue(row.getEmergencyContact())); |
| | | staffOnJobDto.setEmergencyContactPhone(normalizeValue(row.getEmergencyContactPhone())); |
| | | staffOnJobDto.setEntryDate(row.getEntryDate()); |
| | | staffOnJobDto.setContractTerm(normalizeValue(row.getContractTerm())); |
| | | staffOnJobDto.setSysPostId(post.getPostId().intValue()); |
| | | staffOnJobDto.setSysDeptId(dept.getDeptId().intValue()); |
| | | syncStaffBasicFields(staffOnJobDto); |
| | | return staffOnJobDto; |
| | | } |
| | | |
| | | private void syncStaffBasicFields(StaffOnJobDto staffOnJobDto) { |
| | | if (staffOnJobDto == null) { |
| | | return; |
| | | } |
| | | staffOnJobDto.setStaffNo(normalizeValue(staffOnJobDto.getStaffNo())); |
| | | staffOnJobDto.setStaffName(normalizeValue(staffOnJobDto.getStaffName())); |
| | | staffOnJobDto.setNation(normalizeValue(staffOnJobDto.getNation())); |
| | | staffOnJobDto.setNativePlace(normalizeValue(staffOnJobDto.getNativePlace())); |
| | | if (StringUtils.isBlank(staffOnJobDto.getNation())) { |
| | | staffOnJobDto.setNation(staffOnJobDto.getNativePlace()); |
| | | } |
| | | if (StringUtils.isBlank(staffOnJobDto.getNativePlace())) { |
| | | staffOnJobDto.setNativePlace(staffOnJobDto.getNation()); |
| | | } |
| | | if (staffOnJobDto.getEntryDate() == null) { |
| | | staffOnJobDto.setEntryDate(staffOnJobDto.getContractStartTime()); |
| | | } |
| | | } |
| | | |
| | | private void fillNationFallback(StaffOnJob staffOnJob) { |
| | | if (staffOnJob == null) { |
| | | return; |
| | | } |
| | | if (StringUtils.isBlank(staffOnJob.getNation())) { |
| | | staffOnJob.setNation(staffOnJob.getNativePlace()); |
| | | } |
| | | if (StringUtils.isBlank(staffOnJob.getNativePlace())) { |
| | | staffOnJob.setNativePlace(staffOnJob.getNation()); |
| | | } |
| | | } |
| | | |
| | | private void fillNationFallback(List<? extends StaffOnJob> staffOnJobs) { |
| | | if (CollectionUtils.isEmpty(staffOnJobs)) { |
| | | return; |
| | | } |
| | | staffOnJobs.forEach(this::fillNationFallback); |
| | | } |
| | | |
| | | private Map<String, SysPost> buildPostMap() { |
| | | SysPost query = new SysPost(); |
| | | query.setStatus("0"); |
| | | return buildUniqueMap(sysPostMapper.selectPostList(query), SysPost::getPostName, "å²ä½"); |
| | | return buildUniqueMap(sysPostMapper.selectPostList(query), SysPost::getPostName, "post"); |
| | | } |
| | | |
| | | private Map<String, SysDept> buildDeptMap() { |
| | | SysDept query = new SysDept(); |
| | | query.setStatus("0"); |
| | | return buildUniqueMap(sysDeptMapper.selectDeptList(query), SysDept::getDeptName, "é¨é¨"); |
| | | return buildUniqueMap(sysDeptMapper.selectDeptList(query), SysDept::getDeptName, "dept"); |
| | | } |
| | | |
| | | private <T> Map<String, T> buildUniqueMap(List<T> dataList, Function<T, String> nameGetter, String fieldName) { |
| | |
| | | .sorted() |
| | | .collect(Collectors.toList()); |
| | | if (!duplicateNames.isEmpty()) { |
| | | throw new BaseException("ç³»ç»ä¸åå¨éå" + fieldName + "ï¼æ æ³å¯¼å
¥ï¼" + String.join("ã", duplicateNames)); |
| | | throw new BaseException("Duplicate " + fieldName + " names: " + String.join(", ", duplicateNames)); |
| | | } |
| | | |
| | | return groupedMap.entrySet().stream() |
| | |
| | | return value == null ? null : value.trim(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String exportCopy(HttpServletResponse response, StaffOnJob staffOnJob) throws Exception { |
| | | String url = "/javaWork/product-inventory-management/file/prod/" + staffOnJob.getStaffName() + "-å³å¨åå书.docx"; |
| | | Configuration cfg = new Configuration(Configuration.VERSION_2_3_32); |
| | | // è®¾ç½®æ¨¡æ¿æä»¶æå¨ç®å½ï¼ç»å¯¹è·¯å¾ï¼ä¾å¦ï¼/templates/ï¼ |
| | | cfg.setClassForTemplateLoading(StaffOnJobServiceImpl.class, "/static"); |
| | | cfg.setDefaultEncoding("UTF-8"); |
| | | //2.å®ä¹éè¦å¡«å
çåé |
| | | // â æé å工信æ¯ï¼å®é
项ç®ä¸å¯ä»æ°æ®åº/Excel读åï¼ |
| | | |
| | | WordDateDto staff = new WordDateDto(); |
| | | BeanUtils.copyProperties(staffOnJob, staff); |
| | | // éè¿ååå¹´éï¼ååå°ææ¥æè®¡ç®ååå¼å§æ¥æï¼å¨è·åå¼å§æ¥æï¼ç»ææ¥æçå¹´ææ¥æ°å |
| | | // ååå°ææ¥æ - ååå¹´éï¼Dateç±»åï¼ |
| | | // 1. å°Date转æ¢ä¸ºInstantï¼æ¶é´æ³ï¼ |
| | | |
| | | Instant instant = staff.getContractExpireTime().toInstant(); |
| | | |
| | | // ä¹å¯ä»¥æå®å
·ä½æ¶åºï¼ä¾å¦Asia/Shanghaiï¼ |
| | | LocalDate localDate = instant.atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); // ååç»ææ¶é´ |
| | | LocalDate localDate1 = localDate.minusYears(Integer.parseInt(staff.getContractTerm()));// ååå¼å§æ¶é´ |
| | | |
| | | // ç¾è®¢æ¥æè½¬æ¢lcoaldate |
| | | LocalDate localDate = instant.atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | LocalDate localDate1 = localDate.minusYears(Integer.parseInt(staff.getContractTerm())); |
| | | LocalDate localDate2 = staff.getSignDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | |
| | | // è¯ç¨æ¥æè½¬æ¢lcoaldate |
| | | LocalDate localDate3 = staff.getTrialStartDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | LocalDate localDate4 = staff.getTrialEndDate().toInstant().atZone(ZoneId.of("Asia/Shanghai")).toLocalDate(); |
| | | |
| | | staff.setQyear(localDate2.getYear() + ""); |
| | | staff.setQmoth(localDate2.getMonthValue() + ""); |
| | | staff.setQday(localDate2.getDayOfMonth() + ""); |
| | | if(staff.getDateSelect().equals("A")){ |
| | | if (staff.getDateSelect().equals("A")) { |
| | | staff.setSyear(localDate1.getYear() + ""); |
| | | staff.setSmoth(localDate1.getMonthValue() + ""); |
| | | staff.setSday(localDate1.getDayOfMonth() + ""); |
| | |
| | | staff.setSeyear(localDate4.getYear() + ""); |
| | | staff.setSemoth(localDate4.getMonthValue() + ""); |
| | | staff.setSeday(localDate4.getDayOfMonth() + ""); |
| | | }else if (staff.getDateSelect().equals("B")){ |
| | | |
| | | } else if (staff.getDateSelect().equals("B")) { |
| | | staff.setBsyear(localDate1.getYear() + ""); |
| | | staff.setBsmoth(localDate1.getMonthValue() + ""); |
| | | staff.setBsday(localDate1.getDayOfMonth() + ""); |
| | |
| | | staff.setBseyear(localDate4.getYear() + ""); |
| | | staff.setBsemoth(localDate4.getMonthValue() + ""); |
| | | staff.setBseday(localDate4.getDayOfMonth() + ""); |
| | | }else if (staff.getDateSelect().equals("C")){ |
| | | } else if (staff.getDateSelect().equals("C")) { |
| | | staff.setCsyear(localDate1.getYear() + ""); |
| | | staff.setCsmoth(localDate1.getMonthValue() + ""); |
| | | staff.setCsday(localDate1.getDayOfMonth() + ""); |
| | | } |
| | | |
| | | Map<String,Object> data = new HashMap<>(); |
| | | data.put("item",staff); |
| | | //3.å è½½XML æ¨¡æ¿ |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("item", staff); |
| | | Template template = cfg.getTemplate("å³å¨åå书.xml"); |
| | | //4.çæå¡«å
åç XML å
容 |
| | | StringWriter out = new StringWriter(); |
| | | template.process(data, out); |
| | | String filledXml = out.toString(); |
| | | //5.å°XMLå
容åå
¥äº¤ä»¶å¹¶æ¹ä¸º.docx æ ¼å¼ |
| | | |
| | | File outputFile = new File(url); |
| | | try(FileOutputStream fos = new FileOutputStream(outputFile); |
| | | OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) { |
| | | try (FileOutputStream fos = new FileOutputStream(outputFile); |
| | | OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8)) { |
| | | osw.write(filledXml); |
| | | } |
| | | return url; |
| | | } |
| | | |
| | | |
| | | |
| | | } |