ColumnVerifyManagementFacade.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  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.GetColumnInfoDTO;
  13. import com.lantone.daqe.dto.GetColumnNameDTO;
  14. import com.lantone.daqe.dto.GetColumnVerifyPageDTO;
  15. import com.lantone.daqe.dto.GetRegularDTO;
  16. import com.lantone.daqe.dto.GetTableColumnNameDTO;
  17. import com.lantone.daqe.dto.GetTableNameDTO;
  18. import com.lantone.daqe.entity.ColumnInfo;
  19. import com.lantone.daqe.entity.ColumnVerify;
  20. import com.lantone.daqe.entity.NonnullInfo;
  21. import com.lantone.daqe.entity.RegularInfo;
  22. import com.lantone.daqe.entity.RegularMapping;
  23. import com.lantone.daqe.entity.StandardvalueInfo;
  24. import com.lantone.daqe.enums.ColumnVerifyTypeEnum;
  25. import com.lantone.daqe.facade.base.ColumnInfoFacade;
  26. import com.lantone.daqe.facade.base.ColumnVerifyFacade;
  27. import com.lantone.daqe.facade.base.NonnullInfoFacade;
  28. import com.lantone.daqe.facade.base.RegularInfoFacade;
  29. import com.lantone.daqe.facade.base.RegularMappingFacade;
  30. import com.lantone.daqe.facade.base.StandardvalueInfoFacade;
  31. import com.lantone.daqe.vo.AddColumnVerifyVO;
  32. import com.lantone.daqe.vo.ColumnInfoVO;
  33. import com.lantone.daqe.vo.DelColumnVerifyVO;
  34. import com.lantone.daqe.vo.GetByIdColumnVerifyVO;
  35. import com.lantone.daqe.vo.GetColumnNameVO;
  36. import com.lantone.daqe.vo.GetColumnVerifyPageVO;
  37. import com.lantone.daqe.vo.GetRegularVO;
  38. import com.lantone.daqe.vo.GetTableNameVO;
  39. import com.lantone.daqe.vo.UpdateColumnVerifyVO;
  40. import org.springframework.beans.factory.annotation.Autowired;
  41. import org.springframework.stereotype.Component;
  42. import java.util.ArrayList;
  43. import java.util.Date;
  44. import java.util.List;
  45. /**
  46. * @Description: 字段校验规则维护API-业务处理类
  47. * @author: zhanghang
  48. * @time: 2022/3/1 10:14
  49. */
  50. @Component
  51. public class ColumnVerifyManagementFacade {
  52. @Autowired
  53. ColumnVerifyFacade columnVerifyFacade;
  54. @Autowired
  55. ColumnInfoFacade columnInfoFacade;
  56. @Autowired
  57. RegularInfoFacade regularInfoFacade;
  58. @Autowired
  59. RegularMappingFacade regularMappingFacade;
  60. @Autowired
  61. NonnullInfoFacade nonnullInfoFacade;
  62. @Autowired
  63. StandardvalueInfoFacade standardvalueInfoFacade;
  64. /**
  65. * 获取字段校验规则分页列表数据
  66. *
  67. * @param getColumnVerifyPageVO
  68. * @return: 字段校验规则分页数据
  69. */
  70. public IPage<GetColumnVerifyPageDTO> getColumnVerifyPage(GetColumnVerifyPageVO getColumnVerifyPageVO) {
  71. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  72. getColumnVerifyPageVO.setHospitalId(currentHospitalId);
  73. return columnVerifyFacade.getBaseMapper().getColumnVerifyPage(getColumnVerifyPageVO);
  74. }
  75. /**
  76. * 根据ID获取字段校验规则明细数据
  77. *
  78. * @param getByIdColumnVerifyVO
  79. * @return: 字段校验规则明细数据
  80. */
  81. public GetByIdColumnVerifyDTO getByIdColumnVerify(GetByIdColumnVerifyVO getByIdColumnVerifyVO) {
  82. RegularMapping mappingFacadeOne = regularMappingFacade.getOne(new QueryWrapper<RegularMapping>()
  83. .eq("is_deleted", IsDeleteEnum.N.getKey())
  84. .eq("column_id", getByIdColumnVerifyVO.getColumnId())
  85. );
  86. GetByIdColumnVerifyDTO byIdColumnVerify = columnVerifyFacade.getBaseMapper().getByIdColumnVerify(getByIdColumnVerifyVO);
  87. if(mappingFacadeOne!=null) {
  88. RegularInfo one = regularInfoFacade.getOne(new QueryWrapper<RegularInfo>()
  89. .eq("is_deleted", IsDeleteEnum.N.getKey())
  90. .eq("id", mappingFacadeOne.getRegularId())
  91. );
  92. byIdColumnVerify.setRegularId(mappingFacadeOne.getRegularId());
  93. byIdColumnVerify.setRegular(one.getName());
  94. }
  95. return byIdColumnVerify;
  96. }
  97. /**
  98. * 查询下拉框获取数据库表中列数据表名称信息
  99. *
  100. * @param getTableNameVO
  101. * @return: 数据库表中列数据表名称信息
  102. */
  103. public List<GetTableNameDTO> getTableName(GetTableNameVO getTableNameVO) {
  104. List<ColumnInfo> columnInfoList = columnInfoFacade.getBaseMapper().selectList(new QueryWrapper<ColumnInfo>()
  105. .eq("is_deleted", IsDeleteEnum.N.getKey())
  106. .like(StringUtil.isNotBlank(getTableNameVO.getTableCname()), "table_cname", getTableNameVO.getTableCname())
  107. .like(StringUtil.isNotBlank(getTableNameVO.getTableEname()), "table_ename", getTableNameVO.getTableEname())
  108. .groupBy("table_cname", "table_ename")
  109. );
  110. List<GetTableNameDTO> getColumnDTOList = BeanUtil.listCopyTo(columnInfoList, GetTableNameDTO.class);
  111. return getColumnDTOList;
  112. }
  113. /**
  114. * 查询下拉框获取数据库表中列数据字段名称信息
  115. *
  116. * @param getColumnNameVO
  117. * @return: 数据库表中列数据字段名称信息
  118. */
  119. public List<GetColumnNameDTO> getColumnName(GetColumnNameVO getColumnNameVO) {
  120. List<ColumnInfo> columnInfoList = columnInfoFacade.getBaseMapper().selectList(new QueryWrapper<ColumnInfo>()
  121. .eq("is_deleted", IsDeleteEnum.N.getKey())
  122. .like(StringUtil.isNotBlank(getColumnNameVO.getColumnCname()), "column_cname", getColumnNameVO.getColumnCname())
  123. .like(StringUtil.isNotBlank(getColumnNameVO.getColumnEname()), "column_ename", getColumnNameVO.getColumnEname())
  124. .groupBy("column_cname", "column_ename")
  125. );
  126. List<GetColumnNameDTO> getColumnDTOList = BeanUtil.listCopyTo(columnInfoList, GetColumnNameDTO.class);
  127. return getColumnDTOList;
  128. }
  129. /**
  130. * 新增修改下拉框获取数据库表中列数据字段名称信息
  131. *
  132. * @param
  133. * @return: 数据库表中列数据字段名称信息
  134. */
  135. public List<GetTableColumnNameDTO> getTableColumnName() {
  136. List<GetColumnInfoDTO> columnInfoList = columnInfoFacade.getBaseMapper().getNoVerifyColumnName();
  137. List<String> columnString = new ArrayList<>();
  138. List<GetTableColumnNameDTO> getTableColumnNameDTOS = new ArrayList<>();
  139. for (GetColumnInfoDTO columnInfo : columnInfoList) {
  140. GetTableColumnNameDTO getTableColumnNameDTO = new GetTableColumnNameDTO();
  141. GetTableNameDTO getTableNameDTO = new GetTableNameDTO();
  142. List<GetColumnNameDTO> getColumnNameDTOS = new ArrayList<GetColumnNameDTO>();
  143. getTableNameDTO.setTableCname(columnInfo.getTableCname());
  144. getTableNameDTO.setTableEname(columnInfo.getTableEname());
  145. if (columnString.contains(columnInfo.getTableCname())) {
  146. continue;
  147. }
  148. columnString.add(columnInfo.getTableCname());
  149. for (GetColumnInfoDTO info : columnInfoList) {
  150. if (info.getTableCname().equals(columnInfo.getTableCname()) && info.getTableEname().equals(columnInfo.getTableEname())) {
  151. GetColumnNameDTO getColumnNameDTO = new GetColumnNameDTO();
  152. getColumnNameDTO.setId(info.getId());
  153. getColumnNameDTO.setColumnCname(info.getColumnCname());
  154. getColumnNameDTO.setColumnEname(info.getColumnEname());
  155. getColumnNameDTOS.add(getColumnNameDTO);
  156. }
  157. }
  158. getTableColumnNameDTO.setGetTableNameDTO(getTableNameDTO);
  159. getTableColumnNameDTO.setGetColumnNameDTOList(getColumnNameDTOS);
  160. getTableColumnNameDTOS.add(getTableColumnNameDTO);
  161. }
  162. return getTableColumnNameDTOS;
  163. }
  164. /**
  165. * 下拉框获取正则式名称
  166. *
  167. * @param getRegularVO
  168. * @return: 正则式名称
  169. */
  170. public List<GetRegularDTO> getRegular(GetRegularVO getRegularVO) {
  171. List<RegularInfo> regularInfoList = regularInfoFacade.getBaseMapper().selectList(new QueryWrapper<RegularInfo>()
  172. .eq("is_deleted", IsDeleteEnum.N.getKey())
  173. .like(StringUtil.isNotBlank(getRegularVO.getName()), "name", getRegularVO.getName())
  174. );
  175. List<GetRegularDTO> regularDTOList = BeanUtil.listCopyTo(regularInfoList, GetRegularDTO.class);
  176. return regularDTOList;
  177. }
  178. /**
  179. * 新增字段校验规则
  180. *
  181. * @param addColumnVerifyVO
  182. * @return: 是否成功
  183. */
  184. public Boolean addColumnVerify(AddColumnVerifyVO addColumnVerifyVO) {
  185. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  186. addColumnVerifyVO.setHospitalId(currentHospitalId);
  187. List<ColumnInfoVO> columnList = addColumnVerifyVO.getColumnList();
  188. //查出表列信息ID
  189. for (ColumnInfoVO columnInfoVO : columnList) {
  190. Long columnId = columnInfoVO.getId();
  191. if (columnId == null) {
  192. Asserts.fail("不存在该字段信息!");
  193. }
  194. ColumnVerify columnVerify = new ColumnVerify();
  195. columnVerify.setColumnId(columnId);
  196. columnVerify.setColumnCname(columnInfoVO.getColumnCname());
  197. columnVerify.setColumnEname(columnInfoVO.getColumnEname());
  198. columnVerify.setTableCname(columnInfoVO.getTableCname());
  199. columnVerify.setTableEname(columnInfoVO.getTableEname());
  200. if (addColumnVerifyVO.getRegularId() != null) {
  201. //插入正则维护表
  202. //先判断是否该字段信息是否已关联正则
  203. RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
  204. .eq("column_id", columnId)
  205. .eq("is_deleted", IsDeleteEnum.N.getKey())
  206. );
  207. if (selectOneMapping != null) {
  208. Asserts.fail("所选字段已关联正则!");
  209. }
  210. RegularMapping regularMapping = new RegularMapping();
  211. regularMapping.setColumnId(columnId);
  212. regularMapping.setGmtCreate(new Date());
  213. regularMapping.setRegularId(addColumnVerifyVO.getRegularId());
  214. try {
  215. regularMappingFacade.getBaseMapper().insert(regularMapping);
  216. } catch (Exception e) {
  217. Asserts.fail("关联正则失败,请重试!");
  218. }
  219. Long regularMappingId = regularMapping.getId();
  220. //插入总表
  221. columnVerify.setType(ColumnVerifyTypeEnum.REGULAR_TYPE.getKey());
  222. columnVerify.setVerifyId(regularMappingId);
  223. columnVerify.setVerifyVal(addColumnVerifyVO.getRegularName());
  224. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  225. columnVerify.setGmtCreate(new Date());
  226. try {
  227. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  228. } catch (Exception e) {
  229. Asserts.fail("保存失败");
  230. }
  231. }
  232. if (addColumnVerifyVO.getIsRequired() != null) {
  233. //插入表字段的非空校验维护表
  234. //先判断是否该字段信息是否已存在非空规则
  235. NonnullInfo selectOneInfo = nonnullInfoFacade.getBaseMapper().selectOne(new QueryWrapper<NonnullInfo>()
  236. .eq("column_id", columnId)
  237. .eq("is_deleted", IsDeleteEnum.N.getKey())
  238. );
  239. if (selectOneInfo != null) {
  240. Asserts.fail("所选字段已存在是否非空维护规则");
  241. }
  242. NonnullInfo nonnullInfo = new NonnullInfo();
  243. nonnullInfo.setColumnId(columnId);
  244. nonnullInfo.setGmtCreate(new Date());
  245. nonnullInfo.setIsRequired(addColumnVerifyVO.getIsRequired());
  246. try {
  247. nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
  248. } catch (Exception e) {
  249. Asserts.fail("关联是否非空失败,请重试!");
  250. }
  251. Long nonnullInfoId = nonnullInfo.getId();
  252. //插入总表
  253. columnVerify.setType(ColumnVerifyTypeEnum.NONNULL_TYPE.getKey());
  254. columnVerify.setVerifyId(nonnullInfoId);
  255. columnVerify.setVerifyVal(addColumnVerifyVO.getIsRequired());
  256. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  257. columnVerify.setGmtCreate(new Date());
  258. try {
  259. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  260. } catch (Exception e) {
  261. Asserts.fail("保存失败");
  262. }
  263. }
  264. if (ListUtil.isNotEmpty(addColumnVerifyVO.getStandardValueList())) {
  265. //插入关键字信息维护表
  266. List<String> standardValueList = addColumnVerifyVO.getStandardValueList();
  267. for (String standardValue : standardValueList) {
  268. StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
  269. standardvalueInfo.setColumnId(columnId);
  270. standardvalueInfo.setGmtCreate(new Date());
  271. standardvalueInfo.setVal(standardValue);
  272. try {
  273. standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
  274. } catch (Exception e) {
  275. Asserts.fail("关联关键字失败,请重试!");
  276. }
  277. Long standardvalueInfoId = standardvalueInfo.getId();
  278. //插入总表
  279. columnVerify.setType(ColumnVerifyTypeEnum.STANDARD_TYPE.getKey());
  280. columnVerify.setVerifyId(standardvalueInfoId);
  281. columnVerify.setVerifyVal(standardValue);
  282. columnVerify.setDescription(addColumnVerifyVO.getDescription());
  283. columnVerify.setGmtCreate(new Date());
  284. try {
  285. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  286. } catch (Exception e) {
  287. Asserts.fail("保存失败");
  288. }
  289. }
  290. }
  291. }
  292. return true;
  293. }
  294. /**
  295. * 删除字段校验规则
  296. *
  297. * @param delColumnVerifyVO
  298. * @return: 是否成功
  299. */
  300. public Boolean delColumnVerify(DelColumnVerifyVO delColumnVerifyVO) {
  301. Boolean nonnullInfo = true;
  302. Boolean tandardvalueInfo = true;
  303. Boolean regular = true;
  304. List<Long> ids = delColumnVerifyVO.getIds();
  305. List<ColumnVerify> columnVerifyList = columnVerifyFacade.getBaseMapper().selectList(new QueryWrapper<ColumnVerify>()
  306. .eq("is_deleted", IsDeleteEnum.N.getKey())
  307. .in("column_id", ids)
  308. );
  309. if (ListUtil.isEmpty(columnVerifyList)) {
  310. Asserts.fail("删除失败,不存在所需删除数据!");
  311. }
  312. //所删正则ID
  313. List<Long> regularId = new ArrayList<>();
  314. //非空判断ID
  315. List<Long> nonnullId = new ArrayList<>();
  316. //关键值ID
  317. List<Long> standardValueId = new ArrayList<>();
  318. for (ColumnVerify columnVerify : columnVerifyList) {
  319. String type = columnVerify.getType();
  320. //非空
  321. if (ColumnVerifyTypeEnum.NONNULL_TYPE.getKey().equals(type)) {
  322. nonnullId.add(columnVerify.getVerifyId());
  323. }
  324. //关键值
  325. if (ColumnVerifyTypeEnum.STANDARD_TYPE.getKey().equals(type)) {
  326. standardValueId.add(columnVerify.getVerifyId());
  327. }
  328. //正则
  329. if (ColumnVerifyTypeEnum.REGULAR_TYPE.getKey().equals(type)) {
  330. regularId.add(columnVerify.getVerifyId());
  331. }
  332. }
  333. //非空
  334. if (ListUtil.isNotEmpty(nonnullId)) {
  335. nonnullInfo = nonnullInfoFacade.update(new UpdateWrapper<NonnullInfo>()
  336. .eq("is_deleted", IsDeleteEnum.N.getKey())
  337. .in("id", nonnullId)
  338. .set("is_deleted", IsDeleteEnum.Y.getKey())
  339. .set("gmt_modified", new Date())
  340. );
  341. }
  342. //关键值
  343. if (ListUtil.isNotEmpty(standardValueId)) {
  344. tandardvalueInfo = standardvalueInfoFacade.update(new UpdateWrapper<StandardvalueInfo>()
  345. .eq("is_deleted", IsDeleteEnum.N.getKey())
  346. .in("id", standardValueId)
  347. .set("is_deleted", IsDeleteEnum.Y.getKey())
  348. .set("gmt_modified", new Date())
  349. );
  350. }
  351. //正则
  352. if (ListUtil.isNotEmpty(regularId)) {
  353. regular = regularMappingFacade.update(new UpdateWrapper<RegularMapping>()
  354. .eq("is_deleted", IsDeleteEnum.N.getKey())
  355. .in("id", regularId)
  356. .set("is_deleted", IsDeleteEnum.Y.getKey())
  357. .set("gmt_modified", new Date())
  358. );
  359. }
  360. if (nonnullInfo && tandardvalueInfo && regular) {
  361. boolean update = columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
  362. .eq("is_deleted", IsDeleteEnum.N.getKey())
  363. .in("column_id", ids)
  364. .set("is_deleted", IsDeleteEnum.Y.getKey())
  365. .set("gmt_modified", new Date())
  366. );
  367. if (update) {
  368. return true;
  369. }
  370. }
  371. Asserts.fail("删除失败");
  372. return false;
  373. }
  374. /**
  375. * 修改字段校验规则
  376. *
  377. * @param updateColumnVerifyVO
  378. * @return: 是否成功
  379. */
  380. public Boolean updateColumnVerify(UpdateColumnVerifyVO updateColumnVerifyVO) {
  381. Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
  382. updateColumnVerifyVO.setHospitalId(currentHospitalId);
  383. List<ColumnInfoVO> columnList = updateColumnVerifyVO.getColumnList();
  384. AddColumnVerifyVO addColumnVerifyVO = new AddColumnVerifyVO();
  385. List<ColumnInfoVO> columnInfoAdd = new ArrayList<>();
  386. List<ColumnInfoVO> columnInfoUpdate = new ArrayList<>();
  387. //查出表列信息ID
  388. List<Long> columnInfoIdAdd = new ArrayList<>();
  389. List<Long> columnInfoIdUpdate = new ArrayList<>();
  390. for (ColumnInfoVO columnInfoVO : columnList) {
  391. Long columnId = columnInfoVO.getId();
  392. ColumnVerify columnVerify = columnVerifyFacade.getById(columnId);
  393. if (columnVerify != null) {
  394. //库中已有维护
  395. columnInfoIdUpdate.add(columnId);
  396. columnInfoUpdate.add(columnInfoVO);
  397. } else {
  398. //库中暂无维护
  399. columnInfoIdAdd.add(columnId);
  400. columnInfoAdd.add(columnInfoVO);
  401. }
  402. }
  403. if (ListUtil.isNotEmpty(columnInfoAdd)) {
  404. addColumnVerifyVO.setHospitalId(updateColumnVerifyVO.getHospitalId());
  405. addColumnVerifyVO.setColumnList(columnInfoAdd);
  406. addColumnVerifyVO.setIsRequired(updateColumnVerifyVO.getIsRequired());
  407. addColumnVerifyVO.setRegularId(updateColumnVerifyVO.getRegularId());
  408. addColumnVerifyVO.setRegularName(updateColumnVerifyVO.getRegularName());
  409. addColumnVerifyVO.setStandardValueList(updateColumnVerifyVO.getStandardValueList());
  410. addColumnVerifyVO.setDescription(updateColumnVerifyVO.getDescription());
  411. //库中暂无走新增流程
  412. addColumnVerify(addColumnVerifyVO);
  413. }
  414. //库中已有走修改流程
  415. if (ListUtil.isNotEmpty(columnInfoIdUpdate)) {
  416. for (Long columnId : columnInfoIdUpdate) {
  417. ColumnInfo columnInfo = columnInfoFacade.getById(columnId);
  418. ColumnVerify columnVerify = new ColumnVerify();
  419. columnVerify.setColumnId(columnId);
  420. columnVerify.setColumnCname(columnInfo.getColumnCname());
  421. columnVerify.setColumnEname(columnInfo.getColumnEname());
  422. columnVerify.setTableCname(columnInfo.getTableCname());
  423. columnVerify.setTableEname(columnInfo.getTableEname());
  424. if (updateColumnVerifyVO.getRegularId() != null) {
  425. //插入正则维护表
  426. //先判断是否该字段信息是否已关联正则
  427. RegularMapping selectOneMapping = regularMappingFacade.getBaseMapper().selectOne(new QueryWrapper<RegularMapping>()
  428. .eq("column_id", columnId)
  429. .eq("is_deleted", IsDeleteEnum.N.getKey())
  430. );
  431. if (selectOneMapping != null) {
  432. //已关联正则走修改
  433. regularMappingFacade.update(new UpdateWrapper<RegularMapping>()
  434. .eq("column_id", columnId)
  435. .eq("is_deleted", IsDeleteEnum.N.getKey())
  436. .set("regular_id", updateColumnVerifyVO.getRegularId())
  437. .set("gmt_modified", new Date())
  438. );
  439. Long mappingId = selectOneMapping.getId();
  440. //修改总表
  441. columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
  442. .eq("column_id", columnId)
  443. .eq("type", ColumnVerifyTypeEnum.REGULAR_TYPE.getKey())
  444. .eq("verify_id", mappingId)
  445. .set("verify_val", updateColumnVerifyVO.getRegularName())
  446. .set("description", updateColumnVerifyVO.getDescription())
  447. .set("gmt_modified", new Date())
  448. );
  449. } else {
  450. //未关联正则走新增
  451. RegularMapping regularMapping = new RegularMapping();
  452. regularMapping.setColumnId(columnId);
  453. regularMapping.setGmtCreate(new Date());
  454. regularMapping.setRegularId(updateColumnVerifyVO.getRegularId());
  455. try {
  456. regularMappingFacade.getBaseMapper().insert(regularMapping);
  457. } catch (Exception e) {
  458. Asserts.fail("关联正则失败,请重试!");
  459. }
  460. Long regularMappingId = regularMapping.getId();
  461. //插入总表
  462. columnVerify.setType(ColumnVerifyTypeEnum.REGULAR_TYPE.getKey());
  463. columnVerify.setVerifyId(regularMappingId);
  464. columnVerify.setVerifyVal(updateColumnVerifyVO.getRegularName());
  465. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  466. columnVerify.setGmtCreate(new Date());
  467. try {
  468. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  469. } catch (Exception e) {
  470. Asserts.fail("保存失败");
  471. }
  472. }
  473. }
  474. if (updateColumnVerifyVO.getIsRequired() != null) {
  475. //插入表字段的非空校验维护表
  476. //先判断是否该字段信息是否已存在非空规则
  477. NonnullInfo selectOneInfo = nonnullInfoFacade.getBaseMapper().selectOne(new QueryWrapper<NonnullInfo>()
  478. .eq("column_id", columnId)
  479. .eq("is_deleted", IsDeleteEnum.N.getKey())
  480. );
  481. if (selectOneInfo != null) {
  482. //已关联非空校验走修改
  483. nonnullInfoFacade.update(new UpdateWrapper<NonnullInfo>()
  484. .eq("column_id", columnId)
  485. .eq("is_deleted", IsDeleteEnum.N.getKey())
  486. .set("is_required", updateColumnVerifyVO.getIsRequired())
  487. .set("gmt_modified", new Date())
  488. );
  489. Long mappingId = selectOneInfo.getId();
  490. //修改总表
  491. columnVerifyFacade.update(new UpdateWrapper<ColumnVerify>()
  492. .eq("column_id", columnId)
  493. .eq("type", ColumnVerifyTypeEnum.NONNULL_TYPE.getKey())
  494. .eq("verify_id", mappingId)
  495. .set("verify_val", updateColumnVerifyVO.getIsRequired())
  496. .set("description", updateColumnVerifyVO.getDescription())
  497. .set("gmt_modified", new Date())
  498. );
  499. } else {
  500. NonnullInfo nonnullInfo = new NonnullInfo();
  501. nonnullInfo.setColumnId(columnId);
  502. nonnullInfo.setGmtCreate(new Date());
  503. nonnullInfo.setIsRequired(updateColumnVerifyVO.getIsRequired());
  504. try {
  505. nonnullInfoFacade.getBaseMapper().insert(nonnullInfo);
  506. } catch (Exception e) {
  507. Asserts.fail("关联是否非空失败,请重试!");
  508. }
  509. Long nonnullInfoId = nonnullInfo.getId();
  510. //插入总表
  511. columnVerify.setType(ColumnVerifyTypeEnum.NONNULL_TYPE.getKey());
  512. columnVerify.setVerifyId(nonnullInfoId);
  513. columnVerify.setVerifyVal(updateColumnVerifyVO.getIsRequired());
  514. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  515. columnVerify.setGmtCreate(new Date());
  516. try {
  517. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  518. } catch (Exception e) {
  519. Asserts.fail("保存失败");
  520. }
  521. }
  522. }
  523. if (ListUtil.isNotEmpty(updateColumnVerifyVO.getStandardValueList())) {
  524. //插入关键字信息维护表
  525. List<String> standardValueList = updateColumnVerifyVO.getStandardValueList();
  526. //先删除之前的关联然后直接插入
  527. standardvalueInfoFacade.remove(new QueryWrapper<StandardvalueInfo>()
  528. .eq("column_id", columnId)
  529. );
  530. columnVerifyFacade.remove(new QueryWrapper<ColumnVerify>()
  531. .eq("column_id", columnId)
  532. .eq("type", ColumnVerifyTypeEnum.STANDARD_TYPE.getKey())
  533. );
  534. for (String standardValue : standardValueList) {
  535. StandardvalueInfo standardvalueInfo = new StandardvalueInfo();
  536. standardvalueInfo.setColumnId(columnId);
  537. standardvalueInfo.setGmtCreate(new Date());
  538. standardvalueInfo.setVal(standardValue);
  539. try {
  540. standardvalueInfoFacade.getBaseMapper().insert(standardvalueInfo);
  541. } catch (Exception e) {
  542. Asserts.fail("关联关键字失败,请重试!");
  543. }
  544. Long standardvalueInfoId = standardvalueInfo.getId();
  545. //插入总表
  546. columnVerify.setType(ColumnVerifyTypeEnum.STANDARD_TYPE.getKey());
  547. columnVerify.setVerifyId(standardvalueInfoId);
  548. columnVerify.setVerifyVal(standardValue);
  549. columnVerify.setDescription(updateColumnVerifyVO.getDescription());
  550. columnVerify.setGmtCreate(new Date());
  551. try {
  552. columnVerifyFacade.getBaseMapper().insert(columnVerify);
  553. } catch (Exception e) {
  554. Asserts.fail("保存失败");
  555. }
  556. }
  557. }
  558. }
  559. }
  560. return true;
  561. }
  562. }