diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormDictService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormDictService.java index 692454fbd..4fbab88b7 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormDictService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormDictService.java @@ -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 { 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 { 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 { * @param numPerPage 每页数量 * @return 分页结果 */ - public PageBeanNew listByNameAndCode(String name, String code, Integer currentPage, Integer numPerPage) { + public IPage listByNameAndCode(String name, String code, Integer currentPage, Integer numPerPage) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(FormDict::getDeleted, 0) .orderByDesc(FormDict::getId); @@ -141,7 +141,7 @@ public class FormDictService extends ServiceImpl { Page page = new Page<>(currentPage, numPerPage); Page 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 { for (FormDict dict : dicts) { dict.setId(null); } - return baseMapper.insertBatchSomeColumn(dicts); + return saveBatch(dicts) ? dicts.size() : 0; } /** diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormFieldDictService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormFieldDictService.java index b19ee1194..b39974dea 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormFieldDictService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormFieldDictService.java @@ -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 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 dicts = baseMapper.selectByExampleWithBLOBs(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .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 dicts = baseMapper.selectList(queryWrapper); + //level参数过滤 if (level != null) { final int _l; @@ -116,27 +120,48 @@ public class FormFieldDictService extends ServiceImpl 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 records = baseMapper.selectByExampleWithPagingBLOBs(example, currentPage * numPerPage, numPerPage, queryStr); - if (CollUtil.isEmpty(records)) { - return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>()); - } - List all = new ArrayList<>(records); + public IPage page(String configType, String queryStr, Integer status, Integer currentPage, Integer numPerPage) { + //使用MyBatis-Plus分页 + Page page = new Page<>(currentPage, numPerPage); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .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 pIds = records.stream().map(FormFieldDict::getId).collect(Collectors.toList()); - if (!CollUtil.isEmpty(pIds)) { - all.addAll(findAllChildren(configType, pIds, status, 10)); + IPage result = baseMapper.selectPage(page, queryWrapper); + + if (result.getRecords().isEmpty()) { + Page emptyPage = new Page<>(currentPage, numPerPage, 0); + emptyPage.setRecords(new ArrayList<>()); + return emptyPage; } - //to vo - List vos = BeanUtil.copyToList(all, FormFieldDictVO.class); - return new PageBeanNew<>(currentPage, numPerPage, count, buildTree(vos)); + + List allRecords = new ArrayList<>(result.getRecords()); + + //查询子节点 + List pIds = result.getRecords().stream() + .map(FormFieldDict::getId) + .collect(Collectors.toList()); + + if (!CollUtil.isEmpty(pIds)) { + allRecords.addAll(findAllChildren(configType, pIds, status, 10)); + } + + //转换为VO并构建树形结构 + List vos = BeanUtil.copyToList(allRecords, FormFieldDictVO.class); + List treeVos = buildTree(vos); + + //手动构建返回的IPage + Page voPage = new Page<>(currentPage, numPerPage, result.getTotal()); + voPage.setRecords(treeVos); + return voPage; } /** @@ -147,7 +172,18 @@ public class FormFieldDictService extends ServiceImpl(); } List allChildren = new ArrayList<>(); - List directChildren = baseMapper.selectByExampleWithBLOBs(getFormFieldDictExample(configType, status, parentIds)); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .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 directChildren = baseMapper.selectList(queryWrapper); if (!directChildren.isEmpty()) { allChildren.addAll(directChildren); @@ -164,34 +200,6 @@ public class FormFieldDictService extends ServiceImpl 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 queryWrapper = new LambdaQueryWrapper() + .eq(FormFieldDict::getConfigType, configType) + .eq(FormFieldDict::getDeleted, 0); + + return baseMapper.update(entity, queryWrapper); } /** @@ -238,14 +249,13 @@ public class FormFieldDictService extends ServiceImpl pids, Integer status, int depth, Long userId) { @@ -270,13 +280,12 @@ public class FormFieldDictService extends ServiceImpl children = baseMapper.selectByExample(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(FormFieldDict::getConfigType, configType) + .in(FormFieldDict::getParentId, pids) + .eq(FormFieldDict::getStatus, status == 0 ? 1 : 0) + .eq(FormFieldDict::getDeleted, 0); + List children = baseMapper.selectList(queryWrapper); if (children.isEmpty()) { log.debug("没有找到子节点,结束递归"); return; @@ -288,11 +297,11 @@ public class FormFieldDictService extends ServiceImpl updateWrapper = new LambdaQueryWrapper() + .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 dependentDicts = baseMapper.selectByExample(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(FormFieldDict::getParentId, id) + .eq(FormFieldDict::getDeleted, 0); + List dependentDicts = baseMapper.selectList(queryWrapper); if (!dependentDicts.isEmpty()) { String sss = ""; for (FormFieldDict item : dependentDicts) { @@ -321,32 +331,27 @@ public class FormFieldDictService extends ServiceImpl getByCodesByLevel(Long agentId, String configType, List 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 queryWrapper = new LambdaQueryWrapper() + .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 dicts = baseMapper.selectByExampleWithBLOBs(example); + queryWrapper.orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName); + List dicts = baseMapper.selectList(queryWrapper); if (dicts == null) { return new ArrayList<>(); } - List vos = dicts.stream().map(o->{ + List 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> get(Map qs) { if (qs == null || qs.isEmpty()) { return Collections.emptyMap(); } Set configTypes = qs.keySet(); - FormFieldDictExample example = new FormFieldDictExample(); - example.createCriteria() - .andConfigTypeIn(new ArrayList<>(configTypes)) - .andDeletedEqualTo(0); - example.setOrderByClause("sort_order asc,name asc"); - List dicts = baseMapper.selectByExampleWithBLOBs(example); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .in(FormFieldDict::getConfigType, new ArrayList<>(configTypes)) + .eq(FormFieldDict::getDeleted, 0) + .orderByAsc(FormFieldDict::getSortOrder, FormFieldDict::getName); + + List dicts = baseMapper.selectList(queryWrapper); Map> result = dicts.stream() .collect( @@ -418,13 +423,6 @@ public class FormFieldDictService extends ServiceImpl query.getFieldCodes().contains(item.getCode())) -// .collect(Collectors.toList()); -// } //parentId 过滤 if (query.getParentId() != null) { @@ -530,14 +528,15 @@ public class FormFieldDictService extends ServiceImpl getByIds(List 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 dicts = baseMapper.selectByExampleWithBLOBs(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .in(FormFieldDict::getId, ids); + + if (deleted != null) { + queryWrapper.eq(FormFieldDict::getDeleted, deleted); + } + + List dicts = baseMapper.selectList(queryWrapper); return BeanUtil.copyToList(dicts, FormFieldDictVO.class); } @@ -582,27 +581,27 @@ public class FormFieldDictService extends ServiceImpl queryWrapper = new LambdaQueryWrapper() + .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 queryWrapper = new LambdaQueryWrapper() + .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); } } diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormPrintConfigService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormPrintConfigService.java index de49b2752..859b8ca2b 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormPrintConfigService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormPrintConfigService.java @@ -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 formPrintConfigs = formPrintConfigMapperExt.selectByExampleWithBLOBs(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(FormPrintConfig::getFormId, formId) + .orderByDesc(FormPrintConfig::getId); + List 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 formPrintConfigs = formPrintConfigMapperExt.selectByExampleWithBLOBs(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(FormPrintConfig::getFormId, formId) + .orderByDesc(FormPrintConfig::getId); + List formPrintConfigs = baseMapper.selectList(queryWrapper); if (!formPrintConfigs.isEmpty()) { return formPrintConfigs.get(0); } else { @@ -127,12 +127,12 @@ public class FormPrintConfigService extends ServiceImpl { + - @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
listByName(String name) { - FormExample example = new FormExample(); + LambdaQueryWrapper 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 queryWrapper = new LambdaQueryWrapper() + .eq(Form::getCode, formCode); + return baseMapper.selectOne(queryWrapper); } /** @@ -108,28 +107,25 @@ public class FormService { * @return 表单对象 */ public List 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 queryWrapper = new LambdaQueryWrapper() + .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 queryWrapper = new LambdaQueryWrapper() + .eq(Form::getName, name); if (notId != null) { - criteria.andIdNotEqualTo(notId); + queryWrapper.ne(Form::getId, notId); } - return formMapperExt.countByExample(example); + return baseMapper.selectCount(queryWrapper); } } diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateFieldService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateFieldService.java index 67644078f..934eda79c 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateFieldService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateFieldService.java @@ -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 { + - @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 _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 getByTemplateId(Long templateId, Boolean show) { - FormTemplateFieldExample example = new FormTemplateFieldExample(); - FormTemplateFieldExample.Criteria criteria = example.createCriteria().andTemplateIdEqualTo(templateId); + LambdaQueryWrapper 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 list() { - FormTemplateFieldExample example = new FormTemplateFieldExample(); - return formTemplateFieldMapperExt.selectByExampleWithBLOBs(example); + LambdaQueryWrapper 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; } -} \ No newline at end of file +} diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateService.java index 3cee7c4e8..b101c0ae6 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/FormTemplateService.java @@ -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 { - @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 queryWrapper = new LambdaQueryWrapper() + .eq(FormTemplate::getFormId, formId) + .orderByDesc(FormTemplate::getVersion); - // 只查询第一条记录(最大版本号) - List templates = formTemplateMapperExt.selectByExampleWithPaging(example, 0, 1); + List 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 queryWrapper = new LambdaQueryWrapper() + .eq(FormTemplate::getFormId, formId) + .orderByAsc(FormTemplate::getVersion); - List templates = formTemplateMapperExt.selectByExampleWithPaging(example, 0, 1); + List templates = baseMapper.selectList(queryWrapper); if (templates.isEmpty()) { return null; } else { @@ -264,7 +240,7 @@ public class FormTemplateService { List 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 list() { - FormTemplateExample example = new FormTemplateExample(); - return formTemplateMapperExt.selectByExample(example); + return baseMapper.selectList(null); } private List buildTree(List list) { @@ -291,7 +266,7 @@ public class FormTemplateService { return new ArrayList<>(); } Map map = list.stream() - .collect(Collectors.toMap(FormTemplateVO.FieldVO::getId, v -> v)); + .collect(Collectors.toMap(FormTemplateVO.FieldVO::getId, v -> v)); List 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 convertToSyncFormFieldRequests(List fields) { + private List convertToSyncFormFieldRequests(List 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 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); - } - - + }*/ } diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/ModifyLogRecordService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/ModifyLogRecordService.java index c1b5fec49..f66acf37e 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/ModifyLogRecordService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/ModifyLogRecordService.java @@ -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 { /** * 批量创建修改日志记录 @@ -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 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 listByEntityType(String entityType, String entityId, String formCode, Integer currentPage, Integer numPerPage) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .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 records = modifyLogRecordMapperExt.selectByExampleWithPaging(example, currentPage * numPerPage, numPerPage); - return new PageBeanNew<>(currentPage, numPerPage, count, records); + + Page page = new Page<>(currentPage, numPerPage); + return baseMapper.selectPage(page, queryWrapper); } -} +} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitStatusService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitStatusService.java index 975c5dfc8..46019ce41 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitStatusService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitStatusService.java @@ -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 { /** * 根据租户ID获取初始化状态 @@ -26,9 +23,9 @@ public class TenantInitStatusService { * @return 租户初始化状态,如果不存在则返回null */ public TenantInitStatus getByTenantId(Long tenantId) { - TenantInitStatusExample example = new TenantInitStatusExample(); - example.createCriteria().andAgentIdEqualTo(tenantId); - List list = tenantInitStatusMapperExt.selectByExample(example); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(TenantInitStatus::getAgentId, tenantId); + List 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); } -} \ No newline at end of file +} diff --git a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitializationService.java b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitializationService.java index ab134c100..506e1874c 100644 --- a/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitializationService.java +++ b/ruoyi-modules/ruoyi-form/booksflow-form-service/src/main/java/com/pcloud/booksflow/form/service/TenantInitializationService.java @@ -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 TplConfigTypes = new ArrayList<>(Arrays.asList("expenseSubject", "contactUnit", "writingType","warehouse")); + public final static List 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 templateIdMapping = new HashMap<>(); // 按formId分组,获取每个formId下版本最大的模板 Map> formTemplatesGroupedByFormId = formTemplates.stream() - .collect(Collectors.groupingBy(FormTemplate::getFormId)); + .collect(Collectors.groupingBy(FormTemplate::getFormId)); for (Map.Entry> 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; } -} \ No newline at end of file +}