package com.nanometer.smartlab.service;
|
|
import com.nanometer.smartlab.dao.SysProjectDao;
|
import com.nanometer.smartlab.entity.SysProject;
|
import com.nanometer.smartlab.entity.SysUser;
|
import com.nanometer.smartlab.entity.enumtype.SeeFlag;
|
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.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.primefaces.event.FileUploadEvent;
|
import org.primefaces.model.UploadedFile;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataIntegrityViolationException;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.io.InputStream;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class SysProjectServiceImpl implements SysProjectService {
|
private static Logger logger = Logger.getLogger(SysProjectService.class);
|
|
@Resource(name = "sysProjectDao")
|
SysProjectDao sysProjectDao;
|
|
@Resource
|
private SysUserService sysUserService;
|
|
@Override
|
public SysProject getSysProject(String id) {
|
return sysProjectDao.getSysProject(id);
|
}
|
|
@Override
|
public SysProject getProjectByProId(String projectId) {
|
return sysProjectDao.getProjectByProId(projectId);
|
}
|
|
@Override
|
public boolean isSysProjectExist(String projectName, Object o) {
|
try {
|
Map<String, Object> params = new HashMap<String, Object>();
|
params.put("projectName", projectName);
|
|
int count = this.sysProjectDao.getSysProjectTotalCount(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
|
public boolean insertSysProject(SysProject sysProject) {
|
sysProject.setId(IDUtils.uuid());
|
sysProject.setValidFlag(1);
|
return sysProjectDao.insertSysProject(sysProject) > 0;
|
}
|
|
@Override
|
public boolean updateSysProject(SysProject sysProject) {
|
return sysProjectDao.updateSysProject(sysProject) > 0;
|
}
|
|
@Override
|
public boolean deleteSysProject(List<SysProject> selectedList) {
|
try {
|
if (CollectionUtils.isEmpty(selectedList)) {
|
return false;
|
}
|
|
List<String> ids = new ArrayList<String>();
|
for (SysProject sysReagent : selectedList) {
|
ids.add(sysReagent.getId());
|
}
|
|
int row = this.sysProjectDao.deleteSysProjects(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 getSysProjectTotalCount() {
|
Map<String, Object> params = new HashMap<>();
|
return sysProjectDao.getSysProjectTotalCount(params);
|
}
|
|
@Override
|
public int getSysProjectTotalCountUpdate(String createrUser,String projectId,String projectName,String sysUserName) {
|
//Map<String, Object> params = new HashMap<>();
|
//String user="";
|
Map<String, Object> params = new HashMap<>();
|
if (StringUtils.isNotBlank(createrUser)) {
|
SysUser sysUser = sysUserService.getSysUser(createrUser);
|
// 不是管理员时,加入applyUserId
|
if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) {
|
params.put("createrUser", createrUser);
|
}
|
}
|
params.put("projectId", projectId);
|
if(StringUtils.isNotBlank(projectName)){
|
params.put("projectName","%"+ projectName+"%");
|
}
|
if(StringUtils.isNotBlank(sysUserName)) {
|
params.put("sysUserName", "%"+sysUserName+"%");
|
}
|
//System.out.println(createrUser);
|
return sysProjectDao.getSysProjectTotalCountUpdate(params);
|
}
|
|
@Override
|
public List<SysProject> getSysProjectListUpdate(int first, int pageSize,String createrUser,String projectId,String projectName,String sysUserName) {
|
Map<String, Object> params = new HashMap<>();
|
params.put("first", first);
|
params.put("pageSize", pageSize);
|
|
if (StringUtils.isNotBlank(createrUser)) {
|
SysUser sysUser = sysUserService.getSysUser(createrUser);
|
// 不是管理员时,加入applyUserId
|
if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) {
|
params.put("createrUser", createrUser);
|
}
|
}
|
params.put("projectId", projectId);
|
if(StringUtils.isNotBlank(projectName)){
|
params.put("projectName","%"+ projectName+"%");
|
}
|
if(StringUtils.isNotBlank(sysUserName)) {
|
params.put("sysUserName", "%"+sysUserName+"%");
|
}
|
// params.put("createrUser",createrUser);
|
return sysProjectDao.getSysProjectListUpdate(params);
|
}
|
|
@Override
|
@Transactional
|
public void importProject(FileUploadEvent event,SysUser currentUser) throws Exception {
|
|
List<SysUser> userList = sysUserService.getSysUserList(null, null, null, null, null,null,null);
|
List<SysProject> sysProjectList = sysProjectDao.getSysProjectList(new HashMap());
|
Map<String,String> userMap = new HashMap();
|
Map<String,String> projectMap = new HashMap();
|
userList.forEach(user->{
|
userMap.put(user.getName(), user.getId());
|
});
|
|
sysProjectList.forEach(project->{
|
projectMap.put(project.getProjectId(), project.getProjectId());
|
});
|
|
UploadedFile file = event.getFile();
|
InputStream is = file.getInputstream();
|
boolean isExcel2003 = true;
|
if (file.getFileName().matches("^.+\\.(?i)(xlsx)$")) {
|
isExcel2003 = false;
|
}
|
Workbook wb = null;
|
if (isExcel2003) {
|
wb = new HSSFWorkbook(is);
|
} else {
|
wb = new XSSFWorkbook(is);
|
}
|
Sheet sheet = wb.getSheetAt(0);
|
List<SysProject> sysProjects = new ArrayList<>();
|
int totalRows = sheet.getPhysicalNumberOfRows();
|
Row row = null;
|
int totalCells = 0;
|
for (int i = 1; i < totalRows; i++) {
|
List<String> valuesList = new ArrayList<String>();
|
row = sheet.getRow(i);
|
|
totalCells = row.getPhysicalNumberOfCells();
|
//System.out.println("====="+totalCells);
|
|
// 目前导入文件11列,不满足条件的情况跳过
|
/*if (totalCells != 12) {
|
throw new Exception("导入文件格式不正确");
|
}*/
|
|
|
for (int t = 0; t < totalCells; t++) {
|
String cellInfo = "";
|
if (row.getCell(t) != null) {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
valuesList.add(cellInfo);
|
}
|
|
if (userMap.get(valuesList.get(2)) == null) {
|
throw new Exception("课题负责人不存在");
|
}
|
|
//课题编号重复判断
|
if(projectMap.get(valuesList.get(0))!=null){
|
throw new Exception("课题编号有重复");
|
}
|
|
SysProject sysProject = new SysProject();
|
sysProject.setId(IDUtils.uuid());
|
sysProject.setCreaterUser(currentUser.getId());
|
sysProject.setProjectId(valuesList.get(0));
|
sysProject.setProjectName(valuesList.get(1));
|
sysProject.setSysUserId(userMap.get(valuesList.get(2)));
|
sysProject.setRemark(valuesList.get(3));
|
sysProjects.add(sysProject);
|
//把excel里插入的更新Map
|
projectMap.put(sysProject.getProjectId(), sysProject.getId());
|
}
|
|
if (sysProjects.size() > 0) {
|
sysProjectDao.insertBatch(sysProjects);
|
}
|
}
|
|
@Override
|
public List<SysProject> getAll() {
|
return sysProjectDao.selectDistinctProjects();
|
}
|
|
@Override
|
public Boolean isExistProject(String project) {
|
return sysProjectDao.selectByProject(project) > 0;
|
}
|
|
@Override
|
public List<SysProject> getSysProjectList(int first, int pageSize) {
|
Map<String, Object> params = new HashMap<>();
|
params.put("first", first);
|
params.put("pageSize", pageSize);
|
return sysProjectDao.getSysProjectList(params);
|
}
|
|
@Override
|
public List<SysProject> getSysProjectList(String sysUserId) {
|
Map<String,Object> params=new HashMap<>();
|
params.put("sysUserId",sysUserId);
|
return sysProjectDao.getSysProjectList(params);
|
}
|
|
@Override
|
public List<SysProject> getSysProjectListByProjectId(String projectId) {
|
Map<String,Object> params=new HashMap<>();
|
params.put("projectId",projectId);
|
return sysProjectDao.getSysProjectListByProjectId(params);
|
}
|
}
|