<%-- Copyright (c) 2006 PTC FlexPLM All Rights Reserved --%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<%-- //////////////////////////////// JSP HEADERS ////////////////////////////////////////--%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<%@ page language="java"
import= " java.util.*,
java.io.*,
wt.util.*,
java.net.*,
com.lcs.wc.util.*,
com.lcs.wc.document.*,
com.lcs.wc.flextype.*,
com.lcs.wc.product.*,
com.lcs.wc.foundation.LCSQuery,
com.lcs.wc.db.SearchResults,
com.lcs.wc.client.web.PageManager,
com.lcs.wc.client.web.WebControllers,
com.lcs.wc.client.Activities,
com.lcs.wc.flextype.*,
com.lcs.wc.foundation.*,
com.lcs.wc.db.*,
com.lcs.wc.part.*,
wt.part.*,
wt.part.WTPartMaster,
com.lcs.wc.sourcing.*,
com.lcs.wc.season.*,
com.lcs.wc.specification.*
"
%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<%-- //////////////////////////////// BEAN INITIALIZATIONS ///////////////////////////////--%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<jsp:useBean id="documentModel" scope="request" class="com.lcs.wc.document.LCSDocumentClientModel" />
<jsp:useBean id="lcsContext" class="com.lcs.wc.client.ClientContext" scope="session"/>
<%-- ////////////////////////////////////////////////////////////////////////////////////--%>
<%-- ////////////////////////////// INITIALIZATION JSP CODE /////////////////////////////--%>
<%-- ////////////////////////////////////////////////////////////////////////////////////--%>
<%!
public static final String DEFAULT_ENCODING =
LCSProperties.get("com.lcs.wc.util.CharsetFilter.Charset","UTF-8");
public static boolean DEBUG = LCSProperties.getBoolean("jsp.xml.AIPlugin.verbose");
public static String FILE_PATH = null;
static {
try {
WTProperties wtproperties = WTProperties.getLocalProperties();
String wtHome = wtproperties.getProperty("wt.home");
FILE_PATH = FormatHelper.formatOSFolderLocation(LCSProperties.get("com.lcs.wc.content.documentfilePath", "C:"));
FILE_PATH = wtHome + FILE_PATH;
} catch(Exception e){
e.printStackTrace();
}
}
%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<%-- //////////////////////////////// PROCESSING ////////////////////////////////////////--%>
<%-- /////////////////////////////////////////////////////////////////////////////////////--%>
<%
try {
String fileName = request.getHeader("content-location");
if (!FormatHelper.hasContent(fileName)) {
throw new LCSException(RB.DOCUMENT, "noFileName_ERR", RB.objA);
}
fileName = FILE_PATH + File.separatorChar + fileName;
fileName = FileRenamer.rename(fileName);
System.out.println("\t File Name " + fileName);
boolean hasError = false;
InputStream input = request.getInputStream();
FileOutputStream output = new FileOutputStream(fileName);
byte buffer[] = new byte[1024];
int len = -1;
try {
while ((len = input.read(buffer, 0, buffer.length)) > 0) {
output.write(buffer, 0, len);
}
} finally {
if (output != null)
output.close();
}
File file = new File(fileName);
if (!file.exists()) {
System.out.println("\t No File ");
//throw new LCSException("No File " + fileName);
Object params[] = { fileName };
throw new LCSException(RB.DOCUMENT, "noFile_ERR", params);
}
if (file.length() == 0) {
System.out.println("\t Zero Length file");
Object params[] = { fileName };
throw new LCSException(RB.DOCUMENT, "noContentInFile_MSG", params);
}
FileUploadHelper.processFile(fileName, file, documentModel,
request.getHeader("content-location"), request.getParameter("specificationId"));
LCSDocument document = documentModel.getBusinessObject();
document = (LCSDocument)wt.fc.PersistenceHelper.manager.refresh(document);
String xmlStr = new XMLHelper().generateXML(document);
buffer = xmlStr.getBytes(DEFAULT_ENCODING);
response.setContentLength(buffer.length);
response.setStatus(response.SC_OK);
System.out.println("\t Response " + response.SC_OK);
//changed by jackchain
//2012-11-19
//自动创建产品规格,关联产品文档
//Start
System.out.println("\t Jackchain reached here 到此一游!");
String owner=""+document.getValue("ownerReference");//获取WTPartMaster
wt.part.WTPartMaster wt = (wt.part.WTPartMaster)(LCSQuery.findObjectById(owner));
String SKU=wt.getName();
//声明查询
PreparedQueryStatement statement = new PreparedQueryStatement();
statement.appendFromTable("LCSPRODUCT");
String flextypePath = "Product";
FlexType flextype = FlexTypeCache.getFlexTypeFromPath(flextypePath);
statement.appendSelectColumn("LCSPRODUCT", flextype.getAttribute("productName").getVariableName());
statement.appendSelectColumn("LCSPRODUCT", "BRANCHIDITERATIONINFO");
//款号条件
if(SKU.trim().length()>0){
statement.appendAndIfNeeded();
statement.appendCriteria(new Criteria("LCSPRODUCT",flextype.getAttribute("EPAstyleNumber").getVariableName(),SKU,Criteria.EQUALS));
}
statement.appendAndIfNeeded();
statement.appendCriteria(new Criteria("LCSPRODUCT", "VERSIONIDA2VERSIONINFO", "A", Criteria.EQUALS));
statement.appendAndIfNeeded();
statement.appendCriteria(new Criteria("LCSPRODUCT", "LATESTITERATIONINFO", "1", Criteria.EQUALS));
SearchResults results = LCSQuery.runDirectQuery(statement);
Vector vRlt = results.getResults();
int iRecNum = vRlt.size();
if (iRecNum == 1) {//找到产品
FlexObject obj = (FlexObject) vRlt.get(0);//获取产品
String oid="VR:com.lcs.wc.product.LCSProduct:"+obj.getString("LCSPRODUCT.BRANCHIDITERATIONINFO");
LCSProduct product = (LCSProduct)(new LCSProductQuery()).findObjectById(oid);
CreateSpec(product);
}
else{
System.out.println("EP > not find product :"+SKU+" the specfication created failure!");
}
//End
response.getWriter().write(xmlStr);
} catch (Throwable e) {
e.printStackTrace();
String msg = new XMLHelper().generateErrorMessage(e);
LCSErrorLog.logRequest(request, msg);
System.out.println("\t Response " + response.SC_INTERNAL_SERVER_ERROR);
byte[] buffer = msg.getBytes(DEFAULT_ENCODING);
response.setContentLength(buffer.length);
response.setContentType("text/plain");
response.setStatus(response.SC_INTERNAL_SERVER_ERROR);
java.io.Writer writer = response.getWriter();
writer.write(msg);
}
%>
<%!
public void CreateSpec(LCSProduct product){
//建立关联
try{
String componentIds="";
LCSProductQuery prodQuery = new LCSProductQuery();
Collection prodImagePages = prodQuery.findImagePages(product, null, null, true);
prodImagePages = CollectionUtil.distinctResults(prodImagePages, "LCSDOCUMENT.BRANCHIDITERATIONINFO");
FlexType imagePageRootType = FlexTypeCache.getFlexTypeFromPath("Document\\Images Page");
Iterator imagePageIter = prodImagePages.iterator();
while(imagePageIter.hasNext()){
FlexObject obj_temp = (FlexObject) imagePageIter.next();
componentIds = "VR:com.lcs.wc.document.LCSDocument:" + obj_temp.getString("LCSDOCUMENT.BRANCHIDITERATIONINFO");
}
if(componentIds.equals(""))
{
System.out.println("AIPluginUploadContent.jsp > CreateSpec > 没有找到图片");
return;
}
//获取季节
String sourceIds="";
String specOwnerId="";
Collection sourcing = LCSSourcingConfigQuery.getSourcingConfigsForProduct(product);
Iterator it = sourcing.iterator();
LCSSourcingConfig configSource=null;
boolean isfindLY=false;
while (it.hasNext()) {
configSource = (LCSSourcingConfig)it.next();
if(configSource.getSourcingConfigName().contains("001")&&configSource.getSourcingConfigName().contains("Primary")){
sourceIds=("VR:com.lcs.wc.sourcing.LCSSourcingConfig:"+configSource.getBranchIdentifier());
specOwnerId=("OR:"+configSource.getProductMaster());
break;
}
}
if(sourceIds.equals("")||specOwnerId.equals("")){
System.out.println("AIPluginUploadContent.jsp > CreateSpec > 没有找到采购来源");
return;
}
//获取季节
String seasonIds="";
SeasonProductLocator seasonProductLocator = new SeasonProductLocator();
LCSSeasonProductLink seasonProductLink = seasonProductLocator.getSeasonProductLink(product);
LCSSeason season = (LCSSeason)seasonProductLocator.getSeasonRev(seasonProductLink);
seasonIds=("VR:com.lcs.wc.season.LCSSeason:"+season.getBranchIdentifier());
SearchResults rs = FlexSpecQuery.findSpecsByOwner((WTPartMaster)product.getMaster(), (WTPartMaster)season.getMaster(), null, null);
Collection coll = LCSQuery.getObjectsFromResults(rs, "VR:com.lcs.wc.specification.FlexSpecification:", "FLEXSPECIFICATION.BRANCHIDITERATIONINFO");
if(coll.size()>0){
System.out.println("AIPluginUploadContent.jsp > CreateSpec > 已存在规格!");
return;
}
System.out.println("sourceIds = " + sourceIds);
System.out.println("seasonIds = " + seasonIds);
System.out.println("specOwnerId = " + specOwnerId);
System.out.println("componentIds = " + componentIds);
Collection listSourceIDs = new ArrayList();
listSourceIDs.add(sourceIds);
Collection listSeasonIds = new ArrayList();
listSeasonIds.add(seasonIds);
Collection listComponentIds = new ArrayList();
listComponentIds.add(componentIds);
FlexType specFlexType = FlexTypeCache.getFlexTypeFromPath("Specification");
FlexSpecificationClientModel flexSpecModel = new FlexSpecificationClientModel();
flexSpecModel.setFlexType(specFlexType);
flexSpecModel.setSpecOwnerId(specOwnerId);
flexSpecModel.setSpecSourceId(sourceIds);
flexSpecModel.setTypeId("OR:"+specFlexType.getIdentity());
flexSpecModel.setValue("specName","自动生成");
Map paramsMap=new HashMap();
paramsMap.put("parentSpec","");
(new FlexSpecLogic()).saveSpec(flexSpecModel,listSourceIDs,listSeasonIds,listComponentIds,paramsMap);
System.out.println("AIPluginUploadContent.jsp > CreateSpec > successful");
}
catch(Exception error){
System.out.println("AIPluginUploadContent.jsp > CreateSpec > "+error);
}
}
%>