package com.nanometer.smartlab.service; import com.nanometer.smartlab.dao.SysContainerSensorsDao; import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; import com.nanometer.smartlab.dao.SysWarehouseContainerDao; import com.nanometer.smartlab.entity.SysContainerSensors; import com.nanometer.smartlab.entity.SysLaboratoryContainer; import com.nanometer.smartlab.entity.SysWarehouseContainer; import com.nanometer.smartlab.entity.dto.ContainerStatusMngDto; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.IDUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; import java.math.BigDecimal; import java.sql.SQLException; import java.util.*; @Service("sysContainerSensorsService") public class SysContainerSensorsServiceImpl implements SysContainerSensorsService { private static Logger logger = Logger.getLogger(SysContainerSensorsServiceImpl.class); @Resource(name = "sysContainerSensorsDao") private SysContainerSensorsDao sysContainerSensorsDao; @Resource private SysLaboratoryContainerDao sysLaboratoryContainerDao; @Resource private SysWarehouseContainerDao sysWarehouseContainerDao; @Override @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {RuntimeException.class, SQLException.class,}) public int add(SysContainerSensors sysContainerSensors) throws RuntimeException { return sysContainerSensorsDao.insertSelective(sysContainerSensors); } @Override @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {RuntimeException.class, SQLException.class,}) public void syncSysContainerSensors(List sensorsList) throws Exception { Assert.notNull(sensorsList, "请求参数不能为空!"); for (Map params : sensorsList) { String containerCode = params.containsKey("containerCode")?params.get("containerCode").toString():""; SysContainerSensors sensors = new SysContainerSensors(); // sensors.setId(IDUtils.uuid()); sensors.setFlag(params.containsKey("Flag")?String.valueOf(params.get("Flag")):""); sensors.setHumidity(params.containsKey("Humidity")?(int) params.get("Humidity"):0); sensors.setTemp(params.containsKey("Temp")?(double) params.get("Temp"):0); sensors.setVoc1(params.containsKey("voc1")?(double) params.get("voc1"):0); SysLaboratoryContainer laboratoryContainer = sysLaboratoryContainerDao.getSysLaboratoryContainerByContainerCode(containerCode); if (Objects.isNull(laboratoryContainer)) { SysWarehouseContainer warehouseContainer = sysWarehouseContainerDao.getSysWarehouseContainerByContainerCode(containerCode); if (Objects.isNull(warehouseContainer)) { logger.error("The containerCode:"+containerCode+" has not been exists!"); continue; } else { sensors.setType(SysContainerSensors.TYPE_WAREHOUSE_CONTAINER); sensors.setContainerId(warehouseContainer.getId()); } } else { sensors.setType(SysContainerSensors.TYPE_LABORATORY_CONTAINER); sensors.setContainerId(laboratoryContainer.getId()); } sensors.setUpdateTime(DateUtils.parseDate(params.get("updateTime").toString(), Constants.TIME_PATTERN_YYYY_MM_DD_HH_MM_SS)); sysContainerSensorsDao.insertSelective(sensors); } } @Override @Transactional(readOnly = true) public SysContainerSensors get(String id) throws RuntimeException { return sysContainerSensorsDao.selectByPrimaryKey(id); } @Override @Transactional(readOnly = true) public List getListBySelective(Map params) throws RuntimeException { return sysContainerSensorsDao.getListBySelective(params); } @Override @Transactional(readOnly = true) public int countBySelective(Map params) throws RuntimeException { return sysContainerSensorsDao.countBySelective(params); } /** * @discription 返回所有信息 * @author celin * @param params * @return 暂存列表list * @throws RuntimeException */ @Override public List selectInfo(Map params) throws RuntimeException { return sysContainerSensorsDao.selectAll(params); } @Override public int countAll(Map params) throws RuntimeException { return sysContainerSensorsDao.countAll(params); } @Override public ContainerStatusMngDto getRowData(String rowKey) { return sysContainerSensorsDao.getRowData(rowKey); } @Override public Map selectMaxTemperature(String selectedContainerId, String beginDate, String endDate) { if (StringUtils.isBlank(selectedContainerId)) throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空"); return sysContainerSensorsDao.selectMaxTemperature( selectedContainerId, beginDate, endDate); } @Override public Map selectMaxHumidity(String selectedContainerId, String beginDate, String endDate) { if (StringUtils.isBlank(selectedContainerId)) throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空"); return sysContainerSensorsDao.selectMaxHumidity(selectedContainerId, beginDate, endDate); } @Override public Map selectMaxVoc(String selectedContainerId, String beginDate, String endDate) { if (StringUtils.isBlank(selectedContainerId)) throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"参数为空"); return sysContainerSensorsDao.selectMaxVoc(selectedContainerId, beginDate, endDate); } }