package com.nanometer.smartlab.controller; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.primefaces.context.RequestContext; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.nanometer.smartlab.entity.SysController; import com.nanometer.smartlab.entity.SysWarehouseContainer; import com.nanometer.smartlab.service.BaseMetaService; import com.nanometer.smartlab.service.SysControllerService; import com.nanometer.smartlab.service.SysWarehouseContainerService; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.FacesUtils; /** * Created by cmower on 17/11/20. */ @Controller @Scope("session") public class WarehouseContainerMngController extends BaseController { private static final long serialVersionUID = 101543880938627455L; private static Logger logger = Logger.getLogger(WarehouseContainerMngController.class); @Resource private SysWarehouseContainerService sysWarehouseContainerService; @Resource private BaseMetaService baseMetaService; @Resource private SysControllerService sysControllerService; /** * 数据源 */ private LazyDataModel dataModel; /** * 数据模型 */ private SysWarehouseContainer sysWarehouseContainer=new SysWarehouseContainer(); /** * 选中的list */ private List selectedList; private List controllers; private String warehouseType; private String warehouseName; private int action; /** 左右门危险性质显示Flag */ private int characterRenderedFlag; public void onNewBtnClick() { this.sysWarehouseContainer = new SysWarehouseContainer(); this.action = Constants.ACTION_ADD; this.setCharacterRenderedFlag(0); } public void onEditBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; } this.sysWarehouseContainer = this.sysWarehouseContainerService .getSysWarehouseContainer(this.selectedList.get(0).getId()); this.action = Constants.ACTION_EDIT; if(this.baseMetaService.getBaseMetaKey(this.sysWarehouseContainer.getType()).equals("200")) { // 智能柜时,左右门危险性质可配置 this.setCharacterRenderedFlag(1); }else { this.setCharacterRenderedFlag(0); this.sysWarehouseContainer.setCharacterLeft(null); this.sysWarehouseContainer.setCharacterRight(null); } RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } public void onSaveBtnClick() { try { // 新建 if (this.action == Constants.ACTION_ADD) { if (this.sysWarehouseContainer == null) { FacesUtils.warn("新建对象为空。"); return; } boolean inputCheckFlag = false; if(this.sysWarehouseContainer.getContainerCode()==null || this.sysWarehouseContainer.getContainerCode().equals("")) { FacesUtils.error("请输入货柜条码", "请输入货柜条码"); inputCheckFlag = true; } if(this.sysWarehouseContainer.getInfoCode()==null || this.sysWarehouseContainer.getInfoCode().equals("")) { FacesUtils.error("请输入货柜状态码", "请输入货柜状态码"); inputCheckFlag = true; } if(this.sysWarehouseContainer.getName()==null || this.sysWarehouseContainer.getName().equals("")) { FacesUtils.error("请输入货柜名称", "请输入货柜名称"); inputCheckFlag = true; } if(inputCheckFlag) { return; } if (this.sysWarehouseContainerService .isSysWarehouseContainerExist(this.sysWarehouseContainer.getContainerCode(), null)) { FacesUtils.warn("货柜条码已存在。"); return; } if ("智能柜".equals(baseMetaService.getBaseMetaValue(sysWarehouseContainer.getType()))) { sysWarehouseContainerService.insertSysWarehouseContainer2(sysWarehouseContainer); }else{ this.sysWarehouseContainerService.insertSysWarehouseContainer(sysWarehouseContainer); } FacesUtils.info("新建成功。"); RequestContext.getCurrentInstance().execute("PF('dialog').hide()"); // 修改 } else if (this.action == Constants.ACTION_EDIT) { if (this.sysWarehouseContainer == null) { FacesUtils.warn("修改对象为空。"); return; } boolean inputCheckFlag = false; if(this.sysWarehouseContainer.getContainerCode()==null || this.sysWarehouseContainer.getContainerCode().equals("")) { FacesUtils.error("请输入货柜条码", "请输入货柜条码"); inputCheckFlag = true; } if(this.sysWarehouseContainer.getInfoCode()==null || this.sysWarehouseContainer.getInfoCode().equals("")) { FacesUtils.error("请输入货柜状态码", "请输入货柜状态码"); inputCheckFlag = true; } if(this.sysWarehouseContainer.getName()==null || this.sysWarehouseContainer.getName().equals("")) { FacesUtils.error("请输入货柜名称", "请输入货柜名称"); inputCheckFlag = true; } if(inputCheckFlag) { return; } if (this.sysWarehouseContainerService.isSysWarehouseContainerExist( this.sysWarehouseContainer.getContainerCode(), this.sysWarehouseContainer.getId())) { FacesUtils.warn("货柜条码已存在。"); return; } if ("智能柜".equals(baseMetaService.getBaseMetaValue(sysWarehouseContainer.getType()))) { this.sysWarehouseContainerService.updateSysWarehouseContainer2(sysWarehouseContainer); }else{ this.sysWarehouseContainerService.updateSysWarehouseContainer(sysWarehouseContainer); } 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; } List sysWarehouseContainers = new ArrayList<>(); List sysWarehouseContainerList = new ArrayList<>(); for (SysWarehouseContainer sysWarehouseContainer : this.selectedList){ if(this.baseMetaService.getBaseMetaKey(sysWarehouseContainer.getType()).equals("200")) { sysWarehouseContainers.add(sysWarehouseContainer); }else { sysWarehouseContainerList.add(sysWarehouseContainer); } } if (sysWarehouseContainers.size() > 0){ this.sysWarehouseContainerService.deleteSysWarehouseContainer2(sysWarehouseContainers); } if (sysWarehouseContainerList.size() > 0){ this.sysWarehouseContainerService.deleteSysWarehouseContainer(sysWarehouseContainerList); } FacesUtils.info("删除成功。"); } catch (Exception e) { logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public void containerTypeChanged() { if(this.baseMetaService.getBaseMetaKey(this.sysWarehouseContainer.getType()).equals("200")) { // 智能柜时,左右门危险性质可配置 this.setCharacterRenderedFlag(1); }else { this.setCharacterRenderedFlag(0); this.sysWarehouseContainer.setCharacterLeft(null); this.sysWarehouseContainer.setCharacterRight(null); } } @SuppressWarnings("serial") public LazyDataModel getDataModel() { if (this.dataModel == null) { this.dataModel = new LazyDataModel() { @Override public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { List list = null; try { int count = sysWarehouseContainerService.getSysWarehouseContainerTotalCount(warehouseType, warehouseName); this.setRowCount(count); if (count > 0) { list = sysWarehouseContainerService.getSysWarehouseContainerList(warehouseType, warehouseName,null, first, pageSize); } selectedList = new ArrayList<>(); } catch (Exception e) { logger.error(e); } return list; } @Override public SysWarehouseContainer getRowData(String rowKey) { // Iterator iterator = this.iterator(); // if (iterator != null) { // SysWarehouseContainer su = null; // while (iterator.hasNext()) { // su = iterator.next(); // if (rowKey.equals(su.getId())) { // return su; // } // } // } Long id=Long.valueOf(rowKey); return sysWarehouseContainerService.getSysWarehouseContainer(id); } }; } return dataModel; } public SysWarehouseContainer getSysWarehouseContainer() { return sysWarehouseContainer; } public void setSysWarehouseContainer(SysWarehouseContainer sysWarehouseContainer) { this.sysWarehouseContainer = sysWarehouseContainer; } public List getSelectedList() { return selectedList; } public void setSelectedList(List selectedList) { this.selectedList = selectedList; } public List getControllers() { this.controllers = this.sysControllerService.getAllControllerList(); return controllers; } public void setControllers(List controllers) { this.controllers = controllers; } public int getAction() { return action; } public String getWarehouseType() { return warehouseType; } public void setWarehouseType(String warehouseType) { this.warehouseType = warehouseType; } public String getWarehouseName() { return warehouseName; } public void setWarehouseName(String warehouseName) { this.warehouseName = warehouseName; } public int getCharacterRenderedFlag() { return characterRenderedFlag; } public void setCharacterRenderedFlag(int characterRenderedFlag) { this.characterRenderedFlag = characterRenderedFlag; } }