package com.ld.igds.warn.service; import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import com.bstek.dorado.data.provider.Page; import com.ld.igds.constant.Constant; import com.ld.igds.models.AiSer; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; /** * @author */ @Component public class AiSerService extends HibernateDao { @Autowired private RedisUtil redisUtil; public void pageAllAiSer(Page page, Map param) throws Exception { String hql = " from " + AiSer.class.getName() + " where companyId =:companyId and deptId =:deptId "; Map args = new HashMap(); args.put("companyId", ContextUtil.getCompanyId()); args.put("deptId", ContextUtil.subDeptId(null)); if(param != null){ String str = (String) param.get("name"); if (StringUtils.isNotEmpty(str)) { hql += " and name like:name"; args.put("name", "%" + str + "%"); } str = (String) param.get("type"); if (StringUtils.isNotEmpty(str)) { hql += " and type =:type"; args.put("type", str); } str = (String) param.get("id"); if (StringUtils.isNotEmpty(str)) { hql += " and id like:id"; args.put("id","%" + str + "%"); } } String countHql = " select count(*) " + hql; hql += " order by id"; this.pagingQuery(page, hql, countHql, args); } public void updateAiSer(AiSer data) { if (null == data.getDeptId()) { data.setDeptId(ContextUtil.subDeptId(null)); } if (null == data.getCompanyId()) { data.setCompanyId(ContextUtil.getCompanyId()); } Session session = null; try { session = this.getSessionFactory().openSession(); if (null == data.getId()) { data.setId(ContextUtil.getUUID()); } session.saveOrUpdate(data); } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } } public void delSerById(AiSer ser) { Session session = this.getSessionFactory().openSession(); try { session.delete(ser); } finally { session.flush(); session.close(); } } public void refreshCache(String companyId, String deptId) { List list = this.getAllAiSer(companyId, deptId); if (null == list || list.isEmpty()) return; for (AiSer ser : list) { this.setCacheAiSer(ser); } } public List getAllAiSer(String companyId, String deptId) { String hql = " from " + AiSer.class.getName() + " where companyId =:companyId and deptId =:deptId order by id"; Map args = new HashMap(); args.put("companyId", companyId); args.put("deptId", deptId); return this.query(hql, args); } private void setCacheAiSer(AiSer snapSer) { if (null == snapSer.getDeptId()){ snapSer.setDeptId("0000"); } String key = Constant.APP_NAME + ":" + Constant.KEY_AI_SER + ":" + snapSer.getDeptId() + ":" + snapSer.getId(); redisUtil.set(key, snapSer); } /** * 根据库区编码获取AI配置信息 * @param deptId * @return */ public List getCacheAiSerByDeptId(String deptId) { String patten = Constant.APP_NAME + ":" + Constant.KEY_AI_SER + ":" + deptId; Set keys = redisUtil.keys(patten); if(keys == null || keys.isEmpty()){ return null; } List list = new ArrayList<>(); for (String key : keys) { list.add((AiSer) redisUtil.get(key)); } return list; } /** * 根据id获取AI配置信息 * @param id * @return */ public AiSer getCacheAiSerById(String id) { String patten = Constant.APP_NAME + ":" + Constant.KEY_AI_SER; Set keys = redisUtil.keys(patten); AiSer aiSer = null; for (String key : keys) { if (key.indexOf(id) >= 0) { aiSer = (AiSer) redisUtil.get(key); break; } } if(aiSer == null){ List list = this.getAiSerById(id); if(null != list){ aiSer = list.get(0); } } return aiSer; } public List getAiSerById(String id) { String hql = " from " + AiSer.class.getName() + " where id =:id order by id"; Map args = new HashMap(); args.put("id", id); return this.query(hql, args); } public int updateAiSerById(String status, String id) { Session session = null; int i = 0; try { session = this.getSessionFactory().openSession(); String hql = " update " + AiSer.class.getName() + " set status =:status,updateTime =:updateTime where id =:id"; Query query = session.createQuery(hql); query.setString("status", status); query.setTimestamp("updateTime", new Date()); query.setString("id", id); i = query.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return i; } }