ConfigService.java 6.6 KB

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