15 changed files with 976 additions and 0 deletions
@ -0,0 +1,101 @@ |
|||||||
|
package com.biutag.supervision.controller.data; |
||||||
|
|
||||||
|
import cn.hutool.core.io.FileUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import com.alibaba.excel.read.listener.ReadListener; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.biutag.supervision.pojo.Result; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditImportDto; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditPageDTO; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.DataAuditAddRequest; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.DataAuditDelRequest; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.DataAuditPageRequest; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.DataAuditUpdateRequest; |
||||||
|
import com.biutag.supervision.service.dataAudit.DataAuditService; |
||||||
|
import io.swagger.v3.oas.annotations.Operation; |
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag; |
||||||
|
import jakarta.servlet.http.HttpServletResponse; |
||||||
|
import jakarta.validation.ConstraintViolation; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import org.springframework.web.multipart.MultipartFile; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.net.URLEncoder; |
||||||
|
import java.nio.charset.StandardCharsets; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Set; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
@Tag(name = "审计记录控制层", description = "审计记录管理") |
||||||
|
@Slf4j |
||||||
|
@RequestMapping("data/dataAudit") |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RestController |
||||||
|
public class DataAuditController { |
||||||
|
|
||||||
|
private final DataAuditService dataAuditService; |
||||||
|
|
||||||
|
@Operation(description = "分页查询") |
||||||
|
@PostMapping("/getPage") |
||||||
|
public Result<Page<DataAuditPageDTO>> getPage(@RequestBody DataAuditPageRequest request) { |
||||||
|
return dataAuditService.getDataAuditPage(request); |
||||||
|
} |
||||||
|
|
||||||
|
@Operation(description = "添加") |
||||||
|
@PostMapping("/add") |
||||||
|
public Result<Boolean> add(@RequestBody DataAuditAddRequest request) { |
||||||
|
return dataAuditService.addDataAudit(request); |
||||||
|
} |
||||||
|
|
||||||
|
@Operation(description = "修改") |
||||||
|
@PostMapping("/update") |
||||||
|
public Result<Boolean> update(@RequestBody DataAuditUpdateRequest request) { |
||||||
|
return dataAuditService.updateDataAudit(request); |
||||||
|
} |
||||||
|
|
||||||
|
@Operation(description = "删除") |
||||||
|
@PostMapping("/delete") |
||||||
|
public Result<Boolean> delete(@RequestBody DataAuditDelRequest request) { |
||||||
|
return dataAuditService.delDataAudit(request); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Operation(description = "下载导入模板") |
||||||
|
@GetMapping("/downloadTemplate") |
||||||
|
public void downloadTemplate(HttpServletResponse response) throws IOException { |
||||||
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); |
||||||
|
response.setCharacterEncoding("utf-8"); |
||||||
|
String fileName = URLEncoder.encode("审计数据导入模板", StandardCharsets.UTF_8).replaceAll("\\+", "%20"); |
||||||
|
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); |
||||||
|
|
||||||
|
List<DataAuditImportDto> dataList = new ArrayList<>(); |
||||||
|
DataAuditImportDto example = new DataAuditImportDto(); |
||||||
|
example.setAuditType("执法活动财物审计"); |
||||||
|
example.setProjectName("示例项目名称"); |
||||||
|
example.setSecondLevelDeptName("示例二级单位"); |
||||||
|
example.setThirdLevelDeptName("示例三级单位"); |
||||||
|
example.setAuditAmount(null); |
||||||
|
example.setIssueAmount(null); |
||||||
|
dataList.add(example); |
||||||
|
|
||||||
|
EasyExcel.write(response.getOutputStream(), DataAuditImportDto.class) |
||||||
|
.sheet("审计数据") |
||||||
|
.doWrite(dataList); |
||||||
|
} |
||||||
|
|
||||||
|
@Operation(description = "导入数据") |
||||||
|
@PostMapping("/import") |
||||||
|
public Result<Integer> importExcel(@RequestPart("file") MultipartFile file) throws IOException { |
||||||
|
log.info("审计数据导入中------------------------------"); |
||||||
|
String fileNameType = FileUtil.extName(file.getOriginalFilename()); |
||||||
|
if (!"xls".equals(fileNameType) && !"xlsx".equals(fileNameType)) { |
||||||
|
throw new RuntimeException("仅支持 xls/xlsx 格式文件的导入"); |
||||||
|
} |
||||||
|
int count = dataAuditService.importData(file.getInputStream()); |
||||||
|
return Result.success(count); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
package com.biutag.supervision.mapper; |
||||||
|
|
||||||
|
import com.biutag.supervision.pojo.entity.DataAudit; |
||||||
|
import com.biutag.supervision.repository.base.HBaseMapper; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface DataAuditMapper extends HBaseMapper<DataAudit> { |
||||||
|
|
||||||
|
int insertBatch(List<DataAudit> list); |
||||||
|
} |
||||||
@ -0,0 +1,53 @@ |
|||||||
|
package com.biutag.supervision.pojo.dto.dataAudit; |
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import jakarta.validation.constraints.NotBlank; |
||||||
|
import jakarta.validation.constraints.NotNull; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Schema(description = "审计数据导入DTO") |
||||||
|
@Setter |
||||||
|
@Getter |
||||||
|
public class DataAuditImportDto { |
||||||
|
|
||||||
|
@ExcelProperty("审计类型") |
||||||
|
@NotBlank(message = "审计类型不能为空") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@ExcelProperty("项目名称") |
||||||
|
@NotBlank(message = "项目名称不能为空") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@ExcelProperty("涉及二级单位") |
||||||
|
@NotBlank(message = "涉及二级单位不能为空") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@ExcelIgnore |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@ExcelProperty("涉及三级单位") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@ExcelIgnore |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@ExcelProperty("审计时间") |
||||||
|
@NotNull(message = "审计时间不能为空") |
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@ExcelProperty("审计涉及金额(万元)") |
||||||
|
@NotNull(message = "审计涉及金额不能为空") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@ExcelProperty("问题金额(万元)") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,56 @@ |
|||||||
|
package com.biutag.supervision.pojo.dto.dataAudit; |
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@Schema(description = "审计记录分页DTO") |
||||||
|
public class DataAuditPageDTO { |
||||||
|
|
||||||
|
@Schema(description = "主键ID") |
||||||
|
private Long id; |
||||||
|
|
||||||
|
@Schema(description = "审计类型") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "项目名称") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位名称") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位名称") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "审计时间") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@Schema(description = "审计涉及的总金额") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@Schema(description = "发现的问题金额") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
@Schema(description = "创建人") |
||||||
|
private String createBy; |
||||||
|
|
||||||
|
@Schema(description = "创建时间") |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
@Schema(description = "更新人") |
||||||
|
private String updateBy; |
||||||
|
|
||||||
|
@Schema(description = "更新时间") |
||||||
|
private LocalDateTime updateTime; |
||||||
|
} |
||||||
@ -0,0 +1,92 @@ |
|||||||
|
package com.biutag.supervision.pojo.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@Schema(description = "审计记录表") |
||||||
|
@TableName("data_audit") |
||||||
|
public class DataAudit { |
||||||
|
|
||||||
|
@Schema(description = "主键ID,自增长") |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
@Schema(description = "审计类型(如财务审计、合规审计等)") |
||||||
|
@TableField("audit_type") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "被审计的项目名称") |
||||||
|
@TableField("project_name") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID(可为空)") |
||||||
|
@TableField("second_level_dept_id") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位名称") |
||||||
|
@TableField("second_level_dept_name") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID(可为空)") |
||||||
|
@TableField("third_level_dept_id") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位名称") |
||||||
|
@TableField("third_level_dept_name") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "审计时间,精确到秒") |
||||||
|
@TableField("audit_time") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@Schema(description = "审计涉及的总金额") |
||||||
|
@TableField("audit_amount") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@Schema(description = "发现的问题金额,默认为0") |
||||||
|
@TableField("issue_amount") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
@Schema(description = "最后更新记录的用户") |
||||||
|
@TableField("update_by") |
||||||
|
private String updateBy; |
||||||
|
|
||||||
|
@Schema(description = "最后更新时间") |
||||||
|
@TableField("update_time") |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
@Schema(description = "创建记录的用户") |
||||||
|
@TableField("create_by") |
||||||
|
private String createBy; |
||||||
|
|
||||||
|
@Schema(description = "创建时间,默认当前时间") |
||||||
|
@TableField("create_time") |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
@Schema(description = "保留字段1") |
||||||
|
@TableField("gwf1") |
||||||
|
private String gwf1; |
||||||
|
|
||||||
|
@Schema(description = "保留字段2") |
||||||
|
@TableField("gwf2") |
||||||
|
private String gwf2; |
||||||
|
|
||||||
|
@Schema(description = "保留字段3") |
||||||
|
@TableField("gwf3") |
||||||
|
private String gwf3; |
||||||
|
|
||||||
|
@Schema(description = "保留字段4") |
||||||
|
@TableField("gwf4") |
||||||
|
private String gwf4; |
||||||
|
|
||||||
|
@Schema(description = "保留字段5") |
||||||
|
@TableField("gwf5") |
||||||
|
private String gwf5; |
||||||
|
} |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
package com.biutag.supervision.pojo.param.dataAudit; |
||||||
|
|
||||||
|
import com.biutag.supervision.pojo.param.BasePage; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class DataAuditQueryParam extends BasePage { |
||||||
|
|
||||||
|
private Long id; |
||||||
|
|
||||||
|
private String auditType; |
||||||
|
|
||||||
|
private String projectName; |
||||||
|
|
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
private LocalDateTime auditTimeStart; |
||||||
|
|
||||||
|
private LocalDateTime auditTimeEnd; |
||||||
|
} |
||||||
@ -0,0 +1,68 @@ |
|||||||
|
package com.biutag.supervision.pojo.request.dataAudit; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.biutag.supervision.aop.ParamChecked; |
||||||
|
import com.biutag.supervision.constants.enums.ProblemSourcesEnum; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Setter |
||||||
|
@Getter |
||||||
|
@Schema(description = "审计记录添加请求") |
||||||
|
public class DataAuditAddRequest implements ParamChecked { |
||||||
|
|
||||||
|
/** |
||||||
|
* @see ProblemSourcesEnum 27-30 |
||||||
|
*/ |
||||||
|
@Schema(description = "审计类型") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "被审计的项目名称") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID(可为空)") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位名称") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID(可为空)") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位名称") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "审计时间,精确到秒") |
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@Schema(description = "审计涉及的总金额") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@Schema(description = "发现的问题金额,默认为0") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void check() { |
||||||
|
if (StrUtil.isBlank(auditType)) { |
||||||
|
throw new IllegalArgumentException("审计类型不能为空"); |
||||||
|
} |
||||||
|
if (StrUtil.isBlank(projectName)) { |
||||||
|
throw new IllegalArgumentException("项目名称不能为空"); |
||||||
|
} |
||||||
|
if (auditTime == null) { |
||||||
|
throw new IllegalArgumentException("审计时间不能为空"); |
||||||
|
} |
||||||
|
if (auditAmount == null) { |
||||||
|
throw new IllegalArgumentException("审计涉及金额不能为空"); |
||||||
|
} |
||||||
|
if (issueAmount == null) { |
||||||
|
issueAmount = BigDecimal.ZERO; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
package com.biutag.supervision.pojo.request.dataAudit; |
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil; |
||||||
|
import com.biutag.supervision.aop.ParamChecked; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Setter |
||||||
|
@Getter |
||||||
|
@Schema(description = "审计记录删除请求") |
||||||
|
public class DataAuditDelRequest implements ParamChecked { |
||||||
|
|
||||||
|
@Schema(description = "审计记录ID") |
||||||
|
private Long id; |
||||||
|
|
||||||
|
@Schema(description = "审计记录ID列表(批量删除)") |
||||||
|
private List<Long> ids; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void check() { |
||||||
|
if (id == null && CollectionUtil.isEmpty(ids)) { |
||||||
|
throw new IllegalArgumentException("ID不能为空"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,36 @@ |
|||||||
|
package com.biutag.supervision.pojo.request.dataAudit; |
||||||
|
|
||||||
|
import com.biutag.supervision.pojo.param.BasePage; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Setter |
||||||
|
@Getter |
||||||
|
@Schema(description = "审计记录分页请求") |
||||||
|
public class DataAuditPageRequest extends BasePage { |
||||||
|
|
||||||
|
@Schema(description = "审计类型") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "项目名称") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "审计时间开始") |
||||||
|
private LocalDateTime auditTimeStart; |
||||||
|
|
||||||
|
@Schema(description = "审计时间结束") |
||||||
|
private LocalDateTime auditTimeEnd; |
||||||
|
|
||||||
|
@Schema(description = "审计时间区间") |
||||||
|
private List<LocalDateTime> auditTimeList; |
||||||
|
} |
||||||
@ -0,0 +1,65 @@ |
|||||||
|
package com.biutag.supervision.pojo.request.dataAudit; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.biutag.supervision.aop.ParamChecked; |
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Getter; |
||||||
|
import lombok.Setter; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Setter |
||||||
|
@Getter |
||||||
|
@Schema(description = "审计记录修改请求") |
||||||
|
public class DataAuditUpdateRequest implements ParamChecked { |
||||||
|
|
||||||
|
@Schema(description = "主键ID") |
||||||
|
private Long id; |
||||||
|
|
||||||
|
@Schema(description = "审计类型(如财务审计、合规审计等)") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "被审计的项目名称") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID(可为空)") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位名称") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID(可为空)") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位名称") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "审计时间,精确到秒") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@Schema(description = "审计涉及的总金额") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@Schema(description = "发现的问题金额,默认为0") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void check() { |
||||||
|
if (id == null) { |
||||||
|
throw new IllegalArgumentException("ID不能为空"); |
||||||
|
} |
||||||
|
if (StrUtil.isBlank(auditType)) { |
||||||
|
throw new IllegalArgumentException("审计类型不能为空"); |
||||||
|
} |
||||||
|
if (StrUtil.isBlank(projectName)) { |
||||||
|
throw new IllegalArgumentException("项目名称不能为空"); |
||||||
|
} |
||||||
|
if (auditTime == null) { |
||||||
|
throw new IllegalArgumentException("审计时间不能为空"); |
||||||
|
} |
||||||
|
if (auditAmount == null) { |
||||||
|
throw new IllegalArgumentException("审计涉及金额不能为空"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,54 @@ |
|||||||
|
package com.biutag.supervision.pojo.vo.dataAudit; |
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Data |
||||||
|
@Schema(description = "审计记录分页VO") |
||||||
|
public class DataAuditPageVo { |
||||||
|
|
||||||
|
@Schema(description = "主键ID") |
||||||
|
private Long id; |
||||||
|
|
||||||
|
@Schema(description = "审计类型") |
||||||
|
private String auditType; |
||||||
|
|
||||||
|
@Schema(description = "项目名称") |
||||||
|
private String projectName; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位ID") |
||||||
|
private Long secondLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及二级单位名称") |
||||||
|
private String secondLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位ID") |
||||||
|
private Long thirdLevelDeptId; |
||||||
|
|
||||||
|
@Schema(description = "涉及三级单位名称") |
||||||
|
private String thirdLevelDeptName; |
||||||
|
|
||||||
|
@Schema(description = "审计时间") |
||||||
|
private LocalDateTime auditTime; |
||||||
|
|
||||||
|
@Schema(description = "审计涉及的总金额") |
||||||
|
private BigDecimal auditAmount; |
||||||
|
|
||||||
|
@Schema(description = "发现的问题金额") |
||||||
|
private BigDecimal issueAmount; |
||||||
|
|
||||||
|
@Schema(description = "创建人") |
||||||
|
private String createBy; |
||||||
|
|
||||||
|
@Schema(description = "创建时间") |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
@Schema(description = "更新人") |
||||||
|
private String updateBy; |
||||||
|
|
||||||
|
@Schema(description = "更新时间") |
||||||
|
private LocalDateTime updateTime; |
||||||
|
} |
||||||
@ -0,0 +1,113 @@ |
|||||||
|
package com.biutag.supervision.repository.dataAudit; |
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil; |
||||||
|
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.biutag.supervision.common.UserContextHolder; |
||||||
|
import com.biutag.supervision.mapper.DataAuditMapper; |
||||||
|
import com.biutag.supervision.pojo.entity.DataAudit; |
||||||
|
import com.biutag.supervision.pojo.param.dataAudit.DataAuditQueryParam; |
||||||
|
import com.biutag.supervision.repository.base.BaseDAO; |
||||||
|
import jakarta.annotation.Resource; |
||||||
|
import jakarta.validation.ValidationException; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class DataAuditResourceService extends BaseDAO { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private DataAuditMapper dataAuditMapper; |
||||||
|
|
||||||
|
public List<DataAudit> query(DataAuditQueryParam param) { |
||||||
|
LambdaQueryWrapper<DataAudit> queryWrapper = new LambdaQueryWrapper<>(); |
||||||
|
if (param.getId() != null) { |
||||||
|
queryWrapper.eq(DataAudit::getId, param.getId()); |
||||||
|
} |
||||||
|
if (StrUtil.isNotBlank(param.getAuditType())) { |
||||||
|
queryWrapper.eq(DataAudit::getAuditType, param.getAuditType()); |
||||||
|
} |
||||||
|
if (StrUtil.isNotBlank(param.getProjectName())) { |
||||||
|
queryWrapper.like(DataAudit::getProjectName, param.getProjectName()); |
||||||
|
} |
||||||
|
if (param.getSecondLevelDeptId() != null) { |
||||||
|
queryWrapper.eq(DataAudit::getSecondLevelDeptId, param.getSecondLevelDeptId()); |
||||||
|
} |
||||||
|
if (param.getThirdLevelDeptId() != null) { |
||||||
|
queryWrapper.eq(DataAudit::getThirdLevelDeptId, param.getThirdLevelDeptId()); |
||||||
|
} |
||||||
|
if (param.getAuditTimeStart() != null && param.getAuditTimeEnd() != null) { |
||||||
|
queryWrapper.between(DataAudit::getAuditTime, param.getAuditTimeStart(), param.getAuditTimeEnd()); |
||||||
|
} |
||||||
|
if (queryWrapper.getExpression() == null || queryWrapper.getExpression().getSqlSegment().isEmpty()) { |
||||||
|
return Collections.emptyList(); |
||||||
|
} |
||||||
|
return dataAuditMapper.selectList(queryWrapper); |
||||||
|
} |
||||||
|
|
||||||
|
public IPage<DataAudit> pageQuery(DataAuditQueryParam param) { |
||||||
|
Page<DataAudit> page = new Page<>(param.getCurrent(), param.getSize()); |
||||||
|
LambdaQueryWrapper<DataAudit> qw = new LambdaQueryWrapper<>(); |
||||||
|
if (StrUtil.isNotBlank(param.getAuditType())) { |
||||||
|
qw.eq(DataAudit::getAuditType, param.getAuditType()); |
||||||
|
} |
||||||
|
if (StrUtil.isNotBlank(param.getProjectName())) { |
||||||
|
qw.like(DataAudit::getProjectName, param.getProjectName()); |
||||||
|
} |
||||||
|
if (param.getSecondLevelDeptId() != null) { |
||||||
|
qw.eq(DataAudit::getSecondLevelDeptId, param.getSecondLevelDeptId()); |
||||||
|
} |
||||||
|
if (param.getThirdLevelDeptId() != null) { |
||||||
|
qw.eq(DataAudit::getThirdLevelDeptId, param.getThirdLevelDeptId()); |
||||||
|
} |
||||||
|
if (param.getAuditTimeStart() != null && param.getAuditTimeEnd() != null) { |
||||||
|
qw.between(DataAudit::getAuditTime, param.getAuditTimeStart(), param.getAuditTimeEnd()); |
||||||
|
} |
||||||
|
qw.orderByDesc(DataAudit::getCreateTime); |
||||||
|
return dataAuditMapper.selectPage(page, qw); |
||||||
|
} |
||||||
|
|
||||||
|
public List<DataAudit> pageList(DataAuditQueryParam param) { |
||||||
|
return pageQuery(param).getRecords(); |
||||||
|
} |
||||||
|
|
||||||
|
public Boolean createDataAudit(List<DataAudit> dataAuditList) { |
||||||
|
innerBatchInsert(dataAuditMapper, dataAuditList, "添加失败!"); |
||||||
|
return Boolean.TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean deleteById(Long id) { |
||||||
|
if (id == null) { |
||||||
|
throw new ValidationException("id不能为空"); |
||||||
|
} |
||||||
|
return dataAuditMapper.deleteById(id) > 0; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean deleteByIds(List<Long> ids) { |
||||||
|
if (CollectionUtil.isEmpty(ids)) { |
||||||
|
throw new ValidationException("ids不能为空"); |
||||||
|
} |
||||||
|
return dataAuditMapper.deleteBatchIds(ids) > 0; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean updateById(DataAudit dataAudit) { |
||||||
|
if (dataAudit.getId() == null) { |
||||||
|
throw new ValidationException("id不能为空"); |
||||||
|
} |
||||||
|
dataAudit.setUpdateBy(UserContextHolder.getCurrentUser().getUserName()); |
||||||
|
dataAudit.setUpdateTime(LocalDateTime.now()); |
||||||
|
return dataAuditMapper.updateById(dataAudit) > 0; |
||||||
|
} |
||||||
|
|
||||||
|
public DataAudit getById(Long id) { |
||||||
|
if (id == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
return dataAuditMapper.selectById(id); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
package com.biutag.supervision.service.dataAudit; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.biutag.supervision.pojo.Result; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditImportDto; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditPageDTO; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.*; |
||||||
|
|
||||||
|
import java.io.InputStream; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface DataAuditService { |
||||||
|
|
||||||
|
Result<Page<DataAuditPageDTO>> getDataAuditPage(DataAuditPageRequest request); |
||||||
|
|
||||||
|
Result<Boolean> addDataAudit(DataAuditAddRequest request); |
||||||
|
|
||||||
|
Result<Boolean> updateDataAudit(DataAuditUpdateRequest request); |
||||||
|
|
||||||
|
Result<Boolean> delDataAudit(DataAuditDelRequest request); |
||||||
|
|
||||||
|
int importData(InputStream inputStream); |
||||||
|
} |
||||||
@ -0,0 +1,207 @@ |
|||||||
|
package com.biutag.supervision.service.dataAudit; |
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil; |
||||||
|
import cn.hutool.core.collection.CollectionUtil; |
||||||
|
import cn.hutool.core.util.ObjectUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import com.alibaba.excel.read.listener.ReadListener; |
||||||
|
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.biutag.supervision.common.UserContextHolder; |
||||||
|
import com.biutag.supervision.pojo.Result; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditImportDto; |
||||||
|
import com.biutag.supervision.pojo.dto.dataAudit.DataAuditPageDTO; |
||||||
|
import com.biutag.supervision.pojo.entity.DataAudit; |
||||||
|
import com.biutag.supervision.pojo.entity.SupDepart; |
||||||
|
import com.biutag.supervision.pojo.param.SupDepartQueryParam; |
||||||
|
import com.biutag.supervision.pojo.param.dataAudit.DataAuditQueryParam; |
||||||
|
import com.biutag.supervision.pojo.request.dataAudit.*; |
||||||
|
import com.biutag.supervision.repository.dataAudit.DataAuditResourceService; |
||||||
|
import com.biutag.supervision.repository.supdepart.SupDepartResourceService; |
||||||
|
import com.biutag.supervision.service.SupDepartService; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
|
||||||
|
import java.io.InputStream; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
@Service |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class DataAuditServiceImpl implements DataAuditService { |
||||||
|
|
||||||
|
private final DataAuditResourceService dataAuditResourceService; |
||||||
|
private final SupDepartService supDepartService; |
||||||
|
private final SupDepartResourceService supDepartResourceService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Result<Page<DataAuditPageDTO>> getDataAuditPage(DataAuditPageRequest request) { |
||||||
|
DataAuditQueryParam param = new DataAuditQueryParam(); |
||||||
|
param.setCurrent(request.getCurrent()); |
||||||
|
param.setSize(request.getSize()); |
||||||
|
param.setAuditType(request.getAuditType()); |
||||||
|
param.setProjectName(request.getProjectName()); |
||||||
|
param.setSecondLevelDeptId(request.getSecondLevelDeptId()); |
||||||
|
param.setThirdLevelDeptId(request.getThirdLevelDeptId()); |
||||||
|
|
||||||
|
if (CollectionUtil.size(request.getAuditTimeList()) == 2 |
||||||
|
&& request.getAuditTimeList().get(0) != null |
||||||
|
&& request.getAuditTimeList().get(1) != null) { |
||||||
|
param.setAuditTimeStart(request.getAuditTimeList().get(0)); |
||||||
|
param.setAuditTimeEnd(request.getAuditTimeList().get(1)); |
||||||
|
} else { |
||||||
|
param.setAuditTimeStart(request.getAuditTimeStart()); |
||||||
|
param.setAuditTimeEnd(request.getAuditTimeEnd()); |
||||||
|
} |
||||||
|
IPage<DataAudit> page = dataAuditResourceService.pageQuery(param); |
||||||
|
Page<DataAuditPageDTO> dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal()); |
||||||
|
dtoPage.setRecords(page.getRecords().stream() |
||||||
|
.map(entity -> BeanUtil.copyProperties(entity, DataAuditPageDTO.class)) |
||||||
|
.toList()); |
||||||
|
return Result.success(dtoPage); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
public Result<Boolean> addDataAudit(DataAuditAddRequest request) { |
||||||
|
if (ObjectUtil.isNotNull(request.getSecondLevelDeptId())){ |
||||||
|
SupDepart byId = supDepartService.getById(request.getSecondLevelDeptId()); |
||||||
|
if (byId.getLevel()!=2){ |
||||||
|
throw new IllegalArgumentException("请选择正确的二级单位"); |
||||||
|
} |
||||||
|
} |
||||||
|
if (ObjectUtil.isNotNull(request.getThirdLevelDeptId())){ |
||||||
|
SupDepart byId = supDepartService.getById(request.getThirdLevelDeptId()); |
||||||
|
if (byId.getLevel()!=3){ |
||||||
|
throw new IllegalArgumentException("请选择正确的三级单位"); |
||||||
|
} |
||||||
|
} |
||||||
|
DataAudit dataAudit = BeanUtil.copyProperties(request, DataAudit.class); |
||||||
|
dataAudit.setCreateBy(UserContextHolder.getCurrentUser().getUserName()); |
||||||
|
dataAudit.setCreateTime(LocalDateTime.now()); |
||||||
|
Boolean result = dataAuditResourceService.createDataAudit(Collections.singletonList(dataAudit)); |
||||||
|
return Result.success(result); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
public Result<Boolean> updateDataAudit(DataAuditUpdateRequest request) { |
||||||
|
if (ObjectUtil.isNotNull(request.getSecondLevelDeptId())){ |
||||||
|
SupDepart byId = supDepartService.getById(request.getSecondLevelDeptId()); |
||||||
|
if (byId.getLevel()!=2){ |
||||||
|
throw new IllegalArgumentException("请选择正确的二级单位"); |
||||||
|
} |
||||||
|
} |
||||||
|
if (ObjectUtil.isNotNull(request.getThirdLevelDeptId())){ |
||||||
|
SupDepart byId = supDepartService.getById(request.getThirdLevelDeptId()); |
||||||
|
if (byId.getLevel()!=3){ |
||||||
|
throw new IllegalArgumentException("请选择正确的三级单位"); |
||||||
|
} |
||||||
|
} |
||||||
|
DataAudit dataAudit = BeanUtil.copyProperties(request, DataAudit.class); |
||||||
|
dataAudit.setUpdateBy(UserContextHolder.getCurrentUser().getUserName()); |
||||||
|
dataAudit.setUpdateTime(LocalDateTime.now()); |
||||||
|
boolean result = dataAuditResourceService.updateById(dataAudit); |
||||||
|
return Result.success(result); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
public Result<Boolean> delDataAudit(DataAuditDelRequest request) { |
||||||
|
boolean result; |
||||||
|
if (request.getId() != null) { |
||||||
|
result = dataAuditResourceService.deleteById(request.getId()); |
||||||
|
} else if (CollectionUtil.isNotEmpty(request.getIds())) { |
||||||
|
result = dataAuditResourceService.deleteByIds(request.getIds()); |
||||||
|
} else { |
||||||
|
return Result.failed("ID不能为空"); |
||||||
|
} |
||||||
|
return Result.success(result); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
public int importData(InputStream inputStream) { |
||||||
|
List<DataAuditImportDto> list = new ArrayList<>(); |
||||||
|
EasyExcel.read(inputStream, DataAuditImportDto.class, new ReadListener<DataAuditImportDto>() { |
||||||
|
@Override |
||||||
|
public void invoke(DataAuditImportDto data, com.alibaba.excel.context.AnalysisContext analysisContext) { |
||||||
|
if (StrUtil.isNotBlank(data.getSecondLevelDeptName())) { |
||||||
|
SupDepartQueryParam supDepartQueryParam = new SupDepartQueryParam(); |
||||||
|
supDepartQueryParam.setShortName(data.getSecondLevelDeptName()); |
||||||
|
List<SupDepart> query = supDepartResourceService.query(supDepartQueryParam); |
||||||
|
if (CollectionUtil.isEmpty(query)){ |
||||||
|
throw new IllegalArgumentException("没有找到对应二级单位["+data.getProjectName()+"]"); |
||||||
|
} |
||||||
|
data.setSecondLevelDeptId(Long.valueOf(query.get(0).getId())); |
||||||
|
} |
||||||
|
if (StrUtil.isNotBlank(data.getThirdLevelDeptName())) { |
||||||
|
if (data.getSecondLevelDeptId() == null) { |
||||||
|
throw new IllegalArgumentException( |
||||||
|
String.format("项目[%s]的三级单位[%s]存在,但二级单位为空,无法确定归属", |
||||||
|
data.getProjectName(), data.getThirdLevelDeptName())); |
||||||
|
} |
||||||
|
SupDepartQueryParam param = new SupDepartQueryParam(); |
||||||
|
param.setShortName(data.getThirdLevelDeptName()); |
||||||
|
param.setPid(String.valueOf(data.getSecondLevelDeptId())); |
||||||
|
List<SupDepart> query = supDepartResourceService.query(param); |
||||||
|
if (CollectionUtil.isEmpty(query)) { |
||||||
|
throw new IllegalArgumentException( |
||||||
|
String.format("未找到三级单位[%s](父级ID:%s,项目:%s)", data.getThirdLevelDeptName(), data.getSecondLevelDeptId(), data.getProjectName())); |
||||||
|
} |
||||||
|
data.setThirdLevelDeptId(Long.valueOf(query.get(0).getId())); |
||||||
|
} |
||||||
|
list.add(data); |
||||||
|
} |
||||||
|
@Override |
||||||
|
public void doAfterAllAnalysed(com.alibaba.excel.context.AnalysisContext analysisContext) { |
||||||
|
} |
||||||
|
}).sheet().doRead(); |
||||||
|
|
||||||
|
return saveImportData(list); |
||||||
|
} |
||||||
|
|
||||||
|
private int saveImportData(List<DataAuditImportDto> dataList) { |
||||||
|
if (CollectionUtil.isEmpty(dataList)) { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
List<DataAudit> auditList = dataList.stream() |
||||||
|
.filter(dto -> dto.getProjectName() != null && !dto.getProjectName().isEmpty()) |
||||||
|
.map(dto -> { |
||||||
|
DataAudit audit = new DataAudit(); |
||||||
|
audit.setAuditType(dto.getAuditType()); |
||||||
|
audit.setProjectName(dto.getProjectName()); |
||||||
|
audit.setSecondLevelDeptId(dto.getSecondLevelDeptId()); |
||||||
|
audit.setSecondLevelDeptName(dto.getSecondLevelDeptName()); |
||||||
|
audit.setThirdLevelDeptId(dto.getThirdLevelDeptId()); |
||||||
|
audit.setThirdLevelDeptName(dto.getThirdLevelDeptName()); |
||||||
|
audit.setAuditTime(dto.getAuditTime()); |
||||||
|
audit.setAuditAmount(dto.getAuditAmount()); |
||||||
|
audit.setIssueAmount(dto.getIssueAmount()); |
||||||
|
audit.setCreateBy(UserContextHolder.getCurrentUser().getUserName()); |
||||||
|
audit.setCreateTime(LocalDateTime.now()); |
||||||
|
audit.setUpdateBy(UserContextHolder.getCurrentUser().getUserName()); |
||||||
|
audit.setUpdateTime(LocalDateTime.now()); |
||||||
|
return audit; |
||||||
|
}) |
||||||
|
.toList(); |
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(auditList)) { |
||||||
|
dataAuditResourceService.createDataAudit(auditList); |
||||||
|
} |
||||||
|
return auditList.size(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!DOCTYPE mapper |
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||||
|
<mapper namespace="com.biutag.supervision.mapper.DataAuditMapper"> |
||||||
|
|
||||||
|
<insert id="insertBatch" parameterType="java.util.List"> |
||||||
|
INSERT INTO data_audit ( |
||||||
|
audit_type, |
||||||
|
project_name, |
||||||
|
second_level_dept_id, |
||||||
|
second_level_dept_name, |
||||||
|
third_level_dept_id, |
||||||
|
third_level_dept_name, |
||||||
|
audit_time, |
||||||
|
audit_amount, |
||||||
|
issue_amount, |
||||||
|
update_by, |
||||||
|
update_time, |
||||||
|
create_by, |
||||||
|
create_time, |
||||||
|
gwf1, gwf2, gwf3, gwf4, gwf5 |
||||||
|
) |
||||||
|
VALUES |
||||||
|
<foreach collection="list" item="item" separator=","> |
||||||
|
( |
||||||
|
#{item.auditType}, |
||||||
|
#{item.projectName}, |
||||||
|
#{item.secondLevelDeptId}, |
||||||
|
#{item.secondLevelDeptName}, |
||||||
|
#{item.thirdLevelDeptId}, |
||||||
|
#{item.thirdLevelDeptName}, |
||||||
|
#{item.auditTime}, |
||||||
|
#{item.auditAmount}, |
||||||
|
#{item.issueAmount}, |
||||||
|
#{item.updateBy}, |
||||||
|
#{item.updateTime}, |
||||||
|
#{item.createBy}, |
||||||
|
#{item.createTime}, |
||||||
|
#{item.gwf1}, #{item.gwf2}, #{item.gwf3}, #{item.gwf4}, #{item.gwf5} |
||||||
|
) |
||||||
|
</foreach> |
||||||
|
</insert> |
||||||
|
|
||||||
|
</mapper> |
||||||
Loading…
Reference in new issue