feat(任务转交): 模块添加

This commit is contained in:
yjz
2023-12-20 17:08:50 +08:00
parent fdb486d05a
commit df77680293
8 changed files with 557 additions and 0 deletions
@@ -0,0 +1,48 @@
package com.jero.modules.laws.tasktransfer.common;
/**
* @ClassName: LawsTaskTransferCommon
* @Description:
* @Author: yjz
* @Date: 2023-12-20 14:44
* @Version: 1.0
**/
public class LawsTaskTransferCommon {
private LawsTaskTransferCommon(){
}
/**
* 基础库数据类型:1:企标计划 2:标准拆分 3:新旧拆分单比对 4:自定义比对
*/
public static final String BASE_DB_TYPE_1 = "1";
/**
* 基础库数据类型:1:企标计划 2:标准拆分 3:新旧拆分单比对 4:自定义比对
*/
public static final String BASE_DB_TYPE_2 = "2";
/**
* 基础库数据类型:1:企标计划 2:标准拆分 3:新旧拆分单比对 4:自定义比对
*/
public static final String BASE_DB_TYPE_3 = "3";
/**
* 基础库数据类型:1:企标计划 2:标准拆分 3:新旧拆分单比对 4:自定义比对
*/
public static final String BASE_DB_TYPE_4 = "4";
/**
* 基础库数据角色:1:主起草人 2:编辑人 3:创建人 4:操作人
*/
public static final String BASE_DB_ROLE_1 = "1";
/**
* 基础库数据角色:1:主起草人 2:编辑人 3:创建人 4:操作人
*/
public static final String BASE_DB_ROLE_2 = "2";
/**
* 基础库数据角色:1:主起草人 2:编辑人 3:创建人 4:操作人
*/
public static final String BASE_DB_ROLE_3 = "3";
/**
* 基础库数据角色:1:主起草人 2:编辑人 3:创建人 4:操作人
*/
public static final String BASE_DB_ROLE_4 = "4";
}
@@ -0,0 +1,88 @@
package com.jero.modules.laws.tasktransfer.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.tasktransfer.entity.LawsBaseDB;
import com.jero.modules.laws.tasktransfer.entity.LawsProcessDb;
import com.jero.modules.laws.tasktransfer.service.ILawsTaskTransferService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName: LawsTaskTransferController
* @Description:
* @Author: yjz
* @Date: 2023-12-20 13:42
* @Version: 1.0
**/
@Api(tags="任务转交")
@RestController
@RequestMapping("/laws/taskTransfer")
@Slf4j
public class LawsTaskTransferController {
private final ILawsTaskTransferService lawsTaskTransferService;
public LawsTaskTransferController(ILawsTaskTransferService lawsTaskTransferService) {
this.lawsTaskTransferService = lawsTaskTransferService;
}
/**
* 任务转交-基础库信息分页查询
* @return
*/
@AutoLog(value = "任务转交-基础库信息分页查询")
@ApiOperation(value="任务转交-基础库信息分页查询", notes="任务转交-基础库信息分页查询")
@GetMapping(value = "/queryBaseDB")
public Result<IPage<LawsBaseDB>> queryBaseDB(LawsBaseDB lawsBaseDB,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
return Result.OK(lawsTaskTransferService.queryBaseDB(lawsBaseDB, pageNo, pageSize));
}
/**
* 任务转交-基础库信息转交
* @return
*/
@AutoLog(value = "任务转交-基础库信息转交")
@ApiOperation(value="任务转交-基础库信息转交", notes="任务转交-基础库信息转交")
@PostMapping(value = "/baseDBTransfer")
public Result<T> baseDBTransfer(@RequestBody List<LawsBaseDB> lawsBaseDBList) {
lawsTaskTransferService.baseDBTransfer(lawsBaseDBList);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 任务转交-基础库信息分页查询
* @return
*/
@AutoLog(value = "任务转交-流程信息分页查询")
@ApiOperation(value="任务转交-流程信息分页查询", notes="任务转交-流程信息分页查询")
@GetMapping(value = "/queryProcessDB")
public Result<IPage<LawsProcessDb>> queryProcessDB(LawsProcessDb lawsProcessDb,
@ApiParam("当前页") @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@ApiParam("每页条数") @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
return Result.OK(lawsTaskTransferService.queryProcessDB(lawsProcessDb, pageNo, pageSize));
}
/**
* 任务转交-流程信息转交
* @return
*/
@AutoLog(value = "任务转交-流程信息转交")
@ApiOperation(value="任务转交-流程信息转交", notes="任务转交-流程信息转交")
@PostMapping(value = "/processDBTransfer")
public Result<IPage<LawsProcessDb>> processDBTransfer(@RequestBody List<LawsProcessDb> lawsProcessDbList) {
lawsTaskTransferService.processDBTransfer(lawsProcessDbList);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -0,0 +1,40 @@
package com.jero.modules.laws.tasktransfer.entity;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: LawsBaseDB
* @Description:
* @Author: yjz
* @Date: 2023-12-20 14:00
* @Version: 1.0
**/
@Data
public class LawsBaseDB {
/**主键ID*/
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**类型*/
@ApiModelProperty(value = "类型:1:企标计划 2:标准拆分 3:新旧拆分单比对 4:自定义比对")
@Dict(dicCode = "task_transfer_type")
private String type;
/**标准号*/
@ApiModelProperty(value = "标准号")
private String standardNo;
/**标准名称*/
@ApiModelProperty(value = "标准名称")
private String standardName;
/**角色*/
@ApiModelProperty(value = "角色: 1:主起草人 2:编辑人 3:创建人 4:操作人")
@Dict(dicCode = "task_transfer_role")
private String role;
/**用户*/
@ApiModelProperty(value = "用户")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String user;
/**转交人*/
@ApiModelProperty(value = "转交人")
private String transferUser;
}
@@ -0,0 +1,45 @@
package com.jero.modules.laws.tasktransfer.entity;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: LawsProcessDb
* @Description:
* @Author: yjz
* @Date: 2023-12-20 16:06
* @Version: 1.0
**/
@Data
public class LawsProcessDb {
/**主键ID*/
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**任务id*/
@ApiModelProperty(value="任务id")
private String taskId;
/**流程编号*/
@ApiModelProperty(value="流程编号")
private String prcNum;
/**流程类型*/
@Dict(dicCode = "prc_type")
@ApiModelProperty(value="流程类型")
private Integer prcType;
/**流程名称*/
@ApiModelProperty(value="流程名称")
private String prcName;
/**任务id*/
@ApiModelProperty(value="节点名称")
private String taskName;
/**用户*/
@ApiModelProperty(value="用户")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
private String user;
/**转交人*/
@ApiModelProperty(value = "转交人")
private String transferUser;
/**状态*/
@ApiModelProperty(value="状态: true:可转交,false:不可转交")
private boolean state;
}
@@ -0,0 +1,33 @@
package com.jero.modules.laws.tasktransfer.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.jero.modules.laws.tasktransfer.entity.LawsBaseDB;
import com.jero.modules.laws.tasktransfer.entity.LawsProcessDb;
import org.apache.ibatis.annotations.Param;
/**
* @ClassName: LawsTaskTransferMapper
* @Description:
* @Author: yjz
* @Date: 2023-12-20 13:44
* @Version: 1.0
**/
public interface LawsTaskTransferMapper {
/**
* 任务转交-基础库信息分页查询
* @param queryWrapper
* @param objectPage
* @return
*/
IPage<LawsBaseDB> queryBaseDB(@Param(Constants.WRAPPER) QueryWrapper<LawsBaseDB> queryWrapper, IPage<LawsBaseDB> objectPage);
/**
* 任务转交-流程信息分页查询
* @param queryWrapper
* @param objectPage
* @return
*/
IPage<LawsProcessDb> queryProcessDB(@Param(Constants.WRAPPER) QueryWrapper<LawsProcessDb> queryWrapper, IPage<LawsProcessDb> objectPage);
}
@@ -0,0 +1,98 @@
<?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.jero.modules.laws.tasktransfer.mapper.LawsTaskTransferMapper">
<select id="queryBaseDB" resultType="com.jero.modules.laws.tasktransfer.entity.LawsBaseDB">
SELECT *
FROM (SELECT id,
new_en_standard_no AS standard_no,
new_en_standard_name AS standard_name,
'1' AS type,
'1' AS role,
main_drafting_user user,
create_time AS create_time
FROM laws_enterprise_standard_plan
WHERE del_flag = 0
UNION ALL
SELECT i.id AS id,
serial_number AS standard_no,
(CASE
WHEN LENGTH(s.standard_name) > 0 THEN s.standard_name
WHEN LENGTH(d.standard_name) > 0 THEN d.standard_name
ELSE title END) AS standard_name,
'2' AS type,
'2' AS role,
(IF(i.is_asms_import = '1' AND u.id IS NULL, i.author, u.id)) AS user,
i.create_time AS create_time
FROM sar_file_split_info i
LEFT JOIN laws_domestic_standard s ON i.standard_id = s.id AND s.del_flag = 0
LEFT JOIN laws_enterprise_standard d ON i.standard_id = d.id AND d.del_flag = 0
LEFT JOIN sys_user u ON i.author = u.id AND u.del_flag = 0
WHERE publish_before_id IS NULL
AND split_status = '1'
AND i.del_flag = 0
UNION ALL
SELECT i.id AS id,
serial_number_right AS standard_no,
(CASE
WHEN LENGTH(s.standard_name) > 0 THEN s.standard_name
WHEN LENGTH(d.standard_name) > 0 THEN d.standard_name
ELSE title_right END) AS standard_name,
'3' AS type,
'3' AS role,
u.id AS user,
i.create_time AS create_time
FROM sar_file_compare_info i
LEFT JOIN laws_domestic_standard s ON i.serial_number_right = s.id AND s.del_flag = 0
LEFT JOIN laws_enterprise_standard d ON i.serial_number_right = d.id AND d.del_flag = 0
LEFT JOIN sys_user u ON i.create_by = u.username AND u.del_flag = 0
WHERE release_state = 'draft'
UNION ALL
SELECT i.id AS id,
GROUP_CONCAT(s.standard_number ORDER BY s.create_time) AS standard_no,
GROUP_CONCAT(s.standard_name ORDER BY s.create_time) AS standard_name,
'4' AS type,
'4' AS role,
u.id AS user,
i.create_time AS create_time
FROM laws_custom_compare_info i
LEFT JOIN (SELECT l.info_id,
l.standard_number,
l.create_time,
l.del_flag,
(CASE
WHEN LENGTH(s.standard_name) > 0 THEN s.standard_name
WHEN LENGTH(d.standard_name) > 0 THEN d.standard_name
WHEN LENGTH(o.standard_name) > 0 THEN o.standard_name END) AS standard_name
FROM laws_custom_compare_info_standard l
LEFT JOIN laws_domestic_standard s ON l.standard_id = s.id AND s.del_flag = 0
LEFT JOIN laws_enterprise_standard d ON l.standard_id = d.id AND d.del_flag = 0
LEFT JOIN laws_overseas_standard o ON l.standard_id = o.id AND o.del_flag = 0) s
ON i.id = s.info_id AND s.del_flag = 0
LEFT JOIN sys_user u ON i.create_by = u.username AND u.del_flag = 0
WHERE i.del_flag = 0
GROUP BY i.id) t LEFT JOIN sys_user u ON t.user = u.id
${ew.customSqlSegment}
</select>
<select id="queryProcessDB" resultType="com.jero.modules.laws.tasktransfer.entity.LawsProcessDb">
SELECT pa.id,
task_id,
task_id,
prc_num,
prc_type,
pa.prc_name,
task_name,
user_id AS user,
(IF(prc_status IN (2, 3) OR finish_flag = 2, FALSE, TRUE)) state
FROM process_all pa
LEFT JOIN process_approval_record par ON pa.process_instance_id = par.process_instance_id
LEFT JOIN sys_user u ON user_id = u.id
${ew.customSqlSegment}
</select>
</mapper>
@@ -0,0 +1,46 @@
package com.jero.modules.laws.tasktransfer.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.tasktransfer.entity.LawsBaseDB;
import com.jero.modules.laws.tasktransfer.entity.LawsProcessDb;
import java.util.List;
/**
* @ClassName: LawsTaskTransfer
* @Description:
* @Author: yjz
* @Date: 2023-12-20 13:43
* @Version: 1.0
**/
public interface ILawsTaskTransferService {
/**
* 任务转交-基础库信息分页查询
* @param lawsBaseDB
* @param pageNo
* @param pageSize
* @return
*/
IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize);
/**
* 任务转交-基础库信息转交
* @param lawsBaseDBList
*/
void baseDBTransfer(List<LawsBaseDB> lawsBaseDBList);
/**
* 任务转交-流程信息分页查询
* @param lawsProcessDb
* @param pageNo
* @param pageSize
* @return
*/
IPage<LawsProcessDb> queryProcessDB(LawsProcessDb lawsProcessDb, Integer pageNo, Integer pageSize);
/**
* 任务转交-流程信息转交
* @param lawsProcessDbList
*/
void processDBTransfer(List<LawsProcessDb> lawsProcessDbList);
}
@@ -0,0 +1,159 @@
package com.jero.modules.laws.tasktransfer.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.compare.entity.SarFileCompareInfo;
import com.jero.modules.compare.service.ISarFileCompareInfoService;
import com.jero.modules.laws.customcompare.entity.LawsCustomCompareInfo;
import com.jero.modules.laws.customcompare.service.ILawsCustomCompareInfoService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.tasktransfer.common.LawsTaskTransferCommon;
import com.jero.modules.laws.tasktransfer.entity.LawsBaseDB;
import com.jero.modules.laws.tasktransfer.entity.LawsProcessDb;
import com.jero.modules.laws.tasktransfer.mapper.LawsTaskTransferMapper;
import com.jero.modules.laws.tasktransfer.service.ILawsTaskTransferService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @ClassName: LawsTaskTransferServiceImpl
* @Description:
* @Author: yjz
* @Date: 2023-12-20 13:44
* @Version: 1.0
**/
@Service
@Transactional
public class LawsTaskTransferServiceImpl implements ILawsTaskTransferService {
private final LawsTaskTransferMapper lawsTaskTransferMapper;
private final EnterpriseStandardPlanService enterpriseStandardPlanService;
private final ISarFileSplitInfoService sarFileSplitInfoService;
private final ISarFileCompareInfoService sarFileCompareInfoService;
private final ILawsCustomCompareInfoService lawsCustomCompareInfoService;
private final ISysUserService sysUserService;
private final IProcessHandleService processHandleService;
public LawsTaskTransferServiceImpl(LawsTaskTransferMapper lawsTaskTransferMapper,
EnterpriseStandardPlanService enterpriseStandardPlanService,
ISarFileSplitInfoService sarFileSplitInfoService,
ISarFileCompareInfoService sarFileCompareInfoService,
ILawsCustomCompareInfoService lawsCustomCompareInfoService,
ISysUserService sysUserService,
IProcessHandleService processHandleService) {
this.lawsTaskTransferMapper = lawsTaskTransferMapper;
this.enterpriseStandardPlanService = enterpriseStandardPlanService;
this.sarFileSplitInfoService = sarFileSplitInfoService;
this.sarFileCompareInfoService = sarFileCompareInfoService;
this.lawsCustomCompareInfoService = lawsCustomCompareInfoService;
this.sysUserService = sysUserService;
this.processHandleService = processHandleService;
}
@Override
public IPage<LawsBaseDB> queryBaseDB(LawsBaseDB lawsBaseDB, Integer pageNo, Integer pageSize) {
QueryWrapper<LawsBaseDB> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(lawsBaseDB.getUser()), "u.realname", lawsBaseDB.getUser());
queryWrapper.eq(StringUtils.isNotBlank(lawsBaseDB.getType()), "t.type", lawsBaseDB.getType());
queryWrapper.like(StringUtils.isNotBlank(lawsBaseDB.getStandardNo()), "t.standard_no", lawsBaseDB.getStandardNo());
queryWrapper.orderByDesc("t.create_time");
return lawsTaskTransferMapper.queryBaseDB(queryWrapper, new Page<>(pageNo, pageSize));
}
@Override
public IPage<LawsProcessDb> queryProcessDB(LawsProcessDb lawsProcessDb, Integer pageNo, Integer pageSize) {
QueryWrapper<LawsProcessDb> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getUser()), "u.realname", lawsProcessDb.getUser());
queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getPrcNum()), "prc_num", lawsProcessDb.getPrcNum());
queryWrapper.eq(!Objects.isNull(lawsProcessDb.getPrcType()), "prc_type", lawsProcessDb.getPrcType());
queryWrapper.like(StringUtils.isNotBlank(lawsProcessDb.getTaskName()), "task_name", lawsProcessDb.getTaskName());
queryWrapper.orderByDesc("par.create_time");
return lawsTaskTransferMapper.queryProcessDB(queryWrapper, new Page<>(pageNo, pageSize));
}
@Override
public void processDBTransfer(List<LawsProcessDb> lawsProcessDbList) {
for (LawsProcessDb lawsProcessDb : lawsProcessDbList) {
String taskId = lawsProcessDb.getTaskId();
String toUserId = lawsProcessDb.getTransferUser();
processHandleService.transfer(taskId, toUserId);
}
}
@Override
public void baseDBTransfer(List<LawsBaseDB> lawsBaseDBList) {
// 企标计划
standardPlan(lawsBaseDBList);
// 标准拆分
splitInfo(lawsBaseDBList);
// 新旧拆分单比对
compareInfo(lawsBaseDBList);
// 自定义比对
customCompareInfo(lawsBaseDBList);
}
private void customCompareInfo(List<LawsBaseDB> lawsBaseDBList) {
List<LawsBaseDB> customCompareInfo = lawsBaseDBList.stream()
.filter(v -> LawsTaskTransferCommon.BASE_DB_TYPE_4.equals(v.getType()))
.collect(Collectors.toList());
for (LawsBaseDB lawsBaseDB : customCompareInfo) {
SysUser sysUser = sysUserService.getById(lawsBaseDB.getTransferUser());
lawsCustomCompareInfoService.update(
new LambdaUpdateWrapper<LawsCustomCompareInfo>()
.eq(LawsCustomCompareInfo::getId, lawsBaseDB.getId())
.set(LawsCustomCompareInfo::getCreateBy, sysUser.getUsername()));
}
}
private void compareInfo(List<LawsBaseDB> lawsBaseDBList) {
List<LawsBaseDB> compareInfo = lawsBaseDBList.stream()
.filter(v -> LawsTaskTransferCommon.BASE_DB_TYPE_3.equals(v.getType()))
.collect(Collectors.toList());
for (LawsBaseDB lawsBaseDB : compareInfo) {
SysUser sysUser = sysUserService.getById(lawsBaseDB.getTransferUser());
sarFileCompareInfoService.update(
new LambdaUpdateWrapper<SarFileCompareInfo>()
.eq(SarFileCompareInfo::getId, lawsBaseDB.getId())
.set(SarFileCompareInfo::getCreateBy, sysUser.getUsername()));
}
}
private void splitInfo(List<LawsBaseDB> lawsBaseDBList) {
List<LawsBaseDB> splitInfo = lawsBaseDBList.stream()
.filter(v -> LawsTaskTransferCommon.BASE_DB_TYPE_2.equals(v.getType()))
.collect(Collectors.toList());
for (LawsBaseDB lawsBaseDB : splitInfo) {
LambdaUpdateWrapper<SarFileSplitInfoEO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(SarFileSplitInfoEO::getId, lawsBaseDB.getId());
SysUser sysUser = sysUserService.getById(lawsBaseDB.getTransferUser());
updateWrapper.set(SarFileSplitInfoEO::getAuthor, lawsBaseDB.getTransferUser());
updateWrapper.set(SarFileSplitInfoEO::getCreateBy, sysUser.getUsername());
sarFileSplitInfoService.update(updateWrapper);
}
}
private void standardPlan(List<LawsBaseDB> lawsBaseDBList) {
List<LawsBaseDB> standardPlan = lawsBaseDBList.stream()
.filter(v -> LawsTaskTransferCommon.BASE_DB_TYPE_1.equals(v.getType()))
.collect(Collectors.toList());
for (LawsBaseDB lawsBaseDB : standardPlan) {
enterpriseStandardPlanService.update(
new LambdaUpdateWrapper<EnterpriseStandardPlan>()
.eq(EnterpriseStandardPlan::getId, lawsBaseDB.getId())
.set(EnterpriseStandardPlan::getMainDraftingUser, lawsBaseDB.getTransferUser()));
}
}
}