From 73629bfd1f94c3ba3c4ae2973bde1575cac0dc43 Mon Sep 17 00:00:00 2001 From: alwaysfrin <39822157+alwaysfrin@users.noreply.github.com> Date: Thu, 10 Jan 2019 10:56:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/report/CoreReportController.java | 117 +++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java new file mode 100644 index 0000000..7e25cc9 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java @@ -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 listClz() { + LOGGER.info("【类路径:{}】",pojoPackagePath); + List clzNameList = ClassTool.getClassName(pojoPackagePath, true); + List 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 testWms(@RequestParam("clzFullName") String clzFullName) { + LOGGER.info("【查询类属性:{}】",clzFullName); + + ApiParam apiParam = null; + Transient tran = null; + List fieldModelList = new ArrayList<>(); + try { + Class tmpClz = Class.forName(clzFullName); + List 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); + } + +}