HybzService.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. package com.ruoyi.zzb.hybz.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.service.BaseService;
  11. import com.ruoyi.zzb.common.domain.BaseApproveInfo;
  12. import com.ruoyi.zzb.common.domain.BaseFileInfo;
  13. import com.ruoyi.zzb.common.mapper.BaseApproveInfoMapper;
  14. import com.ruoyi.zzb.common.mapper.BaseFileInfoMapper;
  15. import com.ruoyi.zzb.hybz.domain.HybzApplyInfo;
  16. import com.ruoyi.zzb.hybz.domain.HybzFileSetDTO;
  17. import com.ruoyi.zzb.hybz.mapper.HybzApplyInfoMapper;
  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.Date;
  27. import java.util.List;
  28. @Slf4j
  29. @Service
  30. @DataSource(value = DataSourceType.SLAVE)
  31. public class HybzService {
  32. @Autowired
  33. private HybzApplyInfoMapper hybzApplyInfoMapper;
  34. @Autowired
  35. private BaseFileInfoMapper baseFileInfoMapper;
  36. @Autowired
  37. private BaseApproveInfoMapper baseApproveInfoMapper;
  38. @Autowired
  39. private BaseService baseService;
  40. /**
  41. * 完成【会员保障】模块需进行文件上传字段项的上传处理逻辑,并组装批量插入这些记录到相关数据表的参数
  42. *
  43. * @param
  44. */
  45. public List<BaseFileInfo> processUploadAndBuildParams(HybzFileSetDTO hybzFileSetDTO, String moduleCode, String moduleName, String applyFormId, String fileStoragePath) throws IOException {
  46. List<BaseFileInfo> dataList = new ArrayList<>();
  47. MultipartFile[] ckhyspbFiles = hybzFileSetDTO.getCkhyspbFiles();
  48. List<BaseFileInfo> ckhyspbRowDataList = baseService.doProcessUploadAndBuildParams(ckhyspbFiles, moduleCode, moduleName, applyFormId, "持卡会员审批表", "ckhyspb", fileStoragePath);
  49. if (ckhyspbRowDataList.size() > 0) {
  50. dataList.addAll(ckhyspbRowDataList);
  51. }
  52. MultipartFile[] sfzfyjFiles = hybzFileSetDTO.getSfzfyjFiles();
  53. List<BaseFileInfo> sfzfyjRowDataList = baseService.doProcessUploadAndBuildParams(sfzfyjFiles, moduleCode, moduleName, applyFormId, "身份证复印件", "sfzfyj", fileStoragePath);
  54. if (sfzfyjRowDataList.size() > 0) {
  55. dataList.addAll(sfzfyjRowDataList);
  56. }
  57. MultipartFile[] hykfyjFiles = hybzFileSetDTO.getHykfyjFiles();
  58. List<BaseFileInfo> hykfyjRowDataList = baseService.doProcessUploadAndBuildParams(hykfyjFiles, moduleCode, moduleName, applyFormId, "会员卡复印件", "hykfyj", fileStoragePath);
  59. if (hykfyjRowDataList.size() > 0) {
  60. dataList.addAll(hykfyjRowDataList);
  61. }
  62. MultipartFile[] zdzmyjFiles = hybzFileSetDTO.getZdzmyjFiles();
  63. List<BaseFileInfo> zdzmyjRowDataList = baseService.doProcessUploadAndBuildParams(zdzmyjFiles, moduleCode, moduleName, applyFormId, "诊断证明原件", "zdzmyj", fileStoragePath);
  64. if (zdzmyjRowDataList.size() > 0) {
  65. dataList.addAll(zdzmyjRowDataList);
  66. }
  67. MultipartFile[] basyfyjFiles = hybzFileSetDTO.getBasyfyjFiles();
  68. List<BaseFileInfo> basyfyjRowDataList = baseService.doProcessUploadAndBuildParams(basyfyjFiles, moduleCode, moduleName, applyFormId, "病案首页复印件", "basyfyj", fileStoragePath);
  69. if (basyfyjRowDataList.size() > 0) {
  70. dataList.addAll(basyfyjRowDataList);
  71. }
  72. MultipartFile[] ryjlfyjFiles = hybzFileSetDTO.getRyjlfyjFiles();
  73. List<BaseFileInfo> ryjlfyjRowDataList = baseService.doProcessUploadAndBuildParams(ryjlfyjFiles, moduleCode, moduleName, applyFormId, "入院记录复印件", "ryjlfyj", fileStoragePath);
  74. if (ryjlfyjRowDataList.size() > 0) {
  75. dataList.addAll(ryjlfyjRowDataList);
  76. }
  77. MultipartFile[] ssjlfyjFiles = hybzFileSetDTO.getSsjlfyjFiles();
  78. List<BaseFileInfo> ssjlfyjRowDataList = baseService.doProcessUploadAndBuildParams(ssjlfyjFiles, moduleCode, moduleName, applyFormId, "手术记录复印件", "ssjlfyj", fileStoragePath);
  79. if (ssjlfyjRowDataList.size() > 0) {
  80. dataList.addAll(ssjlfyjRowDataList);
  81. }
  82. MultipartFile[] cyjlfyjFiles = hybzFileSetDTO.getCyjlfyjFiles();
  83. List<BaseFileInfo> cyjlfyjRowDataList = baseService.doProcessUploadAndBuildParams(cyjlfyjFiles, moduleCode, moduleName, applyFormId, "出院记录复印件", "cyjlfyj", fileStoragePath);
  84. if (cyjlfyjRowDataList.size() > 0) {
  85. dataList.addAll(cyjlfyjRowDataList);
  86. }
  87. MultipartFile[] blbgfyjFiles = hybzFileSetDTO.getBlbgfyjFiles();
  88. List<BaseFileInfo> blbgfyjRowDataList = baseService.doProcessUploadAndBuildParams(blbgfyjFiles, moduleCode, moduleName, applyFormId, "病理报告复印件", "blbgfyj", fileStoragePath);
  89. if (blbgfyjRowDataList.size() > 0) {
  90. dataList.addAll(blbgfyjRowDataList);
  91. }
  92. MultipartFile[] jcbgfyjFiles = hybzFileSetDTO.getJcbgfyjFiles();
  93. List<BaseFileInfo> jcbgfyjRowDataList = baseService.doProcessUploadAndBuildParams(jcbgfyjFiles, moduleCode, moduleName, applyFormId, "检查报告复印件", "jcbgfyj", fileStoragePath);
  94. if (jcbgfyjRowDataList.size() > 0) {
  95. dataList.addAll(jcbgfyjRowDataList);
  96. }
  97. return dataList;
  98. }
  99. /**
  100. * 保存/修改一条【会员保障】申请信息并且批量插入/修改与【会员保障】申请信息相关联的文件信息
  101. *
  102. * @return
  103. */
  104. @Transactional
  105. public void saveOrUpdateHybzApplyInfoAndBaseFileInfos(HybzApplyInfo hybzApplyInfo, SysUser user, String applyFormId, List<BaseFileInfo> baseFileInfoList) {
  106. // 如果当前申请信息对象hybzApproveInfo的申请单ID为空,代表是新增操作
  107. if (StringUtils.isBlank(hybzApplyInfo.getApplyFormId())) {
  108. hybzApplyInfo.setCreateUserId(String.valueOf(user.getUserId()));
  109. hybzApplyInfo.setCreateUserName(user.getNickName());
  110. hybzApplyInfo.setCreateUserPoliceNo(user.getPoliceNo());
  111. hybzApplyInfo.setApplyFormId(applyFormId);
  112. int insertRows = hybzApplyInfoMapper.insert(hybzApplyInfo);
  113. if (insertRows > 0) {
  114. // 批量插入和申请信息关联的文件信息
  115. baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
  116. log.info("【会员保障】申请信息、文件信息均保存成功 申请单ID:{}", applyFormId);
  117. } else {
  118. throw new RuntimeException("数据库【会员保障】申请信息记录未插入 申请单ID:" + applyFormId);
  119. }
  120. } else { // 修改操作
  121. // 根据申请单ID和hybzApplyInfo对象中的当前属性值去修改当前申请记录
  122. String applyFormIdExist = hybzApplyInfo.getApplyFormId();
  123. UpdateWrapper<HybzApplyInfo> updateWrapper = new UpdateWrapper<>();
  124. updateWrapper.eq("APPLY_FORM_ID", applyFormIdExist);
  125. int updateRows = hybzApplyInfoMapper.update(hybzApplyInfo, updateWrapper);
  126. if (updateRows > 0) {
  127. // 批量修改和申请信息关联的文件信息
  128. // 1.先删除与当前申请记录相关联的全部原始文件记录
  129. baseService.delBaseFileInfosByApplyFormId(applyFormIdExist);
  130. // 2.再根据当前申请记录,批量插入新的文件记录,即可完成对文件信息的批量修改
  131. baseFileInfoMapper.batchInsertBaseFileInfos(baseFileInfoList);
  132. log.info("【会员保障】申请信息、文件信息均修改成功 申请单ID:{}", applyFormIdExist);
  133. } else {
  134. throw new RuntimeException("数据库【会员保障】申请信息记录未修改 申请单ID:" + applyFormIdExist);
  135. }
  136. }
  137. }
  138. /**
  139. * 审批一条【会员保障】申请信息,并插入一条审批记录
  140. *
  141. * @return
  142. */
  143. @Transactional
  144. public boolean approveAndSaveApproveInfo(String applyFormId, String optFlag, SysUser user) {
  145. // 审批一条【会员保障】申请信息
  146. UpdateWrapper<HybzApplyInfo> updateWrapper = new UpdateWrapper<>();
  147. updateWrapper.eq("APPLY_FORM_ID", applyFormId);
  148. HybzApplyInfo hybzApplyInfoDTO = new HybzApplyInfo();
  149. hybzApplyInfoDTO.setApproveStatusCode(optFlag);
  150. String optDesc = "1".equals(optFlag) ? "同意" : "驳回";
  151. hybzApplyInfoDTO.setApproveStatusName(optDesc);
  152. hybzApplyInfoDTO.setUpdateTime(new Date());
  153. int updateRows = hybzApplyInfoMapper.update(hybzApplyInfoDTO, updateWrapper);
  154. if (updateRows > 0) {
  155. log.info("【住院慰问】申请信息已审批 申请单ID:{},审批操作描述:{}", applyFormId, optDesc);
  156. // 插入一条审批记录
  157. BaseApproveInfo baseApproveInfo = new BaseApproveInfo();
  158. baseApproveInfo.setModuleCode("hybz");
  159. baseApproveInfo.setApplyFormId(applyFormId);
  160. QueryWrapper<HybzApplyInfo> queryWrapper = new QueryWrapper<>();
  161. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  162. HybzApplyInfo hybzApplyInfo = hybzApplyInfoMapper.selectOne(queryWrapper);
  163. baseApproveInfo.setCreateUserId(hybzApplyInfo.getCreateUserId());
  164. baseApproveInfo.setCreateUserName(hybzApplyInfo.getCreateUserName());
  165. baseApproveInfo.setCreateUserPoliceNo(hybzApplyInfo.getCreateUserPoliceNo());
  166. baseApproveInfo.setCreateTime(hybzApplyInfo.getCreateTime());
  167. baseApproveInfo.setApproveUserId(String.valueOf(user.getUserId()));
  168. baseApproveInfo.setApproveUserName(user.getNickName());
  169. baseApproveInfo.setApproveUserPoliceNo(user.getPoliceNo());
  170. baseApproveInfo.setApproveResultCode(optFlag);
  171. baseApproveInfo.setApproveResultDesc(optDesc);
  172. int insertRows = baseApproveInfoMapper.insert(baseApproveInfo);
  173. if (insertRows > 0) {
  174. log.info("【会员保障】审批信息保存成功 申请单ID:{},审批人警号:{},审批结果说明:{}", applyFormId, user.getPoliceNo(), optDesc);
  175. return true;
  176. } else {
  177. throw new RuntimeException("数据库【会员保障】审批信息记录未插入");
  178. }
  179. } else {
  180. throw new RuntimeException("数据库【会员保障】申请信息记录未更新或不存在");
  181. }
  182. }
  183. /**
  184. * 根据 审批状态 分页查询【会员保障】申请信息
  185. *
  186. * @param
  187. * @return
  188. */
  189. public Page<HybzApplyInfo> getDataByPage(Integer approveStatus, String type, JSONObject reqBody) {
  190. Integer pageIndex = reqBody.getInteger("pageIndex") == null ? 1 : reqBody.getInteger("pageIndex");
  191. Integer pageSize = reqBody.getInteger("pageSize") == null ? 10 : reqBody.getInteger("pageSize");
  192. String applyFormId = reqBody.getString("applyFormId");
  193. // 构造查询条件,支持多条件查询
  194. QueryWrapper<HybzApplyInfo> queryWrapper = new QueryWrapper<>();
  195. // 1.查询当前用户能看到的整个系统中的全量"待审批"的记录,暂不考虑用户所属具体部门的因素
  196. if (approveStatus != null && approveStatus == 0 && "approve".equals(type)) {
  197. // 匹配列表中的一条,对"待审批"的申请信息做数据回显及提供审批功能
  198. if (StringUtils.isNotBlank(applyFormId)) {
  199. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  200. }
  201. queryWrapper.eq("APPROVE_STATUS_CODE", 0);
  202. }
  203. // 2.查询当前用户提交的全量"审批中"的申请记录(包含待审批记录、审批驳回记录)
  204. SysUser user = SecurityUtils.getLoginUser().getUser();
  205. if (approveStatus != null && approveStatus == 3 && "apply".equals(type)) {
  206. // 匹配列表中的一条,对"审批中"的申请信息做数据回显及提供修改功能
  207. if (StringUtils.isNotBlank(applyFormId)) {
  208. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  209. }
  210. queryWrapper.eq("CREATE_USER_POLICE_NO", user.getPoliceNo());
  211. // 待审批和审批驳回(允许修改后继续提交)
  212. queryWrapper.and(qw -> qw.eq("APPROVE_STATUS_CODE", 0).or().eq("APPROVE_STATUS_CODE", 2));
  213. }
  214. // 3.查询当前用户提交的全量"已审批"的申请记录(只包含审批通过记录)
  215. if (approveStatus != null && approveStatus == 1 && "apply".equals(type)) {
  216. // 匹配列表中的一条,对"已审批"的申请信息做数据回显
  217. if (StringUtils.isNotBlank(applyFormId)) {
  218. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  219. }
  220. queryWrapper.eq("CREATE_USER_POLICE_NO", user.getPoliceNo());
  221. queryWrapper.eq("APPROVE_STATUS_CODE", 1);
  222. }
  223. queryWrapper.orderByDesc("CREATE_TIME");
  224. Page<HybzApplyInfo> page = new Page<>(pageIndex, pageSize);
  225. return hybzApplyInfoMapper.selectPage(page, queryWrapper);
  226. }
  227. /**
  228. * 保存/修改一条【会员保障】申请信息
  229. * @return
  230. */
  231. @Transactional
  232. public boolean saveOrUpdateHybzApplyInfo(HybzApplyInfo hybzApplyInfo, SysUser user){
  233. String applyFormId = hybzApplyInfo.getApplyFormId();
  234. QueryWrapper<HybzApplyInfo> queryWrapper = new QueryWrapper<>();
  235. queryWrapper.eq("APPLY_FORM_ID", applyFormId);
  236. HybzApplyInfo dbHybzApplyInfo = hybzApplyInfoMapper.selectOne(queryWrapper);
  237. // 如果当前申请信息对象hybzApplyInfo的申请单ID在数据库中不存在(前端生成),代表是新增操作
  238. if(dbHybzApplyInfo == null){
  239. // 设置当前登录的用户信息
  240. hybzApplyInfo.setCreateUserId(String.valueOf(user.getUserId()));
  241. hybzApplyInfo.setCreateUserName(user.getNickName());
  242. hybzApplyInfo.setCreateUserPoliceNo(user.getPoliceNo());
  243. // 插入申请信息
  244. hybzApplyInfo.setApplyFormId(applyFormId);
  245. int insertRows = hybzApplyInfoMapper.insert(hybzApplyInfo);
  246. if(insertRows > 0){
  247. log.info("【会员保障】申请信息保存成功 申请单ID:{}", applyFormId);
  248. return true;
  249. } else {
  250. throw new RuntimeException("数据库【会员保障】申请信息记录未插入 申请单ID:" + applyFormId);
  251. }
  252. } else { // 修改操作
  253. // 根据申请单ID和hybzApplyInfo对象中的当前属性值去修改当前申请记录
  254. UpdateWrapper<HybzApplyInfo> updateWrapper = new UpdateWrapper<>();
  255. updateWrapper.eq("APPLY_FORM_ID", applyFormId);
  256. hybzApplyInfo.setUpdateTime(new Date());
  257. int updateRows = hybzApplyInfoMapper.update(hybzApplyInfo, updateWrapper);
  258. if(updateRows > 0){
  259. log.info("【会员保障】申请信息修改成功 申请单ID:{}", applyFormId);
  260. return true;
  261. } else {
  262. throw new RuntimeException("数据库【会员保障】申请信息记录未修改 申请单ID:" + applyFormId);
  263. }
  264. }
  265. }
  266. }