mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-18 09:35:29 +08:00
h5 动态表单
This commit is contained in:
parent
a2d76a5828
commit
67c6b50c32
@ -7,13 +7,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.api.dto.FormDictDTO;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormDict;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormDictExample;
|
||||
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormFieldDict;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormDictMapper;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormFieldDictMapper;
|
||||
import com.pcloud.booksflow.form.utils.UserUtils;
|
||||
import com.pcloud.common.exceptions.BizException;
|
||||
import com.pcloud.common.page.PageBeanNew;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -54,7 +54,7 @@ public class FormDictService extends ServiceImpl<FormDictMapper, FormDict> {
|
||||
entity.setDeleted(0);
|
||||
entity.setCreatedBy(UserUtils.getUserId());
|
||||
entity.setCreateTime(new Date());
|
||||
baseMapper.insertSelective(entity);
|
||||
baseMapper.insert(entity);
|
||||
return entity.getId();
|
||||
} else {
|
||||
// 更新现有的表单字典
|
||||
@ -63,7 +63,7 @@ public class FormDictService extends ServiceImpl<FormDictMapper, FormDict> {
|
||||
entity.setId(dto.getId());
|
||||
entity.setUpdatedBy(UserUtils.getUserId());
|
||||
entity.setUpdateTime(new Date());
|
||||
baseMapper.updateByPrimaryKeySelective(entity);
|
||||
baseMapper.updateById(entity);
|
||||
return entity.getId();
|
||||
}
|
||||
}
|
||||
@ -126,7 +126,7 @@ public class FormDictService extends ServiceImpl<FormDictMapper, FormDict> {
|
||||
* @param numPerPage 每页数量
|
||||
* @return 分页结果
|
||||
*/
|
||||
public PageBeanNew<FormDict> listByNameAndCode(String name, String code, Integer currentPage, Integer numPerPage) {
|
||||
public IPage<FormDict> listByNameAndCode(String name, String code, Integer currentPage, Integer numPerPage) {
|
||||
LambdaQueryWrapper<FormDict> queryWrapper = new LambdaQueryWrapper<FormDict>()
|
||||
.eq(FormDict::getDeleted, 0)
|
||||
.orderByDesc(FormDict::getId);
|
||||
@ -141,7 +141,7 @@ public class FormDictService extends ServiceImpl<FormDictMapper, FormDict> {
|
||||
|
||||
Page<FormDict> page = new Page<>(currentPage, numPerPage);
|
||||
Page<FormDict> result = baseMapper.selectPage(page, queryWrapper);
|
||||
return new PageBeanNew<>(currentPage, numPerPage, (int) result.getTotal(), result.getRecords());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -183,7 +183,7 @@ public class FormDictService extends ServiceImpl<FormDictMapper, FormDict> {
|
||||
for (FormDict dict : dicts) {
|
||||
dict.setId(null);
|
||||
}
|
||||
return baseMapper.insertBatchSomeColumn(dicts);
|
||||
return saveBatch(dicts) ? dicts.size() : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,7 +1,11 @@
|
||||
package com.pcloud.booksflow.form.service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.api.constant.FormFieldDictType;
|
||||
import com.pcloud.booksflow.form.api.dto.DictCodesDTO;
|
||||
@ -86,16 +90,16 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
* @return 表单字段配置对象
|
||||
*/
|
||||
public List<FormFieldDict> getByConfigType(String configType, Long parentId, Integer status, Integer level) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria criteria = example.createCriteria().andConfigTypeEqualTo(configType).andDeletedEqualTo(0);
|
||||
if (parentId != null) {
|
||||
criteria.andParentIdEqualTo(parentId);
|
||||
}
|
||||
if (status != null) {
|
||||
criteria.andStatusEqualTo(status);
|
||||
}
|
||||
example.setOrderByClause("sort_order asc,name asc");
|
||||
List<FormFieldDict> dicts = baseMapper.selectByExampleWithBLOBs(example);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getDeleted, 0)
|
||||
.eq(parentId != null, FormFieldDict::getParentId, parentId)
|
||||
.isNull(parentId == null, FormFieldDict::getParentId)
|
||||
.eq(status != null, FormFieldDict::getStatus, status)
|
||||
.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName);
|
||||
|
||||
List<FormFieldDict> dicts = baseMapper.selectList(queryWrapper);
|
||||
|
||||
//level参数过滤
|
||||
if (level != null) {
|
||||
final int _l;
|
||||
@ -116,27 +120,48 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public PageBeanNew<FormFieldDictVO> page(String configType, String queryStr, Integer status, Integer currentPage, Integer numPerPage) {
|
||||
//查询 顶级节点
|
||||
FormFieldDictExample example = getTopExample(configType, status);
|
||||
int count = (int) baseMapper.countByExampleExt(example, queryStr);
|
||||
if (count == 0) {
|
||||
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
|
||||
}
|
||||
List<FormFieldDict> records = baseMapper.selectByExampleWithPagingBLOBs(example, currentPage * numPerPage, numPerPage, queryStr);
|
||||
if (CollUtil.isEmpty(records)) {
|
||||
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
|
||||
}
|
||||
List<FormFieldDict> all = new ArrayList<>(records);
|
||||
public IPage<FormFieldDictVO> page(String configType, String queryStr, Integer status, Integer currentPage, Integer numPerPage) {
|
||||
//使用MyBatis-Plus分页
|
||||
Page<FormFieldDict> page = new Page<>(currentPage, numPerPage);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.isNull(FormFieldDict::getParentId)
|
||||
.eq(FormFieldDict::getDeleted, 0)
|
||||
.eq(status != null, FormFieldDict::getStatus, status)
|
||||
.and(StrUtil.isNotBlank(queryStr), wrapper ->
|
||||
wrapper.like(FormFieldDict::getName, queryStr)
|
||||
.or()
|
||||
.like(FormFieldDict::getCode, queryStr)
|
||||
)
|
||||
.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName);
|
||||
|
||||
//查询 子节点
|
||||
List<Long> pIds = records.stream().map(FormFieldDict::getId).collect(Collectors.toList());
|
||||
if (!CollUtil.isEmpty(pIds)) {
|
||||
all.addAll(findAllChildren(configType, pIds, status, 10));
|
||||
IPage<FormFieldDict> result = baseMapper.selectPage(page, queryWrapper);
|
||||
|
||||
if (result.getRecords().isEmpty()) {
|
||||
Page<FormFieldDictVO> emptyPage = new Page<>(currentPage, numPerPage, 0);
|
||||
emptyPage.setRecords(new ArrayList<>());
|
||||
return emptyPage;
|
||||
}
|
||||
//to vo
|
||||
List<FormFieldDictVO> vos = BeanUtil.copyToList(all, FormFieldDictVO.class);
|
||||
return new PageBeanNew<>(currentPage, numPerPage, count, buildTree(vos));
|
||||
|
||||
List<FormFieldDict> allRecords = new ArrayList<>(result.getRecords());
|
||||
|
||||
//查询子节点
|
||||
List<Long> pIds = result.getRecords().stream()
|
||||
.map(FormFieldDict::getId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollUtil.isEmpty(pIds)) {
|
||||
allRecords.addAll(findAllChildren(configType, pIds, status, 10));
|
||||
}
|
||||
|
||||
//转换为VO并构建树形结构
|
||||
List<FormFieldDictVO> vos = BeanUtil.copyToList(allRecords, FormFieldDictVO.class);
|
||||
List<FormFieldDictVO> treeVos = buildTree(vos);
|
||||
|
||||
//手动构建返回的IPage
|
||||
Page<FormFieldDictVO> voPage = new Page<>(currentPage, numPerPage, result.getTotal());
|
||||
voPage.setRecords(treeVos);
|
||||
return voPage;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,7 +172,18 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<FormFieldDict> allChildren = new ArrayList<>();
|
||||
List<FormFieldDict> directChildren = baseMapper.selectByExampleWithBLOBs(getFormFieldDictExample(configType, status, parentIds));
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
|
||||
if (status != null) {
|
||||
queryWrapper.eq(FormFieldDict::getStatus, status);
|
||||
}
|
||||
queryWrapper.in(FormFieldDict::getParentId, parentIds)
|
||||
.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName);
|
||||
|
||||
List<FormFieldDict> directChildren = baseMapper.selectList(queryWrapper);
|
||||
|
||||
if (!directChildren.isEmpty()) {
|
||||
allChildren.addAll(directChildren);
|
||||
@ -164,34 +200,6 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
return allChildren;
|
||||
}
|
||||
|
||||
private FormFieldDictExample getTopExample(String configType, Integer status) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria criteria = example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andParentIdIsNull()
|
||||
.andDeletedEqualTo(0);
|
||||
if (status != null) {
|
||||
criteria.andStatusEqualTo(status);
|
||||
}
|
||||
example.setOrderByClause("sort_order asc,name asc");
|
||||
return example;
|
||||
}
|
||||
|
||||
private FormFieldDictExample getFormFieldDictExample(String configType, Integer status, List<Long> parentIds) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria criteria = example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andDeletedEqualTo(0);
|
||||
if (status != null) {
|
||||
criteria.andStatusEqualTo(status);
|
||||
}
|
||||
if (parentIds != null) {
|
||||
criteria.andParentIdIn(parentIds);
|
||||
}
|
||||
example.setOrderByClause("sort_order asc,name asc");
|
||||
return example;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除表单字段配置
|
||||
*
|
||||
@ -205,7 +213,7 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
entity.setDeleted(1);
|
||||
entity.setUpdateTime(new Date());
|
||||
entity.setUpdatedBy(UserUtils.getUserId());
|
||||
return baseMapper.updateByPrimaryKeySelective(entity);
|
||||
return baseMapper.updateById(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -220,9 +228,12 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
entity.setDeleted(1);
|
||||
entity.setUpdateTime(new Date());
|
||||
entity.setUpdatedBy(UserUtils.getUserId());
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
example.createCriteria().andConfigTypeEqualTo(configType).andDeletedEqualTo(0);
|
||||
return baseMapper.updateByExampleSelective(entity, example);
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
|
||||
return baseMapper.update(entity, queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -238,14 +249,13 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
entity.setSortOrder(sortOrder);
|
||||
entity.setUpdateTime(new Date());
|
||||
entity.setUpdatedBy(UserUtils.getUserId());
|
||||
return baseMapper.updateByPrimaryKeySelective(entity);
|
||||
return baseMapper.updateById(entity);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public Integer updateStatus(Long id, Integer status) {
|
||||
Long userId = UserUtils.getUserId();
|
||||
FormFieldDict item = baseMapper.selectByPrimaryKey(id);
|
||||
FormFieldDict item = baseMapper.selectById(id);
|
||||
if (item == null) {
|
||||
return 0;
|
||||
}
|
||||
@ -260,7 +270,7 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
entity.setStatus(status);
|
||||
entity.setUpdateTime(new Date());
|
||||
entity.setUpdatedBy(userId);
|
||||
return baseMapper.updateByPrimaryKeySelective(entity);
|
||||
return baseMapper.updateById(entity);
|
||||
}
|
||||
|
||||
private void updateStatusChildren(String configType, List<Long> pids, Integer status, int depth, Long userId) {
|
||||
@ -270,13 +280,12 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
}
|
||||
|
||||
// 查找所有直接子节点
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andParentIdIn(pids)
|
||||
.andStatusEqualTo(status == 0 ? 1 : 0)
|
||||
.andDeletedEqualTo(0);
|
||||
List<FormFieldDict> children = baseMapper.selectByExample(example);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.in(FormFieldDict::getParentId, pids)
|
||||
.eq(FormFieldDict::getStatus, status == 0 ? 1 : 0)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
List<FormFieldDict> children = baseMapper.selectList(queryWrapper);
|
||||
if (children.isEmpty()) {
|
||||
log.debug("没有找到子节点,结束递归");
|
||||
return;
|
||||
@ -288,11 +297,11 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
updateEntity.setStatus(status);
|
||||
updateEntity.setUpdateTime(new Date());
|
||||
updateEntity.setUpdatedBy(userId);
|
||||
FormFieldDictExample _example = new FormFieldDictExample();
|
||||
_example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andIdIn(_ids);
|
||||
int i = baseMapper.updateByExampleSelective(updateEntity, _example);
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> updateWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.in(FormFieldDict::getId, _ids);
|
||||
int i = baseMapper.update(updateEntity, updateWrapper);
|
||||
log.debug("更新表单字段配置【{}】结果:{}", _ids, i);
|
||||
updateStatusChildren(configType, _ids, status, depth + 1, userId);
|
||||
}
|
||||
@ -303,9 +312,10 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
* @param id
|
||||
*/
|
||||
private void checkDependent(Long id) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
example.createCriteria().andParentIdEqualTo(id).andDeletedEqualTo(0);
|
||||
List<FormFieldDict> dependentDicts = baseMapper.selectByExample(example);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getParentId, id)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
List<FormFieldDict> dependentDicts = baseMapper.selectList(queryWrapper);
|
||||
if (!dependentDicts.isEmpty()) {
|
||||
String sss = "";
|
||||
for (FormFieldDict item : dependentDicts) {
|
||||
@ -321,32 +331,27 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
}
|
||||
|
||||
public List<FormFieldDictDifyVo> getByCodesByLevel(Long agentId, String configType, List<Long> parentIds) {
|
||||
if (StringUtil.isEmpty(configType)) {
|
||||
if (StrUtil.isEmpty(configType)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria criteria = example.createCriteria();
|
||||
criteria.andStatusEqualTo(1)
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andDeletedEqualTo(0);
|
||||
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getStatus, 1)
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
if (CollUtil.isNotEmpty(parentIds)) {
|
||||
|
||||
criteria.andParentIdIn(parentIds);
|
||||
|
||||
}else {
|
||||
criteria.andParentIdIsNull();
|
||||
queryWrapper.in(FormFieldDict::getParentId, parentIds);
|
||||
} else {
|
||||
queryWrapper.isNull(FormFieldDict::getParentId);
|
||||
}
|
||||
|
||||
|
||||
example.setOrderByClause("sort_order asc,name asc");
|
||||
List<FormFieldDict> dicts = baseMapper.selectByExampleWithBLOBs(example);
|
||||
queryWrapper.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName);
|
||||
List<FormFieldDict> dicts = baseMapper.selectList(queryWrapper);
|
||||
|
||||
if (dicts == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<FormFieldDictDifyVo> vos = dicts.stream().map(o->{
|
||||
List<FormFieldDictDifyVo> vos = dicts.stream().map(o -> {
|
||||
FormFieldDictDifyVo formFieldDictDifyVo = new FormFieldDictDifyVo();
|
||||
formFieldDictDifyVo.setId(o.getId());
|
||||
formFieldDictDifyVo.setName(o.getName());
|
||||
@ -356,18 +361,18 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
return vos;
|
||||
}
|
||||
|
||||
|
||||
public Map<String, List<FormFieldDictVO>> get(Map<String, FormFieldDictQ> qs) {
|
||||
if (qs == null || qs.isEmpty()) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Set<String> configTypes = qs.keySet();
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
example.createCriteria()
|
||||
.andConfigTypeIn(new ArrayList<>(configTypes))
|
||||
.andDeletedEqualTo(0);
|
||||
example.setOrderByClause("sort_order asc,name asc");
|
||||
List<FormFieldDict> dicts = baseMapper.selectByExampleWithBLOBs(example);
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.in(FormFieldDict::getConfigType, new ArrayList<>(configTypes))
|
||||
.eq(FormFieldDict::getDeleted, 0)
|
||||
.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName);
|
||||
|
||||
List<FormFieldDict> dicts = baseMapper.selectList(queryWrapper);
|
||||
|
||||
Map<String, List<FormFieldDict>> result = dicts.stream()
|
||||
.collect(
|
||||
@ -418,13 +423,6 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
configTypeDicts = Collections.emptyList();
|
||||
}
|
||||
}
|
||||
//
|
||||
// //fieldCodes 过滤
|
||||
// if (CollUtil.isNotEmpty(query.getFieldCodes())) {
|
||||
// configTypeDicts = configTypeDicts.stream()
|
||||
// .filter(item -> query.getFieldCodes().contains(item.getCode()))
|
||||
// .collect(Collectors.toList());
|
||||
// }
|
||||
|
||||
//parentId 过滤
|
||||
if (query.getParentId() != null) {
|
||||
@ -530,14 +528,15 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
|
||||
public List<FormFieldDictVO> getByIds(List<Long> ids, Integer deleted) {
|
||||
Assert.notEmpty(ids, "ids cannot be empty");
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria criteria = example.createCriteria()
|
||||
.andIdIn(ids);
|
||||
if (deleted != null) {
|
||||
criteria.andDeletedEqualTo(deleted);
|
||||
}
|
||||
List<FormFieldDict> dicts = baseMapper.selectByExampleWithBLOBs(example);
|
||||
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.in(FormFieldDict::getId, ids);
|
||||
|
||||
if (deleted != null) {
|
||||
queryWrapper.eq(FormFieldDict::getDeleted, deleted);
|
||||
}
|
||||
|
||||
List<FormFieldDict> dicts = baseMapper.selectList(queryWrapper);
|
||||
return BeanUtil.copyToList(dicts, FormFieldDictVO.class);
|
||||
}
|
||||
|
||||
@ -582,27 +581,27 @@ public class FormFieldDictService extends ServiceImpl<FormFieldDictMapper, FormF
|
||||
}
|
||||
|
||||
private long countByCode(String configType, String code, Long notId) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria ca = example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andCodeEqualTo(code)
|
||||
.andDeletedEqualTo(0);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getCode, code)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
|
||||
if (notId != null) {
|
||||
ca.andIdNotEqualTo(notId);
|
||||
queryWrapper.ne(FormFieldDict::getId, notId);
|
||||
}
|
||||
return baseMapper.countByExample(example);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
private long countByName(String configType, String name, Long notId) {
|
||||
FormFieldDictExample example = new FormFieldDictExample();
|
||||
FormFieldDictExample.Criteria ca = example.createCriteria()
|
||||
.andConfigTypeEqualTo(configType)
|
||||
.andNameEqualTo(name)
|
||||
.andDeletedEqualTo(0);
|
||||
LambdaQueryWrapper<FormFieldDict> queryWrapper = new LambdaQueryWrapper<FormFieldDict>()
|
||||
.eq(FormFieldDict::getConfigType, configType)
|
||||
.eq(FormFieldDict::getName, name)
|
||||
.eq(FormFieldDict::getDeleted, 0);
|
||||
|
||||
if (notId != null) {
|
||||
ca.andIdNotEqualTo(notId);
|
||||
queryWrapper.ne(FormFieldDict::getId, notId);
|
||||
}
|
||||
return baseMapper.countByExample(example);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,8 @@ import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.common.oss.core.OssClient;
|
||||
import org.dromara.common.oss.entity.UploadResult;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -74,11 +76,10 @@ public class FormPrintConfigService extends ServiceImpl<FormPrintConfigMapper, F
|
||||
* @return 表单打印配置对象
|
||||
*/
|
||||
public FormPrintConfigVO getByFormId(Long formId) {
|
||||
FormPrintConfigExample example = new FormPrintConfigExample();
|
||||
example.createCriteria()
|
||||
.andFormIdEqualTo(formId);
|
||||
example.setOrderByClause("id desc");
|
||||
List<FormPrintConfig> formPrintConfigs = formPrintConfigMapperExt.selectByExampleWithBLOBs(example);
|
||||
LambdaQueryWrapper<FormPrintConfig> queryWrapper = new LambdaQueryWrapper<FormPrintConfig>()
|
||||
.eq(FormPrintConfig::getFormId, formId)
|
||||
.orderByDesc(FormPrintConfig::getId);
|
||||
List<FormPrintConfig> formPrintConfigs = baseMapper.selectList(queryWrapper);
|
||||
if (!formPrintConfigs.isEmpty()) {
|
||||
return BeanUtil.copyProperties(formPrintConfigs.get(0), FormPrintConfigVO.class);
|
||||
} else {
|
||||
@ -87,11 +88,10 @@ public class FormPrintConfigService extends ServiceImpl<FormPrintConfigMapper, F
|
||||
}
|
||||
|
||||
public FormPrintConfig getEntityByFormId(Long formId) {
|
||||
FormPrintConfigExample example = new FormPrintConfigExample();
|
||||
example.createCriteria()
|
||||
.andFormIdEqualTo(formId);
|
||||
example.setOrderByClause("id desc");
|
||||
List<FormPrintConfig> formPrintConfigs = formPrintConfigMapperExt.selectByExampleWithBLOBs(example);
|
||||
LambdaQueryWrapper<FormPrintConfig> queryWrapper = new LambdaQueryWrapper<FormPrintConfig>()
|
||||
.eq(FormPrintConfig::getFormId, formId)
|
||||
.orderByDesc(FormPrintConfig::getId);
|
||||
List<FormPrintConfig> formPrintConfigs = baseMapper.selectList(queryWrapper);
|
||||
if (!formPrintConfigs.isEmpty()) {
|
||||
return formPrintConfigs.get(0);
|
||||
} else {
|
||||
@ -127,12 +127,12 @@ public class FormPrintConfigService extends ServiceImpl<FormPrintConfigMapper, F
|
||||
if (config != null) {
|
||||
entity.setId(config.getId());
|
||||
entity.setMode(dto.getMode());
|
||||
return baseMapper.updateByPrimaryKeySelective(entity);
|
||||
return baseMapper.updateById(entity);
|
||||
} else {
|
||||
entity.setMode(dto.getMode());
|
||||
entity.setCreatedBy(UserUtils.getUserId());
|
||||
entity.setCreateTime(new Date());
|
||||
return formPrintConfigMapperExt.insertSelective(entity);
|
||||
return baseMapper.insert(entity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,10 +3,11 @@ package com.pcloud.booksflow.form.service;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.pcloud.booksflow.form.api.constant.BaseConstant;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.*;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormMapperExt;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormMapper;
|
||||
import com.pcloud.booksflow.form.utils.TenantHelper;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -17,10 +18,9 @@ import java.util.List;
|
||||
* Form Service 实现增删改查业务逻辑
|
||||
*/
|
||||
@Service
|
||||
public class FormService {
|
||||
public class FormService extends ServiceImpl<FormMapper, Form> {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FormMapperExt formMapperExt;
|
||||
|
||||
/**
|
||||
* 创建表单
|
||||
@ -37,7 +37,7 @@ public class FormService {
|
||||
throw new ServiceException("名称已存在: " + form.getName());
|
||||
}
|
||||
form.setId(null);
|
||||
formMapper.insert(form);
|
||||
baseMapper.insert(form);
|
||||
return form;
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ public class FormService {
|
||||
* @return 表单对象
|
||||
*/
|
||||
public Form getById(Long id) {
|
||||
return formMapperExt.selectByPrimaryKey(id);
|
||||
return baseMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -67,7 +67,7 @@ public class FormService {
|
||||
throw new ServiceException("名称已存在: " + form.getName());
|
||||
}
|
||||
form.setId(id);
|
||||
formMapperExt.updateByPrimaryKeySelective(form);
|
||||
baseMapper.updateById(form);
|
||||
return form;
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ public class FormService {
|
||||
* @return 删除结果
|
||||
*/
|
||||
public int delete(Long id) {
|
||||
return formMapperExt.deleteByPrimaryKey(id);
|
||||
return baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -88,18 +88,17 @@ public class FormService {
|
||||
* @return 表单列表
|
||||
*/
|
||||
public List<Form> listByName(String name) {
|
||||
FormExample example = new FormExample();
|
||||
LambdaQueryWrapper<Form> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (StrUtil.isNotBlank(name)) {
|
||||
example.createCriteria()
|
||||
.andNameLike("%" + name + "%");
|
||||
queryWrapper.like(Form::getName, name);
|
||||
}
|
||||
return formMapperExt.selectByExample(example);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public Form getByCode(String formCode) {
|
||||
FormExample example = new FormExample();
|
||||
example.createCriteria().andCodeEqualTo(formCode);
|
||||
return formMapperExt.selectOneByExample(example);
|
||||
LambdaQueryWrapper<Form> queryWrapper = new LambdaQueryWrapper<Form>()
|
||||
.eq(Form::getCode, formCode);
|
||||
return baseMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,28 +107,25 @@ public class FormService {
|
||||
* @return 表单对象
|
||||
*/
|
||||
public List<Form> list() {
|
||||
FormExample example = new FormExample();
|
||||
return formMapperExt.selectByExample(example);
|
||||
return baseMapper.selectList(null);
|
||||
}
|
||||
|
||||
private long countByCode(String code, Long notId) {
|
||||
FormExample example = new FormExample();
|
||||
FormExample.Criteria criteria = example.createCriteria()
|
||||
.andCodeEqualTo(code);
|
||||
LambdaQueryWrapper<Form> queryWrapper = new LambdaQueryWrapper<Form>()
|
||||
.eq(Form::getCode, code);
|
||||
if (notId != null) {
|
||||
criteria.andIdNotEqualTo(notId);
|
||||
queryWrapper.ne(Form::getId, notId);
|
||||
}
|
||||
return formMapperExt.countByExample(example);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
private long countByName(String name, Long notId) {
|
||||
FormExample example = new FormExample();
|
||||
FormExample.Criteria criteria = example.createCriteria()
|
||||
.andNameEqualTo(name);
|
||||
LambdaQueryWrapper<Form> queryWrapper = new LambdaQueryWrapper<Form>()
|
||||
.eq(Form::getName, name);
|
||||
if (notId != null) {
|
||||
criteria.andIdNotEqualTo(notId);
|
||||
queryWrapper.ne(Form::getId, notId);
|
||||
}
|
||||
return formMapperExt.countByExample(example);
|
||||
return baseMapper.selectCount(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,10 +6,11 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.pcloud.booksflow.form.api.constant.FormTemplateFieldType;
|
||||
import com.pcloud.booksflow.form.api.dto.FormTemplateDTO;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplateField;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplateFieldExample;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormTemplateFieldMapperExt;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormTemplateFieldMapper;
|
||||
import com.pcloud.booksflow.form.utils.UserUtils;
|
||||
import com.pcloud.universe.commons.utils.JsonUtils;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -26,10 +27,9 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class FormTemplateFieldService {
|
||||
public class FormTemplateFieldService extends ServiceImpl<FormTemplateFieldMapper, FormTemplateField> {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FormTemplateFieldMapperExt formTemplateFieldMapperExt;
|
||||
|
||||
/**
|
||||
* 创建新的表单模板字段
|
||||
@ -38,7 +38,7 @@ public class FormTemplateFieldService {
|
||||
* @return 创建后的表单模板字段对象
|
||||
*/
|
||||
public FormTemplateField create(FormTemplateField formTemplateField) {
|
||||
formTemplateFieldMapperExt.insertSelective(formTemplateField);
|
||||
baseMapper.insert(formTemplateField);
|
||||
return formTemplateField;
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ public class FormTemplateFieldService {
|
||||
if (isGroup(item.getType())) {
|
||||
FormTemplateField fieldGroup = dto2Entity(templateId, item, userId, date);
|
||||
//保存分组
|
||||
formTemplateFieldMapperExt.insert(fieldGroup);
|
||||
baseMapper.insert(fieldGroup);
|
||||
if (CollUtil.isNotEmpty(item.getChildren())) {
|
||||
List<FormTemplateField> _fields = item.getChildren().stream()
|
||||
.map(item1 -> {
|
||||
@ -68,7 +68,7 @@ public class FormTemplateFieldService {
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
//保存分组下字段
|
||||
formTemplateFieldMapperExt.batchInsert(_fields);
|
||||
this.saveBatch(_fields);
|
||||
}
|
||||
} else {
|
||||
fields.add(dto2Entity(templateId, item, userId, date));
|
||||
@ -76,7 +76,7 @@ public class FormTemplateFieldService {
|
||||
}
|
||||
|
||||
if (!fields.isEmpty()) {
|
||||
formTemplateFieldMapperExt.batchInsert(fields);
|
||||
this.saveBatch(fields);
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,7 +88,7 @@ public class FormTemplateFieldService {
|
||||
FormTemplateField field = BeanUtil.copyProperties(item, FormTemplateField.class, "ext");
|
||||
field.setId(null);
|
||||
field.setTemplateId(templateId);
|
||||
String ext = JsonUtils.serialize(item.getExt());
|
||||
String ext = JsonUtils.toJsonString(item.getExt());
|
||||
if (ext == null) {
|
||||
field.setExt("{}");
|
||||
} else {
|
||||
@ -109,7 +109,7 @@ public class FormTemplateFieldService {
|
||||
* @return 表单模板字段对象
|
||||
*/
|
||||
public FormTemplateField getById(Long id) {
|
||||
return formTemplateFieldMapperExt.selectByPrimaryKey(id);
|
||||
return baseMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -120,13 +120,13 @@ public class FormTemplateFieldService {
|
||||
* @return 表单模板字段列表
|
||||
*/
|
||||
public List<FormTemplateField> getByTemplateId(Long templateId, Boolean show) {
|
||||
FormTemplateFieldExample example = new FormTemplateFieldExample();
|
||||
FormTemplateFieldExample.Criteria criteria = example.createCriteria().andTemplateIdEqualTo(templateId);
|
||||
LambdaQueryWrapper<FormTemplateField> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(FormTemplateField::getTemplateId, templateId);
|
||||
if (show != null) {
|
||||
criteria.andShowEqualTo(show);
|
||||
wrapper.eq(FormTemplateField::getShow, show);
|
||||
}
|
||||
example.setOrderByClause("sort_order asc,id asc");
|
||||
return formTemplateFieldMapperExt.selectByExampleWithBLOBs(example);
|
||||
wrapper.orderByAsc(FormTemplateField::getSortOrder, FormTemplateField::getId);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -139,8 +139,8 @@ public class FormTemplateFieldService {
|
||||
public int update(Long id, FormTemplateField formTemplateField) {
|
||||
formTemplateField.setId(id);
|
||||
formTemplateField.setUpdatedBy(UserUtils.getUserId());
|
||||
formTemplateField.setCreateTime(new Date());
|
||||
return formTemplateFieldMapperExt.updateByPrimaryKeySelective(formTemplateField);
|
||||
formTemplateField.setUpdateTime(new Date());
|
||||
return baseMapper.updateById(formTemplateField);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -150,13 +150,13 @@ public class FormTemplateFieldService {
|
||||
* @return 删除结果
|
||||
*/
|
||||
public int delete(Long id) {
|
||||
return formTemplateFieldMapperExt.deleteByPrimaryKey(id);
|
||||
return baseMapper.deleteById(id);
|
||||
}
|
||||
|
||||
|
||||
public List<FormTemplateField> list() {
|
||||
FormTemplateFieldExample example = new FormTemplateFieldExample();
|
||||
return formTemplateFieldMapperExt.selectByExampleWithBLOBs(example);
|
||||
LambdaQueryWrapper<FormTemplateField> wrapper = new LambdaQueryWrapper<>();
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -172,7 +172,7 @@ public class FormTemplateFieldService {
|
||||
private FormTemplateDTO.FieldDTO entity2Dto(FormTemplateField item) {
|
||||
FormTemplateDTO.FieldDTO dto = BeanUtil.copyProperties(item, FormTemplateDTO.FieldDTO.class, "ext");
|
||||
if (StrUtil.isNotBlank(item.getExt())) {
|
||||
dto.setExt(JsonUtils.parse(item.getExt(), FormTemplateDTO.ExtDTO.class));
|
||||
dto.setExt(JsonUtils.parseObject(item.getExt(), FormTemplateDTO.ExtDTO.class));
|
||||
}
|
||||
// 初始化children列表以避免空指针异常
|
||||
dto.setChildren(new ArrayList<>());
|
||||
@ -214,4 +214,4 @@ public class FormTemplateFieldService {
|
||||
return rootNodes;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,24 +3,19 @@ package com.pcloud.booksflow.form.service;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.crypto.digest.DigestUtil;
|
||||
import com.pcloud.aistudio.api.feign.DataPermissionFeignClient;
|
||||
import com.pcloud.booksflow.form.api.constant.FormTemplateFieldType;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.EncryptUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.api.dto.FormTemplateDTO;
|
||||
import com.pcloud.booksflow.form.api.vo.FormTemplateVO;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.Form;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplate;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplateExample;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplateField;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormTemplateMapperExt;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.FormTemplateMapper;
|
||||
import com.pcloud.booksflow.form.utils.UserUtils;
|
||||
import com.pcloud.booksflow.workflow.api.domain.request.SyncFormFieldRequest;
|
||||
import com.pcloud.booksflow.workflow.api.domain.request.SyncFormRequest;
|
||||
import com.pcloud.booksflow.workflow.api.service.BooksFlowWorkflowService;
|
||||
import com.pcloud.common.dto.ResponseDto;
|
||||
import com.pcloud.common.exceptions.BizException;
|
||||
import com.pcloud.universe.commons.utils.JsonUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -33,18 +28,12 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FormTemplateService {
|
||||
public class FormTemplateService extends ServiceImpl<FormTemplateMapper, FormTemplate> {
|
||||
|
||||
@Autowired
|
||||
private FormTemplateMapperExt formTemplateMapperExt;
|
||||
@Autowired
|
||||
private FormTemplateFieldService formTemplateFieldService;
|
||||
@Autowired
|
||||
private FormService formService;
|
||||
@Autowired
|
||||
private BooksFlowWorkflowService booksFlowWorkflowService;
|
||||
@Autowired(required = false)
|
||||
private DataPermissionFeignClient dataPermissionFeignClient;
|
||||
|
||||
/**
|
||||
* save表单模板信息
|
||||
@ -83,7 +72,7 @@ public class FormTemplateService {
|
||||
FormTemplate maxVersionEntity = getMaxVersion(dto.getFormId());
|
||||
|
||||
//***** 检验内容是否和最新版一致
|
||||
String md5 = DigestUtil.md5Hex(JsonUtils.serialize(dto));
|
||||
String md5 = EncryptUtils.md5Base64(JsonUtils.toJsonString(dto));
|
||||
if (StrUtil.isBlank(md5)) {
|
||||
throw new ServiceException("md5生成错误!");
|
||||
}
|
||||
@ -96,17 +85,6 @@ public class FormTemplateService {
|
||||
FormTemplate entity = create(dto.getFormId(), md5);
|
||||
// 保存模板字段配置
|
||||
formTemplateFieldService.saveTemplateFields(dto.getTemplateFields(), entity.getId());
|
||||
|
||||
try {
|
||||
feignWorkFlowSyncForm(dto, entity);
|
||||
} catch (Exception e) {
|
||||
log.error("feignWorkFlowSyncForm 同步用户表单信息失败:{}", e.getMessage(), e);
|
||||
}
|
||||
try {
|
||||
feignUserSyncForm(dto.getFormId());
|
||||
} catch (Exception e) {
|
||||
log.error("feignUserSyncForm 同步用户表单信息失败:{}", e.getMessage(), e);
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
@ -171,11 +149,10 @@ public class FormTemplateService {
|
||||
entity.setCreatedBy(UserUtils.getUserId());
|
||||
entity.setId(null);
|
||||
// 保存
|
||||
formTemplateMapperExt.insertSelective(entity);
|
||||
baseMapper.insert(entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据ID获取表单模板
|
||||
*
|
||||
@ -183,7 +160,7 @@ public class FormTemplateService {
|
||||
* @return 表单模板对象
|
||||
*/
|
||||
public FormTemplateVO getVOById(Long id, Boolean show, Boolean tree) {
|
||||
FormTemplate template = formTemplateMapperExt.selectByPrimaryKey(id);
|
||||
FormTemplate template = baseMapper.selectById(id);
|
||||
return entity2VO(template, show, tree);
|
||||
}
|
||||
|
||||
@ -206,12 +183,11 @@ public class FormTemplateService {
|
||||
}
|
||||
|
||||
public FormTemplate getMaxVersion(Long formId) {
|
||||
FormTemplateExample example = new FormTemplateExample();
|
||||
example.createCriteria().andFormIdEqualTo(formId);
|
||||
example.setOrderByClause("version DESC");
|
||||
LambdaQueryWrapper<FormTemplate> queryWrapper = new LambdaQueryWrapper<FormTemplate>()
|
||||
.eq(FormTemplate::getFormId, formId)
|
||||
.orderByDesc(FormTemplate::getVersion);
|
||||
|
||||
// 只查询第一条记录(最大版本号)
|
||||
List<FormTemplate> templates = formTemplateMapperExt.selectByExampleWithPaging(example, 0, 1);
|
||||
List<FormTemplate> templates = baseMapper.selectList(queryWrapper);
|
||||
if (templates.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
@ -226,11 +202,11 @@ public class FormTemplateService {
|
||||
* @return 表单
|
||||
*/
|
||||
public FormTemplate getMinVersion(Long formId) {
|
||||
FormTemplateExample example = new FormTemplateExample();
|
||||
example.createCriteria().andFormIdEqualTo(formId);
|
||||
example.setOrderByClause("version asc");
|
||||
LambdaQueryWrapper<FormTemplate> queryWrapper = new LambdaQueryWrapper<FormTemplate>()
|
||||
.eq(FormTemplate::getFormId, formId)
|
||||
.orderByAsc(FormTemplate::getVersion);
|
||||
|
||||
List<FormTemplate> templates = formTemplateMapperExt.selectByExampleWithPaging(example, 0, 1);
|
||||
List<FormTemplate> templates = baseMapper.selectList(queryWrapper);
|
||||
if (templates.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
@ -264,7 +240,7 @@ public class FormTemplateService {
|
||||
List<FormTemplateVO.FieldVO> templateFields = fields.stream().map(field -> {
|
||||
FormTemplateVO.FieldVO fvo = new FormTemplateVO.FieldVO();
|
||||
BeanUtil.copyProperties(field, fvo, "ext");
|
||||
fvo.setExt(JsonUtils.parse(field.getExt(), FormTemplateVO.ExtVO.class));
|
||||
fvo.setExt(JsonUtils.parseObject(field.getExt(), FormTemplateVO.ExtVO.class));
|
||||
return fvo;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
@ -282,8 +258,7 @@ public class FormTemplateService {
|
||||
}
|
||||
|
||||
public List<FormTemplate> list() {
|
||||
FormTemplateExample example = new FormTemplateExample();
|
||||
return formTemplateMapperExt.selectByExample(example);
|
||||
return baseMapper.selectList(null);
|
||||
}
|
||||
|
||||
private List<FormTemplateVO.FieldVO> buildTree(List<FormTemplateVO.FieldVO> list) {
|
||||
@ -291,7 +266,7 @@ public class FormTemplateService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
Map<Long, FormTemplateVO.FieldVO> map = list.stream()
|
||||
.collect(Collectors.toMap(FormTemplateVO.FieldVO::getId, v -> v));
|
||||
.collect(Collectors.toMap(FormTemplateVO.FieldVO::getId, v -> v));
|
||||
|
||||
List<FormTemplateVO.FieldVO> tree = new ArrayList<>();
|
||||
for (FormTemplateVO.FieldVO node : list) {
|
||||
@ -355,7 +330,7 @@ public class FormTemplateService {
|
||||
* @param dto dto
|
||||
* @param entity entity
|
||||
*/
|
||||
private void feignWorkFlowSyncForm(FormTemplateDTO dto, FormTemplate entity) {
|
||||
/*private void feignWorkFlowSyncForm(FormTemplateDTO dto, FormTemplate entity) {
|
||||
log.info("feignWorkFlowSyncForm 开始同步表单信息:{}", dto.getFormId());
|
||||
Long tenantId = UserUtils.getTenantId();
|
||||
Form form = formService.getById(dto.getFormId());
|
||||
@ -373,7 +348,7 @@ public class FormTemplateService {
|
||||
log.info("feignWorkFlowSyncForm 请求参数:{}", JsonUtils.serialize(data));
|
||||
ResponseDto<?> responseDto = booksFlowWorkflowService.syncFormFields(data);
|
||||
log.info("feignWorkFlowSyncForm 结束同步表单信息:{},{}", form.getCode(), responseDto);
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 递归转换表单字段为同步请求对象,支持多层级结构
|
||||
@ -382,15 +357,15 @@ public class FormTemplateService {
|
||||
* @param fields 表单字段列表
|
||||
* @return 同步请求对象列表
|
||||
*/
|
||||
private List<SyncFormFieldRequest> convertToSyncFormFieldRequests(List<FormTemplateDTO.FieldDTO> fields) {
|
||||
private List<Object> convertToSyncFormFieldRequests(List<FormTemplateDTO.FieldDTO> fields) {
|
||||
if (fields == null || fields.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return fields.stream()
|
||||
.map(this::convertToSyncFormFieldRequest)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
.map(this::convertToSyncFormFieldRequest)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -399,7 +374,7 @@ public class FormTemplateService {
|
||||
* @param field 表单字段
|
||||
* @return 同步请求对象
|
||||
*/
|
||||
private SyncFormFieldRequest convertToSyncFormFieldRequest(FormTemplateDTO.FieldDTO field) {
|
||||
private Object convertToSyncFormFieldRequest(FormTemplateDTO.FieldDTO field) {
|
||||
if (field == null) {
|
||||
return null;
|
||||
}
|
||||
@ -407,17 +382,18 @@ public class FormTemplateService {
|
||||
if (field.getShow() != null && !field.getShow()) {
|
||||
return null;
|
||||
}
|
||||
return SyncFormFieldRequest.builder()
|
||||
.show(field.getShow())
|
||||
.edit(field.getEdit())
|
||||
.fieldCode(field.getCode())
|
||||
.fieldName(field.getShowTitle())
|
||||
.sortOrder(field.getSortOrder())
|
||||
.children(convertToSyncFormFieldRequests(field.getChildren()))
|
||||
.build();
|
||||
// 简化返回对象,避免依赖外部类
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("show", field.getShow());
|
||||
result.put("edit", field.getEdit());
|
||||
result.put("fieldCode", field.getCode());
|
||||
result.put("fieldName", field.getShowTitle());
|
||||
result.put("sortOrder", field.getSortOrder());
|
||||
result.put("children", convertToSyncFormFieldRequests(field.getChildren()));
|
||||
return result;
|
||||
}
|
||||
|
||||
private void feignUserSyncForm(Long formId) {
|
||||
/*private void feignUserSyncForm(Long formId) {
|
||||
if (formId == null) {
|
||||
return;
|
||||
}
|
||||
@ -430,7 +406,5 @@ public class FormTemplateService {
|
||||
Form form = formService.getById(formId);
|
||||
Boolean b = dataPermissionFeignClient.syncUserDataPermissions(form.getCode(), "booksflow", tenantId);
|
||||
log.info("feignUserSyncForm 结束同步表单信息:{},{}", form.getCode(), b);
|
||||
}
|
||||
|
||||
|
||||
}*/
|
||||
}
|
||||
|
||||
@ -2,14 +2,15 @@ package com.pcloud.booksflow.form.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.api.dto.ModifyLogRecordDTO;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.ModifyLogRecord;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.ModifyLogRecordExample;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.ModifyLogRecordMapperExt;
|
||||
import com.pcloud.common.exceptions.BizException;
|
||||
import com.pcloud.common.page.PageBeanNew;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.ModifyLogRecordMapper;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
@ -20,10 +21,7 @@ import java.util.stream.Collectors;
|
||||
* ModifyLogRecord Service 实现增删改查业务逻辑
|
||||
*/
|
||||
@Service
|
||||
public class ModifyLogRecordService {
|
||||
|
||||
@Autowired
|
||||
private ModifyLogRecordMapperExt modifyLogRecordMapperExt;
|
||||
public class ModifyLogRecordService extends ServiceImpl<ModifyLogRecordMapper, ModifyLogRecord> {
|
||||
|
||||
/**
|
||||
* 批量创建修改日志记录
|
||||
@ -58,7 +56,7 @@ public class ModifyLogRecordService {
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return modifyLogRecordMapperExt.batchInsert(modifyLogRecords);
|
||||
return saveBatch(modifyLogRecords) ? modifyLogRecords.size() : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,19 +66,19 @@ public class ModifyLogRecordService {
|
||||
* @param formCode formCode
|
||||
* @return 修改日志记录列表
|
||||
*/
|
||||
public PageBeanNew<ModifyLogRecord> listByEntityType(String entityType, String entityId, String formCode, Integer currentPage, Integer numPerPage) {
|
||||
ModifyLogRecordExample example = new ModifyLogRecordExample();
|
||||
ModifyLogRecordExample.Criteria criteria = example.createCriteria()
|
||||
.andEntityTypeEqualTo(entityType)
|
||||
.andEntityIdEqualTo(entityId)
|
||||
.andDeletedEqualTo(0);
|
||||
public IPage<ModifyLogRecord> listByEntityType(String entityType, String entityId, String formCode, Integer currentPage, Integer numPerPage) {
|
||||
LambdaQueryWrapper<ModifyLogRecord> queryWrapper = new LambdaQueryWrapper<ModifyLogRecord>()
|
||||
.eq(ModifyLogRecord::getEntityType, entityType)
|
||||
.eq(ModifyLogRecord::getEntityId, entityId)
|
||||
.eq(ModifyLogRecord::getDeleted, 0)
|
||||
.orderByDesc(ModifyLogRecord::getId);
|
||||
|
||||
if (StrUtil.isNotBlank(formCode)) {
|
||||
criteria.andFormCodeEqualTo(formCode);
|
||||
queryWrapper.eq(ModifyLogRecord::getFormCode, formCode);
|
||||
}
|
||||
example.setOrderByClause("id desc");
|
||||
int count = (int) modifyLogRecordMapperExt.countByExample(example);
|
||||
List<ModifyLogRecord> records = modifyLogRecordMapperExt.selectByExampleWithPaging(example, currentPage * numPerPage, numPerPage);
|
||||
return new PageBeanNew<>(currentPage, numPerPage, count, records);
|
||||
|
||||
Page<ModifyLogRecord> page = new Page<>(currentPage, numPerPage);
|
||||
return baseMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
package com.pcloud.booksflow.form.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.TenantInitStatus;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.TenantInitStatusExample;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.TenantInitStatusMapperExt;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.pcloud.booksflow.form.mybatis.mapper.TenantInitStatusMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
@ -14,10 +14,7 @@ import java.util.List;
|
||||
* 管理租户初始化状态的增删改查操作
|
||||
*/
|
||||
@Service
|
||||
public class TenantInitStatusService {
|
||||
|
||||
@Autowired
|
||||
private TenantInitStatusMapperExt tenantInitStatusMapperExt;
|
||||
public class TenantInitStatusService extends ServiceImpl<TenantInitStatusMapper, TenantInitStatus> {
|
||||
|
||||
/**
|
||||
* 根据租户ID获取初始化状态
|
||||
@ -26,9 +23,9 @@ public class TenantInitStatusService {
|
||||
* @return 租户初始化状态,如果不存在则返回null
|
||||
*/
|
||||
public TenantInitStatus getByTenantId(Long tenantId) {
|
||||
TenantInitStatusExample example = new TenantInitStatusExample();
|
||||
example.createCriteria().andAgentIdEqualTo(tenantId);
|
||||
List<TenantInitStatus> list = tenantInitStatusMapperExt.selectByExample(example);
|
||||
LambdaQueryWrapper<TenantInitStatus> queryWrapper = new LambdaQueryWrapper<TenantInitStatus>()
|
||||
.eq(TenantInitStatus::getAgentId, tenantId);
|
||||
List<TenantInitStatus> list = baseMapper.selectList(queryWrapper);
|
||||
return list.isEmpty() ? null : list.get(0);
|
||||
}
|
||||
|
||||
@ -56,7 +53,7 @@ public class TenantInitStatusService {
|
||||
status.setInitialized(initialized);
|
||||
status.setCreateTime(new Date());
|
||||
status.setUpdateTime(new Date());
|
||||
tenantInitStatusMapperExt.insertSelective(status);
|
||||
baseMapper.insert(status);
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -69,4 +66,4 @@ public class TenantInitStatusService {
|
||||
public void markAsInitialized(Long tenantId) {
|
||||
create(tenantId, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,14 +7,15 @@ import com.pcloud.booksflow.form.mybatis.entity.FormDict;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplate;
|
||||
import com.pcloud.booksflow.form.mybatis.entity.FormTemplateField;
|
||||
import com.pcloud.booksflow.form.utils.TenantHelper;
|
||||
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -48,7 +49,7 @@ public class TenantInitializationService {
|
||||
private final static String TenantInitializationKey = "init_tenant_uuid:%s";
|
||||
|
||||
//TODO 后续改到动态配置那里
|
||||
public final static List<String> TplConfigTypes = new ArrayList<>(Arrays.asList("expenseSubject", "contactUnit", "writingType","warehouse"));
|
||||
public final static List<String> TplConfigTypes = new ArrayList<>(Arrays.asList("expenseSubject", "contactUnit", "writingType", "warehouse"));
|
||||
|
||||
/**
|
||||
* 检查并初始化租户数据
|
||||
@ -70,7 +71,7 @@ public class TenantInitializationService {
|
||||
log.info("租户 {} db中已初始化,无需重复初始化", tenantId);
|
||||
return false;
|
||||
}
|
||||
boolean set = JedisClusterUtils.set(String.format(TenantInitializationKey, tenantId), "1", 60 * 10);
|
||||
boolean set = RedisUtils.setObjectIfAbsent(String.format(TenantInitializationKey, tenantId), "", Duration.ofSeconds(20L));
|
||||
if (!set) {
|
||||
log.warn("租户 {} 初始化中,redis有key,无需重复初始化", tenantId);
|
||||
return false;
|
||||
@ -86,7 +87,7 @@ public class TenantInitializationService {
|
||||
TenantHelper.dynamic(tenantId + "", () -> tenantInitializationService.dbInitForm(tenantId, forms, formTemplates, formTemplateFields, dicts));
|
||||
} finally {
|
||||
//TODO 删除时候判断是不是同uuid的 key
|
||||
JedisClusterUtils.del(String.format(TenantInitializationKey, tenantId));
|
||||
RedisUtils.deleteObject(String.format(TenantInitializationKey, tenantId));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -129,13 +130,13 @@ public class TenantInitializationService {
|
||||
Map<Long, Long> templateIdMapping = new HashMap<>();
|
||||
// 按formId分组,获取每个formId下版本最大的模板
|
||||
Map<Long, List<FormTemplate>> formTemplatesGroupedByFormId = formTemplates.stream()
|
||||
.collect(Collectors.groupingBy(FormTemplate::getFormId));
|
||||
.collect(Collectors.groupingBy(FormTemplate::getFormId));
|
||||
|
||||
for (Map.Entry<Long, List<FormTemplate>> entry : formTemplatesGroupedByFormId.entrySet()) {
|
||||
// 获取当前formId下版本最大的模板
|
||||
FormTemplate maxVersionTemplate = entry.getValue().stream()
|
||||
.max(Comparator.comparingInt(FormTemplate::getVersion))
|
||||
.orElse(null);
|
||||
.max(Comparator.comparingInt(FormTemplate::getVersion))
|
||||
.orElse(null);
|
||||
|
||||
if (maxVersionTemplate != null) {
|
||||
Long newFormId = formIdMapping.get(maxVersionTemplate.getFormId());
|
||||
@ -192,4 +193,4 @@ public class TenantInitializationService {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user