DbjzService.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package com.ruoyi.zzb.dbjz.service;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.ruoyi.common.annotation.DataSource;
  7. import com.ruoyi.common.core.domain.entity.SysUser;
  8. import com.ruoyi.common.enums.DataSourceType;
  9. import com.ruoyi.common.utils.SecurityUtils;
  10. import com.ruoyi.zzb.common.domain.BaseApproveInfo;
  11. import com.ruoyi.zzb.common.domain.BaseFileInfo;
  12. import com.ruoyi.zzb.common.mapper.BaseApproveInfoMapper;
  13. import com.ruoyi.zzb.common.mapper.BaseFileInfoMapper;
  14. import com.ruoyi.zzb.common.service.BaseService;
  15. import com.ruoyi.zzb.dbjz.domain.DbjzApplyInfo;
  16. import com.ruoyi.zzb.dbjz.domain.DbjzFileSetDTO;
  17. import com.ruoyi.zzb.dbjz.mapper.DbjzApplyInfoMapper;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import java.io.IOException;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. @Slf4j
  28. @Service
  29. @DataSource(value = DataSourceType.SLAVE)
  30. public class DbjzService {
  31. @Autowired
  32. private DbjzApplyInfoMapper dbjzApplyInfoMapper;
  33. @Autowired
  34. private BaseFileInfoMapper baseFileInfoMapper;
  35. @Autowired
  36. private BaseApproveInfoMapper baseApproveInfoMapper;
  37. @Autowired
  38. private BaseService baseService;
  39. /**
  40. * 完成【大病救助】模块需进行文件上传字段项的上传处理逻辑,并组装批量插入这些记录到相关数据表的参数
  41. * @param
  42. */
  43. public List<BaseFileInfo> processUploadAndBuildParams(DbjzFileSetDTO dbjzFileSetDTO, String moduleCode, String applyFormId, String fileStoragePath) throws IOException {
  44. List<BaseFileInfo> dataList = new ArrayList<>();
  45. MultipartFile[] dbjzsqbFiles = dbjzFileSetDTO.getDbjzsqbFiles();
  46. List<BaseFileInfo> dbjzsqbRowDataList = baseService.doProcessUploadAndBuildParams(dbjzsqbFiles, moduleCode, "大病救助", applyFormId, "大病救助申请表", "dbjzsqb", fileStoragePath);
  47. if(dbjzsqbRowDataList.size() > 0){
  48. dataList.addAll(dbjzsqbRowDataList);
  49. }
  50. MultipartFile[] dbjlqzmFiles = dbjzFileSetDTO.getDbjlqzmFiles();
  51. List<BaseFileInfo> dbjlqzmRowDataList = baseService.doProcessUploadAndBuildParams(dbjlqzmFiles, moduleCode, "大病救助", applyFormId, "低保金领取证明", "dbjlqzm", fileStoragePath);
  52. if(dbjlqzmRowDataList.size() > 0){
  53. dataList.addAll(dbjlqzmRowDataList);
  54. }
  55. MultipartFile[] yyfyjnmxzmFiles = dbjzFileSetDTO.getYyfyjnmxzmFiles();
  56. List<BaseFileInfo> yyfyjnmxzmRowDataList = baseService.doProcessUploadAndBuildParams(yyfyjnmxzmFiles, moduleCode, "大病救助", applyFormId, "医药费用缴纳明细证明", "yyfyjnmxzm", fileStoragePath);
  57. if(yyfyjnmxzmRowDataList.size() > 0){
  58. dataList.addAll(yyfyjnmxzmRowDataList);
  59. }
  60. MultipartFile[] zdzmfyjFiles = dbjzFileSetDTO.getZdzmfyjFiles();
  61. List<BaseFileInfo> zdzmfyjRowDataList = baseService.doProcessUploadAndBuildParams(zdzmfyjFiles, moduleCode, "大病救助", applyFormId, "诊断证明复印件", "zdzmfyj", fileStoragePath);
  62. if(zdzmfyjRowDataList.size() > 0){
  63. dataList.addAll(zdzmfyjRowDataList);
  64. }
  65. MultipartFile[] basyfyjFiles = dbjzFileSetDTO.getBasyfyjFiles();
  66. List<BaseFileInfo> basyfyjRowDataList = baseService.doProcessUploadAndBuildParams(basyfyjFiles, moduleCode, "大病救助", applyFormId, "病案首页复印件", "basyfyj", fileStoragePath);
  67. if(basyfyjRowDataList.size() > 0){
  68. dataList.addAll(basyfyjRowDataList);
  69. }
  70. MultipartFile[] sfzfyjFiles = dbjzFileSetDTO.getSfzfyjFiles();
  71. List<BaseFileInfo> sfzfyjRowDataList = baseService.doProcessUploadAndBuildParams(sfzfyjFiles, moduleCode, "大病救助", applyFormId, "身份证复印件", "sfzfyj", fileStoragePath);
  72. if(sfzfyjRowDataList.size() > 0){
  73. dataList.addAll(sfzfyjRowDataList);
  74. }
  75. MultipartFile[] ryjlfyjFiles = dbjzFileSetDTO.getRyjlfyjFiles();
  76. List<BaseFileInfo> ryjlfyjRowDataList = baseService.doProcessUploadAndBuildParams(ryjlfyjFiles, moduleCode, "大病救助", applyFormId, "入院记录复印件", "ryjlfyj", fileStoragePath);
  77. if(ryjlfyjRowDataList.size() > 0){
  78. dataList.addAll(ryjlfyjRowDataList);
  79. }
  80. MultipartFile[] cyjlfyjFiles = dbjzFileSetDTO.getCyjlfyjFiles();
  81. List<BaseFileInfo> cyjlfyjRowDataList = baseService.doProcessUploadAndBuildParams(cyjlfyjFiles, moduleCode, "大病救助", applyFormId, "出院记录复印件", "cyjlfyj", fileStoragePath);
  82. if(cyjlfyjRowDataList.size() > 0){
  83. dataList.addAll(cyjlfyjRowDataList);
  84. }
  85. MultipartFile[] gsFiles = dbjzFileSetDTO.getGsFiles();
  86. List<BaseFileInfo> gsRowDataList = baseService.doProcessUploadAndBuildParams(gsFiles, moduleCode, "大病救助", applyFormId, "公示", "gs", fileStoragePath);
  87. if(gsRowDataList.size() > 0){
  88. dataList.addAll(gsRowDataList);
  89. }
  90. return dataList;
  91. }
  92. /**
  93. * 保存/修改一条【大病救助】申请信息并且批量插入/修改与【大病救助】申请信息相关联的文件信息
  94. * @return
  95. */
  96. @Transactional
  97. public void saveOrUpdateDbjzApplyInfoAndBaseFileInfos(DbjzApplyInfo dbjzApplyInfo, SysUser user, String applyFormId, List<BaseFileInfo> baseFileInfoList){
  98. // 如果当前申请信息对象dbjzApplyInfo的申请单ID为空,代表是新增操作
  99. if(StringUtils.isBlank(dbjzApplyInfo.getApplyFormId())){
  100. dbjzApplyInfo.setCreateUserId(String.valueOf(user.getUserId()));
  101. dbjzApplyInfo.setCreateUserName(user.getNickName());
  102. dbjzApplyInfo.setCreateUserPoliceNo(user.getPoliceNo());
  103. dbjzApplyInfo.setApplyFormId(applyFormId);
  104. int insertRows = dbjzApplyInfoMapper.insert(dbjzApplyInfo);
  105. if(insertRows > 0){
  106. // 批量插入和申请信息关联的文件信息
  107. baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
  108. log.info("【大病救助】申请信息、文件信息均保存成功 申请单ID:{}", applyFormId);
  109. } else {
  110. throw new RuntimeException("数据库【大病救助】申请信息记录未插入 申请单ID:" + applyFormId);
  111. }
  112. } else { // 修改操作
  113. // 根据申请单ID和dbjzApplyInfo对象中的当前属性值去修改当前申请记录
  114. String applyFormIdExist = dbjzApplyInfo.getApplyFormId();
  115. UpdateWrapper<DbjzApplyInfo> updateWrapper = new UpdateWrapper<>();
  116. updateWrapper.eq("APPLY_FORM_ID", applyFormIdExist);
  117. int updateRows = dbjzApplyInfoMapper.update(dbjzApplyInfo, updateWrapper);
  118. if(updateRows > 0){
  119. // 批量修改和申请信息关联的文件信息
  120. // 1.先删除与当前申请记录相关联的全部原始文件记录
  121. baseService.delBaseFileInfosByApplyFormId(applyFormIdExist);
  122. // 2.再根据当前申请记录,批量插入新的文件记录,即可完成对文件信息的批量修改
  123. baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
  124. log.info("【大病救助】申请信息、文件信息均修改成功 申请单ID:{}", applyFormIdExist);
  125. } else {
  126. throw new RuntimeException("数据库【大病救助】申请信息记录未修改 applyFormId:" + applyFormIdExist);
  127. }
  128. }
  129. }
  130. /**
  131. * 审批一条【大病救助】申请信息,并插入一条审批记录
  132. * @return
  133. */
  134. @Transactional
  135. public boolean approveAndSaveApproveInfo(String applyFormId, String optFlag, SysUser user){
  136. // 审批一条【大病救助】申请信息
  137. UpdateWrapper<DbjzApplyInfo> updateWrapper = new UpdateWrapper<>();
  138. updateWrapper.eq("APPLY_FORM_ID", applyFormId);
  139. DbjzApplyInfo dbjzApplyInfoDTO = new DbjzApplyInfo();
  140. dbjzApplyInfoDTO.setApproveStatusCode(optFlag);
  141. String optDesc = "1".equals(optFlag)? "同意":"驳回";
  142. dbjzApplyInfoDTO.setApproveStatusName(optDesc);
  143. int updateRows = dbjzApplyInfoMapper.update(dbjzApplyInfoDTO, updateWrapper);
  144. if(updateRows > 0){
  145. log.info("【大病救助】申请信息已审批 申请单ID:{},审批操作描述:{}", applyFormId, optDesc);
  146. // 插入一条审批记录
  147. BaseApproveInfo baseApproveInfo = new BaseApproveInfo();
  148. baseApproveInfo.setModuleCode("dbjz");
  149. baseApproveInfo.setApplyFormId(applyFormId);
  150. QueryWrapper<DbjzApplyInfo> queryWrapper = new QueryWrapper<>();
  151. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  152. DbjzApplyInfo dbjzApplyInfo = dbjzApplyInfoMapper.selectById(applyFormId);
  153. baseApproveInfo.setCreateUserId(dbjzApplyInfo.getCreateUserId());
  154. baseApproveInfo.setCreateUserName(dbjzApplyInfo.getCreateUserName());
  155. baseApproveInfo.setCreateUserPoliceNo(dbjzApplyInfo.getCreateUserPoliceNo());
  156. baseApproveInfo.setCreateTime(dbjzApplyInfo.getCreateTime());
  157. baseApproveInfo.setApproveUserId(String.valueOf(user.getUserId()));
  158. baseApproveInfo.setApproveUserName(user.getNickName());
  159. baseApproveInfo.setApproveUserPoliceNo(user.getPoliceNo());
  160. baseApproveInfo.setApproveResultCode(optFlag);
  161. baseApproveInfo.setApproveResultDesc(optDesc);
  162. int insertRows = baseApproveInfoMapper.insert(baseApproveInfo);
  163. if(insertRows > 0){
  164. log.info("【大病救助】审批信息保存成功 申请单ID:{},审批人警号:{},审批结果说明:{}", applyFormId, user.getPoliceNo(), optDesc);
  165. return true;
  166. }else {
  167. throw new RuntimeException("数据库【大病救助】审批信息记录未插入");
  168. }
  169. }else {
  170. throw new RuntimeException("数据库【大病救助】申请信息记录未更新或不存在");
  171. }
  172. }
  173. /**
  174. * 根据 审批状态 分页查询【大病救助】申请信息
  175. * @param
  176. * @return
  177. */
  178. public Page<DbjzApplyInfo> getDataByPage(Integer approveStatus, String type, JSONObject reqBody){
  179. Integer pageIndex = reqBody.getInteger("pageIndex") == null? 1:reqBody.getInteger("pageIndex");
  180. Integer pageSize = reqBody.getInteger("pageSize") == null? 10:reqBody.getInteger("pageSize");
  181. String applyFormId = reqBody.getString("applyFormId");
  182. // 构造查询条件,支持多条件查询
  183. QueryWrapper<DbjzApplyInfo> queryWrapper = new QueryWrapper<>();
  184. // 1.查询当前用户能看到的整个系统中的全量"待审批"的记录,暂不考虑用户所属具体部门的因素
  185. if (approveStatus != null && approveStatus == 0 && "approve".equals(type)){
  186. // 匹配列表中的一条,对"待审批"的申请信息做数据回显及提供审批功能
  187. if(StringUtils.isNotBlank(applyFormId)){
  188. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  189. }
  190. queryWrapper.eq("APPROVE_STATUS_CODE", 0);
  191. }
  192. // 2.查询当前用户提交的全量"审批中"的申请记录(包含待审批记录、审批驳回记录)
  193. SysUser user = SecurityUtils.getLoginUser().getUser();
  194. if (approveStatus != null && approveStatus == 3 && "apply".equals(type)){
  195. // 匹配列表中的一条,对"审批中"的申请信息做数据回显及提供修改功能
  196. if(StringUtils.isNotBlank(applyFormId)){
  197. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  198. }
  199. queryWrapper.eq("CREATE_USER_POLICE_NO", user.getPoliceNo());
  200. // 待审批和审批驳回(允许修改后继续提交)
  201. queryWrapper.and(qw -> qw.eq("APPROVE_STATUS_CODE", 0).or().eq("APPROVE_STATUS_CODE", 2));
  202. }
  203. // 3.查询当前用户提交的全量"已审批"的申请记录(只包含审批通过记录)
  204. if (approveStatus != null && approveStatus == 1 && "apply".equals(type)){
  205. // 匹配列表中的一条,对"已审批"的申请信息做数据回显
  206. if(StringUtils.isNotBlank(applyFormId)){
  207. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  208. }
  209. queryWrapper.eq("CREATE_USER_POLICE_NO", user.getPoliceNo());
  210. queryWrapper.eq("APPROVE_STATUS_CODE", 1);
  211. }
  212. queryWrapper.orderByDesc("CREATE_TIME");
  213. Page<DbjzApplyInfo> page = new Page<>(pageIndex, pageSize);
  214. return dbjzApplyInfoMapper.selectPage(page, queryWrapper);
  215. }
  216. }