package com.ld.igds.m.service; import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import com.bstek.dorado.data.provider.Page; import com.ld.igds.check.mapper.CheckStandardMapper; import com.ld.igds.constant.RedisConst; import com.ld.igds.models.MQuality; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.DateUtil; import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author chen */ @Component public class HQualityManageService extends HibernateDao { @Autowired private RedisUtil redisUtil; @Autowired private CheckStandardMapper checkStandardMapper; public void listQuality(Page page, Map param) throws Exception{ String hql = " from " + MQuality.class.getName() + " where companyId =:companyId and deptId =:deptId"; Map args = new HashMap(); args.put("companyId", ContextUtil.getCompanyId()); args.put("deptId", ContextUtil.subDeptId(null)); if (null != param) { String str = (String) param.get("depotId"); if(StringUtils.isNotEmpty(str)){ hql += " and depotId =:depotId"; args.put("depotId", str ); } str = (String) param.get("type"); if(StringUtils.isNotEmpty(str)){ hql += " and type =:type"; args.put("type", str ); } Date date = (Date) param.get("start"); if(null != date) { hql += " and time >=:start"; args.put("start", DateUtil.getCurZero(date)); } date = (Date) param.get("end"); if (null != date) { hql += " and time <=:end"; args.put("end", DateUtil.getNextZero(date)); } } String count = "select count(*) " + hql; hql += " order by depotId"; this.pagingQuery(page, hql, count, args); } /** * 获取仓库最新一条质检数据 * @param depotId * @return * @throws Exception */ public MQuality getLastData(String depotId){ if(StringUtils.isEmpty(depotId)){ return null; } String hql = " from " + MQuality.class.getName() + " where companyId =:companyId "; Map args = new HashMap(); args.put("companyId", ContextUtil.getCompanyId()); hql += " and depotId =:depotId"; args.put("depotId", depotId ); hql += " order by time DESC"; List list = this.query(hql,args); if(list != null && list.size() > 0){ MQuality quality = list.get(0); quality.setCheckItems(checkStandardMapper.getCheckItemById(quality.getId(),ContextUtil.getCompanyId())); return list.get(0); } return null; } /** * 从缓存获取当前仓库的最新一条质检数据 * @param depotId * @return * @throws Exception */ public MQuality getCacheLastData(String depotId) { if(StringUtils.isEmpty(depotId)){ return null; } MQuality quality = (MQuality) redisUtil.get(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,depotId)); if(quality == null){ quality = this.getLastData(depotId); if(quality != null ){ redisUtil.set(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,depotId),quality,60 * 60 *24); } } return quality; } public void saveQuality(String id, MQuality data) { if (null == data.getCompanyId()) { data.setCompanyId(ContextUtil.getCompanyId()); } if (null == data.getDeptId()) { data.setDeptId(ContextUtil.subDeptId(null)); } Session session = this.getSessionFactory().openSession(); try { if (null == data.getId()) { data.setId(id); session.save(data); } else { session.update(data); } redisUtil.del(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,data.getDepotId())); redisUtil.set(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,data.getDepotId()),data,60 * 60 *24); } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } } public String delQuality(MQuality data) { Session session = this.getSessionFactory().openSession(); try { if (null != data.getId()) { session.delete(data); } } catch (Exception e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return null; } }