package com.nanometer.smartlab.service; import com.nanometer.smartlab.dao.SysReagentDao; import com.nanometer.smartlab.entity.SysReagent; import com.nanometer.smartlab.entity.SysUser; 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 javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by johnny on 17/11/29. */ @Service("sysReagentService") public class SysReagentServiceImpl implements SysReagentService { private static Logger logger = Logger.getLogger(SysReagentService.class); @Resource(name = "sysReagentDao") SysReagentDao sysReagentDao; @Transactional(propagation = Propagation.REQUIRED) public List getSysReagentList(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(name)) { params.put("name", "%" + name + "%"); } if (StringUtils.isNotBlank(cas)) { params.put("cas", "%" + cas + "%"); } if (StringUtils.isNotBlank(supplierId)) { params.put("supplierId", supplierId); } if(type!=null){ params.put("type", type); } params.put("first", first); params.put("pageSize", pageSize); return this.sysReagentDao.getSysReagentList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } public List getSysReagentListNew(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize) { try { Map params = new HashMap(); params.put("name", name); params.put("cas", cas); params.put("supplierId", supplierId); params.put("type", type); params.put("first", first); params.put("pageSize", pageSize); return this.sysReagentDao.getSysReagentListNew(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } /** * @Description: 收藏与未收藏 0未收藏 1收藏 统计个数 * @date 2020/12/1 17:04 */ @Override public int favorCount(SysUser user, String name, String cas, String supplierId, String productSn, Integer favorFlag) { Map params = new HashMap<>(); params.put("user", user.getId()); params.put("favorFlag", favorFlag); params.put("name", name); params.put("cas", cas); params.put("supplierId", supplierId); params.put("productSn", productSn); return sysReagentDao.favorCount(params); } /** * @Description: 收藏与未收藏 0未收藏 1收藏 统计详情 * @date 2020/12/1 17:04 */ @Override public List favorList(SysUser user, String name, String cas, String supplierId, String productSn, Integer favorFlag, Integer first, Integer pageSize) { Map params = new HashMap<>(); params.put("user", user.getId()); params.put("favorFlag", favorFlag); params.put("name", name); params.put("cas", cas); params.put("supplierId", supplierId); params.put("productSn", productSn); params.put("first", first); params.put("pageSize", pageSize); return sysReagentDao.favorList(params); } @Override public int reagentCount(SysUser user, String name, String cas, String supplierId, String productSn) { Map params = new HashMap<>(); params.put("user", user.getId()); params.put("name", name); params.put("cas", cas); params.put("supplierId", supplierId); params.put("productSn", productSn); return sysReagentDao.reagentCount(params); } @Override public List reagentList(SysUser user, String name, String cas, String supplierId, String productSn, int first, int pageSize) { Map params = new HashMap<>(); params.put("user", user.getId()); params.put("name", name); params.put("cas", cas); params.put("supplierId", supplierId); params.put("productSn", productSn); params.put("first", first); params.put("pageSize", pageSize); params.put("MaxSize", first+pageSize); return sysReagentDao.reagentList(params); } @Transactional(propagation = Propagation.REQUIRED) public int getSysReagentTotalCount(String name, String cas, String supplierId,Integer type) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(name)) { params.put("name", "%" + name + "%"); } if (StringUtils.isNotBlank(cas)) { params.put("cas", "%" + cas + "%"); } if(type!=null){ params.put("type", type); } params.put("supplierId", supplierId); return this.sysReagentDao.getSysReagentTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } public int getSysReagentTotalCountNew(String name, String cas, String supplierId,Integer type) { try { Map params = new HashMap(); params.put("name", name); params.put("cas", cas); params.put("type", type); params.put("supplierId", supplierId); return this.sysReagentDao.getSysReagentTotalCountNew(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 SysReagent getSysReagent(String id) { try { return this.sysReagentDao.getSysReagent(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 SysReagent insertSysReagent(SysReagent sysReagent) { try { if (sysReagent.getId() == null) { sysReagent.setId(IDUtils.uuid()); } this.sysReagentDao.insertSysReagent(sysReagent); return sysReagent; } 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 updateSysReagent(SysReagent sysReagent) { try { int row = this.sysReagentDao.updateSysReagent(sysReagent); 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 deleteSysReagent(List sysReagentList) { try { if (sysReagentList == null || sysReagentList.size() == 0) { return false; } List ids = new ArrayList(); for (SysReagent sysReagent : sysReagentList) { ids.add(sysReagent.getId()); } int row = this.sysReagentDao.deleteSysReagent(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); } } @Override public int insertSysReagentList(List sysReagentList) { try { int i = 0; for (SysReagent sysReagent:sysReagentList ) { SysReagent sysReagentTmpl = new SysReagent(); sysReagentTmpl = sysReagentDao.getSysReagentByCas(sysReagent); if(sysReagentTmpl!=null){ sysReagent.setId(sysReagentTmpl.getId()); this.sysReagentDao.updateSysReagentForExport(sysReagent); }else{ if (sysReagent.getId() == null) { sysReagent.setId(IDUtils.uuid()); } this.sysReagentDao.insertSysReagent(sysReagent); } i++; } return i; } 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); } } @Override public List query(){ return this.sysReagentDao.query(); } @Override public Map getReagentDetail(String id) { return sysReagentDao.getSysReagentDetail(id); } @Override public int insertSysReagentList2(List sysReagentList) { try { int i = 0; for (SysReagent sysReagent:sysReagentList ) { SysReagent sysReagentTmpl = new SysReagent(); sysReagentTmpl = sysReagentDao.getSysReagentByCas2(sysReagent); if(sysReagentTmpl!=null){ sysReagent.setId(sysReagentTmpl.getId()); this.sysReagentDao.updateSysReagentForExport(sysReagent); }else{ if (sysReagent.getId() == null) { sysReagent.setId(IDUtils.uuid()); } this.sysReagentDao.insertSysReagent(sysReagent); } i++; } return i; } 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); } } }