ColumnVerifyManagementFacade.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. package com.lantone.daqe.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.lantone.common.enums.IsDeleteEnum;
  6. import com.lantone.common.exception.Asserts;
  7. import com.lantone.common.util.BeanUtil;
  8. import com.lantone.common.util.ListUtil;
  9. import com.lantone.common.util.StringUtil;
  10. import com.lantone.common.util.SysUserUtils;
  11. import com.lantone.daqe.dto.GetByIdColumnVerifyDTO;
  12. import com.lantone.daqe.dto.GetColumnDTO;
  13. import com.lantone.daqe.dto.GetColumnInfoDTO;
  14. import com.lantone.daqe.dto.GetColumnNameDTO;
  15. import com.lantone.daqe.dto.GetColumnVerifyDTO;
  16. import com.lantone.daqe.dto.GetColumnVerifyPageDTO;
  17. import com.lantone.daqe.dto.GetRegularDTO;
  18. import com.lantone.daqe.dto.GetTableColumnNameDTO;
  19. import com.lantone.daqe.dto.GetTableNameDTO;
  20. import com.lantone.daqe.entity.ColumnInfo;
  21. import com.lantone.daqe.entity.ColumnResult;
  22. import com.lantone.daqe.entity.ColumnVerify;
  23. import com.lantone.daqe.entity.NonnullInfo;
  24. import com.lantone.daqe.entity.NonnullResult;
  25. import com.lantone.daqe.entity.RegularInfo;
  26. import com.lantone.daqe.entity.RegularMapping;
  27. import com.lantone.daqe.entity.RegularResult;
  28. import com.lantone.daqe.entity.StandardvalueInfo;
  29. import com.lantone.daqe.entity.StandardvalueResult;
  30. import com.lantone.daqe.enums.ColumnVerifyTypeEnum;
  31. import com.lantone.daqe.facade.base.ColumnInfoFacade;
  32. import com.lantone.daqe.facade.base.ColumnResultFacade;
  33. import com.lantone.daqe.facade.base.ColumnVerifyFacade;
  34. import com.lantone.daqe.facade.base.NonnullInfoFacade;
  35. import com.lantone.daqe.facade.base.NonnullResultFacade;
  36. import com.lantone.daqe.facade.base.RegularInfoFacade;
  37. import com.lantone.daqe.facade.base.RegularMappingFacade;
  38. import com.lantone.daqe.facade.base.RegularResultFacade;
  39. import com.lantone.daqe.facade.base.StandardvalueInfoFacade;
  40. import com.lantone.daqe.facade.base.StandardvalueResultFacade;
  41. import com.lantone.daqe.vo.AddColumnVO;
  42. import com.lantone.daqe.vo.AddColumnVerifyVO;
  43. import com.lantone.daqe.vo.ColumnInfoVO;
  44. import com.lantone.daqe.vo.DelColumnVerifyVO;
  45. import com.lantone.daqe.vo.GetByIdColumnVerifyVO;
  46. import com.lantone.daqe.vo.GetColumnNameVO;
  47. import com.lantone.daqe.vo.GetColumnVerifyPageVO;
  48. import com.lantone.daqe.vo.GetRegularVO;
  49. import com.lantone.daqe.vo.GetTableColumnNameVO;
  50. import com.lantone.daqe.vo.GetTableNameVO;
  51. import com.lantone.daqe.vo.UpdateColumnVerifyVO;
  52. import org.springframework.beans.factory.annotation.Autowired;
  53. import org.springframework.stereotype.Component;
  54. import java.util.ArrayList;
  55. import java.util.Date;
  56. import java.util.List;
  57. /**
  58. * @Description: 字段校验规则维护API-业务处理类
  59. * @author: zhanghang
  60. * @time: 2022/3/1 10:14
  61. */
  62. @Component
  63. public class ColumnVerifyManagementFacade {
  64. @Autowired
  65. ColumnVerifyFacade columnVerifyFacade;
  66. @Autowired
  67. ColumnInfoFacade columnInfoFacade;
  68. @Autowired
  69. RegularInfoFacade regularInfoFacade;
  70. @Autowired
  71. RegularMappingFacade regularMappingFacade;
  72. @Autowired
  73. NonnullInfoFacade nonnullInfoFacade;
  74. @Autowired
  75. StandardvalueInfoFacade standardvalueInfoFacade;
  76. @Autowired
  77. ColumnResultFacade columnResultFacade;
  78. @Autowired
  79. StandardvalueResultFacade standardvalueResultFacade;
  80. @Autowired
  81. NonnullResultFacade nonnullResultFacade;
  82. @Autowired
  83. RegularResultFacade regularResultFacade;
  84. /**
  85. * 获取字段校验规则分页列表数据
  86. *
  87. * @param getColumnVerifyPageVO
  88. * @return: 字段校验规则分页数据
  89. */
  90. public IPage<GetColumnVerifyPageDTO> getColumnVerifyPage(GetColumnVerifyPageVO getColumnVerifyPageVO) {
  91. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  92. getColumnVerifyPageVO.setHospitalId(currentHospitalId);
  93. return columnVerifyFacade.getBaseMapper().getColumnVerifyPage(getColumnVerifyPageVO);
  94. }
  95. /**
  96. * 根据ID获取字段校验规则明细数据
  97. *
  98. * @param getByIdColumnVerifyVO
  99. * @return: 字段校验规则明细数据
  100. */
  101. public GetByIdColumnVerifyDTO getByIdColumnVerify(GetByIdColumnVerifyVO getByIdColumnVerifyVO) {
  102. RegularMapping mappingFacadeOne = regularMappingFacade.getOne(new QueryWrapper<RegularMapping>()
  103. .eq("is_deleted", IsDeleteEnum.N.getKey())
  104. .eq("column_id", getByIdColumnVerifyVO.getColumnId())
  105. );
  106. //获取规则总表数据
  107. List<GetColumnVerifyDTO> columnVerifyDTOList = columnVerifyFacade.getBaseMapper().getByIdColumnVerify(getByIdColumnVerifyVO);
  108. GetByIdColumnVerifyDTO getByIdColumnVerifyDTO = new GetByIdColumnVerifyDTO();
  109. List<String> standardValueList = new ArrayList<>();
  110. if (ListUtil.isEmpty(columnVerifyDTOList)) {
  111. Asserts.fail("不存在该字段关联规则 !");
  112. }
  113. GetColumnVerifyDTO columnVerifyDTO = columnVerifyDTOList.get(0);
  114. getByIdColumnVerifyDTO.setColumnId(columnVerifyDTO.getColumnId());
  115. getByIdColumnVerifyDTO.setColumnCname(columnVerifyDTO.getColumnCname());
  116. getByIdColumnVerifyDTO.setColumnEname(columnVerifyDTO.getColumnEname());
  117. getByIdColumnVerifyDTO.setTableCname(columnVerifyDTO.getTableCname());
  118. getByIdColumnVerifyDTO.setTableEname(columnVerifyDTO.getTableEname());
  119. getByIdColumnVerifyDTO.setDescription(columnVerifyDTO.getDescription());
  120. //处理关键值信息及非空信息
  121. for (GetColumnVerifyDTO getColumnVerifyDTO : columnVerifyDTOList) {
  122. if (StringUtil.isNotEmpty(getColumnVerifyDTO.getStandardValue())) {
  123. standardValueList.add(getColumnVerifyDTO.getStandardValue());
  124. }
  125. if (StringUtil.isNotEmpty(getColumnVerifyDTO.getIsRequired())) {
  126. getByIdColumnVerifyDTO.setIsRequired(getColumnVerifyDTO.getIsRequired());
  127. }
  128. }
  129. if (mappingFacadeOne != null) {
  130. RegularInfo one = regularInfoFacade.getOne(new QueryWrapper<RegularInfo>()
  131. .eq("is_deleted", IsDeleteEnum.N.getKey())
  132. .eq("id", mappingFacadeOne.getRegularId())
  133. );
  134. getByIdColumnVerifyDTO.setRegularId(mappingFacadeOne.getRegularId());
  135. getByIdColumnVerifyDTO.setRegular(one.getName());
  136. }
  137. String[] strings = new String[standardValueList.size()];
  138. if (ListUtil.isNotEmpty(standardValueList)) {
  139. getByIdColumnVerifyDTO.setStandardValueList(standardValueList.toArray(strings));
  140. }
  141. return getByIdColumnVerifyDTO;
  142. }
  143. /**
  144. * 查询下拉框获取数据库表中列数据表名称信息
  145. *
  146. * @param getTableNameVO
  147. * @return: 数据库表中列数据表名称信息
  148. */
  149. public List<GetTableNameDTO> getTableName(GetTableNameVO getTableNameVO) {
  150. return columnInfoFacade.getBaseMapper().getVerifyTableName(getTableNameVO);
  151. }
  152. /**
  153. * 查询下拉框获取数据库表中列数据字段名称信息
  154. *
  155. * @param getColumnNameVO
  156. * @return: 数据库表中列数据字段名称信息
  157. */
  158. public List<GetColumnNameDTO> getColumnName(GetColumnNameVO getColumnNameVO) {
  159. List<ColumnInfo> columnInfoList = columnInfoFacade.getBaseMapper().selectList(new QueryWrapper<ColumnInfo>()
  160. .eq("is_deleted", IsDeleteEnum.N.getKey())
  161. .eq(StringUtil.isNotBlank(getColumnNameVO.getTableEname()), "table_ename", getColumnNameVO.getTableEname())
  162. .eq(StringUtil.isNotBlank(getColumnNameVO.getTableCname()), "table_cname", getColumnNameVO.getTableCname())
  163. .like(StringUtil.isNotBlank(getColumnNameVO.getColumnCname()), "column_cname", getColumnNameVO.getColumnCname())
  164. .like(StringUtil.isNotBlank(getColumnNameVO.getColumnEname()), "column_ename", getColumnNameVO.getColumnEname())
  165. .groupBy("column_cname", "column_ename")
  166. );
  167. List<GetColumnNameDTO> getColumnDTOList = BeanUtil.listCopyTo(columnInfoList, GetColumnNameDTO.class);
  168. return getColumnDTOList;
  169. }
  170. /**
  171. * 新增修改下拉框获取数据库表中列数据字段名称信息
  172. *
  173. * @param
  174. * @return: 数据库表中列数据字段名称信息
  175. */
  176. public List<GetTableColumnNameDTO> getTableColumnName(GetTableColumnNameVO getTableColumnNameVO) {
  177. List<GetColumnInfoDTO> columnInfoList = columnInfoFacade.getBaseMapper().getNoVerifyColumnName(getTableColumnNameVO);
  178. ColumnInfo columnById = columnInfoFacade.getById(getTableColumnNameVO.getColumnId());
  179. List<String> columnString = new ArrayList<>();
  180. List<GetTableColumnNameDTO> getTableColumnNameDTOS = new ArrayList<>();
  181. for (GetColumnInfoDTO columnInfo : columnInfoList) {
  182. GetTableColumnNameDTO getTableColumnNameDTO = new GetTableColumnNameDTO();
  183. GetTableNameDTO getTableNameDTO = new GetTableNameDTO();
  184. List<GetColumnNameDTO> getColumnNameDTOS = new ArrayList<GetColumnNameDTO>();
  185. getTableNameDTO.setTableCname(columnInfo.getTableCname());
  186. getTableNameDTO.setTableEname(columnInfo.getTableEname());
  187. if (columnString.contains(columnInfo.getTableCname())) {
  188. continue;
  189. }
  190. columnString.add(columnInfo.getTableCname());
  191. for (GetColumnInfoDTO info : columnInfoList) {
  192. if (info.getTableCname().equals(columnInfo.getTableCname()) && info.getTableEname().equals(columnInfo.getTableEname())) {
  193. GetColumnNameDTO getColumnNameDTO = new GetColumnNameDTO();
  194. getColumnNameDTO.setId(info.getId());
  195. getColumnNameDTO.setColumnCname(info.getColumnCname());
  196. getColumnNameDTO.setColumnEname(info.getColumnEname());
  197. getColumnNameDTOS.add(getColumnNameDTO);
  198. }
  199. }
  200. //加入查看时的字段
  201. if (columnById != null) {
  202. if (columnInfo.getTableEname().equals(columnById.getTableEname())) {
  203. GetColumnNameDTO getColumnNameDTO = new GetColumnNameDTO();
  204. getColumnNameDTO.setId(columnById.getId());
  205. getColumnNameDTO.setColumnCname(columnById.getColumnCname());
  206. getColumnNameDTO.setColumnEname(columnById.getColumnEname());
  207. getColumnNameDTOS.add(getColumnNameDTO);
  208. }
  209. }
  210. getTableColumnNameDTO.setGetTableNameDTO(getTableNameDTO);
  211. getTableColumnNameDTO.setGetColumnNameDTOList(getColumnNameDTOS);
  212. getTableColumnNameDTOS.add(getTableColumnNameDTO);
  213. }
  214. return getTableColumnNameDTOS;
  215. }
  216. /**
  217. * 下拉框获取正则式名称
  218. *
  219. * @param getRegularVO
  220. * @return: 正则式名称
  221. */
  222. public List<GetRegularDTO> getRegular(GetRegularVO getRegularVO) {
  223. List<RegularInfo> regularInfoList = regularInfoFacade.getBaseMapper().selectList(new QueryWrapper<RegularInfo>()
  224. .eq("is_deleted", IsDeleteEnum.N.getKey())
  225. .like(StringUtil.isNotBlank(getRegularVO.getName()), "name", getRegularVO.getName())
  226. .orderByDesc("gmt_create")
  227. );
  228. List<GetRegularDTO> regularDTOList = BeanUtil.listCopyTo(regularInfoList, GetRegularDTO.class);
  229. return regularDTOList;
  230. }
  231. /**
  232. * 新增字段校验规则
  233. *
  234. * @param addColumnVerifyVO
  235. * @return: 是否成功
  236. */
  237. public Boolean addColumnVerify(AddColumnVerifyVO addColumnVerifyVO) {
  238. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  239. Long principleId = SysUserUtils.getCurrentPrincipleId();
  240. addColumnVerifyVO.setHospitalId(currentHospitalId);
  241. List<ColumnInfoVO> columnList = addColumnVerifyVO.getColumnList();
  242. //判断是否有重复
  243. long distinctNum = columnList.stream().map(ColumnInfoVO::getId).distinct().count();
  244. if (distinctNum < columnList.size()) {
  245. Asserts.fail("表字段信息不能重复 !");
  246. }
  247. //查出表列信息ID
  248. for (ColumnInfoVO columnInfoVO : columnList) {
  249. Long columnId = columnInfoVO.getId();
  250. if (columnId == null) {
  251. Asserts.fail("不存在该字段信息!");
  252. }
  253. ColumnVerify columnVerify = new ColumnVerify();
  254. columnVerify.setColumnId(columnId);
  255. columnVerify.setColumnCname(columnInfoVO.getColumnCname());
  256. columnVerify.setColumnEname(columnInfoVO.getColumnEname());
  257. columnVerify.setTableCname(columnInfoVO.getTableCname());
  258. columnVerify.setTableEname(columnInfoVO.getTableEname());
  259. if (addColumnVerifyVO.getRegularId() != null) {
  260. //新增前判断是否存在该正则
  261. RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(addColumnVerifyVO.getRegularId());
  262. if (regularInfo == null) {
  263. Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
  264. }
  265. //插入正则维护表
  266. //先判断是否该字段信息是否已关联正则
  267. RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
  268. .eq("column_id", columnId)
  269. .eq("is_deleted", IsDeleteEnum.N.getKey())
  270. );
  271. if (selectOneMapping != null) {
  272. Asserts.fail("所选字段已关联正则!");
  273. }
  274. RegularMapping regularMapping = new RegularMapping();
  275. regularMapping.setColumnId(columnId);
  276. regularMapping.setGmtCreate(new Date());
  277. regularMapping.setGmtModified(new Date());
  278. if (principleId != null) {
  279. regularMapping.setCreator(principleId.toString());
  280. }
  281. regularMapping.setRegularId(addColumnVerifyVO.getRegularId());
  282. try {
  283. regularMappingFacade.getBaseMapper().insert(regularMapping);
  284. } catch (Exception e) {
  285. Asserts.fail("关联正则失败,请重试!");
  286. }
  287. Long regularMappingId = regularMapping.getId();
  288. //插入总表
  289. columnVerify.setType(ColumnVerifyTypeEnum.REGULAR_TYPE.getKey());
  290. columnVerify.setVerifyId(regularMappingId);
  291. columnVerify.setVerifyVal(addColumnVerifyVO.getRegularName());
  292. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  293. columnVerify.setGmtCreate(new Date());
  294. columnVerify.setGmtModified(new Date());
  295. if (principleId != null) {
  296. columnVerify.setCreator(principleId.toString());
  297. }
  298. try {
  299. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  300. } catch (Exception e) {
  301. Asserts.fail("保存失败");
  302. }
  303. }
  304. if (addColumnVerifyVO.getIsRequired() != null) {
  305. //插入表字段的非空校验维护表
  306. //先判断是否该字段信息是否已存在非空规则
  307. NonnullInfo selectOneInfo = nonnullInfoFacade.getBaseMapper().selectOne(new QueryWrapper<NonnullInfo>()
  308. .eq("column_id", columnId)
  309. .eq("is_deleted", IsDeleteEnum.N.getKey())
  310. );
  311. if (selectOneInfo != null) {
  312. Asserts.fail("所选字段已存在是否非空维护规则");
  313. }
  314. NonnullInfo nonnullInfo = new NonnullInfo();
  315. nonnullInfo.setColumnId(columnId);
  316. nonnullInfo.setGmtCreate(new Date());
  317. nonnullInfo.setGmtModified(new Date());
  318. if (principleId != null) {
  319. nonnullInfo.setCreator(principleId.toString());
  320. }
  321. nonnullInfo.setIsRequired(addColumnVerifyVO.getIsRequired());
  322. try {
  323. nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
  324. } catch (Exception e) {
  325. Asserts.fail("关联是否非空失败,请重试!");
  326. }
  327. Long nonnullInfoId = nonnullInfo.getId();
  328. //插入总表
  329. columnVerify.setType(ColumnVerifyTypeEnum.NONNULL_TYPE.getKey());
  330. columnVerify.setVerifyId(nonnullInfoId);
  331. columnVerify.setVerifyVal(addColumnVerifyVO.getIsRequired());
  332. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  333. columnVerify.setGmtCreate(new Date());
  334. columnVerify.setGmtModified(new Date());
  335. if (principleId != null) {
  336. columnVerify.setCreator(principleId.toString());
  337. }
  338. try {
  339. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  340. } catch (Exception e) {
  341. Asserts.fail("保存失败");
  342. }
  343. }
  344. if (ListUtil.isNotEmpty(addColumnVerifyVO.getStandardValueList())) {
  345. //插入关键字信息维护表
  346. List<String> standardValueList = addColumnVerifyVO.getStandardValueList();
  347. for (String standardValue : standardValueList) {
  348. StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
  349. standardvalueInfo.setColumnId(columnId);
  350. standardvalueInfo.setGmtCreate(new Date());
  351. standardvalueInfo.setGmtModified(new Date());
  352. if (principleId != null) {
  353. standardvalueInfo.setCreator(principleId.toString());
  354. }
  355. standardvalueInfo.setVal(standardValue);
  356. try {
  357. standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
  358. } catch (Exception e) {
  359. Asserts.fail("关联关键字失败,请重试!");
  360. }
  361. Long standardvalueInfoId = standardvalueInfo.getId();
  362. //插入总表
  363. columnVerify.setType(ColumnVerifyTypeEnum.STANDARD_TYPE.getKey());
  364. columnVerify.setVerifyId(standardvalueInfoId);
  365. columnVerify.setVerifyVal(standardValue);
  366. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  367. columnVerify.setGmtCreate(new Date());
  368. columnVerify.setGmtModified(new Date());
  369. if (principleId != null) {
  370. columnVerify.setCreator(principleId.toString());
  371. }
  372. try {
  373. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  374. } catch (Exception e) {
  375. Asserts.fail("保存失败");
  376. }
  377. }
  378. }
  379. }
  380. return true;
  381. }
  382. /**
  383. * 删除字段校验规则
  384. *
  385. * @param delColumnVerifyVO
  386. * @return: 是否成功
  387. */
  388. public Boolean delColumnVerify(DelColumnVerifyVO delColumnVerifyVO) {
  389. Boolean nonnullInfo = true;
  390. Boolean tandardvalueInfo = true;
  391. Boolean regular = true;
  392. List<Long> ids = delColumnVerifyVO.getIds();
  393. List<ColumnVerify> columnVerifyList = columnVerifyFacade.getBaseMapper().selectList(new QueryWrapper<ColumnVerify>()
  394. .eq("is_deleted", IsDeleteEnum.N.getKey())
  395. .in("column_id", ids)
  396. );
  397. if (ListUtil.isEmpty(columnVerifyList)) {
  398. Asserts.fail("删除失败,不存在所需删除数据!");
  399. }
  400. //所删正则ID
  401. List<Long> regularId = new ArrayList<>();
  402. //非空判断ID
  403. List<Long> nonnullId = new ArrayList<>();
  404. //关键值ID
  405. List<Long> standardValueId = new ArrayList<>();
  406. for (ColumnVerify columnVerify : columnVerifyList) {
  407. String type = columnVerify.getType();
  408. //非空
  409. if (ColumnVerifyTypeEnum.NONNULL_TYPE.getKey().equals(type)) {
  410. nonnullId.add(columnVerify.getColumnId());
  411. }
  412. //关键值
  413. if (ColumnVerifyTypeEnum.STANDARD_TYPE.getKey().equals(type)) {
  414. standardValueId.add(columnVerify.getColumnId());
  415. }
  416. //正则
  417. if (ColumnVerifyTypeEnum.REGULAR_TYPE.getKey().equals(type)) {
  418. regularId.add(columnVerify.getColumnId());
  419. }
  420. }
  421. //非空
  422. if (ListUtil.isNotEmpty(nonnullId)) {
  423. nonnullInfo = nonnullInfoFacade.remove(new UpdateWrapper<NonnullInfo>()
  424. .eq("is_deleted", IsDeleteEnum.N.getKey())
  425. .in("column_id", nonnullId)
  426. );
  427. if (nonnullInfo) {
  428. //删除结果表数据
  429. nonnullResultFacade.remove(new UpdateWrapper<NonnullResult>()
  430. .eq("is_deleted", IsDeleteEnum.N.getKey())
  431. .in("column_id", nonnullId)
  432. );
  433. }
  434. }
  435. //关键值
  436. if (ListUtil.isNotEmpty(standardValueId)) {
  437. tandardvalueInfo = standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
  438. .eq("is_deleted", IsDeleteEnum.N.getKey())
  439. .in("column_id", standardValueId)
  440. );
  441. if (tandardvalueInfo) {
  442. //删除结果表数据
  443. standardvalueResultFacade.remove(new UpdateWrapper<StandardvalueResult>()
  444. .eq("is_deleted", IsDeleteEnum.N.getKey())
  445. .in("column_id", nonnullId)
  446. );
  447. }
  448. }
  449. //正则
  450. if (ListUtil.isNotEmpty(regularId)) {
  451. regular = regularMappingFacade.remove(new UpdateWrapper<RegularMapping>()
  452. .eq("is_deleted", IsDeleteEnum.N.getKey())
  453. .in("column_id", regularId)
  454. );
  455. if (regular) {
  456. //删除结果表数据
  457. regularResultFacade.remove(new UpdateWrapper<RegularResult>()
  458. .eq("is_deleted", IsDeleteEnum.N.getKey())
  459. .in("column_id", regularId)
  460. );
  461. }
  462. }
  463. if (nonnullInfo && tandardvalueInfo && regular) {
  464. boolean update = columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
  465. .eq("is_deleted", IsDeleteEnum.N.getKey())
  466. .in("column_id", ids)
  467. );
  468. if (update) {
  469. //删除结果表数据
  470. columnResultFacade.remove(new UpdateWrapper<ColumnResult>()
  471. .eq("is_deleted", IsDeleteEnum.N.getKey())
  472. .in("column_id",ids)
  473. );
  474. return true;
  475. }
  476. }
  477. Asserts.fail("删除失败");
  478. return false;
  479. }
  480. /**
  481. * 修改字段校验规则
  482. *
  483. * @param updateColumnVerifyVO
  484. * @return: 是否成功
  485. */
  486. public Boolean updateColumnVerify(UpdateColumnVerifyVO updateColumnVerifyVO) {
  487. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  488. Long principleId = SysUserUtils.getCurrentPrincipleId();
  489. updateColumnVerifyVO.setHospitalId(currentHospitalId);
  490. List<ColumnInfoVO> columnList = updateColumnVerifyVO.getColumnList();
  491. //判断是否有重复--去重
  492. long distinctNum = columnList.stream().map(ColumnInfoVO::getId).distinct().count();
  493. if (distinctNum < columnList.size()) {
  494. Asserts.fail("表字段信息不能重复 !");
  495. }
  496. AddColumnVerifyVO addColumnVerifyVO = new AddColumnVerifyVO();
  497. List<ColumnInfoVO> columnInfoAdd = new ArrayList<>();
  498. List<ColumnInfoVO> columnInfoUpdate = new ArrayList<>();
  499. //查出表列信息ID
  500. List<Long> columnInfoIdAdd = new ArrayList<>();
  501. List<Long> columnInfoIdUpdate = new ArrayList<>();
  502. for (ColumnInfoVO columnInfoVO : columnList) {
  503. Long columnId = columnInfoVO.getId();
  504. List<ColumnVerify> columnVerifyList = columnVerifyFacade.getBaseMapper().selectList(new QueryWrapper<ColumnVerify>()
  505. .eq("column_id", columnId)
  506. .eq("is_deleted", IsDeleteEnum.N.getKey())
  507. );
  508. if (ListUtil.isNotEmpty(columnVerifyList)) {
  509. //库中已有维护
  510. columnInfoIdUpdate.add(columnId);
  511. columnInfoUpdate.add(columnInfoVO);
  512. } else {
  513. //库中暂无维护
  514. columnInfoIdAdd.add(columnId);
  515. columnInfoAdd.add(columnInfoVO);
  516. }
  517. }
  518. if (ListUtil.isNotEmpty(columnInfoAdd)) {
  519. addColumnVerifyVO.setHospitalId(updateColumnVerifyVO.getHospitalId());
  520. addColumnVerifyVO.setColumnList(columnInfoAdd);
  521. addColumnVerifyVO.setIsRequired(updateColumnVerifyVO.getIsRequired());
  522. addColumnVerifyVO.setRegularId(updateColumnVerifyVO.getRegularId());
  523. addColumnVerifyVO.setRegularName(updateColumnVerifyVO.getRegularName());
  524. addColumnVerifyVO.setStandardValueList(updateColumnVerifyVO.getStandardValueList());
  525. addColumnVerifyVO.setDescription(updateColumnVerifyVO.getDescription());
  526. //库中暂无走新增流程
  527. addColumnVerify(addColumnVerifyVO);
  528. }
  529. //库中已有走修改流程
  530. if (ListUtil.isNotEmpty(columnInfoIdUpdate)) {
  531. for (Long columnId : columnInfoIdUpdate) {
  532. ColumnInfo columnInfo = columnInfoFacade.getById(columnId);
  533. ColumnVerify columnVerify = new ColumnVerify();
  534. columnVerify.setColumnId(columnId);
  535. columnVerify.setColumnCname(columnInfo.getColumnCname());
  536. columnVerify.setColumnEname(columnInfo.getColumnEname());
  537. columnVerify.setTableCname(columnInfo.getTableCname());
  538. columnVerify.setTableEname(columnInfo.getTableEname());
  539. //先判断是否该字段信息是否已关联正则
  540. RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
  541. .eq("column_id", columnId)
  542. .eq("is_deleted", IsDeleteEnum.N.getKey())
  543. );
  544. if (updateColumnVerifyVO.getRegularId() != null) {
  545. //插入正则维护表
  546. if (selectOneMapping != null) {
  547. //修改前判断是否存在该正则
  548. RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(updateColumnVerifyVO.getRegularId());
  549. if (regularInfo == null) {
  550. Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
  551. }
  552. //已关联正则走修改
  553. regularMappingFacade.update(new UpdateWrapper<RegularMapping>()
  554. .eq("column_id", columnId)
  555. .eq("is_deleted", IsDeleteEnum.N.getKey())
  556. .set("regular_id", updateColumnVerifyVO.getRegularId())
  557. .set("gmt_modified", new Date())
  558. .set("modifier", principleId == null ? "0" : principleId)
  559. );
  560. Long mappingId = selectOneMapping.getId();
  561. //修改总表
  562. columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
  563. .eq("column_id", columnId)
  564. .eq("type", ColumnVerifyTypeEnum.REGULAR_TYPE.getKey())
  565. .eq("verify_id", mappingId)
  566. .set("verify_val", updateColumnVerifyVO.getRegularName())
  567. .set("description", updateColumnVerifyVO.getDescription())
  568. .set("gmt_modified", new Date())
  569. .set("modifier", principleId == null ? "0" : principleId)
  570. );
  571. } else {
  572. //未关联正则走新增
  573. //新增前判断是否存在该正则
  574. RegularInfo regularInfo = regularInfoFacade.getBaseMapper().selectById(updateColumnVerifyVO.getRegularId());
  575. if (regularInfo == null) {
  576. Asserts.fail("该正则不存在,已被删除,请重新关联正则!");
  577. }
  578. RegularMapping regularMapping = new RegularMapping();
  579. regularMapping.setColumnId(columnId);
  580. regularMapping.setGmtCreate(new Date());
  581. if (principleId != null) {
  582. regularMapping.setCreator(principleId.toString());
  583. }
  584. regularMapping.setRegularId(updateColumnVerifyVO.getRegularId());
  585. try {
  586. regularMappingFacade.getBaseMapper().insert(regularMapping);
  587. } catch (Exception e) {
  588. Asserts.fail("关联正则失败,请重试!");
  589. }
  590. Long regularMappingId = regularMapping.getId();
  591. //插入总表
  592. columnVerify.setType(ColumnVerifyTypeEnum.REGULAR_TYPE.getKey());
  593. columnVerify.setVerifyId(regularMappingId);
  594. columnVerify.setVerifyVal(updateColumnVerifyVO.getRegularName());
  595. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  596. columnVerify.setGmtCreate(new Date());
  597. if (principleId != null) {
  598. columnVerify.setCreator(principleId.toString());
  599. }
  600. try {
  601. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  602. } catch (Exception e) {
  603. Asserts.fail("保存失败");
  604. }
  605. }
  606. } else {
  607. //为空则存在的关联给删掉
  608. if (selectOneMapping != null) {
  609. //已关联正则删除
  610. regularMappingFacade.remove(new UpdateWrapper<RegularMapping>()
  611. .eq("column_id", columnId)
  612. .eq("is_deleted", IsDeleteEnum.N.getKey())
  613. );
  614. Long mappingId = selectOneMapping.getId();
  615. //修改总表
  616. columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
  617. .eq("column_id", columnId)
  618. .eq("type", ColumnVerifyTypeEnum.REGULAR_TYPE.getKey())
  619. .eq("verify_id", mappingId)
  620. );
  621. }
  622. //未关联则不处理
  623. }
  624. if (updateColumnVerifyVO.getIsRequired() != null) {
  625. //插入表字段的非空校验维护表
  626. //先判断是否该字段信息是否已存在非空规则
  627. NonnullInfo selectOneInfo = nonnullInfoFacade.getBaseMapper().selectOne(new QueryWrapper<NonnullInfo>()
  628. .eq("column_id", columnId)
  629. .eq("is_deleted", IsDeleteEnum.N.getKey())
  630. );
  631. if (selectOneInfo != null) {
  632. //已关联非空校验走修改
  633. nonnullInfoFacade.update(new UpdateWrapper<NonnullInfo>()
  634. .eq("column_id", columnId)
  635. .eq("is_deleted", IsDeleteEnum.N.getKey())
  636. .set("is_required", updateColumnVerifyVO.getIsRequired())
  637. .set("gmt_modified", new Date())
  638. .set("modifier", principleId == null ? "0" : principleId)
  639. );
  640. Long mappingId = selectOneInfo.getId();
  641. //修改总表
  642. columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
  643. .eq("column_id", columnId)
  644. .eq("type", ColumnVerifyTypeEnum.NONNULL_TYPE.getKey())
  645. .eq("verify_id", mappingId)
  646. .set("verify_val", updateColumnVerifyVO.getIsRequired())
  647. .set("description", updateColumnVerifyVO.getDescription())
  648. .set("gmt_modified", new Date())
  649. .set("modifier", principleId == null ? "0" : principleId)
  650. );
  651. } else {
  652. NonnullInfo nonnullInfo = new NonnullInfo();
  653. nonnullInfo.setColumnId(columnId);
  654. nonnullInfo.setGmtCreate(new Date());
  655. if (principleId != null) {
  656. nonnullInfo.setCreator(principleId.toString());
  657. }
  658. nonnullInfo.setIsRequired(updateColumnVerifyVO.getIsRequired());
  659. try {
  660. nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
  661. } catch (Exception e) {
  662. Asserts.fail("关联是否非空失败,请重试!");
  663. }
  664. Long nonnullInfoId = nonnullInfo.getId();
  665. //插入总表
  666. columnVerify.setType(ColumnVerifyTypeEnum.NONNULL_TYPE.getKey());
  667. columnVerify.setVerifyId(nonnullInfoId);
  668. columnVerify.setVerifyVal(updateColumnVerifyVO.getIsRequired());
  669. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  670. columnVerify.setGmtCreate(new Date());
  671. if (principleId != null) {
  672. columnVerify.setCreator(principleId.toString());
  673. }
  674. try {
  675. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  676. } catch (Exception e) {
  677. Asserts.fail("保存失败");
  678. }
  679. }
  680. }
  681. if (ListUtil.isNotEmpty(updateColumnVerifyVO.getStandardValueList())) {
  682. //插入关键字信息维护表
  683. List<String> standardValueList = updateColumnVerifyVO.getStandardValueList();
  684. //先删除之前的关联然后直接插入
  685. standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
  686. .eq("column_id", columnId)
  687. );
  688. columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
  689. .eq("column_id", columnId)
  690. .eq("type", ColumnVerifyTypeEnum.STANDARD_TYPE.getKey())
  691. );
  692. for (String standardValue : standardValueList) {
  693. StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
  694. standardvalueInfo.setColumnId(columnId);
  695. standardvalueInfo.setGmtCreate(new Date());
  696. standardvalueInfo.setGmtModified(new Date());
  697. standardvalueInfo.setVal(standardValue);
  698. if (principleId != null) {
  699. standardvalueInfo.setCreator(principleId.toString());
  700. }
  701. try {
  702. standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
  703. } catch (Exception e) {
  704. Asserts.fail("关联关键字失败,请重试!");
  705. }
  706. Long standardvalueInfoId = standardvalueInfo.getId();
  707. //插入总表
  708. columnVerify.setType(ColumnVerifyTypeEnum.STANDARD_TYPE.getKey());
  709. columnVerify.setVerifyId(standardvalueInfoId);
  710. columnVerify.setVerifyVal(standardValue);
  711. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  712. columnVerify.setGmtCreate(new Date());
  713. columnVerify.setGmtModified(new Date());
  714. if (principleId != null) {
  715. columnVerify.setCreator(principleId.toString());
  716. }
  717. try {
  718. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  719. } catch (Exception e) {
  720. Asserts.fail("保存失败");
  721. }
  722. }
  723. } else {
  724. //为空则存在的关联给删掉
  725. standardvalueInfoFacade.remove(new UpdateWrapper<StandardvalueInfo>()
  726. .eq("column_id", columnId)
  727. );
  728. columnVerifyFacade.remove(new UpdateWrapper<ColumnVerify>()
  729. .eq("column_id", columnId)
  730. .eq("type", ColumnVerifyTypeEnum.STANDARD_TYPE.getKey())
  731. );
  732. //未关联则不处理
  733. }
  734. }
  735. }
  736. return true;
  737. }
  738. /**
  739. * 根据表名新增字段信息
  740. *
  741. * @param addColumnVO
  742. * @return:
  743. */
  744. public Boolean addColumn(AddColumnVO addColumnVO) {
  745. //根据表名查出所有字段及其注释信息
  746. List<GetColumnDTO> columnDTOS = columnVerifyFacade.getBaseMapper().getColumn(addColumnVO);
  747. ColumnInfo columnInfo = new ColumnInfo();
  748. columnInfo.setTableCname(addColumnVO.getTableCname());
  749. columnInfo.setTableEname(addColumnVO.getTableEname());
  750. columnInfo.setType("1");
  751. for (GetColumnDTO columnDTO : columnDTOS) {
  752. columnInfo.setGmtCreate(new Date());
  753. columnInfo.setColumnCname(columnDTO.getColumnComment());
  754. columnInfo.setColumnEname(columnDTO.getColumnName());
  755. columnInfoFacade.getBaseMapper().insert(columnInfo);
  756. }
  757. return true;
  758. }
  759. }