Windchill批量下载工程图附件

主要功能:获取装配图下所有关联的工程图,形成列表,并下载选中的工程图附件。
在这里插入图片描述
在这里插入图片描述

1、后端

1、编写ComponentBuilder

package ext.cust.builder;

import com.ptc.jca.mvc.components.JcaComponentParams;
import com.ptc.mvc.components.*;
import ext.cust.ExportDrw;
import wt.epm.EPMDocument;
import wt.util.WTException;

import java.util.ArrayList;

@ComponentBuilder("ext.cust.builder.DownloadAttachBuilder")
public class DownloadAttachBuilder extends AbstractComponentBuilder{
    @Override
    public Object buildComponentData(ComponentConfig config, ComponentParams params) throws Exception {
        String isReleased= ((JcaComponentParams)params).getHelperBean().getNmCommandBean().getRequest().getParameter("isReleased");
        Object obj = ((JcaComponentParams) params).getHelperBean().getNmCommandBean().getPrimaryOid().getRefObject();
        if(obj instanceof EPMDocument){
            return new ExportDrw().getAllEPMDocument((EPMDocument) obj,isReleased);
        }else{
            return new ArrayList<>();
        }
    }

    @Override
    public ComponentConfig buildComponentConfig(ComponentParams params) throws WTException {
        ComponentConfigFactory factory = getComponentConfigFactory();
        TableConfig table = factory.newTableConfig();
        table.setLabel("请选择需要下载的绘图");
        ColumnConfig icon = factory.newColumnConfig("type_icon",false);
        table.setTypes("wt.epm.EPMDocument");
        table.setId("drwList");
        table.setSelectable(true);
        table.addComponent(icon);
        table.addComponent(factory.newColumnConfig("number", true));
        table.addComponent(factory.newColumnConfig("name", true));
        table.addComponent(factory.newColumnConfig("version", false));
        table.addComponent(factory.newColumnConfig("creator", false));
        table.addComponent(factory.newColumnConfig("state", false));
        return table;
    }
}

2、注册mvc.xml

<bean id="downloadAttachBuilder" class="ext.cust.builder.DownloadAttachBuilder" />

2、前端

getAttachList.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" 				 prefix="c" %>
<%@taglib uri="http://www.ptc.com/windchill/taglib/components" prefix="jca" %>
<%@taglib uri="http://www.ptc.com/windchill/taglib/core" 		 prefix="wc" %>
<%@taglib uri="http://www.ptc.com/windchill/taglib/fmt"        prefix="fmt" %>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/changeWizards" prefix="cwiz" %>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/mvc" prefix="mvc"%>
<%@ include file="/netmarkets/jsp/components/beginWizard.jspf"%>
<%@ page contentType="text/html; charset=UTF-8"  %>
<div style="margin-top: 10px;margin-left: 10px">
    下载方式:
    <input type="radio" id="gender1" name="isReleased" value="false" text="" checked onclick="changeType()"/>最新
    <input type="radio" id="gender2" name="isReleased" value="true" text="" onclick="changeType()"/>最新已批准
</div>


<jsp:include page="${mvc:getComponentURL('ext.cust.builder.DownloadAttachBuilder')}" />

<div style="text-align: right;margin-right: 10px">
    <button type="button" onclick="download()">下载</button>
</div>
<script>
    function download(){
        let table = tableUtils.getTable("drwList");
        let selections = table.getSelectionModel().getSelections();
        let soids = [];
        if(selections.length == 0){
            alert("请至少选中一条需要下载的绘图!");
            return;
        }
        for (let i = 0, l = selections.length; i < l; i++) {
            soids.push(selections[i].get('oid'));
        }
        let tempForm = document.createElement("form");//创建form表单,以下数form表单的各种参数
        tempForm.id = "tempForm";
        tempForm.method = "post";
        tempForm.action = "/Windchill/netmarkets/jsp/down/downloadAttach.jsp";
        tempForm.target = "_blank";
        let hideInput1 = document.createElement("input");//创建标签 <input></input> 标签 然后设定属性,最后追加为 form标签的子标签
        hideInput1.type = "hidden";
        hideInput1.name = "ids";
        hideInput1.value = JSON.stringify(soids);
        tempForm.appendChild(hideInput1);
        document.body.appendChild(tempForm);
        tempForm.submit();//提交POST请求
        document.body.removeChild(tempForm)
    }
    function changeType(){
        PTC.jca.table.Utils.reload('drwList', {}, true);
    }
</script>
<%@ include file="/netmarkets/jsp/util/end.jspf"%>

downloadAttach.jsp

<%@ page import="wt.epm.EPMDocument" %>
<%@ page import="java.util.*" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="wt.fc.*" %>
<%@ page import="ext.cust.ExportDrw" %>
<%@ page import="ext.cust.Attachment" %>
<%@ page contentType="text/html; charset=UTF-8"  %>

<%
    String parameter = request.getParameter("ids");
    String fileName = request.getParameter("file");
    JSONArray array = new JSONArray(parameter);
    ReferenceFactory rf = new ReferenceFactory();
    List<EPMDocument> docs = new ArrayList<>();
    for (int i = 0; i < array.length(); i++) {
        WTReference reference = rf.getReference(array.getString(i));
        EPMDocument document = (EPMDocument) reference.getObject();
        docs.add(document);
    }

    if(docs.size() == 0){
        out.write("未找到PDF附件,oid列表为"+docs);
    }else{
        ExportDrw exportDrw = new ExportDrw();
        List<Attachment> epmAttach = exportDrw.getEPMAttach(docs);
        if(epmAttach.size() == 0){
            out.write("未找到PDF附件,oid列表为"+docs);
        }else{
            response.setHeader("Content-Disposition", "attachment; filename=" + System.currentTimeMillis() +".zip");
            byte[] bytes = exportDrw.zipFile(exportDrw.getEPMAttach(docs));
            response.getOutputStream().write(bytes);
        }
    }

%>

3、注册菜单项
actionmodels.xml

   <model name="epmdocuments details page actions" menufor="wt.epm.EPMDocument">
       <action name="downloadPDF" type="epmdocument"/>
   </model>

actions.xml

   <objecttype name="epmdocument" class="wt.epm.EPMDocument">
       <action name="downloadPDF">
           <command url="/netmarkets/jsp/down/getAttachList.jsp" windowType="popup" />
       </action>
    </objecttype>

action.properties、action_zh_CN.properties

empdocument.downloadPDF.icon=download.gif
empdocument.downloadPDF.tooltip=\u4e0b\u8f7dPDF
empdocument.downloadPDF.description=\u4e0b\u8f7dPDF
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值