|
@@ -0,0 +1,222 @@
|
|
|
+package com.ruoyi.zzb.zyww.service;
|
|
|
+
|
|
|
+import com.ruoyi.common.annotation.DataSource;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
+import com.ruoyi.common.enums.DataSourceType;
|
|
|
+import com.ruoyi.common.utils.file.FileUploadUtils;
|
|
|
+import com.ruoyi.framework.config.ServerConfig;
|
|
|
+import com.ruoyi.zzb.common.CommonUtils;
|
|
|
+import com.ruoyi.zzb.zyww.domain.BaseFileInfo;
|
|
|
+import com.ruoyi.zzb.zyww.domain.Zyww;
|
|
|
+import com.ruoyi.zzb.zyww.domain.ZywwFileDTO;
|
|
|
+import com.ruoyi.zzb.zyww.mapper.BaseFileInfoMapper;
|
|
|
+import com.ruoyi.zzb.zyww.mapper.ZywwMapper;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.core.io.FileSystemResource;
|
|
|
+import org.springframework.mail.javamail.JavaMailSender;
|
|
|
+import org.springframework.mail.javamail.MimeMessageHelper;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+import javax.mail.MessagingException;
|
|
|
+import javax.mail.internet.MimeMessage;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@DataSource(value = DataSourceType.SLAVE)
|
|
|
+public class ZywwService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZywwMapper zywwMapper;
|
|
|
+ @Autowired
|
|
|
+ private JavaMailSender mailSender;
|
|
|
+ @Value("${spring.mail.username}")
|
|
|
+ private String from;
|
|
|
+ @Autowired
|
|
|
+ private ServerConfig serverConfig;
|
|
|
+ @Autowired
|
|
|
+ private BaseFileInfoMapper baseFileInfoMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送一条带附件的邮件消息
|
|
|
+ * @param to
|
|
|
+ * @param subject
|
|
|
+ * @param text
|
|
|
+ * @param attachmentPath
|
|
|
+ * @throws MessagingException
|
|
|
+ */
|
|
|
+ public void sendEmail(String to, String subject, String text, String attachmentPath) throws MessagingException {
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
|
|
|
+ helper.setFrom(from);
|
|
|
+ helper.setTo(to);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(text);
|
|
|
+ FileSystemResource file = new FileSystemResource(new File(attachmentPath));
|
|
|
+ // 添加附件
|
|
|
+ helper.addAttachment(file.getFilename(), file);
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 完成【住院慰问】模块需进行文件上传字段项的上传处理逻辑,并组装批量插入这些记录到相关数据表的参数
|
|
|
+ * @param
|
|
|
+ */
|
|
|
+ public List<BaseFileInfo> processUploadAndBuildParams(ZywwFileDTO zywwFileDTO, String moduleCode, String applyFormId, String fileStoragePath) throws IOException {
|
|
|
+ List<BaseFileInfo> dataList = new ArrayList<>();
|
|
|
+ MultipartFile[] zywwsqbFiles = zywwFileDTO.getZywwsqbFiles();
|
|
|
+ List<BaseFileInfo> zywwsqbRowDataList = doProcessUploadAndBuildParams(zywwsqbFiles, moduleCode, applyFormId, "住院慰问申请表", "zywwsqb", fileStoragePath);
|
|
|
+ if(zywwsqbRowDataList.size() > 0){
|
|
|
+ dataList.addAll(zywwsqbRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] zywwjhzsqbFiles = zywwFileDTO.getZywwjhzsqbFiles();
|
|
|
+ List<BaseFileInfo> zywwjhzsqbRowDataList = doProcessUploadAndBuildParams(zywwjhzsqbFiles, moduleCode, applyFormId, "住院慰问金汇总申请表", "zywwjhzsqb", fileStoragePath);
|
|
|
+ if(zywwjhzsqbRowDataList.size() > 0){
|
|
|
+ dataList.addAll(zywwjhzsqbRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] jcghwwjsbbFiles = zywwFileDTO.getJcghwwjsbbFiles();
|
|
|
+ List<BaseFileInfo> jcghwwjsbbRowDataList = doProcessUploadAndBuildParams(jcghwwjsbbFiles, moduleCode, applyFormId, "基层工会慰问金申报表", "jcghwwjsbb", fileStoragePath);
|
|
|
+ if(jcghwwjsbbRowDataList.size() > 0){
|
|
|
+ dataList.addAll(jcghwwjsbbRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] zzzmFiles = zywwFileDTO.getZzzmFiles();
|
|
|
+ List<BaseFileInfo> zzzmRowDataList = doProcessUploadAndBuildParams(zzzmFiles, moduleCode, applyFormId, "在职证明", "zzzm", fileStoragePath);
|
|
|
+ if(zzzmRowDataList.size() > 0){
|
|
|
+ dataList.addAll(zzzmRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] gsFiles = zywwFileDTO.getGsFiles();
|
|
|
+ List<BaseFileInfo> gsRowDataList = doProcessUploadAndBuildParams(gsFiles, moduleCode, applyFormId, "公示", "gs", fileStoragePath);
|
|
|
+ if(gsRowDataList.size() > 0){
|
|
|
+ dataList.addAll(gsRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] sfzfyjFiles = zywwFileDTO.getSfzfyjFiles();
|
|
|
+ List<BaseFileInfo> sfzfyjRowDataList = doProcessUploadAndBuildParams(sfzfyjFiles, moduleCode, applyFormId, "身份证复印件", "sfzfyj", fileStoragePath);
|
|
|
+ if(sfzfyjRowDataList.size() > 0){
|
|
|
+ dataList.addAll(sfzfyjRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] ghhykfyjFiles = zywwFileDTO.getGhhykfyjFiles();
|
|
|
+ List<BaseFileInfo> ghhykfyjRowDataList = doProcessUploadAndBuildParams(ghhykfyjFiles, moduleCode, applyFormId, "工会会员卡复印件", "ghhykfyj", fileStoragePath);
|
|
|
+ if(ghhykfyjRowDataList.size() > 0){
|
|
|
+ dataList.addAll(ghhykfyjRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] zybasyfyjFiles = zywwFileDTO.getZybasyfyjFiles();
|
|
|
+ List<BaseFileInfo> zybasyfyjRowDataList = doProcessUploadAndBuildParams(zybasyfyjFiles, moduleCode, applyFormId, "住院病案首页复印件", "zybasyfyj", fileStoragePath);
|
|
|
+ if(zybasyfyjRowDataList.size() > 0){
|
|
|
+ dataList.addAll(zybasyfyjRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] zdzmfyjFiles = zywwFileDTO.getZdzmfyjFiles();
|
|
|
+ List<BaseFileInfo> zdzmfyjRowDataList = doProcessUploadAndBuildParams(zdzmfyjFiles, moduleCode, applyFormId, "诊断证明复印件", "zdzmfyj", fileStoragePath);
|
|
|
+ if(zdzmfyjRowDataList.size() > 0){
|
|
|
+ dataList.addAll(zdzmfyjRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] gszmFiles = zywwFileDTO.getGszmFiles();
|
|
|
+ List<BaseFileInfo> gszmRowDataList = doProcessUploadAndBuildParams(gszmFiles, moduleCode, applyFormId, "工伤证明", "gszm", fileStoragePath);
|
|
|
+ if(gszmRowDataList.size() > 0){
|
|
|
+ dataList.addAll(gszmRowDataList);
|
|
|
+ }
|
|
|
+ MultipartFile[] ssjlFiles = zywwFileDTO.getSsjlFiles();
|
|
|
+ List<BaseFileInfo> ssjlRowDataList = doProcessUploadAndBuildParams(ssjlFiles, moduleCode, applyFormId, "手术记录", "ssjl", fileStoragePath);
|
|
|
+ if(ssjlRowDataList.size() > 0){
|
|
|
+ dataList.addAll(ssjlRowDataList);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public List<BaseFileInfo> doProcessUploadAndBuildParams(MultipartFile[] files, String moduleCode, String applyFormId, String fileTypeName, String fileTypeCode, String fileStoragePath) throws IOException {
|
|
|
+ List<BaseFileInfo> rowDataList = new ArrayList<>();
|
|
|
+ if(null != files && files.length > 0){
|
|
|
+ for (MultipartFile file : files) {
|
|
|
+ if (!file.isEmpty()) {
|
|
|
+ // 原始文件名
|
|
|
+ String originalFilename = file.getOriginalFilename();
|
|
|
+ // 文件扩展名
|
|
|
+ String fileExtensions = CommonUtils.getFileExtension(originalFilename);
|
|
|
+ // 文件存储ID(MD5值)
|
|
|
+ String fileStorageId = CommonUtils.md5(originalFilename + new Date().getTime());
|
|
|
+ // 上传文件并返回新文件名称
|
|
|
+ String newFileName = FileUploadUtils.upload(fileStoragePath, file);
|
|
|
+ // 文件访问路径
|
|
|
+ String fileRequestPath = serverConfig.getUrl() + newFileName;
|
|
|
+
|
|
|
+ BaseFileInfo baseFileInfo = new BaseFileInfo();
|
|
|
+ baseFileInfo.setModuleCode(moduleCode);
|
|
|
+ baseFileInfo.setApplyFormId(applyFormId);
|
|
|
+ baseFileInfo.setFileTypeName(fileTypeName);
|
|
|
+ baseFileInfo.setFileTypeCode(fileTypeCode);
|
|
|
+ baseFileInfo.setFileOriginalName(originalFilename);
|
|
|
+ baseFileInfo.setFileExtensions(fileExtensions);
|
|
|
+ baseFileInfo.setFileStorageId(fileStorageId);
|
|
|
+ baseFileInfo.setFileRequestPath(fileRequestPath);
|
|
|
+ baseFileInfo.setFileStoragePath(fileStoragePath);
|
|
|
+ rowDataList.add(baseFileInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rowDataList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存一条【住院慰问】申请信息并且批量插入与【住院慰问】申请信息相关联的文件信息
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void saveZywwApplyInfoAndBaseFileInfos(Zyww zyww, SysUser user, String applyFormId, List<BaseFileInfo> baseFileInfoList){
|
|
|
+ // 设置当前登录的用户信息
|
|
|
+ zyww.setCreateUserId(String.valueOf(user.getUserId()));
|
|
|
+ zyww.setCreateUserName(user.getNickName());
|
|
|
+ zyww.setCreateUserPoliceNo(user.getRemark());
|
|
|
+ // 插入申请信息
|
|
|
+ zyww.setApplyFormId(applyFormId);
|
|
|
+ int rows = zywwMapper.insert(zyww);
|
|
|
+ if(rows > 0){
|
|
|
+ log.info("【住院慰问】申请信息保存成功");
|
|
|
+ // 批量插入和申请信息关联的文件信息
|
|
|
+ baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
|
|
|
+ log.info("【住院慰问】文件信息批量保存成功 applyFormId:{}", applyFormId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据applyFormId 删除一条【住院慰问】申请信息和与之关联的文件信息
|
|
|
+ * @param applyFormId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public boolean delZywwApplyInfoAndBaseFileInfos(String applyFormId){
|
|
|
+ int rows = zywwMapper.deleteById(applyFormId);
|
|
|
+ if(rows > 0){
|
|
|
+ log.info("【住院慰问】申请信息删除成功 applyFormId:{}", applyFormId);
|
|
|
+ int baseFileInfoRows = baseFileInfoMapper.deleteById(applyFormId);
|
|
|
+ if(baseFileInfoRows > 0){
|
|
|
+ log.info("【住院慰问】申请信息关联的文件信息删除成功 applyFormId:{},删除的数据条数:{}", applyFormId, baseFileInfoRows);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|