TemplateNormFacade.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.diagbot.client.TranServiceClient;
  5. import com.diagbot.dto.HospitalDeptInfoAllDTO;
  6. import com.diagbot.dto.RespDTO;
  7. import com.diagbot.dto.TemplateFolderDTO;
  8. import com.diagbot.dto.TemplateInfoDTO;
  9. import com.diagbot.dto.TemplateInfoNormDTO;
  10. import com.diagbot.entity.FolderMapping;
  11. import com.diagbot.entity.TemplateFolder;
  12. import com.diagbot.entity.TemplateInfo;
  13. import com.diagbot.enums.IsDeleteEnum;
  14. import com.diagbot.enums.TemplateTypeEnum;
  15. import com.diagbot.exception.CommonErrorCode;
  16. import com.diagbot.exception.CommonException;
  17. import com.diagbot.service.impl.FolderMappingServiceImpl;
  18. import com.diagbot.service.impl.TemplateFolderServiceImpl;
  19. import com.diagbot.service.impl.TemplateInfoServiceImpl;
  20. import com.diagbot.util.BeanUtil;
  21. import com.diagbot.util.DateUtil;
  22. import com.diagbot.util.EntityUtil;
  23. import com.diagbot.util.GsonUtil;
  24. import com.diagbot.util.ListUtil;
  25. import com.diagbot.util.RespDTOUtil;
  26. import com.diagbot.vo.HospitalCodeSetVO;
  27. import com.diagbot.vo.HospitalCodeVo;
  28. import com.diagbot.vo.TemplateIdVO;
  29. import com.diagbot.vo.TemplateNormUpVO;
  30. import com.diagbot.vo.TemplateNormsFindVO;
  31. import com.diagbot.vo.TemplateNormsIdsVO;
  32. import com.diagbot.vo.TemplateNormsParamVO;
  33. import com.diagbot.vo.TemplateNormsVO;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.stereotype.Component;
  36. import java.util.ArrayList;
  37. import java.util.HashMap;
  38. import java.util.List;
  39. import java.util.Map;
  40. import java.util.stream.Collectors;
  41. /**
  42. * @author wangfeng
  43. * @Description:
  44. * @date 2020-01-10 14:25
  45. */
  46. @Component
  47. public class TemplateNormFacade<tranServiceClient> extends TemplateInfoServiceImpl {
  48. @Autowired
  49. TemplateFolderServiceImpl templateFolderServiceImpl;
  50. @Autowired
  51. TemplateInfoServiceImpl templateInfoServiceImpl;
  52. @Autowired
  53. AdminCheckFacade adminCheckFacade;
  54. @Autowired
  55. FolderMappingFacade folderMappingFacade;
  56. @Autowired
  57. FolderMappingServiceImpl folderMappingServiceImpl;
  58. @Autowired
  59. TranServiceClient tranServiceClient;
  60. /**
  61. * 根据模板id修改模板名称和文件夹名称
  62. *
  63. * @param templateNormUpVO
  64. * @return
  65. */
  66. public boolean updateTemplateNorm(TemplateNormUpVO templateNormUpVO) {
  67. //检验权限
  68. HospitalCodeSetVO hospitalCodeSetVO = new HospitalCodeSetVO();
  69. hospitalCodeSetVO.setDoctorId(templateNormUpVO.getDoctorId());
  70. hospitalCodeSetVO.setHospitalId(-9L);
  71. boolean res = adminCheckFacade.getadminCheck(hospitalCodeSetVO);
  72. if (!res) {
  73. throw new CommonException(CommonErrorCode.NOT_EXISTS, "暂无修改权限");
  74. }
  75. //1.先判断数据是否存在有效
  76. QueryWrapper<TemplateInfo> templateInfoFand = new QueryWrapper<>();
  77. templateInfoFand
  78. .eq("is_deleted", IsDeleteEnum.N.getKey())
  79. .eq("id", templateNormUpVO.getId());
  80. int sum = count(templateInfoFand);
  81. if (sum == 0) {
  82. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该模板不存在");
  83. }
  84. //2.先判断数据是否有权限修改
  85. QueryWrapper<TemplateInfo> templateInfoAmind = new QueryWrapper<>();
  86. templateInfoAmind
  87. .eq("is_deleted", IsDeleteEnum.N.getKey())
  88. .eq("id", templateNormUpVO.getId())
  89. .eq("template_type", TemplateTypeEnum.AdminTemplate.getKey());
  90. int sumA = count(templateInfoAmind);
  91. if (sumA == 0) {
  92. throw new CommonException(CommonErrorCode.NOT_EXISTS, "个人模板无权修改");
  93. }
  94. //2.再判断该科室下模板名是否重复重在
  95. QueryWrapper<TemplateInfo> templates = new QueryWrapper<>();
  96. Map<String, Object> mapAll = new HashMap<>();
  97. mapAll.put("hospital_dept_id", templateNormUpVO.getHospitalDeptId());
  98. //mapAll.put("doctor_id", templateInfoRevampVO.getDoctorId());
  99. mapAll.put("hospital_id", -9);
  100. mapAll.put("is_deleted", IsDeleteEnum.N.getKey());
  101. mapAll.put("template_type", TemplateTypeEnum.AdminTemplate.getKey());
  102. mapAll.put("name", templateNormUpVO.getModeName());
  103. //mapAll.put("type", templateInfoRevampVO.getType());
  104. templates.allEq(mapAll);
  105. TemplateInfo datas = getOne(templates, false);
  106. if (datas != null) {
  107. if(!datas.getId().equals(templateNormUpVO.getId())){
  108. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该模板名已存在");
  109. }
  110. }
  111. //3.修改表数据的模板名字
  112. TemplateInfo templateInfo = new TemplateInfo();
  113. templateInfo.setId(templateNormUpVO.getId());//模板id
  114. templateInfo.setName(templateNormUpVO.getModeName());//模板名称
  115. templateInfo.setGmtModified(DateUtil.now());//修改时间
  116. templateInfo.setSpell(templateNormUpVO.getSpell());
  117. templateInfo.setSex(templateNormUpVO.getSex());
  118. res = updateById(templateInfo);
  119. if (!res) {
  120. throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL);
  121. }
  122. //更新关系
  123. if (res) {
  124. Long orderNo = folderMappingServiceImpl.getMaxOrderNo(templateNormUpVO.getFolderId());
  125. // Long num = orderNo == null ? 0 : orderNo;
  126. res = folderMappingFacade.update(new UpdateWrapper<FolderMapping>()
  127. .eq("template_id", templateNormUpVO.getId())
  128. .eq("is_deleted", IsDeleteEnum.N.getKey())
  129. .set("folder_id", templateNormUpVO.getFolderId())
  130. .set("order_no", orderNo));
  131. }
  132. return res;
  133. }
  134. /**
  135. * 保存病历模板
  136. *
  137. * @param templateNormsVO
  138. * @return
  139. */
  140. public boolean saveTemplateNorm(TemplateNormsVO templateNormsVO) {
  141. //检验权限
  142. HospitalCodeSetVO hospitalCodeSetVO = new HospitalCodeSetVO();
  143. hospitalCodeSetVO.setDoctorId(templateNormsVO.getDoctorId());
  144. hospitalCodeSetVO.setHospitalId(-9L);
  145. boolean res = adminCheckFacade.getadminCheck(hospitalCodeSetVO);
  146. if (!res) {
  147. throw new CommonException(CommonErrorCode.NOT_EXISTS, "暂无修改权限");
  148. }
  149. //1.判断同科室下是否存在模板名相同的数据
  150. TemplateInfo templateInfo = new TemplateInfo();
  151. QueryWrapper<TemplateInfo> templateInfoFand = new QueryWrapper<>();
  152. Map<String, Object> mapAll = new HashMap<>();
  153. mapAll.put("hospital_dept_id", templateNormsVO.getHospitalDeptId());
  154. //mapAll.put("doctor_id", templateInfosVO.getDoctorId());
  155. mapAll.put("hospital_id", -9);
  156. mapAll.put("is_deleted", IsDeleteEnum.N.getKey());
  157. mapAll.put("template_type", TemplateTypeEnum.AdminTemplate.getKey());
  158. mapAll.put("name", templateNormsVO.getModeName());
  159. //mapAll.put("type", templateInfosVO.getModeType());
  160. templateInfoFand.allEq(mapAll);
  161. int sum = count(templateInfoFand);
  162. if (sum != 0) {
  163. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该模板名存在");
  164. }
  165. //2.获取传入的数据,保存到数据表中。
  166. templateInfo.setCreator(templateNormsVO.getDoctorId().toString());//创建人id
  167. templateInfo.setDoctorId(templateNormsVO.getDoctorId());//医生id
  168. templateInfo.setGmtCreate(DateUtil.now());//创建时间
  169. templateInfo.setHospitalDeptId(templateNormsVO.getHospitalDeptId());//部门id
  170. templateInfo.setHospitalId(-9L);//医院id
  171. templateInfo.setSex(templateNormsVO.getSex());
  172. templateInfo.setPreview(GsonUtil.toJson(templateNormsVO.getPreview()));//文本的展示
  173. templateInfo.setDataJson(templateNormsVO.getDataJson());//页面json
  174. templateInfo.setName(templateNormsVO.getModeName());//模板名称
  175. templateInfo.setSpell(templateNormsVO.getModeSpell().toUpperCase());
  176. templateInfo.setType(templateNormsVO.getModeType());//类型
  177. templateInfo.setTemplateType(TemplateTypeEnum.AdminTemplate.getKey());//模板类型
  178. res = save(templateInfo);
  179. if (!res) {
  180. throw new CommonException(CommonErrorCode.INSERT_DATA_FAILED);
  181. }
  182. //将id转为负数
  183. Long num = (templateInfo.getId() > 0) ? -templateInfo.getId() : templateInfo.getId();
  184. res = update(new UpdateWrapper<TemplateInfo>()
  185. .in("id", templateInfo.getId())
  186. .eq("is_deleted", IsDeleteEnum.N.getKey())
  187. .set("id", num));
  188. if (res) {
  189. FolderMapping folderMapping = new FolderMapping();
  190. folderMapping.setFolderId(templateNormsVO.getFolderId());
  191. folderMapping.setTemplateId(num);
  192. folderMapping.setCreator(templateNormsVO.getDoctorId().toString());
  193. folderMapping.setGmtCreate(DateUtil.now());
  194. Long orderNo = folderMappingServiceImpl.getMaxOrderNo(templateNormsVO.getFolderId());
  195. folderMapping.setOrderNo(orderNo);
  196. res = folderMappingFacade.save(folderMapping);
  197. }
  198. return res;
  199. }
  200. /**
  201. * 根据模板id批量删除病历模板
  202. *
  203. * @param templateNormsIdsVO
  204. * @return
  205. */
  206. public boolean cancelTemplateInfo(TemplateNormsIdsVO templateNormsIdsVO) {
  207. //检验权限
  208. HospitalCodeSetVO hospitalCodeSetVO = new HospitalCodeSetVO();
  209. hospitalCodeSetVO.setDoctorId(templateNormsIdsVO.getDoctorId());
  210. hospitalCodeSetVO.setHospitalId(templateNormsIdsVO.getHospitalId());
  211. boolean res = adminCheckFacade.getadminCheck(hospitalCodeSetVO);
  212. if (!res) {
  213. throw new CommonException(CommonErrorCode.NOT_EXISTS, "暂无删除权限");
  214. }
  215. //1.获取传入的ids数据
  216. String ids = templateNormsIdsVO.getIds();
  217. //2.截取到最后一个
  218. String substring = ids.substring(0, ids.length());
  219. //System.out.println(substring);
  220. //3.以逗号分割
  221. String[] splitIds = substring.split(",");
  222. //验证转化好的参数
  223. if (ListUtil.isEmpty(ListUtil.arrayToList(splitIds))) {
  224. throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入模板id");
  225. }
  226. //把分割的id数据传入对象中,在表中批量删除
  227. UpdateWrapper<TemplateInfo> templateInfoNew = new UpdateWrapper<>();
  228. templateInfoNew
  229. .in("id", ListUtil.arrayToList(splitIds))
  230. .eq("is_deleted", IsDeleteEnum.N.getKey())
  231. .eq("template_type", TemplateTypeEnum.AdminTemplate.getKey())
  232. .set("is_deleted", IsDeleteEnum.Y.getKey())
  233. //.set("modifier",UserUtils.getCurrentPrincipleID())
  234. .set("gmt_modified", DateUtil.now());
  235. res = update(new TemplateInfo(), templateInfoNew);
  236. //删除模板和文件的绑定关系
  237. if (res) {
  238. res = folderMappingFacade.update(new UpdateWrapper<FolderMapping>()
  239. .in("template_id", ListUtil.arrayToList(splitIds))
  240. .eq("is_deleted", IsDeleteEnum.N.getKey())
  241. .set("is_deleted", IsDeleteEnum.Y.getKey()));
  242. }
  243. return res;
  244. }
  245. /**
  246. * 查询标准模板列表
  247. *
  248. * @return
  249. */
  250. public List<TemplateFolderDTO> getTemplateNorm() {
  251. //先获取文件夹
  252. QueryWrapper<TemplateFolder> templateFolderQuery = new QueryWrapper<TemplateFolder>();
  253. templateFolderQuery
  254. .eq("hospital_id", -9)
  255. .eq("is_deleted", IsDeleteEnum.N.getKey())
  256. .eq("template_type", TemplateTypeEnum.AdminTemplate.getKey())
  257. //.eq("doctor_id", templateNormsParamVO.getDoctorId())
  258. .orderByAsc("order_no");
  259. List<TemplateFolder> datas = templateFolderServiceImpl.list(templateFolderQuery);
  260. List<TemplateFolderDTO> data = new ArrayList<TemplateFolderDTO>();
  261. //过滤
  262. data = BeanUtil.listCopyTo(datas, TemplateFolderDTO.class);
  263. //再获取模板
  264. TemplateNormsParamVO templateNormsParamVO = new TemplateNormsParamVO();
  265. templateNormsParamVO.setHospitalId(-9L);
  266. List<TemplateInfoNormDTO> templateDatas = templateInfoServiceImpl.getStandardTemplates(templateNormsParamVO);
  267. HospitalCodeVo hospitalCodeVo = new HospitalCodeVo();
  268. hospitalCodeVo.setHospitalCode("LT");
  269. RespDTO<List<HospitalDeptInfoAllDTO>> deptInfoDTO = tranServiceClient.getHospitalDeptInfoAll(hospitalCodeVo);
  270. RespDTOUtil.respNGDeal(deptInfoDTO, deptInfoDTO.msg);
  271. List<HospitalDeptInfoAllDTO> deptInfo = deptInfoDTO.data;
  272. Map<Long, HospitalDeptInfoAllDTO> deptMap = deptInfo.stream().collect(Collectors.toMap(HospitalDeptInfoAllDTO::getId, i -> i));
  273. if (templateDatas.size() > 0) {
  274. templateDatas.forEach(i -> {
  275. HospitalDeptInfoAllDTO dataDept = deptMap.get(i.getHospitalDeptId());
  276. if (dataDept != null) {
  277. i.setHospitalDeptName(dataDept.getConceptDeptName());
  278. }
  279. });
  280. }
  281. Map<Long, List<TemplateInfoNormDTO>> map
  282. = EntityUtil.makeEntityListMap(templateDatas, "folderId");
  283. //把模板放进文件夹中
  284. if (data.size() > 0) {
  285. for (TemplateFolderDTO ts : data) {
  286. List<TemplateInfoNormDTO> tmp = map.get(ts.getId());
  287. if (ListUtil.isNotEmpty(tmp)) {
  288. ts.setTemplateInfo(tmp);
  289. ts.setTemplateInfoCount(tmp.size());
  290. } else {
  291. ts.setTemplateInfoCount(0);
  292. }
  293. }
  294. }
  295. return data;
  296. }
  297. /**
  298. * 根据模板id获取病历模板内容
  299. *
  300. * @param templateIdVO
  301. * @return
  302. */
  303. public TemplateInfoDTO getTemplateIdData(TemplateIdVO templateIdVO) {
  304. //根据传入的医生id和部门id还有医院id在数据表中查出相应的模板数据
  305. QueryWrapper<TemplateInfo> templateInfoQuery = new QueryWrapper<>();
  306. templateInfoQuery
  307. .eq("id", templateIdVO.getId())
  308. .eq("is_deleted", IsDeleteEnum.N.getKey())
  309. .eq("template_type", TemplateTypeEnum.AdminTemplate.getKey());
  310. TemplateInfoDTO data = new TemplateInfoDTO();
  311. TemplateInfo datas = getOne(templateInfoQuery, false);
  312. if (datas == null) {
  313. throw new CommonException(CommonErrorCode.NOT_EXISTS, "该模板不存在!");
  314. }
  315. //过滤
  316. BeanUtil.copyProperties(datas, data);
  317. return data;
  318. }
  319. /**
  320. * 模糊查询模板
  321. *
  322. * @param templateNormsFindVO
  323. * @return
  324. */
  325. public List<TemplateInfoNormDTO> findTemplateNorm(TemplateNormsFindVO templateNormsFindVO) {
  326. List<TemplateInfoNormDTO> data = templateInfoServiceImpl.findStandardTemplates(templateNormsFindVO);
  327. return data;
  328. }
  329. }