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.SysLaboratory;
|
import com.nanometer.smartlab.service.*;
|
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.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.SysController;
|
import com.nanometer.smartlab.entity.SysLaboratoryContainer;
|
import com.nanometer.smartlab.util.Constants;
|
import com.nanometer.smartlab.util.FacesUtils;
|
|
/**
|
* Created by cmower on 17/11/20.
|
*/
|
@Controller
|
@Scope("session")
|
public class LaboratoryContainerMngController extends BaseController {
|
|
private static final long serialVersionUID = 101543880938627455L;
|
|
private static Logger logger = Logger.getLogger(LaboratoryContainerMngController.class);
|
|
@Resource
|
private SysLaboratoryContainerService sysLaboratoryContainerService;
|
|
@Resource
|
private SysControllerService sysControllerService;
|
@Resource
|
private BaseMetaService baseMetaService;
|
@Resource
|
private SysLaboratoryService sysLaboratoryService;
|
@Resource
|
private SysProjectService sysProjectService;
|
/**
|
* 数据源
|
*/
|
private LazyDataModel<SysLaboratoryContainer> dataModel;
|
/**
|
* 数据模型
|
*/
|
private SysLaboratoryContainer sysLaboratoryContainer=new SysLaboratoryContainer();
|
/**
|
* 选中的list
|
*/
|
private List<SysLaboratoryContainer> selectedList;
|
|
private List<SysController> controllers;
|
|
private String laboratoryType;
|
private String laboratoryName;
|
private String project;
|
private String controllerName;
|
|
private int action;
|
|
/** 左右门危险性质显示Flag */
|
private int characterRenderedFlag;
|
|
public void onNewBtnClick() {
|
|
if (this.selectedList == null || this.selectedList.size() == 0) {
|
this.sysLaboratoryContainer = new SysLaboratoryContainer();
|
this.action = Constants.ACTION_ADD;
|
this.setCharacterRenderedFlag(0);
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
if (this.selectedList.size() == 1) {
|
this.sysLaboratoryContainer = this.sysLaboratoryContainerService
|
.getSysLaboratoryContainer(this.selectedList.get(0).getId());
|
if(this.baseMetaService.getBaseMetaKey(this.sysLaboratoryContainer.getType()).equals("200")) {
|
// 智能柜时,左右门危险性质可配置
|
this.setCharacterRenderedFlag(1);
|
}else {
|
this.setCharacterRenderedFlag(0);
|
this.sysLaboratoryContainer.setCharacterLeft(null);
|
this.sysLaboratoryContainer.setCharacterRight(null);
|
}
|
this.sysLaboratoryContainer.setId(null);
|
this.action = Constants.ACTION_ADD;
|
this.setCharacterRenderedFlag(0);
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
if (this.selectedList.size() > 1) {
|
FacesUtils.warn("不允许选择两条和两条以上的数据。");
|
return;
|
}
|
//this.sysLaboratoryContainer = new SysLaboratoryContainer();
|
|
}
|
|
public void onEditBtnClick() {
|
if (this.selectedList == null || this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
if (this.selectedList.size() > 1) {
|
FacesUtils.warn("只能选择一个数据进行修改。");
|
return;
|
}
|
this.sysLaboratoryContainer = this.sysLaboratoryContainerService
|
.getSysLaboratoryContainer(this.selectedList.get(0).getId());
|
this.action = Constants.ACTION_EDIT;
|
|
if(this.baseMetaService.getBaseMetaKey(this.sysLaboratoryContainer.getType()).equals("200")) {
|
// 智能柜时,左右门危险性质可配置
|
this.setCharacterRenderedFlag(1);
|
}else {
|
this.setCharacterRenderedFlag(0);
|
this.sysLaboratoryContainer.setCharacterLeft(null);
|
this.sysLaboratoryContainer.setCharacterRight(null);
|
}
|
System.out.println(this.sysLaboratoryContainer.getControllerCode());
|
RequestContext.getCurrentInstance().execute("PF('dialog').show()");
|
}
|
|
public void onSaveBtnClick() {
|
try {
|
|
// 新建
|
if (this.action == Constants.ACTION_ADD) {
|
if (this.sysLaboratoryContainer == null) {
|
FacesUtils.warn("新建对象为空。");
|
return;
|
}
|
|
boolean inputCheckFlag = false;
|
|
if(this.sysLaboratoryContainer.getContainerCode()==null || this.sysLaboratoryContainer.getContainerCode().equals("")) {
|
FacesUtils.error("请输入临时存储库条码", "请输入临时存储库条码");
|
inputCheckFlag = true;
|
}
|
|
if(this.sysLaboratoryContainer.getInfoCode()==null || this.sysLaboratoryContainer.getInfoCode().equals("")) {
|
FacesUtils.error("请输入临时存储库状态码", "请输入临时存储库状态码");
|
inputCheckFlag = true;
|
}
|
|
if(this.sysLaboratoryContainer.getName()==null || this.sysLaboratoryContainer.getName().equals("")) {
|
FacesUtils.error("请输入临时存储库名称", "请输入临时存储库名称");
|
inputCheckFlag = true;
|
}
|
|
if(inputCheckFlag) {
|
return;
|
}
|
|
if (this.sysLaboratoryContainerService
|
.isSysLaboratoryContainerExist(this.sysLaboratoryContainer.getContainerCode(), null)) {
|
FacesUtils.warn("临时存储库条码已存在。");
|
return;
|
}
|
System.out.println(sysLaboratoryContainer.getContainerCode());
|
|
this.sysLaboratoryContainerService.insertSysLaboratoryContainer(sysLaboratoryContainer);
|
|
FacesUtils.info("新建成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
// 修改
|
} else if (this.action == Constants.ACTION_EDIT) {
|
if (this.sysLaboratoryContainer == null) {
|
FacesUtils.warn("修改对象为空。");
|
return;
|
}
|
|
boolean inputCheckFlag = false;
|
|
if(this.sysLaboratoryContainer.getContainerCode()==null || this.sysLaboratoryContainer.getContainerCode().equals("")) {
|
FacesUtils.error("请输入临时存储库条码", "请输入临时存储库条码");
|
inputCheckFlag = true;
|
}
|
|
if(this.sysLaboratoryContainer.getInfoCode()==null || this.sysLaboratoryContainer.getInfoCode().equals("")) {
|
FacesUtils.error("请输入临时存储库状态码", "请输入临时存储库状态码");
|
inputCheckFlag = true;
|
}
|
|
if(this.sysLaboratoryContainer.getName()==null || this.sysLaboratoryContainer.getName().equals("")) {
|
FacesUtils.error("请输入临时存储库名称", "请输入临时存储库名称");
|
inputCheckFlag = true;
|
}
|
|
if(inputCheckFlag) {
|
return;
|
}
|
|
if (this.sysLaboratoryContainerService.isSysLaboratoryContainerExist(
|
this.sysLaboratoryContainer.getContainerCode(), this.sysLaboratoryContainer.getId())) {
|
FacesUtils.warn("临时存储库条码已存在。");
|
return;
|
}
|
|
// sysLaboratoryContainer.setProject(null);
|
// sysLaboratoryContainer.getProject();
|
|
this.sysLaboratoryContainerService.updateSysLaboratoryContainer(sysLaboratoryContainer);
|
|
FacesUtils.info("修改成功。");
|
RequestContext.getCurrentInstance().execute("PF('dialog').hide()");
|
}
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
public void export2Excel(){
|
|
try {
|
List<Map> list = sysLaboratoryContainerService.exportExcelList(laboratoryType, laboratoryName,project,controllerName);
|
sysLaboratoryContainerService.export2Excel(list);
|
}catch (Exception e){
|
e.printStackTrace();
|
FacesUtils.warn("导出失败");
|
}
|
}
|
|
public void uploadFile(FileUploadEvent event) {
|
System.out.println("=========导入开始=====");
|
List<BaseMeta> typeList=baseMetaService.getBaseMetaList("container_type");
|
List<BaseMeta> struList=baseMetaService.getBaseMetaList("container_structure");
|
List<BaseMeta> charList=baseMetaService.getBaseMetaList("reagent_character");
|
List<SysLaboratory> sysLaboratories=sysLaboratoryService.getAllSysLaboratoryList();
|
List<SysController> sysControllers=sysControllerService.getAllControllerList();
|
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<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();
|
//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==4){
|
cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString();
|
}
|
} else {
|
cellInfo = row.getCell(t).getStringCellValue();
|
}
|
|
}
|
valuesList.add(cellInfo);
|
}
|
if (valuesList.size() != 10){
|
break;
|
}
|
System.out.println("value : "+valuesList);
|
SysLaboratoryContainer sysLaboratoryContainer=new SysLaboratoryContainer();
|
sysLaboratoryContainer.setLaboratoryId(getLabId(sysLaboratories,valuesList.get(0)));
|
if (!valuesList.get(1).replace(" ","").isEmpty()){
|
List<String> projects = Arrays.asList(valuesList.get(1).split(","));
|
for (String project : projects) {
|
//不存再就直接推出
|
if (!sysProjectService.isExistProject(project)) {
|
throw new Exception("课题组不存在,(" + i + "行)");
|
}
|
}
|
//都存在就设置
|
sysLaboratoryContainer.setProject(valuesList.get(1).replace(" ",""));
|
}else{
|
sysLaboratoryContainer.setProject(null);
|
}
|
sysLaboratoryContainer.setControllerCode(getConCode(sysControllers,valuesList.get(2)));
|
sysLaboratoryContainer.setContainerCode(valuesList.get(3));
|
sysLaboratoryContainer.setType(getBaseMetaId(typeList,valuesList.get(4)));
|
sysLaboratoryContainer.setInfoCode(valuesList.get(5));
|
sysLaboratoryContainer.setStructure(getBaseMetaId(struList,valuesList.get(6)));
|
sysLaboratoryContainer.setName(valuesList.get(7));
|
if(valuesList.get(4).equals("智能柜")){
|
sysLaboratoryContainer.setCharacterLeft(getBaseMetaId(charList,valuesList.get(8)));
|
sysLaboratoryContainer.setCharacterRight(getBaseMetaId(charList,valuesList.get(9)));
|
}
|
sysLaboratoryContainers.add(sysLaboratoryContainer);
|
}
|
sysLaboratoryContainerService.insertSysReagentList(sysLaboratoryContainers);
|
FacesUtils.info("导入成功。");
|
}catch (Exception ex){
|
ex.printStackTrace();
|
FacesUtils.info("导入失败。");
|
}
|
}
|
|
public Long getBaseMetaId(List<BaseMeta> list,String name){
|
Long id=null;
|
for(int i=0;i<list.size();i++){
|
if(name.equals(list.get(i).getMetaValue())){
|
id=list.get(i).getId();
|
}
|
}
|
return id;
|
}
|
|
public Long getLabId(List<SysLaboratory> list,String name){
|
Long id=null;
|
for(int i=0;i<list.size();i++){
|
if(list.get(i).getName().equals(name)){
|
id=list.get(i).getId();
|
}
|
}
|
return id;
|
}
|
|
public String getConCode(List<SysController> list,String name){
|
String id="";
|
for(int i=0;i<list.size();i++){
|
if(list.get(i).getControllerName().equals(name)){
|
id=list.get(i).getControllerCode();
|
}
|
}
|
return id;
|
|
}
|
|
public void onDeleteBtnClick() {
|
try {
|
if (this.selectedList == null || this.selectedList.size() == 0) {
|
FacesUtils.warn("请选择数据。");
|
return;
|
}
|
|
this.sysLaboratoryContainerService.deleteSysLaboratoryContainer(this.selectedList);
|
|
FacesUtils.info("删除成功。");
|
} catch (Exception e) {
|
logger.error("操作失败。", e);
|
FacesUtils.warn("操作失败。");
|
}
|
}
|
|
public void containerTypeChanged() {
|
|
if(this.baseMetaService.getBaseMetaKey(this.sysLaboratoryContainer.getType()).equals("200")) {
|
// 智能柜时,左右门危险性质可配置
|
this.setCharacterRenderedFlag(1);
|
}else {
|
this.setCharacterRenderedFlag(0);
|
this.sysLaboratoryContainer.setCharacterLeft(null);
|
this.sysLaboratoryContainer.setCharacterRight(null);
|
}
|
}
|
|
@SuppressWarnings("serial")
|
public LazyDataModel<SysLaboratoryContainer> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<SysLaboratoryContainer>() {
|
@Override
|
public List<SysLaboratoryContainer> load(int first, int pageSize, String sortField, SortOrder sortOrder,
|
Map<String, Object> filters) {
|
List<SysLaboratoryContainer> list = null;
|
try {
|
int count = sysLaboratoryContainerService.getSysLaboratoryContainerTotalCount(laboratoryType,
|
laboratoryName,null,project);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryType,
|
laboratoryName,null,project, first, pageSize);
|
}
|
selectedList = new ArrayList<> ();
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
return list;
|
}
|
|
@Override
|
public SysLaboratoryContainer getRowData(String rowKey) {
|
// Iterator<SysLaboratoryContainer> iterator = this.iterator();
|
// if (iterator != null) {
|
// SysLaboratoryContainer su = null;
|
// while (iterator.hasNext()) {
|
// su = iterator.next();
|
// if (rowKey.equals(su.getId())) {
|
// return su;
|
// }
|
// }
|
// }
|
Long id=Long.valueOf(rowKey);
|
return sysLaboratoryContainerService.getSysLaboratoryContainer(id);
|
}
|
};
|
}
|
return dataModel;
|
}
|
|
public SysLaboratoryContainer getSysLaboratoryContainer() {
|
return sysLaboratoryContainer;
|
}
|
|
public void setSysLaboratoryContainer(SysLaboratoryContainer sysLaboratoryContainer) {
|
this.sysLaboratoryContainer = sysLaboratoryContainer;
|
}
|
|
public List<SysLaboratoryContainer> getSelectedList() {
|
return selectedList;
|
}
|
|
public void setSelectedList(List<SysLaboratoryContainer> selectedList) {
|
this.selectedList = selectedList;
|
}
|
|
public int getAction() {
|
return action;
|
}
|
|
public String getLaboratoryType() {
|
return laboratoryType;
|
}
|
|
public void setLaboratoryType(String laboratoryType) {
|
this.laboratoryType = laboratoryType;
|
}
|
|
public String getLaboratoryName() {
|
return laboratoryName;
|
}
|
|
public void setLaboratoryName(String laboratoryName) {
|
this.laboratoryName = laboratoryName;
|
}
|
|
public int getCharacterRenderedFlag() {
|
return characterRenderedFlag;
|
}
|
|
public void setCharacterRenderedFlag(int characterRenderedFlag) {
|
this.characterRenderedFlag = characterRenderedFlag;
|
}
|
|
public List<SysController> getControllers() {
|
this.controllers = sysControllerService.getAllControllerList();
|
|
return controllers;
|
}
|
|
public void setControllers(List<SysController> controllers) {
|
this.controllers = controllers;
|
}
|
|
public String getProject() {
|
return project;
|
}
|
|
public void setProject(String project) {
|
this.project = project;
|
}
|
|
public String getControllerName() {
|
return controllerName;
|
}
|
|
public void setControllerName(String controllerName) {
|
this.controllerName = controllerName;
|
}
|
}
|