package com.nanometer.smartlab.service;
|
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
import com.nanometer.smartlab.dao.SysLaboratoryContainerDao;
|
import com.nanometer.smartlab.entity.BaseMeta;
|
import com.nanometer.smartlab.entity.SysLaboratoryContainer;
|
import com.nanometer.smartlab.entity.enumtype.ValidFlag;
|
import com.nanometer.smartlab.util.ExcelUtils;
|
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.dao.DataAccessException;
|
import org.springframework.stereotype.Service;
|
|
import com.nanometer.smartlab.dao.SysControllerDao;
|
import com.nanometer.smartlab.entity.SysController;
|
import com.nanometer.smartlab.exception.BusinessException;
|
import com.nanometer.smartlab.exception.ExceptionEnumCode;
|
import com.nanometer.smartlab.util.MessageUtil;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service("sysControllerService")
|
public class SysControllerServiceImpl implements SysControllerService {
|
|
private static Logger logger = Logger.getLogger(SysControllerServiceImpl.class);
|
@Resource(name = "sysControllerDao")
|
SysControllerDao sysControllerDao;
|
@Resource(name = "sysLaboratoryContainerDao")
|
SysLaboratoryContainerDao sysLaboratoryContainerDao;
|
@Resource(name = "baseMetaService")
|
BaseMetaService baseMetaService;
|
@Override
|
public List<SysController> getAllControllerList() {
|
try {
|
return this.sysControllerDao.getAllControllerList();
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public void insertSysController(SysController sysController) {
|
try {
|
this.sysControllerDao.insertSysControllerById(sysController);
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
|
}
|
|
@Override
|
@Transactional
|
public int updateSysController(SysController sysController) {
|
try {
|
Map params = new HashMap();
|
params.put("id", sysController.getId());
|
params.put("code", sysController.getControllerCode());
|
sysLaboratoryContainerDao.updateSysLabContainer(params);
|
return this.sysControllerDao.updateSysControllerById(sysController);
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public List<SysController> getSysControllerList(String code, String name, Integer first, Integer pageSize) {
|
try {
|
Map<String, Object> params = new HashMap<String, Object>();
|
if (StringUtils.isNotBlank(name)) {
|
params.put("controllerName", "%" + name + "%");
|
}
|
if (StringUtils.isNotBlank(code)) {
|
params.put("controllerCode", "%" + code + "%");
|
}
|
params.put("first", first);
|
params.put("pageSize", pageSize);
|
return this.sysControllerDao.getSysControllerList(params);
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public int deleteSysControllers(List<Integer> ids) {
|
try {
|
return this.sysControllerDao.deleteSysControllers(ids);
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public void uploadFile(FileUploadEvent event) throws Exception{
|
List<SysController> sysControllers=this.getAllControllerList();
|
List<BaseMeta> typeList=baseMetaService.getBaseMetaList("controller_type");
|
//主控名字和条码
|
HashSet<String> controllerInfo = new HashSet<>();
|
if (sysControllers != null && sysControllers.size()>0){
|
sysControllers.forEach(sysController -> {
|
controllerInfo.add(sysController.getControllerCode());
|
controllerInfo.add(sysController.getControllerName());
|
});
|
|
}
|
//主控类型
|
Map<String, String> typeMap = new HashMap<>();
|
if (typeList != null && typeList.size() > 0) {
|
typeList.forEach(type->{
|
typeMap.put(type.getMetaValue(), type.getId());
|
});
|
}
|
|
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<SysLaboratoryContainer> sysLaboratoryContainers = 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();
|
|
for (int t = 0; t < totalCells; t++) {
|
String cellInfo="";
|
if (row.getCell(t) != null) {
|
|
if (row.getCell(t).getCellTypeEnum().toString().equals("NUMERIC")) {
|
cellInfo = String.valueOf(row.getCell(t).getNumericCellValue());
|
if(t==2){
|
cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString();
|
}
|
|
} else {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
|
}
|
valuesList.add(cellInfo);
|
}
|
//重名判断
|
String controlName = valuesList.get(0);
|
if (controllerInfo.contains(controlName)){
|
throw new Exception("设备名称重复:"+controlName);
|
}
|
|
//条码重复
|
String controlCode = valuesList.get(1);
|
if (controllerInfo.contains(controlCode)){
|
throw new Exception("条码重复:"+controlCode);
|
}
|
|
//设备类型填写判断
|
String controlType = valuesList.get(2).trim();
|
if (!typeMap.containsKey(controlType)){
|
throw new Exception("设备类型填写不符合要求:"+controlType);
|
}
|
|
SysController sysController = new SysController();
|
sysController.setValidFlag(ValidFlag.VALID);
|
sysController.setControllerCode(controlCode);
|
sysController.setControllerName(controlName);
|
sysController.setType(typeMap.get(controlType));
|
this.insertSysController(sysController);
|
controllerInfo.add(controlName);
|
controllerInfo.add(controlCode);
|
}
|
|
}
|
|
@Override
|
public List<Map> exportExcelList(String name, String code) {
|
Map<String, String> params = new HashMap<>();
|
params.put("name", name);
|
params.put("code", code);
|
return sysControllerDao.exportExcelList(params);
|
}
|
|
@Override
|
public void export2Excel(List<Map> list) throws Exception {
|
Map<String, String> map = new LinkedHashMap<>();
|
map.put("name", "设备名称");
|
map.put("code", "设备代码");
|
map.put("type", "设备类型");
|
ExcelUtils.export2Excel(list,"主控设备信息",map);
|
}
|
|
@Override
|
public SysController getSysController(Integer id) {
|
try {
|
return this.sysControllerDao.getSysController(id);
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public boolean getSysControllerByCode(String code) {
|
try {
|
boolean result = false;
|
if(this.sysControllerDao.getSysControllerByCode(code) != null )
|
{
|
result = true;
|
}
|
return result;
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public boolean getSysControllerByName(String name) {
|
try {
|
boolean result = false;
|
if(this.sysControllerDao.getSysControllerByName(name) != null )
|
{
|
result = true;
|
}
|
return result;
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
@Override
|
public int getSysControllerListCount(String code, String name) {
|
try {
|
Map<String, Object> params = new HashMap<String, Object>();
|
if (StringUtils.isNotBlank(name)) {
|
params.put("controllerName", "%" + name + "%");
|
}
|
if (StringUtils.isNotBlank(code)) {
|
params.put("controllerCode", "%" + code + "%");
|
}
|
return this.sysControllerDao.getSysControllerList(params).size();
|
} catch (DataAccessException e) {
|
logger.error(e.getMessage(), e);
|
throw new BusinessException(ExceptionEnumCode.DB_ERR,
|
MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
|
}
|
}
|
|
}
|