diff --git a/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java index d83925312..c301fa101 100644 --- a/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java +++ b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java @@ -25,6 +25,10 @@ package cn.stylefeng.roses.kernel.expand.modular.api; import cn.stylefeng.roses.kernel.expand.modular.api.pojo.ExpandDataInfo; +import cn.stylefeng.roses.kernel.expand.modular.api.pojo.ExpandFieldInfo; + +import java.util.List; +import java.util.Map; /** * 拓展字段Api @@ -42,4 +46,20 @@ public interface ExpandApi { */ void saveOrUpdateExpandData(ExpandDataInfo expandDataInfo); + /** + * 获取列表需要的拓展字段信息 + * + * @author fengshuonan + * @date 2022/4/1 9:48 + */ + List getPageListExpandFieldList(String expandCode); + + /** + * 获取某一条拓展数据 + * + * @author fengshuonan + * @date 2022/4/1 9:55 + */ + Map getExpandDataInfo(String expandCode, Long primaryFieldValue); + } diff --git a/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java new file mode 100644 index 000000000..11a02345b --- /dev/null +++ b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java @@ -0,0 +1,35 @@ +package cn.stylefeng.roses.kernel.expand.modular.api.enums; + +import lombok.Getter; + +/** + * 字段类型枚举 + * + * @author fengshuonan + * @date 2022/4/1 10:34 + */ +@Getter +public enum FieldTypeEnum { + + /** + * 字符串 + */ + STR(1), + + /** + * 数字 + */ + NUM(2), + + /** + * 字典格式 + */ + DICT(3); + + private final Integer code; + + FieldTypeEnum(Integer code) { + this.code = code; + } + +} diff --git a/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java new file mode 100644 index 000000000..7202db8d9 --- /dev/null +++ b/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java @@ -0,0 +1,29 @@ +package cn.stylefeng.roses.kernel.expand.modular.api.pojo; + +import lombok.Data; + +/** + * 拓展字段信息 + * + * @author fengshuonan + * @date 2022/4/1 9:46 + */ +@Data +public class ExpandFieldInfo { + + /** + * 拓展id + */ + private Long expandId; + + /** + * 字段中文名 + */ + private String fieldName; + + /** + * 字段英文名 + */ + private String fieldCode; + +} diff --git a/kernel-s-expand/expand-business/pom.xml b/kernel-s-expand/expand-business/pom.xml index 11dff8860..ae6f5ad21 100644 --- a/kernel-s-expand/expand-business/pom.xml +++ b/kernel-s-expand/expand-business/pom.xml @@ -16,20 +16,20 @@ jar - - + + cn.stylefeng.roses expand-api ${roses.version} - - - + + + cn.stylefeng.roses expand-sdk ${roses.version} - + @@ -47,6 +47,13 @@ ${roses.version} + + + cn.stylefeng.roses + dict-api + ${roses.version} + + diff --git a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java index 6c3745dbf..e98d812de 100644 --- a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java +++ b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java @@ -1,6 +1,8 @@ package cn.stylefeng.roses.kernel.expand.modular.modular.controller; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.expand.modular.api.ExpandApi; +import cn.stylefeng.roses.kernel.expand.modular.api.pojo.ExpandFieldInfo; import cn.stylefeng.roses.kernel.expand.modular.modular.entity.SysExpand; import cn.stylefeng.roses.kernel.expand.modular.modular.entity.SysExpandData; import cn.stylefeng.roses.kernel.expand.modular.modular.pojo.request.SysExpandRequest; @@ -31,6 +33,9 @@ public class SysExpandController { @Resource private SysExpandService sysExpandService; + @Resource + private ExpandApi expandApi; + /** * 添加 * @@ -123,4 +128,15 @@ public class SysExpandController { return new SuccessResponseData<>(sysExpandService.findPage(sysExpandRequest)); } + /** + * 获取某个业务,需要列表展示的拓展字段 + * + * @author fengshuonan + * @date 2022/03/29 23:47 + */ + @GetResource(name = "获取某个业务,需要列表展示的拓展字段", path = "/sysExpand/getListFields") + public ResponseData> getListFields(@Validated(SysExpandRequest.getByExpandCode.class) SysExpandRequest sysExpandRequest) { + return new SuccessResponseData<>(expandApi.getPageListExpandFieldList(sysExpandRequest.getExpandCode())); + } + } diff --git a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java index 39b9a52bf..950045ad9 100644 --- a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java +++ b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java @@ -69,7 +69,7 @@ public class SysExpandRequest extends BaseRequest { * 业务主键id的值 */ @ChineseDescription("业务主键id的值") - private String primaryFieldValue; + private Long primaryFieldValue; /** * 获取业务元数据信息 diff --git a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java index 8e4ba44a1..19f9a1595 100644 --- a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java +++ b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java @@ -57,7 +57,7 @@ public interface SysExpandDataService extends IService { * @author fengshuonan * @date 2022/03/29 23:47 */ - SysExpandData detailByPrimaryFieldValue(String primaryFieldValue); + SysExpandData detailByPrimaryFieldValue(Long primaryFieldValue); /** * 获取列表 diff --git a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java index f96e81624..f34b91a4f 100644 --- a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java +++ b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java @@ -82,7 +82,7 @@ public class SysExpandDataServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysExpandData::getPrimaryFieldValue, primaryFieldValue); return this.getOne(wrapper, false); diff --git a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java index 87653bea9..607dce08d 100644 --- a/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java +++ b/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java @@ -6,7 +6,10 @@ import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.dict.api.DictApi; +import cn.stylefeng.roses.kernel.expand.modular.api.enums.FieldTypeEnum; import cn.stylefeng.roses.kernel.expand.modular.api.pojo.ExpandDataInfo; +import cn.stylefeng.roses.kernel.expand.modular.api.pojo.ExpandFieldInfo; import cn.stylefeng.roses.kernel.expand.modular.modular.entity.SysExpand; import cn.stylefeng.roses.kernel.expand.modular.modular.entity.SysExpandData; import cn.stylefeng.roses.kernel.expand.modular.modular.entity.SysExpandField; @@ -18,14 +21,18 @@ import cn.stylefeng.roses.kernel.expand.modular.modular.service.SysExpandDataSer import cn.stylefeng.roses.kernel.expand.modular.modular.service.SysExpandFieldService; import cn.stylefeng.roses.kernel.expand.modular.modular.service.SysExpandService; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; +import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,6 +51,9 @@ public class SysExpandServiceImpl extends ServiceImpl getPageListExpandFieldList(String expandCode) { + SysExpandRequest sysExpandRequest = new SysExpandRequest(); + sysExpandRequest.setExpandCode(expandCode); + SysExpandData sysExpandData = this.getByExpandCode(sysExpandRequest); + + List fieldInfoList = sysExpandData.getFieldInfoList(); + + ArrayList expandFieldInfos = new ArrayList<>(); + for (SysExpandField sysExpandField : fieldInfoList) { + // 获取是否需要列表展示 + String listShowFlag = sysExpandField.getListShowFlag(); + if (YesOrNotEnum.Y.getCode().equals(listShowFlag)) { + ExpandFieldInfo expandFieldInfo = new ExpandFieldInfo(); + expandFieldInfo.setExpandId(sysExpandField.getExpandId()); + expandFieldInfo.setFieldName(sysExpandField.getFieldName()); + expandFieldInfo.setFieldCode(sysExpandField.getFieldCode()); + expandFieldInfos.add(expandFieldInfo); + } + } + + return expandFieldInfos; + } + + @Override + public Map getExpandDataInfo(String expandCode, Long primaryFieldValue) { + + SysExpandRequest sysExpandRequest = new SysExpandRequest(); + sysExpandRequest.setExpandCode(expandCode); + SysExpandData sysExpandData = this.getByExpandCode(sysExpandRequest); + + // 获取对应数据 + HashMap result = new HashMap<>(); + String expandData = sysExpandData.getExpandData(); + if (StrUtil.isEmpty(expandData)) { + return result; + } + + // 将json转化为Map + JSONObject jsonObject = JSON.parseObject(expandData); + + // 获取字段元数据,将需要进行字典转化的,转化为字典中文名称 + List fieldInfoList = sysExpandData.getFieldInfoList(); + for (SysExpandField sysExpandField : fieldInfoList) { + if (FieldTypeEnum.DICT.getCode().equals(sysExpandField.getFieldType())) { + String dictTypeCode = sysExpandField.getFieldDictTypeCode(); + String dictValue = jsonObject.getString(sysExpandField.getFieldCode()); + String dictName = dictApi.getDictName(dictTypeCode, dictValue); + jsonObject.put(sysExpandField.getFieldCode(), dictName); + } + } + + return jsonObject; + } + /** * 获取信息 *