首页 > 其他分享 >Teamcenter AWC 调用存储过程输出报表

Teamcenter AWC 调用存储过程输出报表

时间:2024-05-04 20:25:00浏览次数:22  
标签:String getString rs xhr Teamcenter new import AWC 报表

1.前端:

1.1增加导出报表命令:

{     "commands": {       ...,         "ExportBOMCommand": {             "iconId": "cmdZoomToSelected",             "title": "{{i18n.ExportBOMCommandTitle}}",             "description": "{{i18n.ExportBOMCommandDescription}}"         }     },     "commandHandlers": {        ...,         "ExportBOMCommandHandler": {             "id": "ExportBOMCommand",             "action": "activateExportBOMCommand",             "activeWhen": true,             "visibleWhen": {                 "condition": "conditions.true"             }         }     },     "commandPlacements": {        ...,         "activateExportBOMCommand": {             "actionType": "JSFunction",             "method": "exportBOM",             "deps": "js/ExportBOMCommandService",             "inputData": {                 "ctx": "{{ctx}}"             }         }     },     "conditions": {         "objectIsSelected": {             "expression": "ctx.selected"         }     },     "i18n": {        ...,         "ExportBOMCommandTitle": [             "mysamplemoduleMessages"         ],         "ExportBOMCommandDescription": [             "mysamplemoduleMessages"         ]     } } 1.2 JS: /**  * Simple Alert service for sample command Handlers  *  * @module js/ExportBOMCommandService  */
/**  * Dummy alert.  * @param {String} text - text to display  */ export let alert2 = function (text) {     alert(text); // eslint-disable-line };
import AwPromiseService from 'js/awPromiseService'; import ywCommonServices from 'js/ywCommonServices'; import messagingService from 'js/messagingService'; import {     get_URL_service } from './ywCommonServices'; import $ from 'jquery';
export let exportBOM = function (ctx) {     var URL_service ="http://localhost:9527/awc/reports/";// get_URL_service();
    var deferred = AwPromiseService.instance.defer();
    var data = [];
    ctx.mselected.forEach(element => {         console.log(element.uid);         data.push({"uid":element.uid});     });    console.log(data); /*   已经通了*/     var xhr = new XMLHttpRequest();     xhr.responseType = "arraybuffer";     xhr.open("POST", URL_service+"ExportBOM", true);
   /* xhr.onreadystatechange = function () {         if (xhr.readyState === 4) {             if (xhr.status === 200) {                 deferred.resolve(xhr.response);             } else {                 deferred.reject(xhr.statusText);             }         }     }*/     xhr.onerror = function () {         messagingService.showError('导出失败,导出的内容为空!');             return;     }     xhr.onload = function () {         const blob = new Blob([this.response], {             type: "application/vnd.ms-excel"         });         if (blob.size < 1) {             alert('导出失败,导出的内容为空!');             return;         }         if (window.navigator.msSaveOrOpenBlob) {             navigator.msSaveOrOpenBlob(blob, 'test.xlsx')             navigator.open(blob);         } else {             messagingService.showInfo("导出完成!", "导出成功");             const aLink = document.createElement('a');             aLink.style.display = 'none';             aLink.href = window.URL.createObjectURL(blob);             var timestamp=new Date().getTime();             aLink.download =timestamp+ '.xlsx';             document.body.appendChild(aLink);             aLink.click();             document.body.removeChild(aLink);             return;         }     }    // xhr.setRequestHeader("Authorization", "xxx");     xhr.setRequestHeader("Content-Type", "application/json");     xhr.send(JSON.stringify(data)); }
export default {     alert: alert2,     exportBOM: exportBOM };   1.3:没有添加界面,没有view和viewModel   2.后端: 2.1Springboot添加服务:
package com.leoch.tc.service.awcreports.controllers;

import com.leoch.tc.service.awcreports.services.impl.EBOMExportServicesImpl;
import com.teamcenter.util.POIExcel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping(value = "/awc/reports")
@CrossOrigin(origins = "*")
public class ReportController {
@Autowired
private Environment environment;
@Autowired
EBOMExportServicesImpl ebomExportServices;

Logger logger = LoggerFactory.getLogger(ReportController.class);
@RequestMapping(value = { "/ExportBOM" }, method = { RequestMethod.POST, RequestMethod.GET })
@ResponseBody
public String exportBOM(@RequestBody String jsonString, HttpServletResponse response) {
System.out.println("ExportBOM"+jsonString);
try{
ebomExportServices.exportEBOM(jsonString, response);
return "{\"result\":\"ExportBOM Successfully\"}";
}catch (Exception e){
return "{\"result\":\"ExportBOM Error"+String.valueOf(e)+"\"}";
}
}
}

package com.leoch.tc.service.awcreports.services.impl;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.leoch.tc.service.awcreports.services.IEBOMExportServices;
import com.leoch.tc.service.awcreports.utils.POIExcel;
import com.leoch.tc.service.configs.DataSourceConfigure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.UUID;

@Service("ebomExportServices")
public class EBOMExportServicesImpl implements IEBOMExportServices {

private Logger logger = LoggerFactory.getLogger(EBOMExportServicesImpl.class);
@Autowired
private DataSourceConfigure dsc ;
// @Autowired
// private POIExcel poiExcel;
public EBOMExportServicesImpl(){

}

@Override
public void exportEBOM(String jsonString ,HttpServletResponse response) throws Exception {
try {
logger.info(jsonString);
JSONArray jsonObj = new JSONArray(jsonString);
Connection conn=dsc.secondaryDataSource().getConnection();
String uuid= UUID.randomUUID().toString();

for (int i=0 ;i<jsonObj.size() ;i++) {
JSONObject pirObj=jsonObj.getJSONObject(i);
String pitem_rev_uid= pirObj.getStr("uid");
CallableStatement proc = null;
ResultSet rs = null;
try {
proc = conn.prepareCall("{call CALL_GET_EBOM(?,?)}");
proc.setString(1, pitem_rev_uid);
proc.setString(2, uuid);
proc.execute();
} catch (Exception e) {
new Throwable(String.valueOf(e));
logger.error(String.valueOf(e));
}
}
try {
ArrayList<String[]> exportDatas = new ArrayList<String[]>();
String sqlStr = "select * from LB_EBOM where uuid='" + uuid + "' order by to_number(EBOM_SEQ)";//pitem_id,CITEM_ID";//
PreparedStatement ps = conn.prepareStatement(sqlStr);
;
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String[] dataRow = new String[]{rs.getString("BL_LEVEL_STARTING_0"), // 层级
rs.getString("PITEM_ID"), // 父项ID
rs.getString("PITEM_REVISION_ID"), // 父项版本
rs.getString("POBJECT_DESC"), // 父项物料描述
rs.getString("POWNING_USER"), // 父项所有
rs.getString("PRELEASE_STATUS_LIST"), // 父项所有
rs.getString("CITEM_ID"), // 子项ID
rs.getString("CITEM_REVISION_ID"), // 子项版本
rs.getString("COBJECT_DESC"), // 零组件名称
rs.getString("L8_USAGE"), // 用量
rs.getString("L8_ENGINEER_UNIT"), // 工程单位
rs.getString("L8_NOTE"), // BOM备注
rs.getString("COWNING_USER"), // 子项所有者
rs.getString("BL_INDENTED_TITLE"), // BOM行
rs.getString("CRELEASE_STATUS_LIST"), // 零组件发布状态
rs.getString("SEQUENCE_NO")// 查找编号
};
exportDatas.add(dataRow);
}
if (exportDatas.size() > 0) {
try {
String[] exportColNames = new String[]{"层级", "父项ID", "父项版本", "父项物料描述", "父项所有者", "父项发布状态", "子项ID",
"子项版本", "零组件名称", "用量", "工程单位", "BOM备注", "子项所有者", "BOM行", "零组件发布状态", "查找编号"};
POIExcel poiExcel=new POIExcel();
OutputStream outputStream = response.getOutputStream();
poiExcel.exportExceltoClient(exportColNames, exportDatas, "BOM 清单", outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception ex1) {
new Throwable(String.valueOf(ex1));
logger.error("", ex1);
}
ps = conn.prepareStatement("delete from LB_EBOM where uuid='" + uuid + "'");
rs = ps.executeQuery();
conn.commit();
}
} catch(Exception e1){
new Throwable(String.valueOf(e1));
logger.error(String.valueOf(e1));
}
}catch (SQLException sqlEx){
logger.error(String.valueOf(sqlEx));
new Throwable(String.valueOf(sqlEx));
}
}
}
3.结果:

 

 

 

标签:String,getString,rs,xhr,Teamcenter,new,import,AWC,报表
From: https://www.cnblogs.com/PLM-Teamcenter/p/18172630

相关文章

  • 如何通过前后端交互的方式制作Excel报表
    前言Excel拥有在办公领域最广泛的受众群体,以其强大的数据处理和可视化功能,成了无可替代的工具。它不仅可以呈现数据清晰明了,还能进行数据分析、图表制作和数据透视等操作,为用户提供了全面的数据展示和分析能力。今天小编就为大家介绍一下,如何通过葡萄城公司的纯前端表格控件Spre......
  • 报表查询数据异常解决方法
      缘起  今天早上一到公司,技术支持的小伙就说一个后台报表,计算的任务完成率超过100%,有异常,客户要用,比较急,要解决这个问题。   解决过程    自从接了上任的报表计算,这个就头疼,没办法硬着头皮查什么原因,报表的SQL比较简单,一个查:接受任务数表a,一个查:完成任......
  • fastreport .net打印普通报表
    fastreport.net打印普通报表前言:.net代码层先不记录在这,后续会单独写一篇博客来记录。直接在工具上进行功能点的实现一、效果图二、功能点分页分页小计金额大写三、功能点实现3.1分页这个直接用工具自带的page当前页和TotalPages总页数当前页和总页数是根据当前......
  • Teamcenter 《POM has not start》处理
    修改oracle密码有效期虚拟机为了方便,修改为永不过期1.查看用户和profile,testuser为要查找的用户名,按实际情况来修改。cmd>sqlplus/assysdbaselectusername,profilefromdba_userswhereusername='INFODBA';###--一般查出为DEFAULT2.查看默认设置的密码到期时长,一......
  • FineReport11 报表技巧02- 实现类Excel表头筛选功能
    背景:在报表开发中,有的需求方用习惯Excel的表头筛选时,就不太习惯帆软的特意点击报表控件进行筛选,希望报表筛选方式可以类似Excel那种直接在表头进行筛选的功能最终效果如下:实现步骤:1.1、数据集准备产品信息表:SELECT客户,产品,数量,cast(下单时间asdate)as下单时间,下单......
  • FineReport11 报表技巧01- 单元格HTML显示tag颜色标签
    背景FineReport报表制作中,经常需要将某些单元格内容以彩色标签显示,其中根据不同对象内容进行不同展示,效果如下图所示:实现效果为:1、“年龄”列内容根据年龄段不同显示为不同颜色且带边框效果;2、“性别”列性别为“男”显示为蓝色,性别为“女”显示为红色,性别为“未知”显示为灰......
  • Teamcenter 查询构建器《通过表单属性找Item》
    背景配置查询构建器Step1:确定查找的类型Step2:referenced_by查找ItemRevisionStep3:通过关系IMAN_master_form_rev查找“版本表单”Step4:查找存储的实际类型(打印对象查看)Step5:设置条件......
  • T-SQL——关于时间段类报表
    目录1.背景说明2.简单示例shanzm-2024-4-311:11:201.背景说明需要查询一个以时间段为列的报表可以筛选除各个时间段进行连接查询出来可以通过CaseWhen将时间差转为时间段,在进行转列2.简单示例--各个品牌尚未发货的订单,从订单创建时间到当前时间的各个时间段的数......
  • 强!一款贼好用的低代码报表工具,开源免费!
    大家好,我是狂师!今天给大家推荐一款免费的数据可视化报表设计工具:JimuReport,类似excel操作风格,在线拖拽完成报表设计!项目号称:功能永久免费、可以商用、永久免费使用!1、JimuReport介绍JimuReport是北京国炬信息技术有限公司旗下的平台,是一款免费的数据可视化报表工具,主要用于报表......
  • 还在担心报表不好做?不用怕,试试这个方法(四)
    系列文章:《还在担心报表不好做?不用怕,试试这个方法》(一)《还在担心报表不好做?不用怕,试试这个方法》(二)《还在担心报表不好做?不用怕,试试这个方法》(三)概要在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编为大家分享了数据间的主从关系及单元格布局。主要讲解数据之......