package com.nanometer.smartlab.controller; import com.nanometer.smartlab.entity.BasePage; import com.nanometer.smartlab.entity.SysProject; import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.service.*; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.FacesUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.apache.shiro.subject.Subject; import org.primefaces.context.RequestContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @Controller @Scope("session") public class ProjectMngController extends BaseController { private static Logger logger = Logger.getLogger(ProjectMngController.class); @Resource private SysProjectService sysProjectService; @Resource private BasePageService basePageService; @Resource private SysUserService sysUserService; @Resource private OpeApplyService opeApplyService; private LazyDataModel dataModel; private SysProject sysProject; private List selectedList; private List basePageList; private List sameDptUserList; private Map userIdNameMap; private List userSelectList; private int action; private String projectNo; private String projectName; private String sysUserName; public static Logger getLogger() { return logger; } public List getUserSelectList() { if (userSelectList == null) { this.initUserSelectList(); } return userSelectList; } public SysUser getSelectedUserById(Long userId) { SysUser sysUser=this.sysUserService.getSysUser(userId); if(sysUser==null){ return new SysUser(); } return sysUser; } public List getUserSelectList(String keyword) { final String key = keyword.toLowerCase(); return userSelectList.stream().filter(u->u.getName().toLowerCase().contains(key)).collect(Collectors.toList()); } private void initUserSelectList() { logger.info("WarehouseStockMngController initUserSelectList start"); this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null)); } public void setUserSelectList(List userSelectList) { this.userSelectList = userSelectList; } public static void setLogger(Logger logger) { ProjectMngController.logger = logger; } public String getProjectNo() { return projectNo; } public void setProjectNo(String projectNo) { this.projectNo = projectNo; } public String getProjectName() { return projectName; } public void setProjectName(String projectName) { this.projectName = projectName; } public String getSysUserName() { return sysUserName; } public void setSysUserName(String sysUserName) { this.sysUserName = sysUserName; } public void onNewBtnClick() { this.sysProject = new SysProject(); this.action = Constants.ACTION_ADD; this.basePageList = this.basePageService.getBasePageList(); } public void onEditBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; } this.sysProject = this.sysProjectService.getSysProject(this.selectedList.get(0).getId()); this.action = Constants.ACTION_EDIT; this.basePageList = this.basePageService.getBasePageList(); RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } public void onSaveBtnClick() { try { // 新建 if (this.action == Constants.ACTION_ADD) { if (this.sysProject == null) { FacesUtils.warn("新建对象为空。"); return; } if (this.sysProject.getSysUserId() == null) { FacesUtils.warn("请选择课题负责人。"); return; } if (this.sysProject.getProjectNo() == null || this.sysProject.getProjectNo()=="") { FacesUtils.warn("请输入课题编号。"); return; }else { if(sysProjectService.getProjectByProNo(this.sysProject.getProjectNo())!=null){ FacesUtils.warn("课题编号已存在,请重新输入。"); return; } } BaseController c =new BaseController(); this.sysProject.setCreaterUser(c.getUserId()); this.sysProjectService.insertSysProject(this.sysProject); FacesUtils.info("新建成功。"); RequestContext.getCurrentInstance().execute("PF('dialog').hide()"); // 修改 } else if (this.action == Constants.ACTION_EDIT) { if (this.sysProject == null) { FacesUtils.warn("修改对象为空。"); return; } if (this.sysProject.getSysUserId()==null) { FacesUtils.warn("请选择课题负责人。"); return; } if (this.sysProject.getProjectNo() == null || this.sysProject.getProjectNo()=="") { FacesUtils.warn("请输入课题编号。"); return; }else { SysProject sp=this.sysProjectService.getProjectByProNo(this.sysProject.getProjectNo()); if(sp!=null){ if(!sp.getId().equals(this.sysProject.getId())){ FacesUtils.warn("课题编号已存在,请重新输入。"); return; } } } this.sysProjectService.updateSysProject(this.sysProject); 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.sysProjectService.deleteSysProject(this.selectedList); FacesUtils.info("删除成功。"); } catch (Exception e) { logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public List getSaysSameDptUserList() { return sysUserService.getApproverUserList(null); } public LazyDataModel getDataModel() { if (this.sameDptUserList == null) { this.sameDptUserList = sysUserService.getApproverUserList(null); if (!CollectionUtils.isEmpty(this.sameDptUserList)) { userIdNameMap = new HashMap<>(); this.sameDptUserList.forEach(sysUser -> userIdNameMap.put(sysUser.getId(), sysUser.getName())); } } 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; initUserSelectList(); try { int count = sysProjectService.getSysProjectTotalCountUpdate(getUserId(),projectNo,projectName,sysUserName); this.setRowCount(count); if (count > 0) { list = sysProjectService.getSysProjectListUpdate(first, pageSize,getUserId(),projectNo,projectName,sysUserName); } selectedList = new ArrayList<>(); } catch (Exception e) { logger.error(e); } return list; } @Override public SysProject getRowData(String rowKey) { // Iterator iterator = this.iterator(); // if (iterator != null) { // SysProject br = null; // while (iterator.hasNext()) { // br = iterator.next(); // if (rowKey.equals(br.getId())) { // return br; // } // } // } Long id=Long.valueOf(rowKey); return sysProjectService.getSysProject(id); } }; } return dataModel; } public void uploadFile(FileUploadEvent event) { try { sysProjectService.importProject(event,getUser()); FacesUtils.info("导入成功"); } catch (Exception e) { e.printStackTrace(); FacesUtils.warn(e.getMessage()); } } public SysProject getSysProject() { return sysProject; } public void setSysProject(SysProject sysProject) { this.sysProject = sysProject; } public List getSelectedList() { return selectedList; } public void setSelectedList(List selectedList) { this.selectedList = selectedList; } public List getBasePageList() { return basePageList; } public int getAction() { return action; } public List getSameDptUserList() { return sameDptUserList; } public void setSameDptUserList(List sameDptUserList) { this.sameDptUserList = sameDptUserList; } public Map getUserIdNameMap() { return userIdNameMap; } public void setUserIdNameMap(Map userIdNameMap) { this.userIdNameMap = userIdNameMap; } }