package com.ld.igds.quantity.service; import com.ld.igds.constant.RedisConst; import com.ld.igds.models.QuantityConf; import com.ld.igds.quantity.dto.QuantityData; import com.ld.igds.quantity.dto.QuantityParam; import com.ld.igds.quantity.mapper.QuantityMapper; import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * @author vince.xu * @Title: CoreQuantityServiceImpl * @ProjectName igds-dev * @Description: * @date 2021/6/17 001715:09 */ @Service(CoreQuantityService.BEAN_ID) public class CoreQuantityServiceImpl implements CoreQuantityService { @Autowired private QuantityMapper quantityMapper; @Autowired private RedisUtil redisUtil; @Override public void saveData(QuantityData data) { quantityMapper.saveData(data); } @Override public QuantityData getLastData(QuantityParam param) { return quantityMapper.getLastData(param); } @Override public void setCacheQuantityConf(List list) { if (null == list || list.isEmpty()) return; String key; for (QuantityConf conf : list) { if (StringUtils.isEmpty(conf.getSn())) { conf.setSn(conf.getYtIp()); } key = RedisConst.buildKeyByPrefix(RedisConst.KEY_QUANTITY_CONF, conf.getSn()); redisUtil.set(key, conf); } } public void setCacheQuantityConf(QuantityConf conf) { if (StringUtils.isEmpty(conf.getSn())) { conf.setSn(conf.getYtIp()); } String key = RedisConst.buildKeyByPrefix(RedisConst.KEY_QUANTITY_CONF, conf.getSn()); redisUtil.set(key, conf); } @Override public void refreshQuantityConfCache() { this.setCacheQuantityConf(quantityMapper.queryAll()); } @Override public QuantityConf getCacheQuantityConf(String companyId, String depotId) { String pattern = RedisConst.buildKeyByPrefix(RedisConst.KEY_QUANTITY_CONF, null); Set keys = redisUtil.keys(pattern); if (null == keys || keys.isEmpty()) return null; QuantityConf conf; for (String key : keys) { conf = (QuantityConf) redisUtil.get(key); if (null == conf) continue; if (conf.getCompanyId().equals(companyId) && conf.getDepotId().equals(depotId)) return conf; } return null; } @Override public List getCacheQuantityConf(String companyId) { String pattern = RedisConst.buildKeyByPrefix(RedisConst.KEY_QUANTITY_CONF, null); Set keys = redisUtil.keys(pattern); if (null == keys || keys.isEmpty()) return null; List list = new ArrayList<>(); QuantityConf conf; for (String key : keys) { conf = (QuantityConf) redisUtil.get(key); if (null == conf) { continue; } list.add(conf); } if (list.isEmpty()) { return null; } return list; } @Override public QuantityConf getCacheQuantityConfBySn(String sn) { String key = RedisConst.buildKeyByPrefix(RedisConst.KEY_QUANTITY_CONF, sn); return (QuantityConf) redisUtil.get(key); } @Override public void updateQuantityConfBySn(QuantityConf conf) { // 更新数据库 quantityMapper.updateQuantityConfBySn(conf); setCacheQuantityConf(conf); } @Override public List getQuantityData(QuantityParam param) { return quantityMapper.getQuantityData(param); } @Override public List getDataByLimit(QuantityParam param) { return quantityMapper.getDataByLimit(param); } }