From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 160 insertions(+), 0 deletions(-) diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java new file mode 100644 index 0000000..51a207f --- /dev/null +++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPersonnelCapacityServiceImpl.java @@ -0,0 +1,160 @@ +package com.ruoyi.personnel.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.ruoyi.common.constant.MenuJumpPathConstants; +import com.ruoyi.common.core.domain.entity.InformationNotification; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.DateImageUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.WxCpUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityDto; +import com.ruoyi.personnel.dto.PersonPersonnelCapacityExportDto; +import com.ruoyi.personnel.pojo.PersonPersonnelCapacity; +import com.ruoyi.personnel.mapper.PersonPersonnelCapacityMapper; +import com.ruoyi.personnel.service.PersonPersonnelCapacityService; +import com.ruoyi.system.mapper.UserMapper; +import com.ruoyi.system.service.InformationNotificationService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +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.util.HashMap; + +/** + * <p> + * 浜哄憳鑳藉姏 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author + * @since 2024-10-10 11:26:18 + */ +@Service +public class PersonPersonnelCapacityServiceImpl extends ServiceImpl<PersonPersonnelCapacityMapper, PersonPersonnelCapacity> implements PersonPersonnelCapacityService { + + @Resource + private UserMapper userMapper; + @Resource + private InformationNotificationService informationNotificationService; + + @Resource + private ThreadPoolTaskExecutor threadPoolTaskExecutor; + + + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<PersonPersonnelCapacityDto> personPersonnelCapacityPage(Page page, Integer departLimsId, Integer userId, String userName) { + return baseMapper.personPersonnelCapacityPage(page, departLimsId, userId, userName); + } + + /** + * 瀵煎嚭浜哄憳鑳藉姏 + * @param id + * @param response + */ + @Override + public void exportPersonnelCapacity(Integer id, HttpServletResponse response) { + PersonPersonnelCapacityExportDto capacityExportDto = baseMapper.selectExportPersonnelCapacity(id); + + // 纭浜� + String confirmUrl = null; + if (capacityExportDto.getConfirmOperatingPersonnelId() != null) { + confirmUrl = userMapper.selectById(capacityExportDto.getConfirmOperatingPersonnelId()).getSignatureUrl(); + if (StringUtils.isBlank(confirmUrl)) { + throw new ErrorException("缂哄皯纭浜虹鍚�"); + } + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/personnel-capacity.docx"); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String finalConfirmUrl = confirmUrl; + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("capacity", capacityExportDto); + put("confirmUrl", StringUtils.isNotBlank(finalConfirmUrl) ? Pictures.ofLocal(imgUrl + "/" + finalConfirmUrl).create() : null); + put("confirmDateUrl", capacityExportDto.getConfirmDate() != null ? + Pictures.ofStream(DateImageUtil.createDateImage(capacityExportDto.getConfirmDate())).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(); + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + } + + /** + * 鎻愪氦纭浜哄憳鑳藉姏 + * @param personPersonnelCapacity + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void submitConfirmPersonnelCapability(PersonPersonnelCapacity personPersonnelCapacity) { + if (personPersonnelCapacity.getConfirmOperatingPersonnelId() == null) { + throw new ErrorException("缂哄皯纭浜�"); + } + User formUser = userMapper.selectById(personPersonnelCapacity.getUserId()); + + Integer userId = SecurityUtils.getUserId().intValue(); + User user = userMapper.selectById(userId); + // 娑堟伅鍙戦�� + InformationNotification info = new InformationNotification(); + // 鍙戦�佷汉 + info.setCreateUser(user.getName()); + info.setMessageType("6"); + info.setTheme("CNAS浜哄憳鑳藉姏纭閫氱煡"); + info.setContent(formUser.getName() + "鐨勪汉鍛樿兘鍔涘緟纭"); + info.setSenderId(userId); + // 鎺ユ敹浜� + info.setConsigneeId(personPersonnelCapacity.getConfirmOperatingPersonnelId()); + info.setJumpPath(MenuJumpPathConstants.PERSONNEL); + informationNotificationService.addInformationNotification(info); + this.saveOrUpdate(personPersonnelCapacity); + + // 鍙戦�佷紒涓氬井淇¢�氱煡 + threadPoolTaskExecutor.execute(() -> { + // 鏌ヨ鎺ユ敹浜� + User personnel = userMapper.selectById(personPersonnelCapacity.getConfirmOperatingPersonnelId()); + + String message = ""; + message += "CNAS浜哄憳鑳藉姏纭閫氱煡"; + message += "\n璇峰幓璧勬簮绠$悊-浜哄憳-浜哄憳鑳藉姏濉啓"; + message += "\n" + formUser.getName() + "鐨勪汉鍛樿兘鍔涘緟纭"; + //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡 + try { + WxCpUtils.inform(personnel.getAccount(), message, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + } + +} -- Gitblit v1.9.3