ZywwService.java 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.ruoyi.zzb.zyww.service;
  2. import com.ruoyi.common.annotation.DataSource;
  3. import com.ruoyi.common.core.domain.entity.SysUser;
  4. import com.ruoyi.common.enums.DataSourceType;
  5. import com.ruoyi.common.utils.file.FileUploadUtils;
  6. import com.ruoyi.framework.config.ServerConfig;
  7. import com.ruoyi.zzb.common.CommonUtils;
  8. import com.ruoyi.zzb.zyww.domain.BaseFileInfo;
  9. import com.ruoyi.zzb.zyww.domain.Zyww;
  10. import com.ruoyi.zzb.zyww.domain.ZywwFileDTO;
  11. import com.ruoyi.zzb.zyww.mapper.BaseFileInfoMapper;
  12. import com.ruoyi.zzb.zyww.mapper.ZywwMapper;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.core.io.FileSystemResource;
  17. import org.springframework.mail.javamail.JavaMailSender;
  18. import org.springframework.mail.javamail.MimeMessageHelper;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import org.springframework.web.multipart.MultipartFile;
  22. import javax.mail.MessagingException;
  23. import javax.mail.internet.MimeMessage;
  24. import java.io.File;
  25. import java.io.IOException;
  26. import java.util.ArrayList;
  27. import java.util.Date;
  28. import java.util.List;
  29. @Slf4j
  30. @Service
  31. @DataSource(value = DataSourceType.SLAVE)
  32. public class ZywwService {
  33. @Autowired
  34. private ZywwMapper zywwMapper;
  35. @Autowired
  36. private JavaMailSender mailSender;
  37. @Value("${spring.mail.username}")
  38. private String from;
  39. @Autowired
  40. private ServerConfig serverConfig;
  41. @Autowired
  42. private BaseFileInfoMapper baseFileInfoMapper;
  43. /**
  44. * 发送一条带附件的邮件消息
  45. * @param to
  46. * @param subject
  47. * @param text
  48. * @param attachmentPath
  49. * @throws MessagingException
  50. */
  51. public void sendEmail(String to, String subject, String text, String attachmentPath) throws MessagingException {
  52. MimeMessage message = mailSender.createMimeMessage();
  53. MimeMessageHelper helper = new MimeMessageHelper(message, true);
  54. helper.setFrom(from);
  55. helper.setTo(to);
  56. helper.setSubject(subject);
  57. helper.setText(text);
  58. FileSystemResource file = new FileSystemResource(new File(attachmentPath));
  59. // 添加附件
  60. helper.addAttachment(file.getFilename(), file);
  61. mailSender.send(message);
  62. }
  63. /**
  64. * 完成【住院慰问】模块需进行文件上传字段项的上传处理逻辑,并组装批量插入这些记录到相关数据表的参数
  65. * @param
  66. */
  67. public List<BaseFileInfo> processUploadAndBuildParams(ZywwFileDTO zywwFileDTO, String moduleCode, String applyFormId, String fileStoragePath) throws IOException {
  68. List<BaseFileInfo> dataList = new ArrayList<>();
  69. MultipartFile[] zywwsqbFiles = zywwFileDTO.getZywwsqbFiles();
  70. List<BaseFileInfo> zywwsqbRowDataList = doProcessUploadAndBuildParams(zywwsqbFiles, moduleCode, applyFormId, "住院慰问申请表", "zywwsqb", fileStoragePath);
  71. if(zywwsqbRowDataList.size() > 0){
  72. dataList.addAll(zywwsqbRowDataList);
  73. }
  74. MultipartFile[] zywwjhzsqbFiles = zywwFileDTO.getZywwjhzsqbFiles();
  75. List<BaseFileInfo> zywwjhzsqbRowDataList = doProcessUploadAndBuildParams(zywwjhzsqbFiles, moduleCode, applyFormId, "住院慰问金汇总申请表", "zywwjhzsqb", fileStoragePath);
  76. if(zywwjhzsqbRowDataList.size() > 0){
  77. dataList.addAll(zywwjhzsqbRowDataList);
  78. }
  79. MultipartFile[] jcghwwjsbbFiles = zywwFileDTO.getJcghwwjsbbFiles();
  80. List<BaseFileInfo> jcghwwjsbbRowDataList = doProcessUploadAndBuildParams(jcghwwjsbbFiles, moduleCode, applyFormId, "基层工会慰问金申报表", "jcghwwjsbb", fileStoragePath);
  81. if(jcghwwjsbbRowDataList.size() > 0){
  82. dataList.addAll(jcghwwjsbbRowDataList);
  83. }
  84. MultipartFile[] zzzmFiles = zywwFileDTO.getZzzmFiles();
  85. List<BaseFileInfo> zzzmRowDataList = doProcessUploadAndBuildParams(zzzmFiles, moduleCode, applyFormId, "在职证明", "zzzm", fileStoragePath);
  86. if(zzzmRowDataList.size() > 0){
  87. dataList.addAll(zzzmRowDataList);
  88. }
  89. MultipartFile[] gsFiles = zywwFileDTO.getGsFiles();
  90. List<BaseFileInfo> gsRowDataList = doProcessUploadAndBuildParams(gsFiles, moduleCode, applyFormId, "公示", "gs", fileStoragePath);
  91. if(gsRowDataList.size() > 0){
  92. dataList.addAll(gsRowDataList);
  93. }
  94. MultipartFile[] sfzfyjFiles = zywwFileDTO.getSfzfyjFiles();
  95. List<BaseFileInfo> sfzfyjRowDataList = doProcessUploadAndBuildParams(sfzfyjFiles, moduleCode, applyFormId, "身份证复印件", "sfzfyj", fileStoragePath);
  96. if(sfzfyjRowDataList.size() > 0){
  97. dataList.addAll(sfzfyjRowDataList);
  98. }
  99. MultipartFile[] ghhykfyjFiles = zywwFileDTO.getGhhykfyjFiles();
  100. List<BaseFileInfo> ghhykfyjRowDataList = doProcessUploadAndBuildParams(ghhykfyjFiles, moduleCode, applyFormId, "工会会员卡复印件", "ghhykfyj", fileStoragePath);
  101. if(ghhykfyjRowDataList.size() > 0){
  102. dataList.addAll(ghhykfyjRowDataList);
  103. }
  104. MultipartFile[] zybasyfyjFiles = zywwFileDTO.getZybasyfyjFiles();
  105. List<BaseFileInfo> zybasyfyjRowDataList = doProcessUploadAndBuildParams(zybasyfyjFiles, moduleCode, applyFormId, "住院病案首页复印件", "zybasyfyj", fileStoragePath);
  106. if(zybasyfyjRowDataList.size() > 0){
  107. dataList.addAll(zybasyfyjRowDataList);
  108. }
  109. MultipartFile[] zdzmfyjFiles = zywwFileDTO.getZdzmfyjFiles();
  110. List<BaseFileInfo> zdzmfyjRowDataList = doProcessUploadAndBuildParams(zdzmfyjFiles, moduleCode, applyFormId, "诊断证明复印件", "zdzmfyj", fileStoragePath);
  111. if(zdzmfyjRowDataList.size() > 0){
  112. dataList.addAll(zdzmfyjRowDataList);
  113. }
  114. MultipartFile[] gszmFiles = zywwFileDTO.getGszmFiles();
  115. List<BaseFileInfo> gszmRowDataList = doProcessUploadAndBuildParams(gszmFiles, moduleCode, applyFormId, "工伤证明", "gszm", fileStoragePath);
  116. if(gszmRowDataList.size() > 0){
  117. dataList.addAll(gszmRowDataList);
  118. }
  119. MultipartFile[] ssjlFiles = zywwFileDTO.getSsjlFiles();
  120. List<BaseFileInfo> ssjlRowDataList = doProcessUploadAndBuildParams(ssjlFiles, moduleCode, applyFormId, "手术记录", "ssjl", fileStoragePath);
  121. if(ssjlRowDataList.size() > 0){
  122. dataList.addAll(ssjlRowDataList);
  123. }
  124. return dataList;
  125. }
  126. public List<BaseFileInfo> doProcessUploadAndBuildParams(MultipartFile[] files, String moduleCode, String applyFormId, String fileTypeName, String fileTypeCode, String fileStoragePath) throws IOException {
  127. List<BaseFileInfo> rowDataList = new ArrayList<>();
  128. if(null != files && files.length > 0){
  129. for (MultipartFile file : files) {
  130. if (!file.isEmpty()) {
  131. // 原始文件名
  132. String originalFilename = file.getOriginalFilename();
  133. // 文件扩展名
  134. String fileExtensions = CommonUtils.getFileExtension(originalFilename);
  135. // 文件存储ID(MD5值)
  136. String fileStorageId = CommonUtils.md5(originalFilename + new Date().getTime());
  137. // 上传文件并返回新文件名称
  138. String newFileName = FileUploadUtils.upload(fileStoragePath, file);
  139. // 文件访问路径
  140. String fileRequestPath = serverConfig.getUrl() + newFileName;
  141. BaseFileInfo baseFileInfo = new BaseFileInfo();
  142. baseFileInfo.setModuleCode(moduleCode);
  143. baseFileInfo.setApplyFormId(applyFormId);
  144. baseFileInfo.setFileTypeName(fileTypeName);
  145. baseFileInfo.setFileTypeCode(fileTypeCode);
  146. baseFileInfo.setFileOriginalName(originalFilename);
  147. baseFileInfo.setFileExtensions(fileExtensions);
  148. baseFileInfo.setFileStorageId(fileStorageId);
  149. baseFileInfo.setFileRequestPath(fileRequestPath);
  150. baseFileInfo.setFileStoragePath(fileStoragePath);
  151. rowDataList.add(baseFileInfo);
  152. }
  153. }
  154. }
  155. return rowDataList;
  156. }
  157. /**
  158. * 保存一条【住院慰问】申请信息并且批量插入与【住院慰问】申请信息相关联的文件信息
  159. * @return
  160. */
  161. @Transactional
  162. public void saveZywwApplyInfoAndBaseFileInfos(Zyww zyww, SysUser user, String applyFormId, List<BaseFileInfo> baseFileInfoList){
  163. // 设置当前登录的用户信息
  164. zyww.setCreateUserId(String.valueOf(user.getUserId()));
  165. zyww.setCreateUserName(user.getNickName());
  166. zyww.setCreateUserPoliceNo(user.getRemark());
  167. // 插入申请信息
  168. zyww.setApplyFormId(applyFormId);
  169. int rows = zywwMapper.insert(zyww);
  170. if(rows > 0){
  171. log.info("【住院慰问】申请信息保存成功");
  172. // 批量插入和申请信息关联的文件信息
  173. baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
  174. log.info("【住院慰问】文件信息批量保存成功 applyFormId:{}", applyFormId);
  175. }
  176. }
  177. /**
  178. * 根据applyFormId 删除一条【住院慰问】申请信息和与之关联的文件信息
  179. * @param applyFormId
  180. * @return
  181. */
  182. @Transactional
  183. public boolean delZywwApplyInfoAndBaseFileInfos(String applyFormId){
  184. int rows = zywwMapper.deleteById(applyFormId);
  185. if(rows > 0){
  186. log.info("【住院慰问】申请信息删除成功 applyFormId:{}", applyFormId);
  187. int baseFileInfoRows = baseFileInfoMapper.deleteById(applyFormId);
  188. if(baseFileInfoRows > 0){
  189. log.info("【住院慰问】申请信息关联的文件信息删除成功 applyFormId:{},删除的数据条数:{}", applyFormId, baseFileInfoRows);
  190. return true;
  191. }
  192. }
  193. return false;
  194. }
  195. }