package com.nanometer.smartlab.service; import com.nanometer.smartlab.dao.SysWarehouseDao; import com.nanometer.smartlab.entity.SysWarehouse; 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; 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 javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by cmower on 17/11/20. */ @Service("sysWarehouseService") public class SysWarehouseServiceImpl implements SysWarehouseService { private static Logger logger = Logger.getLogger(SysWarehouseService.class); @Resource(name = "sysWarehouseDao") SysWarehouseDao sysWarehouseDao; @Transactional(propagation = Propagation.REQUIRED) public List getSysWarehouseList(String type, String name, Integer first, Integer pageSize) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(type)) { params.put("type", type); } if (StringUtils.isNotBlank(name)) { params.put("name", "%" + name + "%"); } params.put("first", first); params.put("pageSize", pageSize); return this.sysWarehouseDao.getSysWarehouseList(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 int getSysWarehouseTotalCount(String type, String name) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(type)) { params.put("type", type); } if (StringUtils.isNotBlank(name)) { params.put("name", "%" + name + "%"); } return this.sysWarehouseDao.getSysWarehouseTotalCount(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 SysWarehouse getSysWarehouse(String id) { try { return this.sysWarehouseDao.getSysWarehouse(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 SysWarehouse insertSysWarehouse(SysWarehouse sysWarehouse) { try { if (sysWarehouse.getId() == null) { sysWarehouse.setId(IDUtils.uuid()); } this.sysWarehouseDao.insertSysWarehouse(sysWarehouse); return sysWarehouse; } 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 updateSysWarehouse(SysWarehouse sysWarehouse) { try { int row = this.sysWarehouseDao.updateSysWarehouse(sysWarehouse); 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 deleteSysWarehouse(List sysWarehouseList) { try { if (sysWarehouseList == null || sysWarehouseList.size() == 0) { return false; } List ids = new ArrayList(); for (SysWarehouse sysWarehouse : sysWarehouseList) { ids.add(sysWarehouse.getId()); } int row = this.sysWarehouseDao.deleteSysWarehouses(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); } } public List getAllSysWarehouseList() { return this.sysWarehouseDao.getAllSysWarehouseList(); } @Transactional(propagation = Propagation.REQUIRED) public boolean isSysWarehouseExist(String barCode, String editId) { try { Map params = new HashMap(); params.put("barCode", barCode); params.put("editId", editId); int count = this.sysWarehouseDao.getSysWarehouseTotalCount(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); } } }