package com.nanometer.smartlab.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.Maps; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.nanometer.smartlab.dao.SysWarehouseContainerDao; import com.nanometer.smartlab.entity.SysWarehouseContainer; import com.nanometer.smartlab.exception.AlarmCode; import com.nanometer.smartlab.exception.AlarmException; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.util.IDUtils; import com.nanometer.smartlab.util.MessageUtil; /** * Created by cmower on 17/11/20. */ @Service("sysWarehouseContainerService") public class SysWarehouseContainerServiceImpl implements SysWarehouseContainerService { private static Logger logger = Logger.getLogger(SysWarehouseContainerService.class); @Resource(name = "sysWarehouseContainerDao") SysWarehouseContainerDao sysWarehouseContainerDao; @Transactional(propagation = Propagation.REQUIRED) public List getSysWarehouseContainerList(String warehouseType, String warehouseName, String warehouseId, Integer first, Integer pageSize) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(warehouseType)) { params.put("warehouseType", warehouseType); } if (StringUtils.isNotBlank(warehouseName)) { params.put("warehouseName", "%" + warehouseName + "%"); } if (StringUtils.isNotBlank(warehouseId)) { params.put("warehouseId", warehouseId); } params.put("first", first); params.put("pageSize", pageSize); return this.sysWarehouseContainerDao.getSysWarehouseContainerList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public List getSysWarehouseContainerList(String warehouseId){ return getSysWarehouseContainerList(null,null,warehouseId,null,null); } @Transactional(propagation = Propagation.REQUIRED) public int getSysWarehouseContainerTotalCount(String warehouseType, String warehouseName) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(warehouseType)) { params.put("warehouseType", warehouseType); } if (StringUtils.isNotBlank(warehouseName)) { params.put("warehouseName", "%" + warehouseName + "%"); } return this.sysWarehouseContainerDao.getSysWarehouseContainerTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public SysWarehouseContainer getSysWarehouseContainer(String id) { try { return this.sysWarehouseContainerDao.getSysWarehouseContainer(id); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public SysWarehouseContainer insertSysWarehouseContainer(SysWarehouseContainer sysWarehouseContainer) { try { if (sysWarehouseContainer.getId() == null) { sysWarehouseContainer.setId(IDUtils.uuid()); } this.sysWarehouseContainerDao.insertSysWarehouseContainer(sysWarehouseContainer); return sysWarehouseContainer; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateSysWarehouseContainer(SysWarehouseContainer sysWarehouseContainer) { try { int row = this.sysWarehouseContainerDao.updateSysWarehouseContainer(sysWarehouseContainer); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean deleteSysWarehouseContainer(List sysWarehouseContainerList) { try { if (sysWarehouseContainerList == null || sysWarehouseContainerList.size() == 0) { return false; } List ids = new ArrayList(); for (SysWarehouseContainer sysWarehouseContainer : sysWarehouseContainerList) { ids.add(sysWarehouseContainer.getId()); } int row = this.sysWarehouseContainerDao.deleteSysWarehouseContainers(ids); if (row == 0) { return false; } return true; } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean isSysWarehouseContainerExist(String containerCode, String editId) { try { Map params = new HashMap(); params.put("containerCode", containerCode); params.put("editId", editId); int count = this.sysWarehouseContainerDao.getSysWarehouseContainerTotalCount(params); return count > 0; } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Override @Transactional(readOnly = true) public List getSysWarehouseContainerInfoList(String startTime, String endTime){ Map params = ImmutableBiMap.of("startTime",startTime,"endTime",endTime); return sysWarehouseContainerDao.getSysWarehouseContainerInfoList(params); } @Override @Transactional(propagation = Propagation.REQUIRED) public SysWarehouseContainer getSysWarehouseContainerByContainerCode(String containerCode) { try { return this.sysWarehouseContainerDao.getSysWarehouseContainerByContainerCode(containerCode); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } }