kongzy
2023-11-28 59d9ea33f503e363f2e2941c7c00cc9dd9d9d1c7
src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java
@@ -1,17 +1,20 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.dao.SysLaboratoryDao;
import com.nanometer.smartlab.dao.SysUserDao;
import com.nanometer.smartlab.entity.SysLaboratory;
import com.nanometer.smartlab.entity.SysUser;
import com.nanometer.smartlab.entity.dto.LaboratoryVo;
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.model.CommonPage;
import com.nanometer.smartlab.util.ExcelUtils;
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.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
@@ -20,11 +23,6 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
/**
@@ -37,9 +35,10 @@
   @Resource(name = "sysLaboratoryDao")
   SysLaboratoryDao sysLaboratoryDao;
   @Resource
   SysUserDao sysUserDao;
   @Transactional(propagation = Propagation.REQUIRED)
   public List<SysLaboratory> getSysLaboratoryList(String type, String name, Integer first, Integer pageSize) {
   public List<SysLaboratory> getSysLaboratoryList(String type, String name,String project,Integer first, Integer pageSize) {
      try {
         Map<String, Object> params = new HashMap<String, Object>();
         if (StringUtils.isNotBlank(type)) {
@@ -48,6 +47,7 @@
         if (StringUtils.isNotBlank(name)) {
            params.put("name", "%" + name + "%");
         }
         params.put("project", project);
         params.put("first", first);
         params.put("pageSize", pageSize);
         return this.sysLaboratoryDao.getSysLaboratoryList(params);
@@ -58,8 +58,36 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public int getSysLaboratoryTotalCount(String type, String name) {
   @Override
   public CommonPage<SysLaboratory> getSysLaboratoryList(Integer pageNum, Integer pageSize, String name) {
      if(pageNum==null||pageNum<1){
         pageNum=1;
      }
      if(pageSize==null||pageSize<1){
         pageSize=10;
      }
      if(pageSize>50){
         pageSize=50;
      }
      Map<String, Object> params = new HashMap<>();
      if(StringUtils.isNotBlank(name)){
         params.put("name","%"+name+"%");
      }
      params.put("first", (pageNum-1)*pageSize);
      params.put("pageSize", pageSize);
      CommonPage commonPage=new CommonPage();
      commonPage.setPageNum(pageNum);
      commonPage.setPageSize(pageSize);
      Long total=new Long(sysLaboratoryDao.getSysLaboratoryTotalCount(params));
      commonPage.setTotal(total);
      commonPage.setTotalPage(CommonPage.getTotalPage(total,pageSize));
      List<SysLaboratory> sysReagents=sysLaboratoryDao.getSysLaboratorySimpleInfoList(params);
      commonPage.setList(sysReagents);
      return commonPage;
   }
   public int getSysLaboratoryTotalCount(String type, String name,String project) {
      try {
         Map<String, Object> params = new HashMap<String, Object>();
         if (StringUtils.isNotBlank(type)) {
@@ -68,6 +96,7 @@
         if (StringUtils.isNotBlank(name)) {
            params.put("name", "%" + name + "%");
         }
         params.put("project", project);
         return this.sysLaboratoryDao.getSysLaboratoryTotalCount(params);
      } catch (DataAccessException e) {
         logger.error(e.getMessage(), e);
@@ -76,7 +105,6 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public SysLaboratory getSysLaboratory(String id) {
      try {
         return this.sysLaboratoryDao.getSysLaboratory(id);
@@ -87,7 +115,16 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public SysLaboratory getSysLaboratorySimpleInfo(String id) {
      try {
         return this.sysLaboratoryDao.getSysLaboratorySimpleInfo(id);
      } catch (DataAccessException e) {
         logger.error(e.getMessage(), e);
         throw new BusinessException(ExceptionEnumCode.DB_ERR,
               MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
      }
   }
   public SysLaboratory insertSysLaboratory(SysLaboratory sysLaboratory) {
      try {
         if (sysLaboratory.getId() == null) {
@@ -109,7 +146,6 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public boolean updateSysLaboratory(SysLaboratory sysLaboratory) {
      try {
         int row = this.sysLaboratoryDao.updateSysLaboratory(sysLaboratory);
@@ -129,7 +165,7 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public boolean deleteSysLaboratory(List<SysLaboratory> sysLaboratoryList) {
      try {
         if (sysLaboratoryList == null || sysLaboratoryList.size() == 0) {
@@ -163,7 +199,7 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public boolean isSysLaboratoryExist(String barCode, String editId) {
      try {
         Map<String, Object> params = new HashMap<String, Object>();
@@ -179,7 +215,7 @@
      }
   }
   @Transactional(propagation = Propagation.REQUIRED)
   public SysLaboratory getSysLaboratoryByBarCode(String barCode) {
      try {
         Map<String, Object> params = new HashMap<String, Object>();
@@ -238,21 +274,60 @@
      map.put("barCode", "地址码");
      map.put("location", "地址");
      map.put("department", "部门");
      map.put("project", "课题组");
      ExcelUtils.export2Excel(list,"实验室信息",map);
   }
   @Override
   public List<Map> exportLabList(String type, String name) {
   public List<Map> exportLabList(String type, String name,String project) {
      Map<String,String> params = new HashMap<>();
      params.put("type", type);
      params.put("name", name);
      params.put("project", project);
      return sysLaboratoryDao.exportLabList(params);
   }
    @Override
    public List<LaboratoryVo.Laboratory> getLaboratoryByProject(String project) {
      return sysLaboratoryDao.getLaboratoryByProject(project);
    }
   @Override
   @Transactional(propagation = Propagation.REQUIRED)
   public List<SysLaboratory> getSysLaboratoryListByUserId(String userId) {
      //1.根据用户的课题组获取实验室,没有就按照部门
      SysUser user = sysUserDao.getSysUser(userId);
      Map<String,Object> params = new HashMap<>();
      if (StringUtils.isNotBlank(user.getProject())){
         params.put("project", user.getProject());
         List<SysLaboratory> list = sysLaboratoryDao.getSysLaboratoryList(params);
         if (list.size() < 1) {
            return this.getSysLaboratoryListByDep(user.getDepartment());
         }else {
            return list;
         }
      }else {
         return this.getSysLaboratoryListByDep(user.getDepartment());
      }
   }
   @Override
   public List<Map> getPersonInChargeByProjects(String projectStr) {
      List<Map> result = new ArrayList<>();
      String[] projectSplit = projectStr.split(",");
      for (int i = 0; i < projectSplit.length; i++) {
         String project = projectSplit[i];
         if (StringUtils.isBlank(project)) continue;
         List<Map> tail = sysLaboratoryDao.getPersonInCharge(project);
         result.addAll(tail);
      }
      return result;
   }
   @Override
   public List<SysLaboratory> getSysLaboratoryListByDep(String depId) {
      try {
         Map<String, Object> params = new HashMap<String, Object>();