Browse Source

优化合同审核

ai_300
zhouhaibin 2 weeks ago
parent
commit
deedb7b4be
  1. 57
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskChecklistController.java
  2. 105
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskTypeController.java
  3. 29
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskChecklist.java
  4. 63
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskType.java
  5. 37
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskChecklistBo.java
  6. 50
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskTypeBo.java
  7. 49
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskChecklistVo.java
  8. 72
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskTypeVo.java
  9. 24
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskChecklistMapper.java
  10. 15
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskTypeMapper.java
  11. 34
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskChecklistService.java
  12. 68
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskTypeService.java
  13. 180
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskChecklistServiceImpl.java
  14. 150
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskTypeServiceImpl.java
  15. 49
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskChecklistMapper.xml
  16. 23
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskTypeMapper.xml

57
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskChecklistController.java

@ -23,10 +23,10 @@ import org.dromara.productManagement.service.IContractualTaskChecklistService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 合同任务审查清单
* 合同任务审查要点表
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
@Validated
@RequiredArgsConstructor
@ -37,34 +37,27 @@ public class ContractualTaskChecklistController extends BaseController {
private final IContractualTaskChecklistService contractualTaskChecklistService;
/**
* 查询合同任务审查清单列表
* 查询合同任务审查要点表列表
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:list")
@GetMapping("/list")
public TableDataInfo<ContractualTaskChecklistVo> list(ContractualTaskChecklistBo bo, PageQuery pageQuery) {
return contractualTaskChecklistService.queryPageList(bo, pageQuery);
}
/**
* 查询合同任务审查清单列表
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:list")
@GetMapping("/queryList")
public R<List<ContractualTaskChecklistVo>> list(ContractualTaskChecklistBo bo) {
return R.ok(contractualTaskChecklistService.queryList(bo));
}
/**
* 导出合同任务审查清单列表
* 导出合同任务审查要点表列表
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:export")
@Log(title = "合同任务审查清单", businessType = BusinessType.EXPORT)
@Log(title = "合同任务审查要点表", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ContractualTaskChecklistBo bo, HttpServletResponse response) {
List<ContractualTaskChecklistVo> list = contractualTaskChecklistService.queryList(bo);
ExcelUtil.exportExcel(list, "合同任务审查清单", ContractualTaskChecklistVo.class, response);
ExcelUtil.exportExcel(list, "合同任务审查要点表", ContractualTaskChecklistVo.class, response);
}
/**
* 获取合同任务审查清单详细信息
* 获取合同任务审查要点表详细信息
*
* @param id 主键
*/
@ -74,49 +67,39 @@ public class ContractualTaskChecklistController extends BaseController {
@PathVariable Long id) {
return R.ok(contractualTaskChecklistService.queryById(id));
}
/**
* 获取合同任务审查清单详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:query")
@GetMapping("/queryByGroupId/{id}")
public R<List<ContractualTaskChecklistVo>> queryByGroupId(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(contractualTaskChecklistService.queryByGroupId(id));
}
/**
* 新增合同任务审查清单
* 新增合同任务审查要点表
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:add")
@Log(title = "合同任务审查清单", businessType = BusinessType.INSERT)
@Log(title = "合同任务审查要点表", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody List<ContractualTaskChecklistBo> boList) {
return toAjax(contractualTaskChecklistService.insertByBoList(boList));
public R<Void> add(@Validated(AddGroup.class) @RequestBody ContractualTaskChecklistBo bo) {
return toAjax(contractualTaskChecklistService.insertByBo(bo));
}
/**
* 修改合同任务审查清单
* 修改合同任务审查要点表
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:edit")
@Log(title = "合同任务审查清单", businessType = BusinessType.UPDATE)
@Log(title = "合同任务审查要点表", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody List<ContractualTaskChecklistBo> boList) {
return toAjax(contractualTaskChecklistService.updateByBoList(boList));
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ContractualTaskChecklistBo bo) {
return toAjax(contractualTaskChecklistService.updateByBo(bo));
}
/**
* 删除合同任务审查清单
* 删除合同任务审查要点表
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:ContractualTaskChecklist:remove")
@Log(title = "合同任务审查清单", businessType = BusinessType.DELETE)
@Log(title = "合同任务审查要点表", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
@PathVariable Long[] ids) {
return toAjax(contractualTaskChecklistService.deleteWithValidByIds(List.of(ids), true));
}
}

105
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTaskTypeController.java

@ -0,0 +1,105 @@
package org.dromara.productManagement.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.productManagement.domain.vo.ContractualTaskTypeVo;
import org.dromara.productManagement.domain.bo.ContractualTaskTypeBo;
import org.dromara.productManagement.service.IContractualTaskTypeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 合同类型
*
* @author Lion Li
* @date 2025-05-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/productManagement/ContractualTaskType")
public class ContractualTaskTypeController extends BaseController {
private final IContractualTaskTypeService contractualTaskTypeService;
/**
* 查询合同类型列表
*/
@SaCheckPermission("productManagement:ContractualTaskType:list")
@GetMapping("/list")
public R<List<ContractualTaskTypeVo>> list(ContractualTaskTypeBo bo) {
return R.ok(contractualTaskTypeService.queryList(bo));
}
/**
* 导出合同类型列表
*/
@SaCheckPermission("productManagement:ContractualTaskType:export")
@Log(title = "合同类型", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ContractualTaskTypeBo bo, HttpServletResponse response) {
List<ContractualTaskTypeVo> list = contractualTaskTypeService.queryList(bo);
ExcelUtil.exportExcel(list, "合同类型", ContractualTaskTypeVo.class, response);
}
/**
* 获取合同类型详细信息
*
* @param id 主键
*/
@SaCheckPermission("productManagement:ContractualTaskType:query")
@GetMapping("/{id}")
public R<ContractualTaskTypeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(contractualTaskTypeService.queryById(id));
}
/**
* 新增合同类型
*/
@SaCheckPermission("productManagement:ContractualTaskType:add")
@Log(title = "合同类型", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ContractualTaskTypeBo bo) {
return toAjax(contractualTaskTypeService.insertByBo(bo));
}
/**
* 修改合同类型
*/
@SaCheckPermission("productManagement:ContractualTaskType:edit")
@Log(title = "合同类型", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ContractualTaskTypeBo bo) {
return toAjax(contractualTaskTypeService.updateByBo(bo));
}
/**
* 删除合同类型
*
* @param ids 主键串
*/
@SaCheckPermission("productManagement:ContractualTaskType:remove")
@Log(title = "合同类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(contractualTaskTypeService.deleteWithValidByIds(List.of(ids), true));
}
}

29
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskChecklist.java

@ -8,10 +8,10 @@ import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 合同任务审查清单对象 contractual_task_checklist
* 合同任务审查要点表对象 contractual_task_checklist
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -28,32 +28,41 @@ public class ContractualTaskChecklist extends TenantEntity {
private Long id;
/**
* 清单名称
* 风险等级
*/
private String name;
private String riskLevel;
/**
* 清单项内容
* 要点名称
*/
private String checklistItem;
private String title;
/**
* 排序
*/
private Long sortOrder;
private String checklistItemDesc;
/**
*
*
*/
@TableLogic
private String delFlag;
/**
*
*
*/
@Version
private Long version;
private String groupId;
/**
* 合同类型id
*/
private String typeId;
/**
* 要点描述
*/
private String description;
}

63
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/ContractualTaskType.java

@ -0,0 +1,63 @@
package org.dromara.productManagement.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 合同类型对象 contractual_task_type
*
* @author Lion Li
* @date 2025-05-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("contractual_task_type")
public class ContractualTaskType extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 类型ID
*/
@TableId(value = "id")
private Long id;
/**
* 类型名称
*/
private String contractName;
/**
* 显示顺序
*/
private Long sort;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 删除标志0代表存在 1代表删除
*/
@TableLogic
private String delFlag;
/**
* 版本号
*/
@Version
private Long version;
/**
* 备注
*/
private String remark;
}

37
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskChecklistBo.java

@ -1,6 +1,5 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.productManagement.domain.ContractualTaskChecklist;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@ -8,12 +7,13 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.productManagement.domain.ContractualTaskChecklist;
/**
* 合同任务审查清单业务对象 contractual_task_checklist
* 合同任务审查要点表业务对象
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -23,21 +23,36 @@ public class ContractualTaskChecklistBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 清单名称
* 风险等级
*/
@NotBlank(message = "风险等级不能为空", groups = { AddGroup.class, EditGroup.class })
private String riskLevel;
/**
* 要点名称
*/
@NotBlank(message = "清单名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
@NotBlank(message = "要点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 清单项内容
* 排序
*/
@NotBlank(message = "清单项内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String checklistItem;
private Long sortOrder;
private String checklistItemDesc;
private String groupId;
/**
* 合同类型id
*/
@NotBlank(message = "合同类型id不能为空", groups = { AddGroup.class, EditGroup.class })
private String typeId;
/**
* 要点描述
*/
@NotBlank(message = "要点描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String description;
}

50
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/bo/ContractualTaskTypeBo.java

@ -0,0 +1,50 @@
package org.dromara.productManagement.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.productManagement.domain.ContractualTaskType;
/**
* 合同类型业务对象
*
* @author Lion Li
* @date 2025-05-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ContractualTaskType.class, reverseConvertGenerate = false)
public class ContractualTaskTypeBo extends BaseEntity {
/**
* 类型ID
*/
@NotNull(message = "类型ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 类型名称
*/
@NotBlank(message = "类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 显示顺序
*/
private Long sort;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 备注
*/
private String remark;
}

49
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskChecklistVo.java

@ -15,10 +15,10 @@ import java.util.Date;
/**
* 合同任务审查清单视图对象 contractual_task_checklist
* 合同任务审查要点表视图对象 contractual_task_checklist
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
@Data
@ExcelIgnoreUnannotated
@ -35,18 +35,45 @@ public class ContractualTaskChecklistVo implements Serializable {
private Long id;
/**
* 清单名称
* 风险等级
*/
@ExcelProperty(value = "清单名称")
private String name;
@ExcelProperty(value = "风险等级")
private String riskLevel;
/**
* 清单项内容
* 要点名称
*/
@ExcelProperty(value = "清单项内容")
private String checklistItem;
private String checklistItemDesc;
private int checklistItemNum;
private String groupId;
@ExcelProperty(value = "要点名称")
private String title;
/**
* 排序
*/
@ExcelProperty(value = "排序")
private Long sortOrder;
/**
* 合同类型id
*/
@ExcelProperty(value = "合同类型id")
private String typeId;
/**
* 要点描述
*/
@ExcelProperty(value = "要点描述")
private String description;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

72
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/ContractualTaskTypeVo.java

@ -0,0 +1,72 @@
package org.dromara.productManagement.domain.vo;
import org.dromara.productManagement.domain.ContractualTaskType;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 合同类型视图对象 contractual_task_type
*
* @author Lion Li
* @date 2025-05-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ContractualTaskType.class)
public class ContractualTaskTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 类型ID
*/
@ExcelProperty(value = "类型ID")
private Long id;
/**
* 类型名称
*/
@ExcelProperty(value = "类型名称")
private String contractName;
/**
* 显示顺序
*/
@ExcelProperty(value = "显示顺序")
private Long sort;
/**
* 状态0正常 1停用
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
}

24
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskChecklistMapper.java

@ -3,29 +3,21 @@ package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.ContractualTaskChecklist;
import org.dromara.productManagement.domain.vo.ContractualTaskChecklistVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 合同任务审查清单Mapper接口
* 合同任务审查要点表Mapper接口
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
public interface ContractualTaskChecklistMapper extends BaseMapperPlus<ContractualTaskChecklist, ContractualTaskChecklistVo> {
/**
* 按name和groupId分组查询
* 根据合同类型ID查询审查要点数量
*
* @param typeId 合同类型ID
* @return 审查要点数量
*/
Page<ContractualTaskChecklistVo> selectGroupPage(Page<ContractualTaskChecklistVo> page, String name);
/**
* 真实删除数据
*/
int realDelete(String groupId);
/**
* 按name和groupId分组查询列表
*/
List<ContractualTaskChecklistVo> selectGroupList(String name);
long selectCountByTypeId(@Param("typeId") Long typeId);
}

15
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/ContractualTaskTypeMapper.java

@ -0,0 +1,15 @@
package org.dromara.productManagement.mapper;
import org.dromara.productManagement.domain.ContractualTaskType;
import org.dromara.productManagement.domain.vo.ContractualTaskTypeVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 合同类型Mapper接口
*
* @author Lion Li
* @date 2025-05-23
*/
public interface ContractualTaskTypeMapper extends BaseMapperPlus<ContractualTaskType, ContractualTaskTypeVo> {
}

34
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskChecklistService.java

@ -9,62 +9,60 @@ import java.util.Collection;
import java.util.List;
/**
* 合同任务审查清单Service接口
* 合同任务审查要点表Service接口
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
public interface IContractualTaskChecklistService {
/**
* 查询合同任务审查清单
* 查询合同任务审查要点表
*
* @param id 主键
* @return 合同任务审查清单
* @return 合同任务审查要点表
*/
ContractualTaskChecklistVo queryById(Long id);
/**
* 分页查询合同任务审查清单列表
* 分页查询合同任务审查要点表列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同任务审查清单分页列表
* @return 合同任务审查要点表分页列表
*/
TableDataInfo<ContractualTaskChecklistVo> queryPageList(ContractualTaskChecklistBo bo, PageQuery pageQuery);
/**
* 查询符合条件的合同任务审查清单列表
* 查询符合条件的合同任务审查要点表列表
*
* @param bo 查询条件
* @return 合同任务审查清单列表
* @return 合同任务审查要点表列表
*/
List<ContractualTaskChecklistVo> queryList(ContractualTaskChecklistBo bo);
/**
* 批量新增合同任务审查清单
* 新增合同任务审查要点表
*
* @param boList 合同任务审查清单列
* @param bo 合同任务审查要点
* @return 是否新增成功
*/
Boolean insertByBoList(List<ContractualTaskChecklistBo> boList);
Boolean insertByBo(ContractualTaskChecklistBo bo);
/**
* 批量修改合同任务审查清单
* 修改合同任务审查要点表
*
* @param boList 合同任务审查清单列
* @param bo 合同任务审查要点
* @return 是否修改成功
*/
Boolean updateByBoList(List<ContractualTaskChecklistBo> boList);
Boolean updateByBo(ContractualTaskChecklistBo bo);
/**
* 校验并批量删除合同任务审查清单信息
* 校验并批量删除合同任务审查要点表信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
List<ContractualTaskChecklistVo> queryByGroupId(String id);
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

68
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTaskTypeService.java

@ -0,0 +1,68 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.vo.ContractualTaskTypeVo;
import org.dromara.productManagement.domain.bo.ContractualTaskTypeBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 合同类型Service接口
*
* @author Lion Li
* @date 2025-05-23
*/
public interface IContractualTaskTypeService {
/**
* 查询合同类型
*
* @param id 主键
* @return 合同类型
*/
ContractualTaskTypeVo queryById(Long id);
/**
* 分页查询合同类型列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同类型分页列表
*/
TableDataInfo<ContractualTaskTypeVo> queryPageList(ContractualTaskTypeBo bo, PageQuery pageQuery);
/**
* 查询符合条件的合同类型列表
*
* @param bo 查询条件
* @return 合同类型列表
*/
List<ContractualTaskTypeVo> queryList(ContractualTaskTypeBo bo);
/**
* 新增合同类型
*
* @param bo 合同类型
* @return 是否新增成功
*/
Boolean insertByBo(ContractualTaskTypeBo bo);
/**
* 修改合同类型
*
* @param bo 合同类型
* @return 是否修改成功
*/
Boolean updateByBo(ContractualTaskTypeBo bo);
/**
* 校验并批量删除合同类型信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

180
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskChecklistServiceImpl.java

@ -1,34 +1,29 @@
package org.dromara.productManagement.service.impl;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import cn.dev33.satoken.stp.StpUtil;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.ContractualTaskChecklistBo;
import org.dromara.productManagement.domain.vo.ContractualTaskChecklistVo;
import org.dromara.productManagement.domain.ContractualTaskChecklist;
import org.dromara.productManagement.mapper.ContractualTaskChecklistMapper;
import org.dromara.productManagement.service.IContractualTaskChecklistService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.UUID;
/**
* 合同任务审查清单Service业务层处理
* 合同任务审查要点表Service业务层处理
*
* @author Lion Li
* @date 2025-05-16
* @date 2025-05-23
*/
@RequiredArgsConstructor
@Service
@ -37,146 +32,111 @@ public class ContractualTaskChecklistServiceImpl implements IContractualTaskChec
private final ContractualTaskChecklistMapper baseMapper;
/**
* 查询合同任务审查清单
* 查询合同任务审查要点表
*
* @param id 主键
* @return 合同任务审查清单
* @param id 合同任务审查要点表主键
* @return 合同任务审查要点表
*/
@Override
public ContractualTaskChecklistVo queryById(Long id){
public ContractualTaskChecklistVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询合同任务审查清单列表
* 查询合同任务审查要点表列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同任务审查清单分页列表
* @param bo 合同任务审查要点表
* @return 合同任务审查要点表
*/
@Override
public TableDataInfo<ContractualTaskChecklistVo> queryPageList(ContractualTaskChecklistBo bo, PageQuery pageQuery) {
Page<ContractualTaskChecklistVo> page = baseMapper.selectGroupPage(pageQuery.build(), bo.getName());
return TableDataInfo.build(page);
LambdaQueryWrapper<ContractualTaskChecklist> lqw = buildQueryWrapper(bo);
Page<ContractualTaskChecklistVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的合同任务审查清单列表
* 查询合同任务审查要点表列表
*
* @param bo 查询条件
* @return 合同任务审查清单列
* @param bo 合同任务审查要点表
* @return 合同任务审查要点
*/
@Override
public List<ContractualTaskChecklistVo> queryList(ContractualTaskChecklistBo bo) {
return baseMapper.selectGroupList(bo.getName());
LambdaQueryWrapper<ContractualTaskChecklist> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ContractualTaskChecklist> buildQueryWrapper(ContractualTaskChecklistBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ContractualTaskChecklist> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getName()), ContractualTaskChecklist::getName, bo.getName());
Long userId = LoginHelper.getUserId();
if(!StpUtil.hasRole("superadmin")){
lqw.eq(userId != null, ContractualTaskChecklist::getCreateBy, userId);
}
lqw.eq(StringUtils.isNotBlank(bo.getRiskLevel()), ContractualTaskChecklist::getRiskLevel, bo.getRiskLevel());
lqw.like(StringUtils.isNotBlank(bo.getTitle()), ContractualTaskChecklist::getTitle, bo.getTitle());
lqw.eq(bo.getSortOrder() != null, ContractualTaskChecklist::getSortOrder, bo.getSortOrder());
lqw.eq(StringUtils.isNotBlank(bo.getTypeId()), ContractualTaskChecklist::getTypeId, bo.getTypeId());
lqw.like(StringUtils.isNotBlank(bo.getDescription()), ContractualTaskChecklist::getDescription, bo.getDescription());
lqw.orderByAsc(ContractualTaskChecklist::getSortOrder);
return lqw;
}
// /**
// * 新增合同任务审查清单
// *
// * @param bo 合同任务审查清单
// * @return 是否新增成功
// */
// @Override
// public Boolean insertByBo(ContractualTaskChecklistBo bo) {
// ContractualTaskChecklist add = MapstructUtils.convert(bo, ContractualTaskChecklist.class);
// validEntityBeforeSave(add);
// boolean flag = baseMapper.insert(add) > 0;
// if (flag) {
// bo.setId(add.getId());
// }
// return flag;
// }
// /**
// * 修改合同任务审查清单
// *
// * @param bo 合同任务审查清单
// * @return 是否修改成功
// */
// @Override
// public Boolean updateByBo(ContractualTaskChecklistBo bo) {
// ContractualTaskChecklist update = MapstructUtils.convert(bo, ContractualTaskChecklist.class);
// validEntityBeforeSave(update);
// return baseMapper.updateById(update) > 0;
// }
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ContractualTaskChecklist entity){
//TODO 做一些数据校验,如唯一约束
if(StringUtils.isBlank(entity.getName())){
throw new ServiceException("清单名称不能为空");
}
if(StringUtils.isBlank(entity.getChecklistItem())){
throw new ServiceException("清单项不能为空");
}
//name 不能重复
LambdaQueryWrapper<ContractualTaskChecklist> lqw = Wrappers.lambdaQuery();
lqw.eq(ContractualTaskChecklist::getName, entity.getName());
List<ContractualTaskChecklist> list = baseMapper.selectList(lqw);
if(list.size() > 0){
throw new ServiceException("清单名称不能重复");
}
}
/**
* 批量新增合同任务审查清单
* 新增合同任务审查要点表
*
* @param bo 合同任务审查要点表
* @return 结果
*/
@Override
public Boolean insertByBoList(List<ContractualTaskChecklistBo> boList) {
List<ContractualTaskChecklist> list = MapstructUtils.convert(boList, ContractualTaskChecklist.class);
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
validEntityBeforeSave(list.get(0));
for (ContractualTaskChecklist contractualTaskChecklist : list) {
contractualTaskChecklist.setGroupId(uuid);
baseMapper.insert(contractualTaskChecklist);
public Boolean insertByBo(ContractualTaskChecklistBo bo) {
ContractualTaskChecklist add = MapstructUtils.convert(bo, ContractualTaskChecklist.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return true;
return flag;
}
/**
* 批量修改合同任务审查清单
* 修改合同任务审查要点表
*
* @param bo 合同任务审查要点表
* @return 结果
*/
@Override
public Boolean updateByBoList(List<ContractualTaskChecklistBo> boList) {
baseMapper.realDelete(boList.get(0).getGroupId());
insertByBoList(boList);
return true;
public Boolean updateByBo(ContractualTaskChecklistBo bo) {
ContractualTaskChecklist update = MapstructUtils.convert(bo, ContractualTaskChecklist.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 校验并批量删除合同任务审查清单信息
* 保存前的数据校验
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
* @param entity 实体类数据
*/
@Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
private void validEntityBeforeSave(ContractualTaskChecklist entity) {
// 校验审查要点名称是否重复
if (StringUtils.isNotEmpty(entity.getTitle()) && StringUtils.isNotEmpty(entity.getTypeId())) {
LambdaQueryWrapper<ContractualTaskChecklist> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(ContractualTaskChecklist::getTitle, entity.getTitle())
.eq(ContractualTaskChecklist::getTypeId, entity.getTypeId());
if (entity.getId() != null) {
queryWrapper.ne(ContractualTaskChecklist::getId, entity.getId());
}
if (baseMapper.selectCount(queryWrapper) > 0) {
throw new RuntimeException("该合同类型下已存在相同名称的审查要点");
}
}
baseMapper.realDelete(ids.iterator().next());
return true;
}
/**
* 批量删除合同任务审查要点表
*
* @param ids 需要删除的合同任务审查要点表主键
* @return 结果
*/
@Override
public List<ContractualTaskChecklistVo> queryByGroupId(String id) {
LambdaQueryWrapper<ContractualTaskChecklist> lqw = Wrappers.lambdaQuery();
lqw.eq(ContractualTaskChecklist::getGroupId, id);
return baseMapper.selectVoList(lqw);
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}

150
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTaskTypeServiceImpl.java

@ -0,0 +1,150 @@
package org.dromara.productManagement.service.impl;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.dromara.productManagement.domain.bo.ContractualTaskTypeBo;
import org.dromara.productManagement.domain.vo.ContractualTaskTypeVo;
import org.dromara.productManagement.domain.ContractualTaskType;
import org.dromara.productManagement.mapper.ContractualTaskTypeMapper;
import org.dromara.productManagement.service.IContractualTaskTypeService;
import org.dromara.productManagement.mapper.ContractualTaskChecklistMapper;
/**
* 合同类型Service业务层处理
*
* @author Lion Li
* @date 2025-05-23
*/
@RequiredArgsConstructor
@Service
public class ContractualTaskTypeServiceImpl implements IContractualTaskTypeService {
private final ContractualTaskTypeMapper baseMapper;
private final ContractualTaskChecklistMapper checklistMapper;
/**
* 查询合同类型
*
* @param id 合同类型主键
* @return 合同类型
*/
@Override
public ContractualTaskTypeVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 查询合同类型列表
*
* @param bo 合同类型
* @return 合同类型
*/
@Override
public TableDataInfo<ContractualTaskTypeVo> queryPageList(ContractualTaskTypeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ContractualTaskType> lqw = buildQueryWrapper(bo);
Page<ContractualTaskTypeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询合同类型列表
*
* @param bo 合同类型
* @return 合同类型
*/
@Override
public List<ContractualTaskTypeVo> queryList(ContractualTaskTypeBo bo) {
LambdaQueryWrapper<ContractualTaskType> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ContractualTaskType> buildQueryWrapper(ContractualTaskTypeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ContractualTaskType> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getContractName()), ContractualTaskType::getContractName, bo.getContractName());
lqw.eq(bo.getSort() != null, ContractualTaskType::getSort, bo.getSort());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ContractualTaskType::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增合同类型
*
* @param bo 合同类型
* @return 结果
*/
@Override
public Boolean insertByBo(ContractualTaskTypeBo bo) {
ContractualTaskType add = MapstructUtils.convert(bo, ContractualTaskType.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改合同类型
*
* @param bo 合同类型
* @return 结果
*/
@Override
public Boolean updateByBo(ContractualTaskTypeBo bo) {
ContractualTaskType update = MapstructUtils.convert(bo, ContractualTaskType.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*
* @param entity 实体类数据
*/
private void validEntityBeforeSave(ContractualTaskType entity) {
// 校验合同类型名称是否重复
if (StringUtils.isNotEmpty(entity.getContractName())) {
LambdaQueryWrapper<ContractualTaskType> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(ContractualTaskType::getContractName, entity.getContractName());
if (entity.getId() != null) {
queryWrapper.ne(ContractualTaskType::getId, entity.getId());
}
if (baseMapper.selectCount(queryWrapper) > 0) {
throw new RuntimeException("合同类型名称已存在");
}
}
}
/**
* 批量删除合同类型
*
* @param ids 需要删除的合同类型主键
* @return 结果
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
// 校验是否存在关联的合同审查要点
for (Long id : ids) {
long count = checklistMapper.selectCountByTypeId(id);
if (count > 0) {
ContractualTaskTypeVo vo = baseMapper.selectVoById(id);
throw new RuntimeException("合同类型[" + vo.getContractName() + "]下存在审查要点,不能删除");
}
}
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

49
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskChecklistMapper.xml

@ -4,36 +4,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.ContractualTaskChecklistMapper">
<select id="selectGroupPage" resultType="org.dromara.productManagement.domain.vo.ContractualTaskChecklistVo">
SELECT
name,
group_id as groupId,
COUNT(*) as checklistItemNum
FROM contractual_task_checklist
<where>
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
GROUP BY name, group_id
</select>
<resultMap type="org.dromara.productManagement.domain.ContractualTaskChecklist" id="ContractualTaskChecklistResult">
<id property="id" column="id" />
<result property="riskLevel" column="risk_level" />
<result property="title" column="title" />
<result property="sortOrder" column="sort_order" />
<result property="delFlag" column="del_flag" />
<result property="version" column="version" />
<result property="tenantId" column="tenant_id" />
<result property="createDept" column="create_dept" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="typeId" column="type_id" />
<result property="description" column="description" />
</resultMap>
<select id="selectGroupList" resultType="org.dromara.productManagement.domain.vo.ContractualTaskChecklistVo">
SELECT
name,
group_id as groupId,
COUNT(*) as checklistItemNum
FROM contractual_task_checklist
<where>
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
GROUP BY name, group_id
<!-- 查询指定合同类型下的审查要点数量 -->
<select id="selectCountByTypeId" resultType="long">
select count(1) from contractual_task_checklist
where del_flag = '0' and type_id = #{typeId}
</select>
<delete id="realDelete">
DELETE FROM contractual_task_checklist WHERE group_id = #{groupId}
</delete>
</mapper>

23
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/ContractualTaskTypeMapper.xml

@ -0,0 +1,23 @@
<?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="org.dromara.productManagement.mapper.ContractualTaskTypeMapper">
<resultMap type="org.dromara.productManagement.domain.ContractualTaskType" id="ContractualTaskTypeResult">
<id property="id" column="id" />
<result property="contractName" column="contract_name" />
<result property="sort" column="sort" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" />
<result property="version" column="version" />
<result property="tenantId" column="tenant_id" />
<result property="createDept" column="create_dept" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
</mapper>
Loading…
Cancel
Save