Commit 4323d8aa authored by hanson.yao's avatar hanson.yao

test cadpro client

parent dc0c359f
#MCADPro Client Version
MCADProClient.version=v1.0.20211126
#For Part Default Type by Catia Check In
WTPart.DefaultType={domain}.MechanicalPart
WTPart.StandardType={domain}.StandardPart
WTPart.DSType={domain}.DS
WTPart.AirborneEquipmentType={domain}.AirborneEquipment
Transfrom.Default=1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1
IBA.PARTTYPE=part_type
PARTTYPE.STANDARD=\u6807\u51C6\u4EF6
BOMEndRecursion.types=DS
Absolute.Position.Type=DS
Absolute.Position.Default=1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1
BOM.AllowPartType=\u4E3B\u89C6\u56FE\u9876\u5C42\u4EF6,DCI,FCI,LO,DS
#For FTP Config
ftp.host=192.168.1.240
ftp.port=21
ftp.username=ftpuser
ftp.password=Aa12345678!
ftp.remotePath=/
ftp.rootPath=E:/FTPHome
......@@ -5,8 +5,6 @@ import com.yonde.common.LdapUtil;
import org.springframework.web.bind.annotation.*;
import wt.util.WTException;
import java.io.IOException;
@RestController
@RequestMapping({"/login"})
public class LoginController {
......
......@@ -74,6 +74,13 @@ public class ApiResult<T> {
return error(error.getCode(), error.getValue(), exception);
}
public static ApiResult error(String message){
ApiResult result = new ApiResult();
result.setCode(DxErrorCodeData.Service_Error.getCode());
result.setMessage(message);
return result;
}
public static <T> ApiResult ok(T obj, String message) {
ApiResult result = new ApiResult(obj);
result.setMessage(message);
......
......@@ -24,7 +24,8 @@ public enum DxErrorCodeData implements DxEnumData {
ILLEGALARGS(18, "目标类[%s]不可分配给可编辑类[%s]"),
PROP_MAPPING_ERROR(19, "目标类[%s]属性映射错误[%s]"),
CURRENT_NOT_SUPPORT_CUSTOM_TYPE(20, "当前系统不支持自定义类型(json转对象)"),
CAN_NOT_FOUND_DX_TYPE(21, "没有找见对应的dxType类型[%s]");
CAN_NOT_FOUND_DX_TYPE(21, "没有找见对应的dxType类型[%s]"),
Service_Error(2100,"服务异常");
public static final String PREFIX = "BASEDATA_";
final String code;
final String value;
......
......@@ -33,6 +33,16 @@ public class SearchQueryCondition extends BaseSearchCondition implements Seriali
public SearchQueryCondition(){
}
private boolean onlyCAD = false;
public boolean isOnlyCAD() {
return onlyCAD;
}
public void setOnlyCAD(boolean onlyCAD) {
this.onlyCAD = onlyCAD;
}
public SearchQueryCondition(SearchItems searchItems, Integer pageFrom, Integer pageSize, List<SortItem> sortItem, List<String> indices, String keyWord, String name, Boolean parentFilter, SearchQueryCondition.SearchVersion searchVersion, boolean globalSearch, Boolean seriesFlag, List<SearchQueryCondition> openProps) {
super(searchItems, pageFrom, pageSize, sortItem);
this.indices = indices;
......
......@@ -15,8 +15,7 @@ public class CatiaInteConfigPropertiesUtil implements RemoteAccess {
private static final Logger LOGGER = LogR.getLogger(CLASSNAME);
private static String CATIAINTE_CONFIG_URL = File.separator + "codebase" + File.separator
+ "ext" + File.separator + "gace" + File.separator + "config" + File.separator
+ "CatiaIntegration.properties";
+ "config" + File.separator + "yonde" + File.separator + "CatiaIntegration.properties";
private static String getValue(String key) throws Exception {
return StringUtils
......
package com.yonde.cadpro.controller;
import com.yonde.basedata.entity.api.ApiResult;
import com.yonde.basedata.search.SearchQueryCondition;
import com.yonde.cadpro.CADProService;
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.util.CADProUtil;
import com.yonde.cadpro.util.ExceptionUtil;
import com.yonde.context.vo.SelectOption;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import wt.util.WTException;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/partModel")
public class CADProController {
private static final Logger log = LoggerFactory.getLogger(CADProController.class);
@Autowired
private CADProService cadProService;
/**
* searchQueryCondition模型查询
*
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
@RequestMapping(value = "/search", method = RequestMethod.POST)
public ApiResult<List<DxPartModelBomVo>> searchPartCADModel(
@RequestBody(required = false) SearchQueryCondition searchQueryCondition) {
try {
log.debug("searchQueryCondition : " + searchQueryCondition);
if (searchQueryCondition == null) {
throw new WTException("查询条件不允许为空!");
}
List<DxPartModelBomVo> models = cadProService.searchModel(searchQueryCondition);
return ApiResult.ok(models, "模型查询成功");
} catch (Exception e) {
log.error("searchCADModel error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* searchQueryCondition模型查询
*
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
@RequestMapping(value = "/searchCAD", method = RequestMethod.POST)
public ApiResult<List<DxPartModelBomVo>> searchCADModel(
@RequestBody(required = false) SearchQueryCondition searchQueryCondition) {
try {
log.debug("searchQueryCondition : " + searchQueryCondition);
if (searchQueryCondition == null) {
throw new WTException("查询条件不允许为空!");
}
searchQueryCondition.setOnlyCAD(true);
List<DxPartModelBomVo> models = cadProService.searchModel(searchQueryCondition);
return ApiResult.ok(models, "模型查询成功");
} catch (Exception e) {
log.error("searchCADModel error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 获取结构
* baselineId
* level
* 0 -- 自己
* 1 -- 向下一层
* n -- 向下n层
* -1 -- 全部
* partCADId
* number
* eff
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(value = "", method = RequestMethod.POST)
public ApiResult<DxPartModelBomVo> modelTree(
@RequestBody(required = false) SearchQueryCondition searchQueryCondition) {
try {
DxPartModelBomVo modelTree = cadProService.modelTree(searchQueryCondition);
return ApiResult.ok(modelTree, "获取模型树成功");
} catch (Exception e) {
log.error("modelTree error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 6.2.4 生成所有模型文件ZIP
*
* @param oids
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(value = "/createModelZip", method = RequestMethod.POST)
public ApiResult<Map<String, Object>> createModelZip(@RequestBody List<String> oids) {
try {
String url = cadProService.createModelZip(oids);
return ApiResult.ok(url, "生成所有模型文件ZIP");
} catch (Exception e) {
log.error("createModelZip error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 基于CADPro打开条件,收集模型,并封装路径地址
*
*
* @param openModelFilesCondition
* @return
*/
@PostMapping("/collectModelFiles")
public ApiResult<List<DxModelFile>> collectModelFiles(
@RequestBody(required = true) OpenModelFilesCondition openModelFilesCondition) {
try {
if (openModelFilesCondition == null) {
throw new WTException("打开模型参数不能为空");
}
List<DxModelFile> result = cadProService.collectModelFiles(openModelFilesCondition);
return ApiResult.ok(result, "success");
} catch (Exception e) {
log.error("findModelChildrenByPartMap error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
@GetMapping("/bomViewOptions")
public ApiResult<List<SelectOption>> bomViewOptions() {
try {
List<SelectOption> bomViewOptions = CADProConfigPropertiesUtil
.getBOMViews(SelectOption.class);
return ApiResult.ok(bomViewOptions, "success");
} catch (Exception e) {
log.error("bomViewOption error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
@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);
}
}
/**
* 检出模型
* @param numbers
* @return
*/
@RequestMapping(value = "/batch/checkout", method = RequestMethod.POST)
public ApiResult<List<BatchResult>> batchCheckout(@RequestBody List<String> numbers) {
try {
List<BatchResult> resultInfos = cadProService.batchCheckout(numbers);
return ApiResult.ok(resultInfos, "执行检出模型完成");
} catch (Exception e) {
log.error("batchCheckout error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 撤销检出模型
* @param numbers
* @return
*/
@RequestMapping(value = "/batch/undoCheckout", method = RequestMethod.POST)
public ApiResult<List<BatchResult>> batchUndoCheckout(@RequestBody List<String> numbers) {
try {
List<BatchResult> resultInfos = cadProService.batchUndoCheckout(numbers);
return ApiResult.ok(resultInfos, "撤销检出模型完成");
} catch (Exception e) {
log.error("batchUndoCheckout error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 撤销检出模型
* @param models
* @return
*/
@RequestMapping(value = "/batch/checkin", method = RequestMethod.POST)
public ApiResult<List<BatchResult>> batchCheckin(
@RequestBody(required = false) List<ModelBaseInfo> models) {
try {
List<BatchResult> resultInfos = cadProService.batchCheckin(models);
return ApiResult.ok(resultInfos, "检入模型完成");
} catch (Exception e) {
log.error("batchCheckin error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 获取顶层BOM结构
* @param partNum
* @return
*/
@RequestMapping(value = "/pullTopStructure", method = RequestMethod.GET)
public ApiResult<String> pullTopStructure(@RequestParam String partNum) {
try {
String xmlUrl = cadProService.pullTopStructure(partNum);
return ApiResult.ok(xmlUrl, "获取顶层BOM结构化文件完成");
} catch (Exception e) {
log.error("pullTopStructure error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* @return
*/
@RequestMapping(value = "/pullDICNumber", method = RequestMethod.GET)
public ApiResult<String> pullDICNumber(@RequestParam String partNum) {
try {
String dicNumber = cadProService.pullDICNumber(partNum);
return ApiResult.ok(dicNumber, "获取DIC编号完成");
} catch (Exception e) {
log.error("pullDICNumber error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
/**
* 基于选中的节点,封装DS、LO挂接关系
*
*
* @return
*/
@PostMapping("/calulateDSLORelation")
public ApiResult<Map<String, String>> calulateDSLORelation(
@RequestBody(required = true) OpenModelFilesCondition openModelFilesCondition) {
try {
Map<String, String> result = cadProService
.calulateDSLORelation(openModelFilesCondition);
return ApiResult.ok(result, "success");
} catch (Exception e) {
log.error("calulateAssemblyRel error...", e);
return ExceptionUtil.constructErrorAPIResult(e);
}
}
}
package com.yonde.cadpro.util;
import com.yonde.basedata.entity.api.ApiResult;
import org.apache.commons.lang.exception.ExceptionUtils;
import wt.util.WTException;
import wt.util.WTPropertyVetoException;
public class ExceptionUtil {
public static String getErrorMessage(Throwable th) {
String errMsg = "";
Throwable rootCause = ExceptionUtils.getRootCause(th);
if (rootCause == null) {
rootCause = th;
}
if (rootCause instanceof WTException) {
WTException ex = (WTException) rootCause;
errMsg = ex.getLocalizedMessage();
} else if (rootCause instanceof WTPropertyVetoException) {
WTPropertyVetoException ex = (WTPropertyVetoException) rootCause;
errMsg = ex.getLocalizedMessage();
} else {
errMsg = ExceptionUtils.getMessage(rootCause);
}
return errMsg;
}
public static ApiResult constructErrorAPIResult(Exception exception) {
return ApiResult.error(getErrorMessage(exception));
}
public static ApiResult constructErrorAPIResult(String errorMsgPrefix, Exception exception) {
return ApiResult.error(errorMsgPrefix + getErrorMessage(exception));
}
}
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