package com.iailab.module.model.mcs.pre.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iailab.module.model.mcs.pre.dao.MmPredictModelDao; import com.iailab.module.model.mcs.pre.entity.MmPredictModelEntity; import com.iailab.module.model.mcs.pre.service.MmPredictModelService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; /** * @author PanZhibao * @date 2021年04月27日 11:30 */ @Service public class MmPredictModelServiceImpl extends ServiceImpl implements MmPredictModelService { @Autowired private MmPredictModelDao mmPredictModelDao; private static Map modelEntityMap = new ConcurrentHashMap<>(); private static Map activeModelMap = new ConcurrentHashMap<>(); @Override public void savePredictModel(MmPredictModelEntity predictModel) { predictModel.setId(UUID.randomUUID().toString()); mmPredictModelDao.insert(predictModel); clearCache(); } @Override public void update(MmPredictModelEntity predictModel) { this.updateById(predictModel); clearCache(); } @Override public MmPredictModelEntity getInfoFromCatch(String id) { if (!modelEntityMap.containsKey(id)) { MmPredictModelEntity modelEntity = getInfo(id); if (modelEntity != null) { modelEntityMap.put(id, modelEntity); } } return modelEntityMap.get(id); } @Override public void clearCache() { modelEntityMap.clear(); activeModelMap.clear(); } @Override public MmPredictModelEntity getInfo(String id) { return mmPredictModelDao.selectById(id); } @Override public BigDecimal getSampleLength(String id) { BigDecimal result = BigDecimal.ZERO; List list = mmPredictModelDao.getSampleLength(id); if (CollectionUtils.isEmpty(list)) { return result; } result = list.get(0).getPredictsamplength(); return result; } public void deleteBatch(String[] itemIds) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("itemid", itemIds); mmPredictModelDao.delete(queryWrapper); clearCache(); } public MmPredictModelEntity getByItemid(String itemid) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("itemid", itemid); List list = mmPredictModelDao.selectList(queryWrapper); if (CollectionUtils.isEmpty(list)) { return new MmPredictModelEntity(); } return list.get(0); } @Override public List getNoSettingmapPredictModel(Map params) { return mmPredictModelDao.getNoSettingmapPredictModel(params); } @Override public MmPredictModelEntity getActiveModelByItemId(String itemId) { if (activeModelMap.containsKey(itemId)) { return activeModelMap.get(itemId); } List list = mmPredictModelDao.getActiveModelByItemId(itemId); if (CollectionUtils.isEmpty(list)) { return null; } activeModelMap.put(itemId, list.get(0)); return activeModelMap.get(itemId); } }