package com.nanometer.smartlab.controller; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.nanometer.smartlab.dao.OpeReagentCodeDao; import com.nanometer.smartlab.entity.*; import com.nanometer.smartlab.entity.enumtype.ApplyStatus; import com.nanometer.smartlab.service.*; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.ExcelUtil; import com.nanometer.smartlab.util.FacesUtils; import com.nanometer.smartlab.util.StringToolUtils; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.primefaces.context.RequestContext; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import javax.annotation.Resource; import javax.faces.context.FacesContext; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.*; import java.util.List; /** * Created by nph on 18/04/30. */ @Controller @Scope("session") public class SupplierOrderMngController extends BaseController { /** * */ private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(SupplierOrderMngController.class); @Resource private OpeOrderService opeOrderService; @Resource private BaseMetaService baseMetaService; @Resource private OpeApplyService opeApplyService; @Resource private BaseRoleService roleService; @Resource private SysReagentService sysReagentService; @Resource private SysProjectService sysProjectService; @Resource private OpeApplyOrderService opeApplyOrderService; public List getAllOpeOrder() { return allOpeOrder; } public void setAllOpeOrder(List allOpeOrder) { this.allOpeOrder = allOpeOrder; } public List getSelectedList() { return selectedList; } public void setSelectedList(List selectedList) { this.selectedList = selectedList; } public List getReagents() { return reagents; } public void setReagents(List reagents) { this.reagents = reagents; } public String getOrderCode() { return orderCode; } public void setOrderCode(String orderCode) { this.orderCode = orderCode; } public String getApplyCode() { return applyCode; } public void setApplyCode(String applyCode) { this.applyCode = applyCode; } public Timestamp getOrderTime() { return orderTime; } public void setOrderTime(Timestamp orderTime) { this.orderTime = orderTime; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Long getReagentId() { return reagentId; } public void setReagentId(Long reagentId) { this.reagentId = reagentId; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public List getOrderStatusSelectList() { if (this.orderStatusSelectList == null) { this.orderStatusSelectList = Arrays.asList(ApplyStatus.values()); } return orderStatusSelectList; } public void setOrderStatusSelectList(List orderStatusSelectList) { this.orderStatusSelectList = orderStatusSelectList; } public void setDataModel(LazyDataModel dataModel) { this.dataModel = dataModel; } @Resource private SysUserService sysUserService; @Resource private SysSupplierService sysSupplierService; @Resource private SysSequenceService sysSequenceService; @Resource private MenuController menuController; @Resource private SupplierOpeOrderService supplierOpeOrderService; private List allOpeOrder; private LazyDataModel dataModel; private List selectedList; private List selectedViewList; private OpeApply viewOpeApply; private List stockFlagList; private List opeApplyList; private List reagentSelectList; public List getStockFlagList() { return stockFlagList; } public void setStockFlagList(List stockFlagList) { this.stockFlagList = stockFlagList; } public OpeApply getViewOpeApply(){ return viewOpeApply; } public void setViewOpeApply(OpeApply viewOpeApply){ this.viewOpeApply=viewOpeApply; } public List getSelectedViewList(){ return selectedViewList; } public void setSelectedViewList(List selectedViewList){ this.selectedViewList=selectedViewList; } public List getOpeApplyList() { return opeApplyList; } public void setOpeApplyList(List opeApplyList) { this.opeApplyList = opeApplyList; } private List reagents; public List getReagentSelectList() { return reagentSelectList; } public void setReagentSelectList(List reagentSelectList) { this.reagentSelectList = reagentSelectList; } private String orderCode; private String applyCode; private Timestamp orderTime; private Timestamp orderEndTime; private Integer status; private Long reagentId; private Map map;//键是试剂id,值是申购数量 private List orderStatusSelectList; private List reagentCodeList; private List viewReagentCodeList; @Resource private OpeReagentCodeDao opeReagentCodeDao; public Timestamp getOrderEndTime() { return orderEndTime; } public void setOrderEndTime(Timestamp orderEndTime) { this.orderEndTime = orderEndTime; } public void initOpeOrder() { SysUser user = sysUserService.getSysUser(getUserId()); Long roleId = user.getRoleId(); if(roleId!=1l && roleId!=4l) { allOpeOrder = new ArrayList(); return; } this.allOpeOrder = this.opeOrderService.getOpeOrderList(null, null, null, null, status, null,null, 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 = new ArrayList(); try { if(allOpeOrder != null && allOpeOrder.size() > 0) { // int count = allOpeOrder.size(); this.setRowCount(supplierOpeOrderService.SupplierOpeOrderTotal(orderCode,applyCode,status,orderTime,orderEndTime)); list = supplierOpeOrderService.getSupplierOpeOrderList(orderCode,applyCode,status,orderTime,orderEndTime,first,pageSize); for (int i=0;i (); } catch (Exception e) { logger.error(e); } return list; } @Override public SupplierOrder getRowData(String rowKey) { SupplierOrder supplierOrder = supplierOpeOrderService.selectById(rowKey); if (supplierOrder.getBeforeApproveUserId() != null && !supplierOrder.getBeforeApproveUserId().equals("")) { String name = supplierOrder.getApproveUserName(); supplierOrder.setFirst(supplierOrder.getFirName()); supplierOrder.setSecond(name); } else { supplierOrder.setFirst(supplierOrder.getApproveUserName()); supplierOrder.setSecond(supplierOrder.getSecondUserName()); } if(supplierOrder.getIds()!=null&&!supplierOrder.getIds().equals("")){ List ids = Arrays.asList(supplierOrder.getIds().split(",")); supplierOrder.setApplyIds(ids); Double a=0.00; BigDecimal total=BigDecimal.valueOf(a); for (int j=0;j queryByPage() { List list = new ArrayList(); try { if(allOpeOrder != null && allOpeOrder.size() > 0) { int count = allOpeOrder.size(); List opeApplyIds = new ArrayList(); for(int i=0;i results = opeApplyOrderService.getOpeApplyOrderList(allOpeOrder.get(i).getId(), null); List approves = new ArrayList(); Double price = 0.00; opeApplyIds.clear(); for(OpeApplyOrder item : results) { OpeApply apply = opeApplyService.getOpeApply(item.getOpeApplyId()); if(apply == null) { continue; } opeApplyIds.add(apply.getId()); price = price + apply.getReagent().getPrice().floatValue()*apply.getNum(); SysUser user = sysUserService.getSysUser(apply.getApproveUserId()); if(user == null) { continue; } if(!approves.contains(user.getName())) { approves.add(user.getName()); } } order.setApplyIds(opeApplyIds); order.setTotalPrice(price); StringBuilder approveNames = new StringBuilder(); int size = approves.size(); for(int k=0;k headerList, List dataList) { HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); Integer total = null; HSSFSheet sheet = hssfWorkbook.createSheet("订单详情"); HSSFRow titlerRow = sheet.createRow(0); for(int i = 0; i < headerList.size(); i++) { titlerRow.createCell(i).setCellValue(headerList.get(i)); } for (int i = 0; i < dataList.size(); i++) { HSSFRow dataRow = sheet.createRow(i + 1); dataRow.createCell(0).setCellValue(dataList.get(i).getApplyCode()== null ? "": String.valueOf(dataList.get(i).getApplyCode())); dataRow.createCell(1).setCellValue(String.valueOf(dataList.get(i).getCreateTime())); dataRow.createCell(2).setCellValue(dataList.get(i).getReagent().getProductSn()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductSn())); dataRow.createCell(3).setCellValue(dataList.get(i).getReagent().getName()== null ? "": String.valueOf(dataList.get(i).getReagent().getName())); dataRow.createCell(4).setCellValue(dataList.get(i).getReagent().getControlProducts()== null ? "": String.valueOf(dataList.get(i).getReagent().getControlProducts())); dataRow.createCell(5).setCellValue(dataList.get(i).getReagent().getReagentFormat()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentFormat())); dataRow.createCell(6).setCellValue(dataList.get(i).getReagent().getMainMetering()== null ? "": String.valueOf(dataList.get(i).getReagent().getMainMetering())+dataList.get(i).getReagent().getReagentUnit()); total = dataList.get(i).getNum();//getReagentNum(dataList.get(i).getReagent().getId()); dataRow.createCell(7).setCellValue(String.valueOf(total)); dataRow.createCell(8).setCellValue(dataList.get(i).getReagent().getPrice()== null ? "": String.valueOf(dataList.get(i).getReagent().getPrice())); dataRow.createCell(9).setCellValue(total== null ? "0": String.valueOf(dataList.get(i).getReagent().getPrice().multiply(new BigDecimal(total)))); dataRow.createCell(10).setCellValue(dataList.get(i).getApplyPrice()==null ? String.valueOf(dataList.get(i).getReagent().getPrice()):String.valueOf(dataList.get(i).getApplyPrice())); dataRow.createCell(11).setCellValue(dataList.get(i).getApplyPrice()==null?String.valueOf(dataList.get(i).getReagent().getPrice().multiply(new BigDecimal(total))):String.valueOf(dataList.get(i).getApplyPrice().multiply(new BigDecimal(total)))); dataRow.createCell(12).setCellValue(dataList.get(i).getReagent().getCas()== null ? "": String.valueOf(dataList.get(i).getReagent().getCas())); dataRow.createCell(13).setCellValue(dataList.get(i).getReagent().getReagentCharacter()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentCharacter())); dataRow.createCell(14).setCellValue(dataList.get(i).getReagent().getProductHomeName()== null ? "": String.valueOf(dataList.get(i).getReagent().getProductHomeName())); dataRow.createCell(15).setCellValue(dataList.get(i).getReagent().getSupplierName()== null ? "":String.valueOf(dataList.get(i).getReagent().getSupplierName())); dataRow.createCell(16).setCellValue(dataList.get(i).getReagent().getReagentType()== null ? "": String.valueOf(dataList.get(i).getReagent().getReagentType())); dataRow.createCell(17).setCellValue(String.valueOf(dataList.get(i).getProjectOwner())); dataRow.createCell(18).setCellValue(String.valueOf(dataList.get(i).getProjectId())); dataRow.createCell(19).setCellValue(String.valueOf(dataList.get(i).getProjectName())); dataRow.createCell(20).setCellValue(String.valueOf(dataList.get(i).getApplyUserName())); dataRow.createCell(21).setCellValue(baseMetaService.getBaseMetaValue(dataList.get(i).getOwnerDepartment())); SysUser user=sysUserService.getSysUserForSuppllier(dataList.get(i).getApplyUserId()); BaseMeta company=baseMetaService.getBaseMeta(user.getCompany()); if(company==null){ dataRow.createCell(22).setCellValue(""); }else { dataRow.createCell(22).setCellValue(String.valueOf(company.getMetaValue())); } dataRow.createCell(23).setCellValue(String.valueOf(dataList.get(i).getStatus().getText())); dataRow.createCell(24).setCellValue(String.valueOf(dataList.get(i).getOrderStatus().getText())); } return hssfWorkbook; } public void onUpdateStockClick(){ if (this.selectedViewList == null || this.selectedViewList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedViewList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; } this.viewOpeApply=this.opeApplyService.getOpeApply(this.selectedViewList.get(0).getId()); RequestContext.getCurrentInstance().execute("PF('dialogStock').show()"); } public void onPrintBarcodeClick(){ if (this.selectedViewList == null || this.selectedViewList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedViewList.size() > 1) { FacesUtils.warn("只能选择一个数据进行打印。"); return; } List reagentCodes=this.opeReagentCodeDao.getReagentCodeByApplyId(this.selectedViewList.get(0).getId()); if(reagentCodes.size()==0){ FacesUtils.warn("未生成标签编码"); return; } //生成标签 for(OpeReagentCode opeReagentCode:reagentCodes){ List rCodes=new ArrayList<>(); int startCode=opeReagentCode.getStartCode(); int endCode=opeReagentCode.getEndCode(); for(int i=startCode;i<=endCode;i++){ String lastCode= StringToolUtils.addZeroForNum(String.valueOf(i),4); String rcode=String.format("%s%s",opeReagentCode.getCodePrex(),lastCode); rCodes.add(rcode); } opeReagentCode.setReagentCodes(rCodes); //获取试剂信息 opeReagentCode.setReagent(opeApplyService.getReagentByApplyId(opeReagentCode.getApplyId())); } this.reagentCodeList=reagentCodes; RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').show()"); } public void onPrintSingleBarcodeClick(String reagentCode){ ListtmpList=this.reagentCodeList; List rCodes=new ArrayList<>(); rCodes.add(reagentCode); tmpList.get(0).setReagentCodes(rCodes); this.reagentCodeList=tmpList; RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').show()"); } public void onViewBarcodeClick(){ if (this.selectedViewList == null || this.selectedViewList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedViewList.size() > 1) { FacesUtils.warn("只能选择一个数据进行打印。"); return; } List reagentCodes=this.opeReagentCodeDao.getReagentCodeByApplyId(this.selectedViewList.get(0).getId()); if(reagentCodes.size()==0){ FacesUtils.warn("未生成标签编码"); return; } List reagentCodeList=new ArrayList<>(); for(OpeReagentCode opeReagentCode:reagentCodes) { //获取试剂信息 SysReagent reagent=opeApplyService.getReagentByApplyId(opeReagentCode.getApplyId()); //生成标签 List rCodes=new ArrayList<>(); int startCode=opeReagentCode.getStartCode(); int endCode=opeReagentCode.getEndCode(); for (int i = startCode; i <= endCode; i++) { Map reagentMap = new HashMap(); String lastCode = StringToolUtils.addZeroForNum(String.valueOf(i), 4); String rcode = String.format("%s%s", opeReagentCode.getCodePrex(), lastCode); rCodes.add(rcode); reagentMap.put("applyId", opeReagentCode.getApplyId()); reagentMap.put("reagentCode", rcode); reagentMap.put("name", reagent.getName()); reagentMap.put("cas", reagent.getCas()); reagentMap.put("reagentCharacter", reagent.getReagentCharacter()); reagentCodeList.add(reagentMap); } opeReagentCode.setReagentCodes(rCodes); //获取试剂信息 opeReagentCode.setReagent(reagent); } this.viewReagentCodeList=reagentCodeList; this.reagentCodeList=reagentCodes; RequestContext.getCurrentInstance().execute("PF('viewReagentCodeList').show()"); } public String getQrcode(String reagentCode){ QrConfig qrConfig=new QrConfig(50,50); //设置边距,即二维码和边框的距离 qrConfig.setMargin(1); // qrConfig.setForeColor(Color.WHITE.getRGB()); // qrConfig.setBackColor(Color.BLACK.getRGB()); byte[] image= QrCodeUtil.generatePng(reagentCode,qrConfig); String base64Image= Base64.getEncoder().encodeToString(image); return base64Image; } public void onCancelPrintBtnClick(){ this.reagentCodeList = new ArrayList<>(); RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').hide()"); } public void onPrintClick(){ //打印条码 this.reagentCodeList = new ArrayList<>(); RequestContext.getCurrentInstance().execute("PF('dialogReagentCode').hide()"); } public void onOutOfStock(){ System.out.println(this.viewOpeApply.getStockFlag()); /*if (this.selectedViewList == null || this.selectedViewList.size() == 0) { FacesUtils.warn("请选择数据。"); return; }*/ /*if (this.selectedViewList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; }*/ try { this.opeApplyService.updaetOpeApplyStockFlag(this.viewOpeApply.getStockFlag(), this.viewOpeApply.getId()); FacesUtils.info("修改成功。"); refreshTable(); RequestContext.getCurrentInstance().execute("PF('dialogStock').hide()"); }catch(Exception e){ logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public void onUpdatePrice(){ if (this.selectedViewList == null || this.selectedViewList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedViewList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; } this.viewOpeApply=this.opeApplyService.getOpeApply(this.selectedViewList.get(0).getId()); if(this.viewOpeApply.getApplyPrice()!=null){ }else{ this.viewOpeApply.setApplyPrice(this.viewOpeApply.getReagent().getPrice()); } System.out.println("实际售价"+this.viewOpeApply.getApplyPrice()); RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } public void onSavePrice(){ System.out.println(this.viewOpeApply.getApplyPrice()); try { this.opeApplyService.updaetOpeApplyPrice(this.viewOpeApply.getApplyPrice(),this.viewOpeApply.getId()); if (this.viewOpeApply.getReagent() != null && this.viewOpeApply.getReagent().getId() != null) { sysReagentService.updateSysReagentPrice(this.viewOpeApply.getReagent().getId(), this.viewOpeApply.getApplyPrice()); } FacesUtils.info("修改成功。"); refreshTable(); RequestContext.getCurrentInstance().execute("PF('dialog').hide()"); }catch (Exception e){ logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public void refreshTable(){ List tempReagents = new ArrayList(); List opeApplyList1 = new ArrayList<>(); map=null; Map tempMap = new HashMap(); for(SupplierOrder order :selectedList) { for(Object applyId : order.getApplyIds()) { OpeApply apply = opeApplyService.getOpeApply(Long.valueOf((String) applyId)); if(apply.getApplyPrice()!=null){ }else { apply.setApplyPrice(apply.getReagent().getPrice()); } if(apply.getStockFlag()!=0){ apply.setStockFlagValue("不缺货"); }else{ apply.setStockFlagValue("缺货"); } tempReagents.add(apply.getReagent()); opeApplyList1.add(apply); if(tempMap.containsKey(apply.getReagent().getId())) { Integer result = apply.getNum(); if(map != null){ result = map.get(apply.getReagent().getId()); result = result + apply.getNum(); } System.out.println("====="+tempMap.remove(apply.getReagent().getId())); tempMap.put(apply.getReagent().getId(), result); }else { tempMap.put(apply.getReagent().getId(), apply.getNum()); } } } //this.setReagentSelectList(this.sysReagentService.getSysReagentList(null, null, null, null, null)); this.setMap(tempMap); this.setReagents(tempReagents); this.setOpeApplyList(opeApplyList1); } public void onDestoryClickNew(){ if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } for(SupplierOrder order :selectedList) { if(order.getStatus().getKey() != 4) { FacesUtils.warn("请选择待入库状态的订单!"); return; } } try{ for(SupplierOrder order :selectedList) { this.supplierOpeOrderService.updateDestoryFlagById(order); } FacesUtils.info("报销成功。"); }catch (Exception e){ logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public void onConfirmBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } for(SupplierOrder order :selectedList) { if(order.getStatus().getKey() != 3) { FacesUtils.warn("请选择待采购状态的订单!"); return; } } this.menuController.goToPage(Constants.PAGE_CONFIRM_ORDER_MNG, Constants.PAGE_SUPPLIER_ORDER_MNG); } public void onViewBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedList.size() > 1) { FacesUtils.warn("只能选择一个数据进行查看。"); return; } this.menuController.goToPage(Constants.PAGE_VIEW_ORDER_MNG, Constants.PAGE_SUPPLIER_ORDER_MNG); } public void onExportFileBtnClick() { // String fileName = aPo.getFilename(); // String path = aPo.getFilePath(); ServletOutputStream out = null; InputStream is = null; try { FacesContext ctx = FacesContext.getCurrentInstance(); ctx.responseComplete(); String contentType = "application/x-download"; HttpServletResponse response = (HttpServletResponse) ctx .getExternalContext().getResponse(); response.setContentType(contentType); StringBuffer contentDisposition = new StringBuffer(); contentDisposition.append("attachment;"); contentDisposition.append("filename=\""); contentDisposition.append(".xls"); contentDisposition.append("\""); response.setHeader( "Content-Disposition", new String(contentDisposition.toString().getBytes( System.getProperty("file.encoding")), "ISO8859-1")); out = response.getOutputStream(); List> dataList = new ArrayList<>(); List tableList = queryByPage(); Iterator iterator = tableList.iterator(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); while (iterator.hasNext()) { SupplierOrder supplierOrder = iterator.next(); List realDataList = new ArrayList<>(); realDataList.add(supplierOrder.getStatus().getText()); realDataList.add(supplierOrder.getOrderCode()); realDataList.add(supplierOrder.getOrderUserName()); realDataList.add(supplierOrder.getApproveUserName()); realDataList.add(sdf.format(supplierOrder.getCreateTime())); realDataList.add(supplierOrder.getTotalPrice()); dataList.add(realDataList); } List headerList = new ArrayList<>(); headerList.add("状态"); headerList.add("订单编号"); headerList.add("下单者"); headerList.add("确认者"); headerList.add("下单时间"); headerList.add("总价"); HSSFWorkbook hssfWorkbook =ExcelUtil.exportExcel(headerList, dataList); hssfWorkbook.write(out); out.flush(); ctx.responseComplete(); } catch (Exception e) { if(is!=null){ try { is.close(); } catch (IOException e1) { e1.printStackTrace(); } } if(out!=null){ try { out.close(); } catch (IOException e1) { e1.printStackTrace(); } } e.printStackTrace(); }finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } public void onExportFileBtnClickNew() { ServletOutputStream out = null; InputStream is = null; try { FacesContext ctx = FacesContext.getCurrentInstance(); ctx.responseComplete(); String contentType = "application/x-download"; HttpServletResponse response = (HttpServletResponse) ctx .getExternalContext().getResponse(); response.setContentType(contentType); StringBuffer contentDisposition = new StringBuffer(); contentDisposition.append("attachment;"); contentDisposition.append("filename=\""); contentDisposition.append("供应商订单管理.xls"); contentDisposition.append("\""); response.setHeader( "Content-Disposition", new String(contentDisposition.toString().getBytes( System.getProperty("file.encoding")), "ISO8859-1")); out = response.getOutputStream(); //List tableList = queryByPage(); //Map> realDataMap = new HashMap<>(); Map tempMap = new HashMap(); List realDataList = new ArrayList<>(); map=null; List projects = null; OpeApply opeApply = null; SysUser user = null; List exportList=selectedList; if(exportList==null || exportList.size()==0){ exportList=supplierOpeOrderService.getSupplierOpeOrderList(orderCode,applyCode,status,orderTime,orderEndTime,null,null); } for(SupplierOrder order :exportList) { if(order.getIds()!=null&&!order.getIds().equals("")){ List ids = Arrays.asList(order.getIds().split(",")); order.setApplyIds(ids); } for(Long applyId : order.getApplyIds()) { opeApply = opeApplyService.getOpeApply(applyId); System.out.println("projectId==========="+opeApply.getProjectId()); System.out.println(opeApply.getReagent().getName()+" "+opeApply.getReagent().getControlProducts()); if( opeApply != null) { if(opeApply.getStockFlag()!=0){ // SysUser user1=null; // if(opeApply.getBeforeApproveUserId()!=null&&!opeApply.getBeforeApproveUserId().equals("")){ // user1=sysUserService.getSysUserForSuppllier(opeApply.getBeforeApproveUserId()); // }else { // user1 = sysUserService.getSysUserForSuppllier(opeApply.getApproveUserId()); // } //opeApply.setOwnerDepartment(user1.getDepartment()); //System projectUser= opeApply.setOwnerDepartment(sysUserService.getSysUserForSuppllier(opeApply.getApplyUserId()).getDepartment()); opeApply.setProjectId(opeApply.getProjectId()); projects = sysProjectService.getSysProjectListByProjectNo("opeApply.getProjectId()"); if(projects != null && !projects.isEmpty()) { opeApply.setProjectOwner(projects.get(0).getUsername()); opeApply.setProjectName(projects.get(0).getProjectName()); /*user = sysUserService.getSysUser(projects.get(0).getSysUserId()); if(user != null) { opeApply.setProjectOwner(user.getName()); }else { opeApply.setProjectOwner(opeApply.getApproveUserName()); }*/ } if(tempMap.containsKey(opeApply.getReagent().getId())) { Integer result = 0; if(map != null){ result = map.get(opeApply.getReagent().getId()); if(result == null){ result =0; } } result = result + opeApply.getNum(); tempMap.remove(opeApply.getReagent().getId()); tempMap.put(opeApply.getReagent().getId(), result); }else { tempMap.put(opeApply.getReagent().getId(), opeApply.getNum()); } opeApply.setOrderStatus(order.getStatus()); realDataList.add(opeApply); } } } } /* Collections.sort(realDataList,new Comparator() { @Override public int compare(OpeApply o1, OpeApply o2) { if(o1==null || o2==null){ return } if(o1.getProjectOwner().compareTo(o2.getProjectOwner()) == 0) { return 1; }else { return o1.getProjectOwner().compareTo(o2.getProjectOwner()); } } } );*/ this.setMap(tempMap); List headerList = new ArrayList<>(); headerList.add("申购编号"); headerList.add("申购日期"); headerList.add("产品编号"); headerList.add("试剂名称"); headerList.add("管制品"); headerList.add("规格型号"); headerList.add("包装"); headerList.add("数量"); headerList.add("含税售价"); headerList.add("含税总价"); headerList.add("实际售价"); headerList.add("实际总价"); headerList.add("CAS号"); headerList.add("危险性质"); headerList.add("厂家"); headerList.add("供应商"); headerList.add("试剂类型"); headerList.add("课题负责人(一级审批者)"); headerList.add("课题编号"); headerList.add("课题组"); headerList.add("申购人"); headerList.add("部门"); headerList.add("单位"); headerList.add("申购单状态"); headerList.add("订单状态"); HSSFWorkbook hssfWorkbook =exportExcelNew(headerList, realDataList); hssfWorkbook.write(out); out.flush(); ctx.responseComplete(); } catch (Exception e) { if(is!=null){ try { is.close(); } catch (IOException e1) { e1.printStackTrace(); } } if(out!=null){ try { out.close(); } catch (IOException e1) { e1.printStackTrace(); } } e.printStackTrace(); }finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } public void constructConfirmData() { List tempReagents = new ArrayList(); List opeApplyList1 = new ArrayList<>(); Map tempMap = new HashMap(); for(SupplierOrder order :selectedList) { for(Long applyId : order.getApplyIds()) { OpeApply apply = opeApplyService.getOpeApply(applyId); if(apply.getApplyPrice()!=null){ }else { apply.setApplyPrice(apply.getReagent().getPrice()); } tempReagents.add(apply.getReagent()); opeApplyList1.add(apply); if(tempMap.containsKey(apply.getReagent().getId())) { Integer result = 0; if(map != null){ result = map.get(apply.getReagent().getId()); result = result + apply.getNum(); } tempMap.remove(apply.getReagent().getId()); tempMap.put(apply.getReagent().getId(), result); }else { tempMap.put(apply.getReagent().getId(), apply.getNum()); } } } this.setReagentSelectList(this.sysReagentService.getSysReagentList(null, null, null,null, null, null)); this.setMap(tempMap); this.setReagents(tempReagents); this.setOpeApplyList(opeApplyList1); } public void constructCancelData() { List tempReagents = new ArrayList(); Map tempMap = new HashMap(); for(SupplierOrder order :selectedList) { for(Long applyId : order.getApplyIds()) { OpeApply apply = opeApplyService.getOpeApply(applyId); tempReagents.add(apply.getReagent()); if(tempMap.containsKey(apply.getReagent().getId())) { Integer result = 0; if(map != null){ result = map.get(apply.getReagent().getId()); result = result + apply.getNum(); } tempMap.remove(apply.getReagent().getId()); tempMap.put(apply.getReagent().getId(), result); }else { tempMap.put(apply.getReagent().getId(), apply.getNum()); } } } this.setMap(tempMap); this.setReagents(tempReagents); } public void onCancelBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } for(SupplierOrder order :selectedList) { if(order.getStatus().getKey() != 3) { FacesUtils.warn("请选择待采购状态的订单!"); return; } } this.menuController.goToPage(Constants.PAGE_CANCEL_ORDER_MNG, Constants.PAGE_SUPPLIER_ORDER_MNG); } public Integer getReagentNum(Long key) { if(map == null) { return null; } return map.get(key); } public void onOrderConfirmBtnClick() { OpeApply opeApply = null; for(SupplierOrder order :selectedList) { OpeOrder temp = opeOrderService.getOpeOrder(order.getId()); for(Object id : order.getApplyIds()) { opeApply = opeApplyService.getOpeApply(Long.valueOf((String)id)); if(opeApply != null) { opeApply.setStatus(ApplyStatus.SUPPLIER_CONFIRM); opeApplyService.updateOpeApply(opeApply); } } temp.setStatus(ApplyStatus.SUPPLIER_CONFIRM); opeOrderService.updateOpeOrder(temp); } initOpeOrder(); this.menuController.backToPage(); } public void onOrderCancelBtnClick() { for(SupplierOrder order :selectedList) { OpeOrder temp = opeOrderService.getOpeOrder(order.getId()); temp.setStatus(ApplyStatus.SUPPLIER_CANCEL); opeOrderService.updateOpeOrder(temp); } initOpeOrder(); this.menuController.backToPage(); } public void onBackBtnClick() { this.menuController.backToPage(); } public List getReagentCodeList() { return reagentCodeList; } public List getViewReagentCodeList() { return viewReagentCodeList; } public void setReagentCodeList(List reagentCodeList) { this.reagentCodeList = reagentCodeList; } }