|  |  |  | 
|---|
|  |  |  | package com.ld.igds.m.service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; | 
|---|
|  |  |  | import com.bstek.dorado.data.entity.EntityUtils; | 
|---|
|  |  |  | import com.bstek.dorado.data.provider.Page; | 
|---|
|  |  |  | import com.ld.igds.check.dto.CheckItemData; | 
|---|
|  |  |  | import com.ld.igds.check.mapper.CheckStandardMapper; | 
|---|
|  |  |  | import com.ld.igds.constant.RedisConst; | 
|---|
|  |  |  | import com.ld.igds.models.MQuality; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.ld.igds.util.RedisUtil; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.hibernate.Session; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author chen | 
|---|
|  |  |  | 
|---|
|  |  |  | private CheckStandardMapper checkStandardMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void listQuality(Page<MQuality> page, Map<String, Object> param) throws Exception{ | 
|---|
|  |  |  | public void listQuality(Page<MQuality> page, Map<String, Object> param) throws Exception { | 
|---|
|  |  |  | String hql = " from " + MQuality.class.getName() | 
|---|
|  |  |  | + " where companyId =:companyId and deptId =:deptId"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (null != param) { | 
|---|
|  |  |  | String str = (String) param.get("depotId"); | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(str)){ | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(str)) { | 
|---|
|  |  |  | hql += " and depotId =:depotId"; | 
|---|
|  |  |  | args.put("depotId",  str ); | 
|---|
|  |  |  | args.put("depotId", str); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | str = (String) param.get("type"); | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(str)){ | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(str)) { | 
|---|
|  |  |  | hql += " and type =:type"; | 
|---|
|  |  |  | args.put("type",  str ); | 
|---|
|  |  |  | args.put("type", str); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date date = (Date) param.get("start"); | 
|---|
|  |  |  | if(null != date) { | 
|---|
|  |  |  | if (null != date) { | 
|---|
|  |  |  | hql += " and time >=:start"; | 
|---|
|  |  |  | args.put("start", DateUtil.getCurZero(date)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取仓库最新一条质检数据 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param depotId | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | * @throws Exception | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public MQuality getLastData(String depotId){ | 
|---|
|  |  |  | if(StringUtils.isEmpty(depotId)){ | 
|---|
|  |  |  | public MQuality getLastData(String depotId) { | 
|---|
|  |  |  | if (StringUtils.isEmpty(depotId)) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String hql = " from " + MQuality.class.getName() | 
|---|
|  |  |  | 
|---|
|  |  |  | args.put("companyId", ContextUtil.getCompanyId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | hql += " and depotId =:depotId"; | 
|---|
|  |  |  | args.put("depotId",  depotId ); | 
|---|
|  |  |  | args.put("depotId", depotId); | 
|---|
|  |  |  | hql += " order by time DESC"; | 
|---|
|  |  |  | List<MQuality> list = this.query(hql,args); | 
|---|
|  |  |  | if(list != null && list.size() > 0){ | 
|---|
|  |  |  | List<MQuality> list = this.query(hql, args); | 
|---|
|  |  |  | if (list != null && list.size() > 0) { | 
|---|
|  |  |  | MQuality quality = list.get(0); | 
|---|
|  |  |  | quality.setCheckItems(checkStandardMapper.getCheckItemById(quality.getId(),ContextUtil.getCompanyId())); | 
|---|
|  |  |  | 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)){ | 
|---|
|  |  |  | if (StringUtils.isEmpty(depotId)) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MQuality quality = (MQuality) redisUtil.get(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,depotId)); | 
|---|
|  |  |  | if(quality == 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); | 
|---|
|  |  |  | 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)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (null != data.getZblb() || "" != data.getZblb()) { | 
|---|
|  |  |  | String[] str = data.getZblb().split("#"); | 
|---|
|  |  |  | //防止在更新操作时再次存入相同的数据 | 
|---|
|  |  |  | Set<String> metrics = new HashSet<>(); | 
|---|
|  |  |  | for (int i = 0; i < str.length; i++) { | 
|---|
|  |  |  | metrics.add(str[i].substring(0, 1)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String value = ""; | 
|---|
|  |  |  | for (String s : metrics) { | 
|---|
|  |  |  | value = value + s + "#"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | data.setZblb(value.substring(0, value.length() - 1)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Session session = this.getSessionFactory().openSession(); | 
|---|
|  |  |  | data.setUpdateTime(new Date()); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (null == data.getId()) { | 
|---|
|  |  |  | data.setId(id); | 
|---|
|  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | session.update(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | redisUtil.del(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,data.getDepotId())); | 
|---|
|  |  |  | redisUtil.del(RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId())); | 
|---|
|  |  |  | MQuality newData; | 
|---|
|  |  |  | if (EntityUtils.isEntity(data)) { | 
|---|
|  |  |  | newData = new MQuality(); | 
|---|
|  |  |  | BeanUtils.copyProperties(data, newData, new String[]{"checkItems"}); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | newData = data; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | redisUtil.set(RedisConst.buildKey(ContextUtil.getCompanyId(),RedisConst.KEY_DEPOT_QUALITY,data.getDepotId()),data,60 * 60 *24); | 
|---|
|  |  |  | redisUtil.set(RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId()), newData, 60 * 60 * 24); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (null != data.getId()) { | 
|---|
|  |  |  | session.delete(data); | 
|---|
|  |  |  | CheckItemData checkItemData = new CheckItemData(); | 
|---|
|  |  |  | checkItemData.setCompanyId(ContextUtil.getCompanyId()); | 
|---|
|  |  |  | checkItemData.setCheckId(data.getId()); | 
|---|
|  |  |  | checkStandardMapper.delCheckItemByParam(checkItemData); | 
|---|
|  |  |  | redisUtil.del(RedisConst.buildKey(ContextUtil.getCompanyId(), RedisConst.KEY_DEPOT_QUALITY, data.getDepotId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|