package com.objecteye.service.impl; import cn.hutool.core.date.DateUtil; import com.objecteye.entity.FeatureResultMsg; import com.objecteye.entity.PageResult; import com.objecteye.entity.SyFeature; import com.objecteye.entity.SyPersonnel; import com.objecteye.service.DeployService; import com.objecteye.service.FeatureService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.*; /** * 服务实现层 * * @author Administrator */ @Service public class FeatureServiceImpl implements FeatureService { @Autowired private DeployService deployService; @Autowired private RedisTemplate redisTemplate; @Autowired private MongoTemplate mongoTemplate; @Override public List findAll() { return mongoTemplate.find(Query.query(Criteria.where("isDelete").is(0).and("isSingle").is(0)), SyFeature.class); } /** * 按分页查询 */ @Override public PageResult findPage(int pageNum, int pageSize) { List result = mongoTemplate.find(Query.query(Criteria.where("isDelete").is(0).and("isSingle").is(0)) .limit(pageSize).skip((pageNum - 1) * pageSize), SyFeature.class); long count = mongoTemplate.count(Query.query(Criteria.where("isDelete").is(0).and("isSingle").is(0)), SyFeature.class); List featureResultMsgs = new ArrayList<>(); for (SyFeature feature : result) { FeatureResultMsg featureResultMsg = new FeatureResultMsg(); featureResultMsg.setId(feature.getId()); featureResultMsg.setName(feature.getName()); featureResultMsg.setCount(feature.getCount()); featureResultMsg.setCreateDate(feature.getCreateDate()); featureResultMsgs.add(featureResultMsg); } return new PageResult<>((long) Math.ceil((double) count / pageSize), featureResultMsgs); } /** * 增加 * * @return */ @Override public String add(SyFeature feature) { String strDate = DateUtil.now(); feature.setCount(0); feature.setCreateDate(strDate); feature.setUpdateDate(strDate); feature.setIsDelete(0); feature.setIsSingle(0); feature = mongoTemplate.insert(feature); return feature.getId(); } /** * 修改 * * @return */ @Override public String update(SyFeature feature) { String now = DateUtil.now(); feature.setUpdateDate(now); mongoTemplate.save(feature); return feature.getId(); } /** * 根据ID获取实体 * * @param id * @return */ @Override public SyFeature findOne(String id) { return mongoTemplate.findOne(Query.query(Criteria.where("id").is(id)), SyFeature.class); } /** * 批量删除 * * @param ids */ @Override public void delete(List ids) { for (String id : ids) { List deployList = deployService.getDeployListByLibAndDeployType(id, 2); List syPersonnels = mongoTemplate.find(Query.query(Criteria.where("fid").is(id)), SyPersonnel.class); mongoTemplate.updateMulti(Query.query(Criteria.where("fid").is(id)), Update.update("status", 1), SyPersonnel.class); if (syPersonnels.size() > 0) { for (SyPersonnel syPersonnel : syPersonnels) { redisTemplate.opsForHash().delete("personUrl", syPersonnel.getId()); } } if (deployList != null && deployList.size() > 0) { for (String deployId : deployList) { String key = deployId + "|" + id; redisTemplate.opsForHash().delete(key); String[] deploy = {deployId}; deployService.delete(Arrays.asList(deploy)); } } } mongoTemplate.updateMulti(Query.query(Criteria.where("id").in(ids)), Update.update("isDelete", 1), SyFeature.class); } @Override public PageResult findPage(SyFeature feature, int pageNum, int pageSize) { Criteria criteria = Criteria.where("isDelete").is(0); if (feature != null) { if (feature.getName() != null && feature.getName().length() > 0) { criteria.and("name").regex(".*" + feature.getName() + ".*"); } if (feature.getCreateDate() != null && feature.getCreateDate().length() > 0) { criteria.and("createDate").regex(".*" + feature.getCreateDate() + ".*"); } if (feature.getUpdateDate() != null && feature.getUpdateDate().length() > 0) { criteria.and("updateDate").regex(".*" + feature.getUpdateDate() + ".*"); } if (feature.getDescription() != null && feature.getDescription().length() > 0) { criteria.and("description").regex(".*" + feature.getDescription() + ".*"); } } List syFeatures = mongoTemplate.find(Query.query(criteria).limit(pageSize).skip((pageNum - 1) * pageSize), SyFeature.class); long total = mongoTemplate.count(Query.query(criteria), SyFeature.class); return new PageResult<>((long) Math.ceil((double) total / pageSize), syFeatures); } /** * @param feature * @return */ @Override public String updateCountById(SyFeature feature) { mongoTemplate.save(feature); return feature.getId(); } @Override public List> findAllName() { List> list = new ArrayList<>(); List syFeatures = findAll(); for (SyFeature feature : syFeatures) { Map map = new HashMap<>(16); String name = feature.getName(); String id = feature.getId(); map.put("value", id + ""); map.put("name", name); list.add(map); } return list; } }