Commit c9003773 authored by hanson.yao's avatar hanson.yao

cadPro 接口优化

parent d36c0aeb
[
{
"comment": "GACE UAT Server",
"comment": "615 Server",
"serverAddress": "http://192.168.1.240/Windchill/extRest/",
"workspace": "D:\\CADProTestWorkspace",
"workspace": "D:\\CATIA_WORK",
"type": 0,
"sort": 1,
"code": "77d6cf9e-6527-4f38-ae8e-87bd744e405d",
......@@ -15,9 +15,9 @@
}
},
{
"comment": "GACE Prod Server",
"comment": "615 Server",
"serverAddress": "http://192.168.1.240/Windchill/extRest/",
"workspace": "D:\\CADProWorkspace",
"workspace": "D:\\CATIA_WORK",
"type": 0,
"sort": 2,
"code": "1111a947-b018-4c24-9f32-24c9fab5d37e",
......
{
"产品代号": "productCode",
"材料": "material",
"重量": "singleWeight",
"重量代码": "weightCode",
"物品码": "materialCode",
"零部件类型": "part_type"
}
\ No newline at end of file
package com.yonde.cadpro.checker;
import com.yonde.cadpro.CADProConstants;
import com.yonde.common.CommonUtil;
import org.apache.commons.lang.StringUtils;
......@@ -59,10 +60,10 @@ public abstract class AbstractCADProChecker implements CADProChecker {
throw new WTException("选中节点获取对象异常,请确认:"
+ StringUtils.join(invalidIds, CADProConstants.COMMA));
}
if (invalidTypeIds.size() > 0) {
throw new WTException("选中节点对象类型非法,请确认:"
+ StringUtils.join(invalidTypeIds, CADProConstants.COMMA));
}
//if (invalidTypeIds.size() > 0) {
// throw new WTException("选中节点对象类型非法,请确认:"
// + StringUtils.join(invalidTypeIds, CADProConstants.COMMA));
//}
if (selectedNodes.size() == 0) {
throw new WTException("获取选中节点异常,请确认!");
......
......@@ -3,7 +3,6 @@ package com.yonde.cadpro.checker.impl;
import com.yonde.cadpro.CADProConstants;
import com.yonde.cadpro.checker.AbstractCADProChecker;
import com.yonde.cadpro.config.CADProConfigPropertiesUtil;
import com.yonde.cadpro.util.CADProUtil;
import com.yonde.cadpro.util.EPMUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
......@@ -46,10 +45,10 @@ public class NewOpenChecker extends AbstractCADProChecker {
}
//类型校验
String typeDisplay = CADProUtil.getPartDisplayType(wto);
if (!allowTypes.contains(typeDisplay)) {
invalidTypeObjs.add(wto.getDisplayIdentity().toString());
}
//String typeDisplay = CADProUtil.getPartDisplayType(wto);
//if (!allowTypes.contains(typeDisplay)) {
// invalidTypeObjs.add(wto.getDisplayIdentity().toString());
//}
}
//if (invalidTypeObjs.size() > 0) {
......
......@@ -4,9 +4,12 @@ import com.yonde.basedata.entity.api.ApiResult;
import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.cadpro.bean.*;
import com.yonde.cadpro.config.CADProConfigPropertiesUtil;
import com.yonde.cadpro.config.CADProSettingTypeEnum;
import com.yonde.cadpro.config.DxCADProSetting;
import com.yonde.cadpro.service.CADProService;
import com.yonde.cadpro.service.CadCheckService;
import com.yonde.cadpro.util.Base64Util;
import com.yonde.cadpro.util.CADProUtil;
import com.yonde.context.vo.SelectOption;
import org.springframework.web.bind.annotation.*;
import wt.util.WTException;
......@@ -164,24 +167,12 @@ public class CADProController {
public ApiResult<List<SelectOption>> bomViewOptions() throws Exception {
return ApiResult.ok(CADProConfigPropertiesUtil.getBOMViews(SelectOption.class), "success");
}
//
//@GetMapping("/config/cadProSetting")
//public ApiResult<List<DxCADProSetting>> getCADProSettings(@RequestParam String settingType) {
// try {
// log.debug("getCADProSettings settingType : " + settingType);
// try {
// CADProSettingTypeEnum.valueOf(settingType);
// } catch (Exception e) {
// log.error("getCADProSettings CADProSettingTypeEnum error...", e);
// throw new WTException("配置类型非法,请确认!");
// }
// List<DxCADProSetting> result = CADProUtil.getCADProSettings(settingType);
// return ApiResult.ok(result, "查询成功");
// } catch (Exception e) {
// log.error("getCADProSettings error...", e);
// return ExceptionUtil.constructErrorAPIResult(e);
// }
//}
@GetMapping("/config/cadProSetting")
public ApiResult<List<DxCADProSetting>> getCADProSettings(@RequestParam String settingType) {
CADProSettingTypeEnum.valueOf(settingType);
return ApiResult.ok(CADProUtil.getCADProSettings(settingType), "查询成功");
}
//
//
......
......@@ -6,6 +6,7 @@ import com.yonde.cadpro.download.ClientModelPathRule;
import com.yonde.cadpro.download.impl.ClientModelPathAsConfigRule;
import com.yonde.cadpro.download.impl.ClientModelPathAsDSRule;
import com.yonde.cadpro.download.impl.ClientModelPathAsParentRule;
import com.yonde.cadpro.download.impl.CommonPathAsConfigRule;
import com.yonde.common.util.TypeAttrUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
......@@ -41,7 +42,7 @@ public class ClientModelPathRuleFactory {
return new ClientModelPathAsDSRule(part);
} else {
//throw new WTException("此操作场景暂不支持");
return null;
return new CommonPathAsConfigRule();
}
}
}
......
......@@ -8,10 +8,7 @@ import com.ptc.windchill.enterprise.copy.server.CoreMetaUtility;
import com.yonde.cadpro.CADProConstants;
import com.yonde.cadpro.bean.*;
import com.yonde.cadpro.config.CatiaClientConfig;
import com.yonde.cadpro.util.CadPartUtil;
import com.yonde.cadpro.util.ContentUtil;
import com.yonde.cadpro.util.EPMUtil;
import com.yonde.cadpro.util.SearchUtil;
import com.yonde.cadpro.util.*;
import com.yonde.common.CommonUtil;
import com.yonde.common.IBAUtil;
import com.yonde.common.PartUtil;
......@@ -67,42 +64,6 @@ import java.util.*;
@Service
public class CadCheckService implements RemoteAccess {
public static Map attrMapping;
static {
attrMapping = new HashMap();
attrMapping.put("GA_A001", "model");
attrMapping.put("GA_A003", "equipmentModel");
attrMapping.put("GA_A004", "part_type");
attrMapping.put("GA_A005", "weightCode");
attrMapping.put("GA_A006", "singleWeight");
attrMapping.put("GA_A007", "processMethod");
attrMapping.put("GA_A008", "featureKind");
attrMapping.put("GA_A009", "interchange");
attrMapping.put("GA_A010", "serviceLife");
attrMapping.put("GA_A011", "size");
attrMapping.put("GA_A012", "strength");
attrMapping.put("GA_A013", "materialCode");
attrMapping.put("GA_A014", "supplierCode");
attrMapping.put("GA_A015", "extSource");
attrMapping.put("GA_A016", "SupplierEquipNumber");
attrMapping.put("GA_A017", "SupplierEquipNumVersion");
attrMapping.put("GA_A018", "techAggreeNo");
attrMapping.put("GA_A019", "contractNo");
attrMapping.put("GA_A020", "EquipStatus");
attrMapping.put("GA_A021", "AirworthinessStatus");
attrMapping.put("GA_A022", "ApplyCTSOTSOStandard");
attrMapping.put("GA_A023", "InstallationLocation");
attrMapping.put("GA_B001", "isSymmetry");
attrMapping.put("GA_B002", "symmetry");
attrMapping.put("表面处理", "surfaceTreatment");
attrMapping.put("材料", "material");
attrMapping.put("重量", "singleWeight");
attrMapping.put("重量代码", "weightCode");
attrMapping.put("物品码", "materialCode");
attrMapping.put("零部件类型", "part_type");
}
@Autowired
ModelService modelService;
......@@ -315,6 +276,7 @@ public class CadCheckService implements RemoteAccess {
enforced = SessionServerHelper.manager.setAccessEnforced(false);
//记录已处理模型编号
Set<String> processedModelNumbers = new HashSet<String>();
Map<String, String> attrMapping = CADProUtil.getCADProIbaMapping();
//IBA属性映射关系<MBDAttribute, IBAKey>
if (attrMapping == null) {
attrMapping = new HashMap<String, String>();
......@@ -424,8 +386,7 @@ public class CadCheckService implements RemoteAccess {
}
String partTypeDisplay = StringUtils.trimToEmpty(entry.getValue());
System.out.println(" partTypeDisplay : " + partTypeDisplay);
DxPartModelBomVo partModelBOMVo = DxPartModelBomVo.newDxPartModelBomVo(epm,
partTypeDisplay, true);
DxPartModelBomVo partModelBOMVo = DxPartModelBomVo.newDxPartModelBomVo(epm, partTypeDisplay, true);
System.out.println("partModelBOMVo by epm [" + epm + "] completed...");
BatchResult batchResult = BatchResult.successBatchResult(partModelBOMVo);
if (batchResult == null) {
......@@ -450,22 +411,6 @@ public class CadCheckService implements RemoteAccess {
}
}
/**
* 处理检出或新建模型的检入
* 1. 零部件、数模的创建
* 2. 零部件、数模的属性更新
* 3. 零部件、数模的关联关系
* 4. 零部件、数模的BOMUses关系记录
*
* @param modelBaseInfo
* @param processedModelNumbers
* @param attrMapping
* @param drawingInfos
* @param bomUsesMap
* @param partEPMMap
* @throws Exception
*/
/**
* 处理检出或新建模型的检入
* 1. 零部件、数模的创建
......@@ -487,14 +432,12 @@ public class CadCheckService implements RemoteAccess {
Map<WTPart, List<ModelBaseInfo>> bomUsesMap, Map<WTPart, EPMDocument> partEPMMap)
throws Exception {
String modelNumber = modelBaseInfo.getNumber();
//todo 待确认
String modelName = modelNumber + "cad";
String modelName = modelBaseInfo.getName();
String modelFileName = modelBaseInfo.getModelFileName();
String modelFileUri = modelBaseInfo.getModelFileUri();
Boolean isDrawing = modelBaseInfo.getIsDrawing();
String modelThumbnailUri = modelBaseInfo.getModelThumbnailUri();
//todo 先创建part
WTPart epmPart = null;
QuerySpec qsPart = new QuerySpec(WTPart.class);
qsPart.appendWhere(new SearchCondition(WTPart.class, WTPart.NUMBER, SearchCondition.EQUAL, modelNumber), new int[]{0});
......@@ -538,7 +481,7 @@ public class CadCheckService implements RemoteAccess {
boolean isDSPart = false;
//判断是否为二维图,三维图处理完成后统一处理
//判断是否为isDrawing二维图,三维图处理完成后统一处理
if (isDrawing) {
System.out.println("current model info is Drawing, processing after the all 3D model");
List<ModelBaseInfo> tempChildInfos = modelBaseInfo.getChildren();
......@@ -651,11 +594,6 @@ public class CadCheckService implements RemoteAccess {
}
System.out.println("epm[" + epm.getDisplayIdentifier() + "]");
//处理EPM是新建或者检出,检查Part是否存在
//Part 不存在,新建
//Part 存在,检出
//检查EPM是否已关联Part
if (wtPart != null) {
//标准件忽略更新
if (isStandardPart) {
......
......@@ -3530,13 +3530,6 @@ public class ModelService {
System.out.println("get Container error by [" + epm3D + "]"+ e);
}
// if (inputContainer == null && isSupplierOP) {
// inputContainer = supplierContainer;
// }
//默认型号为AG600
// checkModelAttr(attsValueMap);
//创建EPM epmDocumentType_Drawing
String epmDocumentType = CatiaClientConfig.epmDocumentType_Drawing;//二维图
epm = EPMUtil.createEPMDoc(modelNumber, modelName, modelFileName, epmDocumentType,
......
package com.yonde.cadpro.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ptc.core.meta.server.TypeIdentifierUtility;
import com.yonde.cadpro.CADProConstants;
import com.yonde.cadpro.bean.DxModelFile;
......@@ -7,7 +9,6 @@ import com.yonde.cadpro.config.CADProSettingTypeEnum;
import com.yonde.cadpro.config.DxCADProSetting;
import com.yonde.common.CommonUtil;
import com.yonde.common.IBAUtil;
import com.yonde.common.JsonUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
......@@ -41,6 +42,8 @@ public class CADProUtil {
private static final Logger log = Logger.getLogger(CADProUtil.class);
private static String CAD_PRO_SETTING_FILE = "/codebase/com/yonde/config/cadpro/CADProSetting.json";
private static String CAD_PRO_IBA_MAPPING_FILE = "/codebase/com/yonde/config/cadpro/CatiaIntegrationAttrMapping.json";
/**
* 自动处理图号适配件号
......@@ -70,6 +73,7 @@ public class CADProUtil {
/**
* 自动处理图号适配件号
*
* @param number
* @return
*/
......@@ -86,7 +90,6 @@ public class CADProUtil {
}
/**
* 遍历BOM,下载CAD内容
*
......@@ -128,7 +131,7 @@ public class CADProUtil {
String tmpFilePath = tmpPath;
if (!CommonUtil.isTypeOf(part, CADProConstants.TYPE_STANDARDPART)) {
// 获取模型路径
String modelRelativePath = (String) IBAUtil.getIBAValue(epm,CADProConstants.IBA_MODELRELATIVEPATH);
String modelRelativePath = (String) IBAUtil.getIBAValue(epm, CADProConstants.IBA_MODELRELATIVEPATH);
modelRelativePath = modelRelativePath.replaceAll("\\\\", "/");
if (!(modelRelativePath.length() == 0 || modelRelativePath.equals("/"))) {
if (modelRelativePath.endsWith("/")) {
......@@ -164,7 +167,7 @@ public class CADProUtil {
}
List<ContentItem> contents = ContentUtil.getContentsByRole(epm,
new ContentRoleType[] { ContentRoleType.PRIMARY });
new ContentRoleType[]{ContentRoleType.PRIMARY});
if (contents != null && contents.size() > 0) {
ContentItem contentItem = contents.get(0);
if (contentItem instanceof ApplicationData) {
......@@ -180,6 +183,7 @@ public class CADProUtil {
/**
* 根据层级遍历零部件bom,获取其CAD内容文件
*
* @param part
* @param level
* @param needlevel
......@@ -209,7 +213,7 @@ public class CADProUtil {
}
modelMap.put(partId, modelFile);
if (level < needlevel || needlevel == -1) {
List<WTPart> children = CadPartUtil.getChildPart(part,true);
List<WTPart> children = CadPartUtil.getChildPart(part, true);
/*
QueryResult qr = WTPartHelper.service.getUsesWTParts(part,
WTPartStandardConfigSpec.newWTPartStandardConfigSpec(
......@@ -231,6 +235,7 @@ public class CADProUtil {
/**
* 根据层级遍历CAD bom,并获取CAD内容文件
*
* @param epm
* @param level
* @param needlevel
......@@ -366,13 +371,11 @@ public class CADProUtil {
if (part == null) {
throw new WTException("[" + per + "]获取零部件异常");
}
displayType= ClientTypedUtility.getLocalizedTypeName(part,Locale.SIMPLIFIED_CHINESE);
displayType = ClientTypedUtility.getLocalizedTypeName(part, Locale.SIMPLIFIED_CHINESE);
return displayType;
}
private static void processBOMPath(String singleBOMPath, Set<String> outputSet) {
if (StringUtils.isNotBlank(singleBOMPath)) {
List<String> source = Arrays.asList(StringUtils.split(singleBOMPath, "/"));
......@@ -384,6 +387,7 @@ public class CADProUtil {
}
}
}
public static Set<String> splitBOMPaths(Set<String> inputSet) {
Set<String> outputSet = new HashSet<String>();
if (inputSet == null || inputSet.size() == 0) {
......@@ -401,6 +405,7 @@ public class CADProUtil {
/**
* 基于服务器端配置,获取指定配置
*
* @param seetingType
* @return
*/
......@@ -413,8 +418,9 @@ public class CADProUtil {
log.debug("configFilePath : " + configFilePath);
//InputStream is = IOUtils.toInputStream(configFilePath, "UTF-8");
String jsonStr = FileUtils.readFileToString(new File(configFilePath), "UTF-8");
List<DxCADProSetting> settings = JsonUtils.fromJson(jsonStr, List.class,
DxCADProSetting.class);
//List<DxCADProSetting> settings = JsonUtils.fromJson(jsonStr, List.class, DxCADProSetting.class);
List<DxCADProSetting> settings = JSON.parseArray(jsonStr, DxCADProSetting.class);
for (DxCADProSetting dxCADProSetting : settings) {
if (CADProSettingTypeEnum.valueOf(seetingType)
.equals(dxCADProSetting.getType())) {
......@@ -429,4 +435,23 @@ public class CADProUtil {
return cadProSettings;
}
/**
* 获取cadPro iba映射配置信息
*
* @param
* @return
*/
public static Map<String, String> getCADProIbaMapping() {
try {
String mappingFile = CADProConstants.wthome + CAD_PRO_IBA_MAPPING_FILE;
log.debug("mappingFile : " + mappingFile);
String jsonStr = FileUtils.readFileToString(new File(mappingFile), "UTF-8");
return (Map<String, String>) JSONObject.parseObject(jsonStr, Map.class);
} catch (Exception e) {
log.error("getCADProIbaMapping error...", e);
}
return null;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment