ConfigService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package cn.seecoder.ai.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import cn.seecoder.ai.analysis.FeatureProject;
  5. import cn.seecoder.ai.model.vo.ConfigVO;
  6. import cn.seecoder.ai.dao.*;
  7. import cn.seecoder.ai.dao.entity.Config;
  8. import cn.seecoder.ai.dao.entity.HeaderInfo;
  9. import cn.seecoder.ai.dao.entity.Model;
  10. import cn.seecoder.ai.dao.entity.ModelType;
  11. import cn.seecoder.ai.model.bo.ConfigDetailBO;
  12. import cn.seecoder.ai.model.bo.ConfigModelBO;
  13. import cn.seecoder.ai.model.bo.ConfigBO;
  14. import cn.seecoder.ai.model.bo._ConfigBO;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.stream.Collectors;
  21. /**
  22. * Config-related service Created by twenbo on 2016/11/16. Changed by lucas on 2016/11/18.
  23. */
  24. @Slf4j
  25. @Service
  26. public class ConfigService {
  27. @Autowired
  28. private ConfigDAO configDao;
  29. @Autowired
  30. private FileInfoDAO fileInfoDao;
  31. @Autowired
  32. private ModelTypeDAO modelTypeDao;
  33. @Autowired
  34. private HeaderInfoDAO headerInfoDao;
  35. @Autowired
  36. private ModelDAO modelDao;
  37. @Autowired
  38. private FeatureProject featureProject;
  39. /**
  40. * @param configVO
  41. * @return
  42. */
  43. public String addConfig(ConfigVO configVO) {
  44. Config configInfo = new Config();
  45. configInfo.setFileInfoId(Integer.parseInt(configVO.getFileInfoId()));
  46. configInfo.setUserId(Integer.parseInt(configVO.getUserId()));
  47. configInfo.setModelTypeId(Integer.parseInt(configVO.getModelTypeId()));
  48. configInfo.setConfName(configVO.getConfName());
  49. configInfo.setFieldIds(JSON.toJSON(configVO.getFieldIds()).toString());
  50. int configId = configDao.save(configInfo).getId();
  51. return String.valueOf(configId);
  52. }
  53. /**
  54. * @param userId
  55. * @return
  56. */
  57. public List<ConfigBO> getAllConfigs(int userId) {
  58. List<ConfigBO> rsl = configDao.findByUserId(userId).stream().map((config) -> {
  59. String fileName = fileInfoDao.findById(config.getFileInfoId()).getFilename();
  60. String modelTypeName = modelTypeDao.findById(config.getModelTypeId()) == null ? "" :
  61. modelTypeDao.findById(config.getModelTypeId()).getModelTypeName();
  62. return new ConfigBO(String.valueOf(config.getFileInfoId()),
  63. fileName,
  64. String.valueOf(config.getId()),
  65. String.valueOf(config.getModelTypeId()),
  66. modelTypeName,
  67. config.getConfName(),
  68. JSONObject.parseArray(config.getFieldIds(), String.class).stream().map(fieldId ->
  69. headerInfoDao.findById(Integer.parseInt(fieldId))
  70. ).collect(Collectors.toList()));
  71. }).collect(Collectors.toList());
  72. return rsl;
  73. }
  74. /**
  75. * @param userId
  76. * @return
  77. */
  78. public List<_ConfigBO> _getAllConfigsByUserId(int userId) {
  79. List<_ConfigBO> rsl = configDao.findByUserId(userId).stream().map((config) -> {
  80. String fileName = fileInfoDao.findById(config.getFileInfoId()).getFilename();
  81. _ConfigBO configPojo = new _ConfigBO(String.valueOf(config.getFileInfoId()),
  82. fileName,
  83. String.valueOf(config.getId()),
  84. config.getConfName());
  85. return configPojo;
  86. }).collect(Collectors.toList());
  87. return rsl;
  88. }
  89. /**
  90. * @param configId
  91. * @return
  92. */
  93. public ConfigDetailBO getConfigInfoByConfigId(int configId) {
  94. List<ConfigModelBO> modelInfos = new ArrayList<>();
  95. List<Model> models = modelDao.findByConfigId(configId);
  96. for (Model model : models) {
  97. ModelType modelType = modelTypeDao.findById(model.getModelTypeId());
  98. int flag = -1;
  99. if (model.isTrained() && model.getResOfModel() != null) {
  100. flag = 1;
  101. } else if (model.isTrained() && model.getResOfModel() == null) {
  102. flag = 0;
  103. }
  104. modelInfos.add(new ConfigModelBO(
  105. model.getModelName(), modelType == null ? "自动训练" : modelType.getModelDetailName(), flag
  106. ));
  107. }
  108. Config config = configDao.findById(configId);
  109. int modelTypeId=config.getModelTypeId();
  110. String modelTypeName = modelTypeDao.findById(config.getModelTypeId()) == null ? "" : modelTypeDao.findById(config.getModelTypeId()).getModelTypeName();
  111. String modelTypeDes = modelTypeDao.findById(config.getModelTypeId()) == null ? "" : modelTypeDao.findById(config.getModelTypeId()).getModelDes();
  112. String modelDetailDes = modelTypeDao.findById(config.getModelTypeId()) == null ? "" : modelTypeDao.findById(config.getModelTypeId()).getModelDetailDes();
  113. ConfigDetailBO configPojo = new ConfigDetailBO(
  114. String.valueOf(config.getId()),
  115. String.valueOf(modelTypeId),
  116. modelTypeName,
  117. modelTypeDes,
  118. modelDetailDes,
  119. JSONObject.parseArray(config.getFieldIds(), String.class).stream().map(fieldId ->
  120. headerInfoDao.findById(Integer.parseInt(fieldId))
  121. ).collect(Collectors.toList()),
  122. modelInfos);
  123. return configPojo;
  124. }
  125. /**
  126. * @param configId
  127. * @param confName
  128. * @param trainFeatureList
  129. * @return
  130. */
  131. public boolean changeConfig(int configId, String confName, List<String> trainFeatureList) {
  132. Config configInfo = configDao.findById(configId);
  133. if(configInfo==null){
  134. return false;
  135. }
  136. configInfo.setConfName(confName);
  137. configInfo.setFieldIds(JSON.toJSON(trainFeatureList).toString());
  138. configDao.save(configInfo);
  139. return true;
  140. }
  141. public boolean deleteConfigById(int configId) {
  142. Config configInfo = configDao.findById(configId);
  143. if(configInfo==null){
  144. return false;
  145. }
  146. List<Model> modelList = modelDao.findByConfigId(configId);
  147. if (modelList != null) {
  148. for (Model model : modelList) {
  149. modelDao.delete(model);
  150. }
  151. }
  152. configDao.delete(configDao.findById(configId));
  153. return true;
  154. }
  155. public List<HeaderInfo> getSelectedFeature(int fileId, String fieldName) {
  156. log.info("FeatureSelector: ", fileId + ", " + fieldName);
  157. List<HeaderInfo> res = featureProject.featureSelector(fileId, fieldName);
  158. return res;
  159. }
  160. }