jtoms 4 lat temu
rodzic
commit
0e331b32ab

+ 9 - 0
src/main/java/com/zhiqiyun/open/core/mapper/base/BzDataBaseInfoExtendMapper.java

@@ -0,0 +1,9 @@
+package com.zhiqiyun.open.core.mapper.base;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BzDataBaseInfoExtendMapper extends BaseMapper<BzDataBaseInfoExtend> {
+}

+ 5 - 6
src/main/java/com/zhiqiyun/open/core/models/base/BzDataBaseInfoExtend.java

@@ -1,14 +1,12 @@
 package com.zhiqiyun.open.core.models.base;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.zhiqiyun.open.core.enmus.ExtendColumnFieldType;
-import com.zhiqiyun.open.core.typeHandler.FastjsonTypeHandler;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
 
 @Data
 @TableName(value = "bz_data_base_info_extend", autoResultMap = true)
@@ -17,7 +15,8 @@ public class BzDataBaseInfoExtend implements Serializable {
 	private static final long serialVersionUID = 484658831498971046L;
 
 	@TableId(type = IdType.INPUT)
-	private Long id;
+	private String id;
+	private Long extendColumnId;
 	private Long dataTypeId;
 	private Long baseInfoId;
 	private String fieldKey;

+ 13 - 8
src/main/java/com/zhiqiyun/open/core/models/base/BzDataTypeExtendColumn.java

@@ -1,5 +1,6 @@
 package com.zhiqiyun.open.core.models.base;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.zhiqiyun.open.core.enmus.ExtendColumnFieldType;
 import lombok.Data;
@@ -10,13 +11,17 @@ import java.io.Serializable;
 @TableName("bz_data_type_extend_column")
 public class BzDataTypeExtendColumn implements Serializable {
 
-	private static final long serialVersionUID = -3306018969325222999L;
+    private static final long serialVersionUID = -3306018969325222999L;
 
-	private Long id;
-	private String dataTypeId;
-	private String fieldKey;
-	private String fieldLabel;
-	private ExtendColumnFieldType fieldType;
-	private String defaultValue;
-	private Integer sortNumber;
+    private Long id;
+    private String dataTypeId;
+    private String fieldKey;
+    private String fieldLabel;
+    private ExtendColumnFieldType fieldType;
+    private String defaultValue;
+    private Integer sortNumber;
+
+
+    @TableField(exist = false)
+    private String fieldValue;
 }

+ 7 - 0
src/main/java/com/zhiqiyun/open/core/service/BzDataBaseInfoExtendService.java

@@ -0,0 +1,7 @@
+package com.zhiqiyun.open.core.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
+
+public interface BzDataBaseInfoExtendService extends IService<BzDataBaseInfoExtend> {
+}

+ 11 - 0
src/main/java/com/zhiqiyun/open/core/service/BzDataBaseInfoService.java

@@ -2,6 +2,17 @@ package com.zhiqiyun.open.core.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhiqiyun.open.core.models.base.BzDataBaseInfo;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
+
+import java.util.List;
 
 public interface BzDataBaseInfoService extends IService<BzDataBaseInfo> {
+    /**
+     *
+     * @param entity
+     * @param listExtends
+     */
+    void save(BzDataBaseInfo entity, List<BzDataBaseInfoExtend> listExtends);
+
+    void updateById(BzDataBaseInfo entity, List<BzDataBaseInfoExtend> listExtends);
 }

+ 11 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/BzDataBaseInfoExtendServiceImpl.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.core.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.base.BzDataBaseInfoExtendMapper;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
+import com.zhiqiyun.open.core.service.BzDataBaseInfoExtendService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BzDataBaseInfoExtendServiceImpl extends ServiceImpl<BzDataBaseInfoExtendMapper, BzDataBaseInfoExtend> implements BzDataBaseInfoExtendService {
+}

+ 51 - 0
src/main/java/com/zhiqiyun/open/core/service/impl/BzDataBaseInfoServiceImpl.java

@@ -1,11 +1,62 @@
 package com.zhiqiyun.open.core.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhiqiyun.open.core.mapper.base.BzDataBaseInfoExtendMapper;
 import com.zhiqiyun.open.core.mapper.base.BzDataInfoMapper;
 import com.zhiqiyun.open.core.models.base.BzDataBaseInfo;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
 import com.zhiqiyun.open.core.service.BzDataBaseInfoService;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
 
 @Service
 public class BzDataBaseInfoServiceImpl extends ServiceImpl<BzDataInfoMapper, BzDataBaseInfo> implements BzDataBaseInfoService {
+
+    @Autowired
+    private BzDataBaseInfoExtendMapper bzDataBaseInfoExtendMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(BzDataBaseInfo entity, List<BzDataBaseInfoExtend> listExtends) {
+        this.baseMapper.insert(entity);
+        for (BzDataBaseInfoExtend extend : listExtends) {
+            extend.setBaseInfoId(entity.getId());
+            extend.setId(DigestUtils.md5Hex(String.format("%s@%s", extend.getBaseInfoId(), extend.getExtendColumnId())));
+            this.bzDataBaseInfoExtendMapper.insert(extend);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateById(BzDataBaseInfo entity, List<BzDataBaseInfoExtend> listExtends) {
+        this.baseMapper.updateById(entity);
+
+        QueryWrapper<BzDataBaseInfoExtend> wrapper = new QueryWrapper<>();
+        wrapper.eq("base_info_id", entity.getId());
+        this.bzDataBaseInfoExtendMapper.delete(wrapper);
+
+        for (BzDataBaseInfoExtend extend : listExtends) {
+            extend.setBaseInfoId(entity.getId());
+            extend.setId(DigestUtils.md5Hex(String.format("%s@%s", extend.getBaseInfoId(), extend.getExtendColumnId())));
+            this.bzDataBaseInfoExtendMapper.insert(extend);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean removeByIds(Collection<? extends Serializable> idList) {
+
+        QueryWrapper<BzDataBaseInfoExtend> wrapper = new QueryWrapper<>();
+        wrapper.in("base_info_id", idList);
+        this.bzDataBaseInfoExtendMapper.delete(wrapper);
+
+        return super.removeByIds(idList);
+    }
 }

+ 115 - 69
src/main/java/com/zhiqiyun/open/mvc/controller/BzDataBaseInfoController.java

@@ -1,19 +1,24 @@
 package com.zhiqiyun.open.mvc.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhiqiyun.open.annotation.Permission;
 import com.zhiqiyun.open.core.models.base.BzDataBaseInfo;
+import com.zhiqiyun.open.core.models.base.BzDataBaseInfoExtend;
 import com.zhiqiyun.open.core.models.base.BzDataType;
 import com.zhiqiyun.open.core.models.base.BzDataTypeExtendColumn;
 import com.zhiqiyun.open.core.models.user.OauthInfo;
 import com.zhiqiyun.open.core.service.*;
 import com.zhiqiyun.open.mvc.Result;
 import com.zhiqiyun.open.mvc.params.base.QueryBzDataBaseInfoParam;
+import com.zhiqiyun.open.mvc.params.base.SaveBzDataBaseInfoExtendParam;
 import com.zhiqiyun.open.mvc.params.base.SaveBzDataBaseInfoParam;
 import com.zhiqiyun.open.utils.DateUtil;
 import com.zhiqiyun.open.utils.ServletContext;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,105 +28,146 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
+@Slf4j
 @RestController
 @RequestMapping("/bz/data/info")
 public class BzDataBaseInfoController {
 
-	@Autowired
-	private BzDataTypeService bzDataTypeService;
+    @Autowired
+    private BzDataTypeService bzDataTypeService;
 
-	@Autowired
-	private BzDataTypeExtendColumnService bzDataTypeExtendColumnService;
+    @Autowired
+    private BzDataTypeExtendColumnService bzDataTypeExtendColumnService;
 
-	@Autowired
-	private BzDataBaseInfoService bzDataBaseInfoService;
+    @Autowired
+    private BzDataBaseInfoService bzDataBaseInfoService;
 
-	@Autowired
-	private SequenceService sequenceService;
+    @Autowired
+    private BzDataBaseInfoExtendService bzDataBaseInfoExtendService;
 
-	@Autowired
-	private OauthService oauthService;
+    @Autowired
+    private SequenceService sequenceService;
 
-	@Permission(value = "bz.data.type.find", tags = "查询基础数据分类")
-	@PostMapping("/findPage")
-	public Result findPage(@RequestBody QueryBzDataBaseInfoParam param) {
+    @Autowired
+    private OauthService oauthService;
 
-		QueryWrapper<BzDataBaseInfo> wrapper = new QueryWrapper<>();
+    @Permission(value = "bz.data.type.find", tags = "查询基础数据分类")
+    @PostMapping("/findPage")
+    public Result findPage(@RequestBody QueryBzDataBaseInfoParam param) {
 
-		if (StringUtils.isNotBlank(param.getName())) {
-			wrapper.like("name", param.getName());
-		}
-		Page<BzDataBaseInfo> page = param.getPage();
-		page.addOrder(OrderItem.asc("sort_number"));
-		page.addOrder(OrderItem.desc("id"));
+        QueryWrapper<BzDataBaseInfo> wrapper = new QueryWrapper<>();
 
-		Page<BzDataBaseInfo> resultData = this.bzDataBaseInfoService.page(page, wrapper);
+        if (StringUtils.isNotBlank(param.getName())) {
+            wrapper.like("name", param.getName());
+        }
+        Page<BzDataBaseInfo> page = param.getPage();
+        page.addOrder(OrderItem.desc("id"));
 
-		return Result.instance(Result.Code.SUCCESS).setData(resultData);
-	}
+        Page<BzDataBaseInfo> resultData = this.bzDataBaseInfoService.page(page, wrapper);
 
-	@Permission(value = "bz.data.type.add", tags = "新建基础数据分类")
-	@PostMapping("/save")
-	public Result save(@Valid @RequestBody SaveBzDataBaseInfoParam param) throws Exception {
+        return Result.instance(Result.Code.SUCCESS).setData(resultData);
+    }
 
-		BzDataBaseInfo entity = new BzDataBaseInfo();
-		BeanUtils.copyProperties(param, entity);
+    @Permission(value = "bz.data.type.add", tags = "新建基础数据分类")
+    @PostMapping("/save")
+    public Result save(@Valid @RequestBody SaveBzDataBaseInfoParam param) throws Exception {
 
-		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+        BzDataBaseInfo entity = new BzDataBaseInfo();
+        BeanUtils.copyProperties(param, entity);
 
-		entity.setCreatedTime(DateUtil.current());
-		entity.setCreatedBy(oauthInfo.getId());
+        OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
 
-		entity.setUpdatedTime(DateUtil.current());
-		entity.setUpdatedBy(oauthInfo.getId());
-		entity.setId(this.sequenceService.nextId());
+        entity.setCreatedTime(DateUtil.current());
+        entity.setCreatedBy(oauthInfo.getId());
 
-		this.bzDataBaseInfoService.save(entity);
+        entity.setUpdatedTime(DateUtil.current());
+        entity.setUpdatedBy(oauthInfo.getId());
+        entity.setId(this.sequenceService.nextId());
 
-		return Result.instance(Result.Code.MESSAGE_SUCCESS);
-	}
+        List<BzDataBaseInfoExtend> listExtends = new ArrayList<>();
+        if (param.getListExtends() != null) {
+            for (SaveBzDataBaseInfoExtendParam extendParam : param.getListExtends()) {
+                BzDataBaseInfoExtend extend = new BzDataBaseInfoExtend();
+                BeanUtils.copyProperties(extendParam, extend);
+                listExtends.add(extend);
+            }
+        }
 
-	@Permission(value = "bz.data.type.edit", tags = "更新基础数据分类")
-	@PostMapping("/updateById")
-	public Result updateById(Long id, @Valid @RequestBody SaveBzDataBaseInfoParam param) {
-		BzDataBaseInfo entity = new BzDataBaseInfo();
-		BeanUtils.copyProperties(param, entity);
+        this.bzDataBaseInfoService.save(entity, listExtends);
 
-		OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
+        return Result.instance(Result.Code.MESSAGE_SUCCESS);
+    }
 
-		entity.setUpdatedBy(oauthInfo.getId());
-		entity.setUpdatedTime(DateUtil.current());
-		entity.setId(id);
+    @Permission(value = "bz.data.type.edit", tags = "更新基础数据分类")
+    @PostMapping("/updateById")
+    public Result updateById(Long id, @Valid @RequestBody SaveBzDataBaseInfoParam param) {
+        BzDataBaseInfo entity = new BzDataBaseInfo();
+        BeanUtils.copyProperties(param, entity);
 
-		this.bzDataBaseInfoService.updateById(entity);
+        OauthInfo oauthInfo = this.oauthService.getAuth(ServletContext.getAccessToken());
 
-		return Result.instance(Result.Code.MESSAGE_SUCCESS);
-	}
+        entity.setUpdatedBy(oauthInfo.getId());
+        entity.setUpdatedTime(DateUtil.current());
+        entity.setId(id);
 
-	@Permission(value = "bz.data.type.delete", tags = "删除基础数据分类")
-	@PostMapping("/deleteByIds")
-	public Result deleteByIds(@RequestBody List<Long> ids) {
-		this.bzDataBaseInfoService.removeByIds(ids);
-		return Result.instance(Result.Code.MESSAGE_SUCCESS);
-	}
+        List<BzDataBaseInfoExtend> listExtends = new ArrayList<>();
+        if (param.getListExtends() != null) {
+            for (SaveBzDataBaseInfoExtendParam extendParam : param.getListExtends()) {
+                BzDataBaseInfoExtend extend = new BzDataBaseInfoExtend();
+                BeanUtils.copyProperties(extendParam, extend);
+                listExtends.add(extend);
+            }
+        }
 
-	@PostMapping("/findAllDataType")
-	@Permission(value = {"bz.data.type.edit", "bz.data.type.add"}, tags = "获取所有场所类型", writeLog = false)
-	public Result findAllDataType() {
-		List<BzDataType> listData = this.bzDataTypeService.list();
-		return Result.instance(Result.Code.SUCCESS).setData(listData);
+        log.info(JSON.toJSONString(listExtends));
+        this.bzDataBaseInfoService.updateById(entity, listExtends);
 
-	}
+        return Result.instance(Result.Code.MESSAGE_SUCCESS);
+    }
 
-	@PostMapping("/findDataTypeExtendColumn")
-	@Permission(value = {"bz.data.type.edit", "bz.data.type.add"}, tags = "获取所有场所类型扩展字段", writeLog = false)
-	public Result findDataTypeExtendColumn(Long dataTypeId) {
-		QueryWrapper<BzDataTypeExtendColumn> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("data_type_id", dataTypeId);
-		List<BzDataTypeExtendColumn> listData = this.bzDataTypeExtendColumnService.list(queryWrapper);
-		return Result.instance(Result.Code.SUCCESS).setData(listData);
+    @Permission(value = "bz.data.type.delete", tags = "删除基础数据分类")
+    @PostMapping("/deleteByIds")
+    public Result deleteByIds(@RequestBody List<Long> ids) {
+        this.bzDataBaseInfoService.removeByIds(ids);
+        return Result.instance(Result.Code.MESSAGE_SUCCESS);
+    }
 
-	}
+    @PostMapping("/findAllDataType")
+    @Permission(value = {"bz.data.type.edit", "bz.data.type.add"}, tags = "获取所有场所类型", writeLog = false)
+    public Result findAllDataType() {
+        List<BzDataType> listData = this.bzDataTypeService.list();
+        return Result.instance(Result.Code.SUCCESS).setData(listData);
+
+    }
+
+    @PostMapping("/findDataBaseInfoExtends")
+    @Permission(value = {"bz.data.type.edit", "bz.data.type.add"}, tags = "获取所有场所类型", writeLog = false)
+    public Result findDataBaseInfoExtends(Long baseInfoId, Long dataTypeId) {
+
+        QueryWrapper<BzDataTypeExtendColumn> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("data_type_id", dataTypeId);
+        List<BzDataTypeExtendColumn> listData = this.bzDataTypeExtendColumnService.list(queryWrapper);
+        for (BzDataTypeExtendColumn extendColumn : listData) {
+            String id = DigestUtils.md5Hex(String.format("%s@%s", baseInfoId, extendColumn.getId()));
+            BzDataBaseInfoExtend extend = this.bzDataBaseInfoExtendService.getById(id);
+            extendColumn.setFieldValue(extend.getFieldValue());
+        }
+
+
+        return Result.instance(Result.Code.SUCCESS).setData(listData);
+
+    }
+
+    @PostMapping("/findDataTypeExtendColumn")
+    @Permission(value = {"bz.data.type.edit", "bz.data.type.add"}, tags = "获取所有场所类型扩展字段", writeLog = false)
+    public Result findDataTypeExtendColumn(Long dataTypeId) {
+        QueryWrapper<BzDataTypeExtendColumn> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("data_type_id", dataTypeId);
+        List<BzDataTypeExtendColumn> listData = this.bzDataTypeExtendColumnService.list(queryWrapper);
+        return Result.instance(Result.Code.SUCCESS).setData(listData);
+
+    }
 }

+ 8 - 7
src/main/java/com/zhiqiyun/open/mvc/params/base/SaveBzDataBaseInfoExtendParam.java

@@ -5,11 +5,12 @@ import lombok.Data;
 
 @Data
 public class SaveBzDataBaseInfoExtendParam {
-	private Long dataTypeId;
-	private Long baseInfoId;
-	private String fieldKey;
-	private String fieldLabel;
-	private String sortNumber;
-	private ExtendColumnFieldType fieldType;
-	private String fieldValue;
+    private Long extendColumnId;
+    private Long dataTypeId;
+    private Long baseInfoId;
+    private String fieldKey;
+    private String fieldLabel;
+    private String sortNumber;
+    private ExtendColumnFieldType fieldType;
+    private String fieldValue;
 }

+ 9 - 8
src/main/resources/db/migration/V1.0.7__base.sql

@@ -50,14 +50,15 @@ CREATE TABLE `bz_data_base_info`
 DROP TABLE IF EXISTS `bz_data_base_info_extend`;
 CREATE TABLE `bz_data_base_info_extend`
 (
-    `id`           BIGINT(20) NOT NULL COMMENT 'ID',
-    `data_type_id`  VARCHAR(50)  NOT NULL COMMENT '分类ID',
-    `base_info_id` BIGINT(20) NOT NULL COMMENT '基本信息ID',
-    `field_key`     VARCHAR(50)  NOT NULL COMMENT '字段Key',
-    `field_label`   VARCHAR(100) NOT NULL COMMENT '字段名称',
-    `sort_number`   INT(11) NOT NULL DEFAULT 0 COMMENT '排序ID',
-    `field_type`    INT(11) NULL DEFAULT NULL COMMENT '字段类型',
-    `field_value`  TEXT NULL DEFAULT NULL COMMENT '字段值',
+    `id`               VARCHAR(32)  NOT NULL COMMENT 'ID',
+    `extend_column_id` BIGINT(20) NOT NULL COMMENT '扩展字段ID',
+    `data_type_id`     BIGINT(20) NOT NULL COMMENT '分类ID',
+    `base_info_id`     BIGINT(20) NOT NULL COMMENT '基本信息ID',
+    `field_key`        VARCHAR(50)  NOT NULL COMMENT '字段Key',
+    `field_label`      VARCHAR(100) NOT NULL COMMENT '字段名称',
+    `sort_number`      INT(11) NOT NULL DEFAULT 0 COMMENT '排序ID',
+    `field_type`       INT(11) NULL DEFAULT NULL COMMENT '字段类型',
+    `field_value`      TEXT NULL DEFAULT NULL COMMENT '字段值',
     PRIMARY KEY (`id`)
 ) COMMENT ='基础数据类型扩展字段管理' ENGINE = InnoDB;