---添加数据日志查询功能

This commit is contained in:
2025-10-21 17:28:41 +08:00
parent caa25dce65
commit 72424ca678
28 changed files with 1358 additions and 22 deletions

View File

@ -0,0 +1,50 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogTable;
/**
* @title: 测试5
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@LogTable(source="testfrom_5",name="测试5")
public class AddTestfrom5Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
@LogField(name="单行文本",index=0)
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
@LogField(name="下拉选择框",index=0)
private String valid;
/**
*
*/
@ApiModelProperty("")
@LogField(name="",index=0)
private Long tenantId;
}

View File

@ -0,0 +1,50 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogTable;
/**
* @title: 测试6
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@LogTable(source="testfrom_6",name="测试6")
public class AddTestfrom6Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
@LogField(name="单行文本",index=0)
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
@LogField(name="下拉选择框",index=0)
private String valid;
/**
*
*/
@ApiModelProperty("")
@LogField(name="",index=0)
private Long tenantId;
}

View File

@ -0,0 +1,35 @@
package com.xjrsoft.module.dev.dto;
import com.xjrsoft.common.page.PageInput;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页查询入参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Testfrom5PageDto extends PageInput {
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
}

View File

@ -0,0 +1,35 @@
package com.xjrsoft.module.dev.dto;
import com.xjrsoft.common.page.PageInput;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页查询入参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Testfrom6PageDto extends PageInput {
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
}

View File

@ -0,0 +1,65 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.pictc.annotations.datalog.LogTable;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogJoin;
import com.pictc.annotations.datalog.LogJoinColumn;
import com.pictc.annotations.datalog.JoinCaseType;
import com.pictc.annotations.datalog.JoinType;
import com.pictc.annotations.datalog.ValueDirectionType;
/**
* @title: 测试5
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@LogTable(source="testfrom_5",name="测试5")
public class UpdateTestfrom5Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@LogField(name="",index=0)
@ApiModelProperty("")
private Long id;
/**
* 单行文本
*/
@LogField(name="单行文本",index=1)
@ApiModelProperty("单行文本")
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@LogField(name="下拉选择框",index=2)
@ApiModelProperty("下拉选择框")
private String valid;
/**
*
*/
@LogField(name="",index=3)
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,65 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.pictc.annotations.datalog.LogTable;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogJoin;
import com.pictc.annotations.datalog.LogJoinColumn;
import com.pictc.annotations.datalog.JoinCaseType;
import com.pictc.annotations.datalog.JoinType;
import com.pictc.annotations.datalog.ValueDirectionType;
/**
* @title: 测试6
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@LogTable(source="testfrom_6",name="测试6")
public class UpdateTestfrom6Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@LogField(name="",index=0)
@ApiModelProperty("")
private Long id;
/**
* 单行文本
*/
@LogField(name="单行文本",index=1)
@ApiModelProperty("单行文本")
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@LogField(name="下拉选择框",index=2)
@ApiModelProperty("下拉选择框")
private String valid;
/**
*
*/
@LogField(name="",index=3)
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,44 @@
package com.xjrsoft.module.dev.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.xjrsoft.common.annotation.Trans;
import com.xjrsoft.common.enums.TransType;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页列表出参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
public class Testfrom5PageVo {
/**
*
*/
@ApiModelProperty("")
private String id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
@Trans(type = TransType.API, id = "93d735dcb7364a0f8102188ec4d77ac7")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
private Long ruleUserId;
}

View File

@ -0,0 +1,93 @@
package com.xjrsoft.module.dev.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 表单出参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
public class Testfrom5Vo {
/**
*
*/
@ApiModelProperty("")
private Long id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
private Long ruleUserId;
/**
*
*/
@ApiModelProperty("")
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,44 @@
package com.xjrsoft.module.dev.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.xjrsoft.common.annotation.Trans;
import com.xjrsoft.common.enums.TransType;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页列表出参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
public class Testfrom6PageVo {
/**
*
*/
@ApiModelProperty("")
private String id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
@Trans(type = TransType.API, id = "93d735dcb7364a0f8102188ec4d77ac7")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
private Long ruleUserId;
}

View File

@ -0,0 +1,93 @@
package com.xjrsoft.module.dev.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 表单出参
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
public class Testfrom6Vo {
/**
*
*/
@ApiModelProperty("")
private Long id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
private Long ruleUserId;
/**
*
*/
@ApiModelProperty("")
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -100,12 +100,27 @@ public class Testfrom3Controller {
return R.ok(dataService.updateById(dto));
}
@PostMapping("/enable")
@ApiOperation(value = "启用Testfrom3")
@SaCheckPermission("testfrom3:enable")
public R enable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.enable(UpdateTestfrom3Dto.class,ids));
}
@PostMapping("/disable")
@ApiOperation(value = "禁用Testfrom3")
@SaCheckPermission("testfrom3:disable")
public R disable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.disable(UpdateTestfrom3Dto.class,ids));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testfrom3:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestfrom3Dto.class, ids));
return R.ok(dataService.deleteByIds(UpdateTestfrom3Dto.class, ids));
}
@PostMapping("/import")
@ApiOperation(value = "导入")

View File

@ -0,0 +1,146 @@
package com.xjrsoft.module.dev.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
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.core.toolkit.Wrappers;
import com.xjrsoft.common.constant.GlobalConstant;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.common.model.result.R;
import com.xjrsoft.common.utils.VoToColumnUtil;
import com.xjrsoft.module.dev.dto.AddTestfrom5Dto;
import com.xjrsoft.module.dev.dto.UpdateTestfrom5Dto;
import com.xjrsoft.module.dev.dto.UpdateTestfrom6Dto;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.xjrsoft.module.dev.dto.Testfrom5PageDto;
import com.xjrsoft.module.dev.entity.Testfrom5;
import com.xjrsoft.module.dev.service.ITestfrom5Service;
import com.xjrsoft.module.dev.vo.Testfrom5PageVo;
import com.xjrsoft.module.authority.dto.BatchSetDataAuthDto;
import java.util.stream.Collectors;
import java.util.ArrayList;
import com.xjrsoft.module.datalog.entity.DataChangeLog;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.dev.vo.Testfrom5Vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @title: 测试5
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@RestController
@RequestMapping("/dev" + "/testfrom5")
@Api(value = "/dev" + "/testfrom5",tags = "测试5代码")
@AllArgsConstructor
public class Testfrom5Controller {
private final ITestfrom5Service testfrom5Service;
private final DatalogService dataService;
@GetMapping(value = "/page")
@ApiOperation(value="Testfrom5列表(分页)")
@SaCheckPermission("testfrom5:list")
public R page(@Valid Testfrom5PageDto dto){
LambdaQueryWrapper<Testfrom5> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getDanXingWenBen1188()),Testfrom5::getDanXingWenBen1188,dto.getDanXingWenBen1188())
.like(StrUtil.isNotBlank(dto.getValid()),Testfrom5::getValid,dto.getValid())
.orderByDesc(Testfrom5::getId)
.select(Testfrom5.class,x -> VoToColumnUtil.fieldsToColumns(Testfrom5PageVo.class).contains(x.getProperty()));
IPage<Testfrom5> page = testfrom5Service.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<Testfrom5PageVo> pageOutput = ConventPage.getPageOutput(page, Testfrom5PageVo.class);
return R.ok(pageOutput);
}
@GetMapping(value = "/info")
@ApiOperation(value="根据id查询Testfrom5信息")
@SaCheckPermission("testfrom5:detail")
public R info(@RequestParam Long id){
Testfrom5 testfrom5 = testfrom5Service.getById(id);
if (testfrom5 == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(testfrom5, Testfrom5Vo.class));
}
@GetMapping(value = "/datalog")
@ApiOperation(value="根据id查询Testfrom5数据详细日志")
@SaCheckPermission("testfrom5:datalog")
public R datalog(@RequestParam Long id){
List<DataChangeLog> logs = dataService.findLogsByEntityId(UpdateTestfrom5Dto.class,id);
return R.ok(logs);
}
@PostMapping
@ApiOperation(value = "新增Testfrom5")
@SaCheckPermission("testfrom5:add")
public R add(@Valid @RequestBody UpdateTestfrom5Dto dto){
UpdateTestfrom5Dto res = dataService.insert(dto);
return R.ok(res.getId());
}
@PutMapping
@ApiOperation(value = "修改Testfrom5")
@SaCheckPermission("testfrom5:edit")
public R update(@Valid @RequestBody UpdateTestfrom5Dto dto){
return R.ok(dataService.updateById(dto));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testfrom5:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestfrom5Dto.class, ids));
}
@PostMapping("/enable")
@ApiOperation(value = "启用Testfrom5")
@SaCheckPermission("testfrom5:enable")
public R enable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.enable(UpdateTestfrom5Dto.class,ids));
}
@PostMapping("/disable")
@ApiOperation(value = "禁用Testfrom5")
@SaCheckPermission("testfrom5:disable")
public R disable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.disable(UpdateTestfrom5Dto.class,ids));
}
@PutMapping("/data-auth")
@ApiOperation(value = "批量设置权限所属人")
@SaCheckPermission("testfrom5:batchSetUserId")
public R setDataAUth(@RequestBody BatchSetDataAuthDto dto){
List<Testfrom5> toUpdateList = new ArrayList<>();
for (Long dataId : dto.getDataIdList()) {
Testfrom5 testfrom5 = new Testfrom5();
testfrom5.setId(dataId);
testfrom5.setRuleUserId(dto.getUserIdList().get(0));
toUpdateList.add(testfrom5);
}
return R.ok(testfrom5Service.updateBatchById(toUpdateList));
}
}

View File

@ -0,0 +1,144 @@
package com.xjrsoft.module.dev.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
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.core.toolkit.Wrappers;
import com.xjrsoft.common.constant.GlobalConstant;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.common.model.result.R;
import com.xjrsoft.common.utils.VoToColumnUtil;
import com.xjrsoft.module.dev.dto.AddTestfrom6Dto;
import com.xjrsoft.module.dev.dto.UpdateTestfrom6Dto;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.xjrsoft.module.dev.dto.Testfrom6PageDto;
import com.xjrsoft.module.dev.entity.Testfrom6;
import com.xjrsoft.module.dev.service.ITestfrom6Service;
import com.xjrsoft.module.dev.vo.Testfrom6PageVo;
import com.xjrsoft.module.authority.dto.BatchSetDataAuthDto;
import java.util.stream.Collectors;
import java.util.ArrayList;
import com.xjrsoft.module.datalog.entity.DataChangeLog;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.dev.vo.Testfrom6Vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @title: 测试6
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@RestController
@RequestMapping("/dev" + "/testfrom6")
@Api(value = "/dev" + "/testfrom6",tags = "测试6代码")
@AllArgsConstructor
public class Testfrom6Controller {
private final ITestfrom6Service testfrom6Service;
private final DatalogService dataService;
@GetMapping(value = "/page")
@ApiOperation(value="Testfrom6列表(分页)")
@SaCheckPermission("testfrom6:list")
public R page(@Valid Testfrom6PageDto dto){
LambdaQueryWrapper<Testfrom6> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getDanXingWenBen1647()),Testfrom6::getDanXingWenBen1647,dto.getDanXingWenBen1647())
.like(StrUtil.isNotBlank(dto.getValid()),Testfrom6::getValid,dto.getValid())
.orderByDesc(Testfrom6::getId)
.select(Testfrom6.class,x -> VoToColumnUtil.fieldsToColumns(Testfrom6PageVo.class).contains(x.getProperty()));
IPage<Testfrom6> page = testfrom6Service.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<Testfrom6PageVo> pageOutput = ConventPage.getPageOutput(page, Testfrom6PageVo.class);
return R.ok(pageOutput);
}
@GetMapping(value = "/info")
@ApiOperation(value="根据id查询Testfrom6信息")
@SaCheckPermission("testfrom6:detail")
public R info(@RequestParam Long id){
Testfrom6 testfrom6 = testfrom6Service.getById(id);
if (testfrom6 == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(testfrom6, Testfrom6Vo.class));
}
@GetMapping(value = "/datalog")
@ApiOperation(value="根据id查询Testfrom6数据详细日志")
@SaCheckPermission("testfrom6:datalog")
public R datalog(@RequestParam Long id){
List<DataChangeLog> logs = dataService.findLogsByEntityId(UpdateTestfrom6Dto.class,id);
return R.ok(logs);
}
@PostMapping
@ApiOperation(value = "新增Testfrom6")
@SaCheckPermission("testfrom6:add")
public R add(@Valid @RequestBody UpdateTestfrom6Dto dto){
UpdateTestfrom6Dto res = dataService.insert(dto);
return R.ok(res.getId());
}
@PutMapping
@ApiOperation(value = "修改Testfrom6")
@SaCheckPermission("testfrom6:edit")
public R update(@Valid @RequestBody UpdateTestfrom6Dto dto){
return R.ok(dataService.updateById(dto));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testfrom6:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestfrom6Dto.class, ids));
}
@PostMapping("/enable")
@ApiOperation(value = "启用Testfrom6")
@SaCheckPermission("testfrom6:enable")
public R enable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.enable(UpdateTestfrom6Dto.class,ids));
}
@PostMapping("/disable")
@ApiOperation(value = "禁用Testfrom6")
@SaCheckPermission("testfrom6:disable")
public R disable(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.disable(UpdateTestfrom6Dto.class,ids));
}
@PutMapping("/data-auth")
@ApiOperation(value = "批量设置权限所属人")
@SaCheckPermission("testfrom6:batchSetUserId")
public R setDataAUth(@RequestBody BatchSetDataAuthDto dto){
List<Testfrom6> toUpdateList = new ArrayList<>();
for (Long dataId : dto.getDataIdList()) {
Testfrom6 testfrom6 = new Testfrom6();
testfrom6.setId(dataId);
testfrom6.setRuleUserId(dto.getUserIdList().get(0));
toUpdateList.add(testfrom6);
}
return R.ok(testfrom6Service.updateBatchById(toUpdateList));
}
}

View File

@ -0,0 +1,110 @@
package com.xjrsoft.module.dev.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 测试5
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@TableName("testfrom_5")
@ApiModel(value = "测试5对象", description = "测试5")
public class Testfrom5 implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("")
@TableId
private Long id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1188;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
@TableField(fill = FieldFill.INSERT)
private Long ruleUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleteMark;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,110 @@
package com.xjrsoft.module.dev.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 测试6
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Data
@TableName("testfrom_6")
@ApiModel(value = "测试6对象", description = "测试6")
public class Testfrom6 implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("")
@TableId
private Long id;
/**
* 单行文本
*/
@ApiModelProperty("单行文本")
private String danXingWenBen1647;
/**
* 下拉选择框
*/
@ApiModelProperty("下拉选择框")
private String valid;
/**
* 数据权限所属人ID
*/
@ApiModelProperty("数据权限所属人ID")
@TableField(fill = FieldFill.INSERT)
private Long ruleUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleteMark;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.module.dev.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.dev.entity.Testfrom5;
import org.apache.ibatis.annotations.Mapper;
/**
* @title: mapper
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Mapper
public interface Testfrom5Mapper extends BaseMapper<Testfrom5> {
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.module.dev.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.dev.entity.Testfrom6;
import org.apache.ibatis.annotations.Mapper;
/**
* @title: mapper
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Mapper
public interface Testfrom6Mapper extends BaseMapper<Testfrom6> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.module.dev.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.dev.entity.Testfrom5;
import lombok.Data;
import java.util.List;
/**
* @title: service
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
public interface ITestfrom5Service extends IService<Testfrom5> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.module.dev.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.dev.entity.Testfrom6;
import lombok.Data;
import java.util.List;
/**
* @title: service
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
public interface ITestfrom6Service extends IService<Testfrom6> {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.dev.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.xjrsoft.module.dev.entity.Testfrom5;
import com.xjrsoft.module.dev.mapper.Testfrom5Mapper;
import com.xjrsoft.module.dev.service.ITestfrom5Service;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
/**
* @title: service
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Service
@AllArgsConstructor
public class Testfrom5ServiceImpl extends ServiceImpl<Testfrom5Mapper, Testfrom5> implements ITestfrom5Service {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.dev.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.xjrsoft.module.dev.entity.Testfrom6;
import com.xjrsoft.module.dev.mapper.Testfrom6Mapper;
import com.xjrsoft.module.dev.service.ITestfrom6Service;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
/**
* @title: service
* @Author 管理员
* @Date: 2025-10-21
* @Version 1.0
*/
@Service
@AllArgsConstructor
public class Testfrom6ServiceImpl extends ServiceImpl<Testfrom6Mapper, Testfrom6> implements ITestfrom6Service {
}

View File

@ -12,5 +12,10 @@ public interface ExceptionCommonCode {
*/
final BusinessCode DATA_FIELD_DUPLICATION = BusinessCode.of(10501,"字段【{}】不允许重复");
/**
* 数据删除时id不能为空
*/
final BusinessCode DATA_DEL_ID_IS_NULL = BusinessCode.of(10510,"删除数据时,表【{}】的主键为空,删除失败!");
}

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Wed Sep 24 16:43:44 CST 2025
#Tue Oct 21 16:19:00 CST 2025
version=2.0.4
groupId=com.geg
artifactId=itc-pcitc-dependencies-api

View File

@ -0,0 +1,22 @@
com\pictc\enums\BSalesCode.class
com\pictc\annotations\datalog\LogField.class
com\pictc\annotations\datalog\LogTable.class
com\pictc\enums\BContractCode.class
com\pictc\annotations\datalog\JoinValueType.class
com\pictc\constant\ContractLiteflowRule.class
com\pictc\annotations\datalog\LogJoin.class
com\xjrsoft\module\datalog\vo\DataChangeLogDto.class
com\pictc\annotations\datalog\LogJoinColumn.class
com\pictc\annotations\datalog\ValueDirectionType.class
com\pictc\enums\BReserveCode.class
com\pictc\enums\ExceptionCommonCode.class
com\pictc\annotations\datalog\SourceType.class
com\xjrsoft\module\datalog\vo\OperationType.class
com\pictc\common\mybatis\JsonTypeHandler.class
com\pictc\enums\BusinessCode.class
com\pictc\enums\BTransportCode.class
com\xjrsoft\module\datalog\vo\FieldChangeDto.class
com\pictc\enums\BProcurementCode.class
com\pictc\enums\BFinanceCode.class
com\pictc\annotations\datalog\JoinCaseType.class
com\pictc\annotations\datalog\JoinType.class

View File

@ -1,13 +1,22 @@
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\FieldChangeDto.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BProcurementCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BSalesCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\OperationType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BContractCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinCaseType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BFinanceCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogField.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinValueType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoin.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\common\mybatis\JsonTypeHandler.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BusinessCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\ExceptionCommonCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\DataChangeLogDto.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\ValueDirectionType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\SourceType.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogTable.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\constant\ContractLiteflowRule.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BTransportCode.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoinColumn.java
F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\enums\BReserveCode.java

View File

@ -48,10 +48,14 @@ import com.pictc.converts.ConverUtil;
import com.pictc.datalog.LogFieldInfo;
import com.pictc.datalog.LogJoinInfo;
import com.pictc.datalog.LogTableInfo;
import com.pictc.enums.BusinessCode;
import com.pictc.enums.ExceptionCommonCode;
import com.pictc.exceptions.OrmException;
import com.pictc.jdbc.JdbcContext;
import com.pictc.jdbc.ResultSetUtils;
import com.pictc.jdbc.model.JdbcParam;
import com.xjrsoft.common.enums.YesOrNoEnum;
import com.xjrsoft.common.exception.BusinessException;
import com.xjrsoft.common.utils.SecureUtil;
import com.xjrsoft.module.datalog.entity.DataChangeLog;
import com.xjrsoft.module.datalog.entity.json.FieldChange;
@ -124,7 +128,7 @@ public class DataLogTools {
public static final String SQL_LIST = "SELECT * FROM ${TBL_NAME} WHERE entity_id = ? ORDER BY operation_time DESC, flow_id DESC";
public static final Set<String> excludeFields = SetUtils.of("tenantId","dataVersion","tenantId","tenantId","tenantId");
public static final Set<String> excludeFields = SetUtils.of("tenantId","dataVersion","createUserId","createDate","modifyUserId","modifyDate","modifyDate","deleteMark");
public static DataChangeLog createLog(Class<?> klazz,OperationType type) {
@ -250,6 +254,13 @@ public class DataLogTools {
}
public static boolean deleteByIds(Class<?> klazz, @Valid List<Long> ids) {
for (Long id : ids) {
deleteById(klazz, id);
}
return true;
}
public static <T>T deleteById(Class<T> klazz,Long id) {
LogTableInfo tabInfo = getAnnotation(klazz);
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
@ -274,13 +285,68 @@ public class DataLogTools {
return entity;
}
public static boolean deleteByIds(Class<?> klazz, @Valid List<Long> ids) {
private static void delete(Object entity,LogTableInfo tableinfo,BaseMapper mapper){
Long idValue = tableinfo.getIdValue(entity);
if(idValue!=null && idValue > 0) {
mapper.deleteById(idValue);
}else {
throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DATA_DEL_ID_IS_NULL,tableinfo.getTableName()));
}
}
public static boolean enable(Class<?> klazz, @Valid List<Long> ids) {
for (Long id : ids) {
deleteById(klazz, id);
enableById(klazz, id);
}
return true;
}
public static <T>T enableById(Class<T> klazz,Long id) {
LogTableInfo tabInfo = getAnnotation(klazz);
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
Object entity = findNativeById(klazz, id);
if(entity==null) return null;
T old = BeanUtils.newInstance(klazz);
BeanUtil.copyProperties(entity,old,true);
List<DataChangeLog> logs = CollectionUtils.newArrayList();
tabInfo.setFieldValue(entity,"valid",YesOrNoEnum.YES.getTextCode());
mapper.updateById(entity);
T dto = (T)tabInfo.toDto(entity);
DataChangeLog datalog = createLog(klazz,OperationType.UPDATE);
datalog.setEntityId(id);
buildFields(datalog,tabInfo,dto,null);
logs.add(datalog);
saveLogs(tabInfo,logs);
return dto;
}
public static boolean disable(Class<?> klazz, @Valid List<Long> ids) {
for (Long id : ids) {
enableById(klazz, id);
}
return true;
}
public static <T>T disableById(Class<T> klazz,Long id) {
LogTableInfo tabInfo = getAnnotation(klazz);
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
Object entity = findNativeById(klazz, id);
if(entity==null) return null;
T old = BeanUtils.newInstance(klazz);
BeanUtil.copyProperties(entity,old,true);
List<DataChangeLog> logs = CollectionUtils.newArrayList();
tabInfo.setFieldValue(entity,"valid",YesOrNoEnum.NO.getTextCode());
mapper.updateById(entity);
T dto = (T)tabInfo.toDto(entity);
DataChangeLog datalog = createLog(klazz,OperationType.UPDATE);
datalog.setEntityId(id);
buildFields(datalog,tabInfo,dto,null);
logs.add(datalog);
saveLogs(tabInfo,logs);
return dto;
}
public static <T>T findById(Class<T> klazz,Serializable id){
return findById(klazz,id,false);
}
@ -295,6 +361,13 @@ public class DataLogTools {
return dto;
}
private static Object findNativeById(Class<?> klazz, Serializable id) {
LogTableInfo tabInfo = getAnnotation(klazz);
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
return mapper.selectById(id);
}
public static void initJoinValues(LogTableInfo tabInfo,Object entity,Set<Class<?>> classPath,boolean full){
List<LogJoinInfo> joins = tabInfo.getJoins();
BaseMapper mapper = MybatisTools.getMapper(tabInfo.getEntityType());
@ -362,18 +435,8 @@ public class DataLogTools {
}
private static void delete(Object entity,LogTableInfo tableinfo,BaseMapper mapper){
Long idValue = tableinfo.getIdValue(entity);
if(idValue!=null && idValue > 0) {
// QueryChainWrapper wrapper = new QueryChainWrapper(mapper);
// wrapper.eq(tableinfo.getIdColumn(),tableinfo.getIdValue(entity));
// mapper.delete(wrapper);
mapper.deleteById(idValue);
}else {
throw new RuntimeException("删除数据时,表【"+tableinfo.getName()+"】的主键为空,删除失败!");
}
}
private static <T>void initJoinValue(T entity,LogTableInfo tabInfo,Set<Class<?>> classes) {
if(classes==null) {
@ -881,4 +944,6 @@ public class DataLogTools {
}

View File

@ -18,8 +18,12 @@ public interface DatalogService {
public <T>T deleteById(Class<T> klazz,long id);
public <T>List<DataChangeLog> findByEntityId(Class<T> klazz,long id);
public <T>List<DataChangeLog> findLogsByEntityId(Class<T> klazz,long id);
public <T>boolean deleteByIds(Class<T> class1, @Valid List<Long> ids);
public <T>boolean enable(Class<T> class1, @Valid List<Long> ids);
public <T>boolean disable(Class<T> class1, @Valid List<Long> ids);
}

View File

@ -52,16 +52,26 @@ public class DatalogServiceImpl implements DatalogService{
@Transactional(rollbackFor = Exception.class)
@Override
public <T> boolean deleteByIds(Class<T> class1, @Valid List<Long> ids) {
return DataLogTools.deleteByIds(class1, ids);
public <T> boolean deleteByIds(Class<T> klazz, @Valid List<Long> ids) {
return DataLogTools.deleteByIds(klazz, ids);
}
@Transactional(readOnly = true)
@Override
public <T> List<DataChangeLog> findByEntityId(Class<T> klazz, long dataId) {
public <T> List<DataChangeLog> findLogsByEntityId(Class<T> klazz, long dataId) {
return DataLogTools.findLogsByEntityId(klazz, dataId);
}
@Override
public <T> boolean enable(Class<T> klazz, @Valid List<Long> ids) {
return DataLogTools.enable(klazz, ids);
}
@Override
public <T> boolean disable(Class<T> klazz, @Valid List<Long> ids) {
return DataLogTools.disable(klazz, ids);
}