Kaynağa Gözat

字典数据,字典数据映射代码迁移

linhuili 3 yıl önce
ebeveyn
işleme
486e244c0e

+ 36 - 24
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataController.java

@@ -1,12 +1,18 @@
 package com.persagy.dmp.dic.controller;
 
-import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.model.response.PageList;
 import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictType;
+import com.persagy.dmp.dic.service.DictDataService;
+import com.persagy.dmp.rwd.basic.utils.QueryCriteriaHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -21,42 +27,48 @@ import java.util.List;
  * @date:2021/6/10
  */
 @RestController
-@RequestMapping(value = "/dic/dit/data")
+@RequestMapping(value = "/dic/dt/data")
 public class DictDataController {
 
     @Autowired
-    private com.persagy.dmp.dic.service.DictDataService DictDataService;
+    private DictDataService service;
 
-    @PostMapping("/create")
-    public CommonResult<DictData> create(@RequestBody DictData DictData) {
-        if(StrUtil.isBlank(DictData.getDictTypeId())){
+    @PostMapping("/query")
+    public CommonResult<PageList<DictData>> query(@RequestBody QueryCriteria criteria) {
+        if(criteria == null) {
             throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
         }
-        DictData content = DictDataService.create(DictData);
-        return ResultHelper.single(content);
+        QueryWrapper<DictData> wrapper = new QueryWrapper<>();
+        // 转换查询条件
+        QueryCriteriaHelper.toWrapper(wrapper, criteria);
+        Page page = service.queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
+        return ResultHelper.multi(page.getRecords(), page.getTotal());
+    }
+
+    @PostMapping("/create")
+    public CommonResult<DictData> create(@RequestBody DictData vo){
+        vo = service.insert(vo);
+        return ResultHelper.single(vo);
     }
 
     @PostMapping("/update")
-    public CommonResult<DictData> update(@RequestBody DictData DictData) {
-        if(StrUtil.isBlank(DictData.getDictTypeId())|| StrUtil.isBlank(DictData.getId()) ){
-            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
-        }
-        DictData content = DictDataService.update(DictData);
-        return ResultHelper.single(content);
+    public CommonResult<DictData> update(@RequestBody DictData vo){
+        vo = service.update(vo);
+        return ResultHelper.single(vo);
     }
 
     @PostMapping("/delete")
-    public CommonResult<DictData> delete(@RequestBody DictData DictData) {
-        if(StrUtil.isBlank(DictData.getDictTypeId()) || StrUtil.isBlank(DictData.getId()) ){
-            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
-        }
-        DictData content = DictDataService.delete(DictData);
-        return ResultHelper.single(content);
+    public CommonResult<DictData> delete(@RequestBody DictData vo){
+        service.delete(vo);
+        return ResultHelper.success();
     }
 
-    @PostMapping("/query")
-    public CommonResult<PageList<DictData>> query(@RequestBody DictData DictData) {
-        List<DictData> content = DictDataService.query(DictData);
-        return ResultHelper.multi(content);
+    @PostMapping("/result")
+    public CommonResult<PageList<DictData>> query(@RequestBody DictType dictType) {
+        if(dictType == null) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
+        }
+        List<DictData>  dictDataList = service.queryData(dictType);
+        return ResultHelper.multi(dictDataList,dictDataList.size());
     }
 }

+ 61 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataMapController.java

@@ -0,0 +1,61 @@
+package com.persagy.dmp.dic.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.model.response.PageList;
+import com.persagy.dmp.common.utils.ResultHelper;
+import com.persagy.dmp.dic.entity.DictDataMap;
+import com.persagy.dmp.dic.service.DictDataMapService;
+import com.persagy.dmp.rwd.basic.utils.QueryCriteriaHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 字典数据映射
+ * @author:linhuili
+ * @date:2021/6/10
+ */
+@RestController
+@RequestMapping(value = "/dic/dt/data/map")
+public class DictDataMapController {
+
+    @Autowired
+    private DictDataMapService service;
+
+    @PostMapping("/query")
+    public CommonResult<PageList<DictDataMap>> query(@RequestBody QueryCriteria criteria) {
+        if(criteria == null) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
+        }
+        QueryWrapper<DictDataMap> wrapper = new QueryWrapper<>();
+        // 转换查询条件
+        QueryCriteriaHelper.toWrapper(wrapper, criteria);
+        Page page = service.queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
+        return ResultHelper.multi(page.getRecords(), page.getTotal());
+    }
+
+    @PostMapping("/create")
+    public CommonResult<DictDataMap> create(@RequestBody DictDataMap vo){
+        vo = service.insert(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/update")
+    public CommonResult<DictDataMap> update(@RequestBody DictDataMap vo){
+        vo = service.update(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/delete")
+    public CommonResult<DictDataMap> delete(@RequestBody DictDataMap vo){
+        service.delete(vo);
+        return ResultHelper.success();
+    }
+}

+ 2 - 2
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictTypeController.java

@@ -51,8 +51,8 @@ public class DictTypeController {
     }
 
     @PostMapping("/delete")
-    public CommonResult<DictType> delete(@RequestBody String id){
-        service.delete(id);
+    public CommonResult<DictType> delete(@RequestBody DictType vo){
+        service.delete(vo);
         return ResultHelper.success();
     }
 }

+ 14 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/dao/DictDataMapMapper.java

@@ -0,0 +1,14 @@
+package com.persagy.dmp.dic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictDataMap;
+
+/**
+ * 字典数据
+ * @author:linhuili
+ * @date:2021/6/10
+ */
+public interface DictDataMapMapper extends BaseMapper<DictDataMap> {
+
+}

+ 13 - 73
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictData.java

@@ -1,14 +1,11 @@
 package com.persagy.dmp.dic.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
+
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.persagy.dmp.common.lang.PsDateTime;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.*;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
-
 /**
  * 字典数据
  * @author linhuili
@@ -18,86 +15,29 @@ import java.io.Serializable;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("dic_dt_data")
-public class DictData implements Serializable {
-	private static final long serialVersionUID = 1469402428094643376L;
-
-	/**
-	 * 主键ID
-	 */
-	@TableId(value = "id", type = IdType.ASSIGN_ID)
-	private String id;
-
-	/**
-	 * 字典类型ID
-	 */
-	@TableId(value = "dict_type_id")
+public class DictData extends AuditableEntity {
+	/** 字典类型ID */
 	private String dictTypeId;
 
-	/**
-	 * 父节点
-	 */
-	@TableId(value = "parent_id")
-	private String parentCode;
+	/** 父节点 */
+	private String parentId;
 
-	/**
-	 * 字典类型
-	 */
-	@TableId(value = "type")
+	/** 字典类型 */
 	private String type;
 
-	/**
-	 * 字典数据编码
-	 */
-	@TableId(value = "code")
+	/** 字典数据编码 */
 	private String code;
 
-	/**
-	 * 字典数据标签
-	 */
-	@TableId(value = "label")
+	/** 字典数据标签 */
 	private String label;
 
-	/**
-	 * 状态 0:停用,1:正常
-	 */
-	@TableId(value = "status")
-	private String status;
-
-	/**
-	 *  创建时间
-	 */
-	@TableId(value = "create_time")
-	private PsDateTime createTime;
-
-	/**
-	 *  创建用户
-	 */
-	@TableId(value = "create_user")
-	private String createUser;
-
-	/**
-	 *  更新时间
-	 */
-	@TableId(value = "update_time")
-	private PsDateTime updateTime;
-
-	/**
-	 *  更新用户
-	 */
-	@TableId(value = "update_user")
-	private String updateUser;
+	/** 状态 0:停用,1:正常 */
+	//private String status;
 
-	/**
-	 *  备注
-	 */
-	@TableId(value = "remark")
+	/**  备注 */
 	private String remark;
 
-	/**
-	 *  排序字段
-	 */
-	@TableId(value = "order_num")
+	/**  排序字段 */
 	private Integer orderNum;
-	
 
 }

+ 47 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictDataMap.java

@@ -0,0 +1,47 @@
+package com.persagy.dmp.dic.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 字典数据
+ * @author linhuili
+ * @since 2021/06/10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("dic_dt_data_map")
+public class DictDataMap extends AuditableEntity {
+	/** 字典数据ID */
+	private String dictDataId;
+
+	/** 字典类型 */
+	private String type;
+
+	/** 集团编码 */
+	private String groupCode;
+
+	/** 映射字典数据表code */
+	private String targetCode;
+
+	/** 字典数据标签 */
+	private String label;
+
+	/** 字典数据编码 */
+	private String code;
+
+	/** 状态 0:停用,1:正常 */
+	//private String status;
+
+	/**  备注 */
+	private String remark;
+
+	/**  排序字段 */
+	private Integer orderNum;
+
+}

+ 51 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/DictDataMapService.java

@@ -0,0 +1,51 @@
+package com.persagy.dmp.dic.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.dic.entity.DictDataMap;
+
+import java.util.List;
+
+/**
+ * 字典数据映射
+ * @author:linhuili
+ * @date:2021/6/10
+ */
+public interface DictDataMapService {
+
+    /**
+     * 按条件查询
+     * @param page 分页条件
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    Page queryByCondition(Page page, Wrapper<DictDataMap> queryWrapper);
+
+
+    /**
+     * 按条件查询
+     * @param queryWrapper 查询条件
+     * @return 列表
+     */
+    List<DictDataMap> queryByCondition(Wrapper<DictDataMap> queryWrapper);
+
+    /**
+     * 新增
+     * @param vo 待新增数据
+     * @return 新增后数据
+     */
+    DictDataMap insert(DictDataMap vo);
+
+    /**
+     * 修改
+     * @param vo 待修改数据
+     * @return 修改后数据
+     */
+    DictDataMap update(DictDataMap vo);
+
+    /**
+     * 删除
+     * @param vo 主键
+     */
+    void delete(DictDataMap vo);
+}

+ 43 - 4
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/DictDataService.java

@@ -1,6 +1,10 @@
 package com.persagy.dmp.dic.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictType;
 
 import java.util.List;
 
@@ -11,11 +15,46 @@ import java.util.List;
  */
 public interface DictDataService {
 
-    DictData create(DictData dictData);
+    /**
+     * 按条件查询
+     * @param page 分页条件
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    Page queryByCondition(Page page, Wrapper<DictData> queryWrapper);
+
+
+    /**
+     * 按条件查询
+     * @param queryWrapper 查询条件
+     * @return 列表
+     */
+    List<DictData> queryByCondition(Wrapper<DictData> queryWrapper);
+
+    /**
+     * 新增
+     * @param vo 待新增数据
+     * @return 新增后数据
+     */
+    DictData insert(DictData vo);
 
-    DictData update(DictData dictData);
+    /**
+     * 修改
+     * @param vo 待修改数据
+     * @return 修改后数据
+     */
+    DictData update(DictData vo);
 
-    DictData delete(DictData dictData);
+    /**
+     * 删除
+     * @param vo 主键
+     */
+    void delete(DictData vo);
 
-    List<DictData> query(DictData dictData);
+    /**
+     * 返回映射表替代字典数据的数据集
+     * @param dictType
+     * @return
+     */
+    List<DictData> queryData(DictType dictType);
 }

+ 2 - 2
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/DictTypeService.java

@@ -44,7 +44,7 @@ public interface DictTypeService {
 
     /**
      * 删除
-     * @param id 主键
+     * @param vo 主键
      */
-    void delete(String id);
+    void delete(DictType vo);
 }

+ 93 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/impl/DictDataMapServiceImpl.java

@@ -0,0 +1,93 @@
+package com.persagy.dmp.dic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.common.constant.ValidEnum;
+import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.dic.dao.DictDataMapMapper;
+import com.persagy.dmp.dic.entity.DictDataMap;
+import com.persagy.dmp.dic.service.DictDataMapService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 字典数据映射
+ * @author:linhuili
+ * @date:2021/6/10
+ */
+@Service
+public class DictDataMapServiceImpl implements DictDataMapService {
+
+    @Autowired
+    private DictDataMapMapper dao;
+
+    /**
+     * 分页查询
+     *
+     * @param page         分页条件
+     * @param queryWrapper 查询条件
+     * @return
+     */
+    @Override
+    public Page queryByCondition(Page page, Wrapper<DictDataMap> queryWrapper) {
+        return dao.selectPage(page, queryWrapper);
+    }
+
+    /**
+     * 查询
+     *
+     * @param queryWrapper 查询条件
+     * @return
+     */
+    @Override
+    public List<DictDataMap> queryByCondition(Wrapper<DictDataMap> queryWrapper) {
+        return dao.selectList(queryWrapper);
+    }
+
+    /**
+     * 新增
+     *
+     * @param vo 待新增数据
+     * @return
+     */
+    @Override
+    public DictDataMap insert(DictDataMap vo) {
+        vo.setValid(ValidEnum.TRUE.getType());
+        dao.insert(vo);
+        return vo;
+    }
+
+    /**
+     * 修改
+     *
+     * @param vo 待修改数据
+     * @return
+     */
+    @Override
+    public DictDataMap update(DictDataMap vo) {
+        DictDataMap DictDataMap = dao.selectById(vo.getId());
+        if (DictDataMap == null || 0 == DictDataMap.getValid()) {
+            throw new BusinessException("数据不存在!");
+        }
+        dao.updateById(vo);
+        return vo;
+    }
+
+    /**
+     * 删除
+     *
+     * @param vo 主键
+     */
+    @Override
+    public void delete(DictDataMap vo) {
+        DictDataMap DictDataMap = dao.selectById(vo.getId());
+        if (DictDataMap == null || 0 == DictDataMap.getValid()) {
+            throw new BusinessException("数据不存在!");
+        }
+        DictDataMap.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(DictDataMap);
+    }
+}
+

+ 110 - 9
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/impl/DictDataServiceImpl.java

@@ -1,11 +1,22 @@
 package com.persagy.dmp.dic.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.common.constant.ValidEnum;
+import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.dic.dao.DictDataMapper;
 import com.persagy.dmp.dic.entity.DictData;
+import com.persagy.dmp.dic.entity.DictDataMap;
+import com.persagy.dmp.dic.entity.DictType;
+import com.persagy.dmp.dic.service.DictDataMapService;
 import com.persagy.dmp.dic.service.DictDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 字典数据
@@ -16,26 +27,116 @@ import java.util.List;
 public class DictDataServiceImpl implements DictDataService {
 
     @Autowired
-    private com.persagy.dmp.dic.dao.DictDataMapper DictDataMapper;
+    private DictDataMapper dao;
+    
+    @Autowired
+    private DictDataMapService dictDataMapService;
+
+    /**
+     * 分页查询
+     *
+     * @param page         分页条件
+     * @param queryWrapper 查询条件
+     * @return
+     */
+    @Override
+    public Page queryByCondition(Page page, Wrapper<DictData> queryWrapper) {
+        return dao.selectPage(page, queryWrapper);
+    }
 
+    /**
+     * 查询
+     *
+     * @param queryWrapper 查询条件
+     * @return
+     */
+    @Override
+    public List<DictData> queryByCondition(Wrapper<DictData> queryWrapper) {
+        return dao.selectList(queryWrapper);
+    }
 
+    /**
+     * 新增
+     *
+     * @param vo 待新增数据
+     * @return
+     */
     @Override
-    public DictData create(DictData dictData) {
-        return null;
+    public DictData insert(DictData vo) {
+        vo.setValid(ValidEnum.TRUE.getType());
+        dao.insert(vo);
+        return vo;
     }
 
+    /**
+     * 修改
+     *
+     * @param vo 待修改数据
+     * @return
+     */
     @Override
-    public DictData update(DictData dictData) {
-        return null;
+    public DictData update(DictData vo) {
+        DictData DictData = dao.selectById(vo.getId());
+        if (DictData == null || 0 == DictData.getValid()) {
+            throw new BusinessException("数据不存在!");
+        }
+        dao.updateById(vo);
+        return vo;
     }
 
+    /**
+     * 删除
+     *
+     * @param vo 主键
+     */
     @Override
-    public DictData delete(DictData dictData) {
-        return null;
+    public void delete(DictData vo) {
+        DictData dictData = dao.selectById(vo.getId());
+        if (dictData == null || 0 == dictData.getValid()) {
+            throw new BusinessException("数据不存在!");
+        }
+        dictData.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(dictData);
     }
 
+
+    /**
+     * 返回映射表替代字典数据的数据集
+     * @param dictType
+     * @return
+     */
     @Override
-    public List<DictData> query(DictData dictData) {
-        return null;
+    public List<DictData> queryData(DictType dictType) {
+
+        //查询字典数据
+        QueryWrapper<DictData> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("type",dictType.getType());
+        queryWrapper.eq("valid",ValidEnum.TRUE.getType());
+        List<DictData> dictDataList = queryByCondition(queryWrapper);
+
+        //查询字典映射数据
+        QueryWrapper<DictDataMap> queryMapWrapper = new QueryWrapper<>();
+        queryMapWrapper.eq("type",dictType.getType());
+        queryMapWrapper.eq("group_code",dictType.getGroupCode());
+        queryMapWrapper.eq("valid",ValidEnum.TRUE.getType());
+        List<DictDataMap> dictDataMapList = dictDataMapService.queryByCondition(queryMapWrapper);
+
+        //存储映射关系
+        Map<String, DictDataMap> dtDataMapMap = new HashMap<>();
+        for(DictDataMap dictDataMap : dictDataMapList){
+           dtDataMapMap.put(dictDataMap.getTargetCode(),dictDataMap);
+        }
+
+        //通过targetCode将DictData中的code,label,替换为DictDataMap中的code,label
+        for(DictData dictData: dictDataList){
+            DictDataMap ddm = dtDataMapMap.get(dictData.getCode());
+            if(ddm == null){
+                continue;
+            }
+            dictData.setCode(ddm.getCode());
+            dictData.setLabel(ddm.getLabel());
+        }
+        return dictDataList;
     }
 }
+

+ 6 - 6
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/service/impl/DictTypeServiceImpl.java

@@ -81,16 +81,16 @@ public class DictTypeServiceImpl implements DictTypeService {
 
     /**
      * 删除
-     * @param id 主键
+     * @param vo 主键
      */
     @Override
-    public void delete(String id) {
-        DictType vo = dao.selectById(id);
-        if(vo == null || 0 == vo.getValid()){
+    public void delete(DictType vo) {
+        DictType dictType = dao.selectById(vo);
+        if(dictType == null || 0 == dictType.getValid()){
             throw new BusinessException("数据不存在!");
         }
-        vo.setValid(ValidEnum.FALSE.getType());
-        dao.updateById(vo);
+        dictType.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(dictType);
     }
 
     /**