添加自定义组件

yun-zuoyi
alwaysfrin 6 years ago
parent 28745097e8
commit 73629bfd1f

@ -0,0 +1,117 @@
package cn.estsh.i3plus.core.apiservice.controller.report;
import cn.estsh.i3plus.platform.common.tool.ClassTool;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.common.ClassFieldModel;
import cn.estsh.i3plus.pojo.model.common.ClassModel;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.persistence.Transient;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/impp/cloud/report")
@Api(description="报表服务")
public class CoreReportController {
private static final Logger LOGGER = LoggerFactory.getLogger(CoreReportController.class);
@Value("${impp.app.pojo-packages}.bean")
public String pojoPackagePath;
@GetMapping(value="/list-clz")
@ApiOperation(value="查询管理后台所有类",notes = "根据核心包路径列出所有类")
public BaseResultBean<ClassModel> listClz() {
LOGGER.info("【类路径:{}】",pojoPackagePath);
List<String> clzNameList = ClassTool.getClassName(pojoPackagePath, true);
List<ClassModel> clzList = new ArrayList<>(clzNameList.size());
Class tmpClz = null;
Api api = null;
ClassModel classModel = null;
for(String clzName : clzNameList){
try {
//注册类
tmpClz = Class.forName(clzName);
classModel = new ClassModel();
classModel.setPackageName(pojoPackagePath);
classModel.setClzFullName(clzName);
classModel.setClzSimpleName(tmpClz.getSimpleName());
api = (Api) tmpClz.getAnnotation(Api.class);
if(api != null) {
classModel.setClzDesc(api.value());
clzList.add(classModel);
}else{
//classModel.setClzDesc(clzName);
LOGGER.warn("不添加类:{},因为没有添加api描述", tmpClz);
}
} catch (ClassNotFoundException e) {
LOGGER.error("【类:{}注册出错】",clzName,clzName,e);
}
}
return ResultBean.success("获取类:" + clzList.size())
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(clzList);
}
@GetMapping(value="/pojo-property")
@ApiOperation(value="查询类所有属性")
public ResultBean<ClassFieldModel> testWms(@RequestParam("clzFullName") String clzFullName) {
LOGGER.info("【查询类属性:{}】",clzFullName);
ApiParam apiParam = null;
Transient tran = null;
List<ClassFieldModel> fieldModelList = new ArrayList<>();
try {
Class tmpClz = Class.forName(clzFullName);
List<Field> fields = ClassTool.getAllFieldsList(tmpClz);
ClassFieldModel fieldModel = null;
for(Field f : fields){
tran = f.getAnnotation(Transient.class);
if(tran == null) {
// 临时对象不需要处理
fieldModel = new ClassFieldModel();
fieldModel.setPackageName(pojoPackagePath);
fieldModel.setClzFullName(clzFullName);
fieldModel.setClzSimpleName(tmpClz.getSimpleName());
fieldModel.setFieldName(f.getName());
apiParam = f.getAnnotation(ApiParam.class);
if(apiParam != null){
fieldModel.setFieldDesc(apiParam.value());
fieldModelList.add(fieldModel);
}else{
//fieldModel.setFieldDesc(fieldModel.getFieldName());
LOGGER.warn("不添加属性:{},因为没有添加api描述", f.getName());
}
}else{
LOGGER.info("【临时属性:{}】",f.getName());
}
}
} catch (ClassNotFoundException e) {
LOGGER.error("【类:{}实例化出错】",clzFullName,e);
}
return ResultBean.success("获取属性:" + fieldModelList.size())
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(fieldModelList);
}
}
Loading…
Cancel
Save