TableServiceCmdService.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.boman.system.common;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.boman.common.core.utils.StringUtils;
  6. import com.boman.common.core.utils.collection.CollectionUtils;
  7. import com.boman.common.redis.RedisKey;
  8. import com.boman.common.redis.service.RedisService;
  9. import com.boman.gen.domain.GenTable;
  10. import com.boman.gen.domain.GenTableColumn;
  11. import com.boman.system.service.impl.BaseDeleteService;
  12. import com.boman.system.service.impl.BaseSaveService;
  13. import com.boman.system.utils.IdUtils;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. import static com.boman.common.core.utils.obj.ObjectUtils.requireNonNull;
  21. import static com.boman.common.core.utils.obj.ObjectUtils.requiredNonNull;
  22. import static com.boman.system.common.FormDataConstant.*;
  23. /**
  24. * @author shiqian
  25. * @description
  26. * @date 2021年03月22日 09:51
  27. **/
  28. @Component
  29. public class TableServiceCmdService {
  30. @Autowired
  31. private BaseDeleteService deleteService;
  32. @Autowired
  33. private BaseSaveService saveService;
  34. @Autowired
  35. private RedisService redisService;
  36. private static final Logger LOGGER = LoggerFactory.getLogger(TableServiceCmdService.class);
  37. private BaseTableDTO packTableDTO(BaseTableSaveDTO baseTableSaveDTO) {
  38. BaseTableDTO baseTableDTO = new BaseTableDTO();
  39. baseTableDTO.setFixedData(baseTableSaveDTO.getFixedData());
  40. baseTableDTO.setObjId(baseTableSaveDTO.getObjId());
  41. baseTableDTO.setTable(baseTableSaveDTO.getTable());
  42. return baseTableDTO;
  43. }
  44. public final ValueHolder<RowResult> objectSave(BaseTableSaveDTO baseTableSaveDTO) {
  45. BaseTableDTO baseTableDTO = packTableDTO(baseTableSaveDTO);
  46. TableServiceContext context = TableServiceContext.createFrom(baseTableDTO);
  47. // BaseSaveService baseSaveService = SpringUtils.getBean(BaseSaveService.class);
  48. // 拿到pkName和maxId
  49. List<GenTableColumn> columns = context.getTable().getColumns();
  50. String pkName = IdUtils.getPkName(columns);
  51. StringUtils.requireNonNull(pkName);
  52. Long maxId = IdUtils.getMaxId(baseTableDTO.getTable(), pkName);
  53. RowResult rowResult = saveService.insertRow(context.getRealTableName(), pkName, maxId, context.getRows().get(0));
  54. if (RowResult.checkSuccess(rowResult)) {
  55. LOGGER.info("保存成功,封装到数据库的数据为: {}", JSON.toJSONString(rowResult.getData()));
  56. } else {
  57. LOGGER.error("保存失败,保持的原始数据为: {}", JSON.toJSONString(baseTableSaveDTO));
  58. }
  59. return ValueHolder.ok(rowResult);
  60. }
  61. /**
  62. * 功能描述: 通用删除接口 (真的删除)
  63. *
  64. * @param dto 前台传过来的dto
  65. * @return com.boman.system.common.ValueHolder
  66. */
  67. public ValueHolder<RowResult> objectDelete(BaseTableSaveDTO dto) {
  68. requireNonNull(dto.getTable());
  69. Long[] idArr = CollectionUtils.listToArray(dto.getIdList());
  70. requiredNonNull(idArr);
  71. // 拿到pkName
  72. GenTable genTable = redisService.getCacheObject(RedisKey.TABLE_INFO + requireNonNull(dto.getTable()));
  73. requireNonNull(genTable);
  74. String pkName = IdUtils.getPkName(genTable.getColumns());
  75. RowResult rowResult = deleteService.objectDelete(idArr, dto.getTable(), requireNonNull(pkName));
  76. LOGGER.info(rowResult.getMessage() + ", id: {}", Arrays.toString(idArr));
  77. return ValueHolder.ok(rowResult);
  78. }
  79. /**
  80. * 功能描述: 通用删除接口 (真的删除)
  81. *
  82. * @param dto 前台传过来的dto
  83. * @return com.boman.system.common.ValueHolder
  84. */
  85. public ValueHolder<RowResult> objectLogicDelete(BaseTableSaveDTO dto) {
  86. requireNonNull(dto.getTable());
  87. Long[] idArr = CollectionUtils.listToArray(dto.getIdList());
  88. requiredNonNull(idArr);
  89. // 拿到pkName
  90. GenTable genTable = redisService.getCacheObject(RedisKey.TABLE_INFO + requireNonNull(dto.getTable()));
  91. requireNonNull(genTable);
  92. String pkName = IdUtils.getPkName(genTable.getColumns());
  93. JSONObject jsonObject= new JSONObject();
  94. jsonObject.put(dto.getLogicDelName(), dto.getLogicDelValue());
  95. RowResult rowResult = deleteService.objectLogicDelete(idArr, dto.getTable(), requireNonNull(pkName), jsonObject);
  96. LOGGER.info(rowResult.getMessage() + ", id: {}", Arrays.toString(idArr));
  97. return ValueHolder.ok(rowResult);
  98. }
  99. /**
  100. * 功能描述: 获取单表单数据
  101. *
  102. * @param condition condition
  103. * @return com.boman.system.common.ValueHolder
  104. */
  105. public ValueHolder<RowResult> getObject(BaseTableSaveDTO dto) {
  106. requireNonNull(dto.getTable());
  107. // 拿到每个字段对应的查询类型,是 = 或者 like 或者 > 或者 <
  108. GenTable genTable = redisService.getCacheObject(RedisKey.TABLE_INFO + requireNonNull(dto.getTable()));
  109. requireNonNull(genTable);
  110. JSONObject fixedData = dto.getFixedData();
  111. requireNonNull(fixedData);
  112. // 查询条件
  113. JSONObject condition = fixedData.getJSONObject(CONDITION);
  114. // 需要返回到前台的列
  115. JSONArray showData = fixedData.getJSONArray(SHOW_DATA);
  116. return ValueHolder.ok("");
  117. }
  118. }