package com.nanometer.smartlab.controller;
|
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
import com.nanometer.smartlab.entity.BaseMeta;
|
import com.nanometer.smartlab.entity.SysReagent;
|
import com.nanometer.smartlab.service.BaseMetaService;
|
import com.nanometer.smartlab.service.SysProjectService;
|
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.context.RequestContext;
|
import org.primefaces.event.FileUploadEvent;
|
import org.primefaces.model.LazyDataModel;
|
import org.primefaces.model.SortOrder;
|
import org.primefaces.model.UploadedFile;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import com.nanometer.smartlab.entity.SysLaboratory;
|
import com.nanometer.smartlab.service.SysLaboratoryService;
|
import com.nanometer.smartlab.util.Constants;
|
import com.nanometer.smartlab.util.FacesUtils;
|
|
/**
|
* Created by cmower on 17/11/20.
|
*/
|
@Controller
|
@Scope("session")
|
public class LaboratoryMngController extends BaseController {
|
|
private static final long serialVersionUID = 101543880938627455L;
|
|
private static Logger logger = Logger.getLogger(LaboratoryMngController.class);
|
|
@Resource
|
private SysLaboratoryService sysLaboratoryService;
|
@Resource
|
private BaseMetaService baseMetaService;
|
@Resource
|
private SysProjectService sysProjectService;
|
/**
|
* 数据源
|
*/
|
private LazyDataModel<SysLaboratory> dataModel;
|
/**
|
* 数据模型
|
*/
|
private SysLaboratory sysLaboratory;
|
/**
|
* 选中的list
|
*/
|
private List<SysLaboratory> selectedList;
|
private String type;
|
private String name;
|
private String project;
|
|
private int action;
|
|
public void onNewBtnClick() {
|
this.sysLaboratory = new SysLaboratory();
|
this.action = Constants.ACTION_ADD;
|
}
|
|
public void onEditBtnClick() {
|
if (this.selectedList == null || this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
if (this.selectedList.size() > 1) {
|
FacesUtils.warn("只能选择一个数据进行修改。");
|
return;
|
}
|
this.sysLaboratory = this.sysLaboratoryService.getSysLaboratory(this.selectedList.get(0).getId());
|
this.action = Constants.ACTION_EDIT;
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
|
public void exportLab2Excel(){
|
try {
|
List<Map> list = sysLaboratoryService.exportLabList(type, name,project);
|
sysLaboratoryService.exportLab2Excel(list);
|
FacesUtils.info("导出成功");
|
}catch (Exception e){
|
e.printStackTrace();
|
FacesUtils.warn("导出失败");
|
}
|
}
|
|
public void uploadFile(FileUploadEvent event) {
|
System.out.println("=========导入开始=====");
|
List<BaseMeta> typeList=baseMetaService.getBaseMetaList("laboratory_type");
|
List<BaseMeta> departList=baseMetaService.getBaseMetaList("user_department");
|
try{
|
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<SysLaboratory> sysLaboratories = 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) {
|
|
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();
|
}
|
if(t==3){
|
cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString();
|
}
|
if(t==5){
|
cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString();
|
}
|
if(t==4){
|
cellInfo=(int)Double.parseDouble(cellInfo)+"";
|
}
|
} else {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
|
}
|
valuesList.add(cellInfo);
|
}
|
if (valuesList.size() != 8){
|
break;
|
}
|
System.out.println("value : "+valuesList);
|
SysLaboratory laboratory=new SysLaboratory();
|
laboratory.setType(returnTypeId(typeList,valuesList.get(0)));
|
laboratory.setName(valuesList.get(1));
|
laboratory.setInfoCode(valuesList.get(2));
|
laboratory.setBarCode(valuesList.get(3));
|
laboratory.setLocation1(valuesList.get(4));
|
laboratory.setLocation2(valuesList.get(5));
|
laboratory.setDepartment(returnDepartId(departList,valuesList.get(6)));
|
|
if (valuesList.size() > 7 && !valuesList.get(7).replace(" ","").isEmpty()){
|
List<String> projects = Arrays.asList(valuesList.get(7).split(","));
|
for (String project : projects) {
|
//不存再就直接推出
|
if (!sysProjectService.isExistProject(project)) {
|
throw new Exception("课题组不存在,(" + i + "行)");
|
}
|
}
|
//都存在就设置
|
laboratory.setProject(valuesList.get(7).replace(" ",""));
|
}else{
|
laboratory.setProject(null);
|
}
|
sysLaboratories.add(laboratory);
|
}
|
sysLaboratoryService.insertSysReagentList(sysLaboratories);
|
System.out.println("=========导入结束=====");
|
FacesUtils.info("导入成功。");
|
}catch (Exception ex) {
|
ex.printStackTrace();
|
FacesUtils.info("导入失败。");
|
}
|
}
|
|
public String returnTypeId(List<BaseMeta> list,String name){
|
String id="";
|
for(int i=0;i<list.size();i++){
|
if(name.equals(list.get(i).getMetaValue())){
|
id=list.get(i).getId();
|
}
|
}
|
return id;
|
}
|
|
public String returnDepartId(List<BaseMeta> list,String name){
|
String id="";
|
for(int i=0;i<list.size();i++){
|
if(name.equals(list.get(i).getMetaValue())){
|
id=list.get(i).getId();
|
}
|
}
|
return id;
|
}
|
|
public void onSaveBtnClick() {
|
try {
|
// 新建
|
if (this.action == Constants.ACTION_ADD) {
|
if (this.sysLaboratory == null) {
|
FacesUtils.warn("新建对象为空。");
|
return;
|
}
|
|
// 检查地址条码
|
if (this.sysLaboratoryService.isSysLaboratoryExist(this.sysLaboratory.getBarCode(), null)) {
|
FacesUtils.warn("地址条码已存在。");
|
return;
|
}
|
|
this.sysLaboratoryService.insertSysLaboratory(sysLaboratory);
|
|
FacesUtils.info("新建成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
// 修改
|
} else if (this.action == Constants.ACTION_EDIT) {
|
if (this.sysLaboratory == null) {
|
FacesUtils.warn("修改对象为空。");
|
return;
|
}
|
|
// 检查地址条码
|
if (this.sysLaboratoryService.isSysLaboratoryExist(this.sysLaboratory.getBarCode(),
|
this.sysLaboratory.getId())) {
|
FacesUtils.warn("地址条码已存在。");
|
return;
|
}
|
|
//实体类重新获取项目组信息
|
sysLaboratory.setProject(null);
|
sysLaboratory.getProject();
|
this.sysLaboratoryService.updateSysLaboratory(sysLaboratory);
|
|
FacesUtils.info("修改成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
}
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
public void onDeleteBtnClick() {
|
try {
|
if (this.selectedList == null || this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
|
this.sysLaboratoryService.deleteSysLaboratory(this.selectedList);
|
|
FacesUtils.info("删除成功。");
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
@SuppressWarnings("serial")
|
public LazyDataModel<SysLaboratory> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<SysLaboratory>() {
|
@Override
|
public List<SysLaboratory> load(int first, int pageSize, String sortField, SortOrder sortOrder,
|
Map<String, Object> filters) {
|
List<SysLaboratory> list = null;
|
try {
|
int count = sysLaboratoryService.getSysLaboratoryTotalCount(type, name,project);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = sysLaboratoryService.getSysLaboratoryList(type, name,project, first, pageSize);
|
}
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
return list;
|
}
|
|
@Override
|
public SysLaboratory getRowData(String rowKey) {
|
Iterator<SysLaboratory> iterator = this.iterator();
|
if (iterator != null) {
|
SysLaboratory su = null;
|
while (iterator.hasNext()) {
|
su = iterator.next();
|
if (rowKey.equals(su.getId())) {
|
return su;
|
}
|
}
|
}
|
return null;
|
}
|
};
|
}
|
return dataModel;
|
}
|
|
public SysLaboratory getSysLaboratory() {
|
return sysLaboratory;
|
}
|
|
public void setSysLaboratory(SysLaboratory sysLaboratory) {
|
this.sysLaboratory = sysLaboratory;
|
}
|
|
public List<SysLaboratory> getSelectedList() {
|
return selectedList;
|
}
|
|
public void setSelectedList(List<SysLaboratory> selectedList) {
|
this.selectedList = selectedList;
|
}
|
|
public int getAction() {
|
return action;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
public String getType() {
|
return type;
|
}
|
|
public void setType(String type) {
|
this.type = type;
|
}
|
|
public String getProject() {
|
return project;
|
}
|
|
public void setProject(String project) {
|
this.project = project;
|
}
|
}
|