Browse Source

回退的审批合并

v1.0
Yen 2 years ago
parent
commit
5d46d4729d
  1. 10
      src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java
  2. 18
      src/main/java/com/qs/serve/modules/seeyon/entity/dto/TodoVoQuery.java
  3. 24
      src/main/java/com/qs/serve/modules/seeyon/enums/CheckTypeEnum.java
  4. 29
      src/main/java/com/qs/serve/modules/seeyon/mapper/CommonCheckMapper.java
  5. 4
      src/main/java/com/qs/serve/modules/seeyon/service/CommonCheckService.java
  6. 132
      src/main/java/com/qs/serve/modules/seeyon/service/impl/CommonCheckServiceImpl.java
  7. 14
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  8. 14
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java
  9. 10
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  10. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  11. 87
      src/main/resources/mapper/seeyon/CommonCheckMapper.xml

10
src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java

@ -11,6 +11,7 @@ import com.qs.serve.controller.util.SyKeyLoginUtil;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.bo.CheckTargetDTO;
import com.qs.serve.modules.seeyon.entity.bo.SeeYonApproveQuery;
import com.qs.serve.modules.seeyon.entity.dto.TodoVoQuery;
import com.qs.serve.modules.seeyon.entity.vo.SeeYonApproveDataVo;
import com.qs.serve.modules.seeyon.entity.vo.TodoVO;
import com.qs.serve.modules.seeyon.service.CommonCheckService;
@ -78,6 +79,15 @@ public class SeeYonController {
return R.ok(commonCheckService.listCallbackList());
}
/**
* 我的审批退回列表
* @return
*/
@GetMapping("pageMyCallback")
public R<PageVo<TodoVO>> pageCallbackList(){
return R.ok(commonCheckService.pageCallback(new TodoVoQuery()));
}
/**
* 重定向到审批页面
* @param targetDTO

18
src/main/java/com/qs/serve/modules/seeyon/entity/dto/TodoVoQuery.java

@ -0,0 +1,18 @@
package com.qs.serve.modules.seeyon.entity.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2023/8/10
*/
@Data
public class TodoVoQuery {
private String userId;
private Integer startRow;
private Integer pageSize;
}

24
src/main/java/com/qs/serve/modules/seeyon/enums/CheckTypeEnum.java

@ -0,0 +1,24 @@
package com.qs.serve.modules.seeyon.enums;
/**
* @author YenHex
* @since 2023/8/10
*/
public enum CheckTypeEnum {
/** 费用申请 */
CostBill,
/** 政策 */
ReleasePolicy,
/** 核销 */
CheckCost,
/** 预算申请 */
budgetAdjust,
/** 预算修改 */
budgetAdjust2
}

29
src/main/java/com/qs/serve/modules/seeyon/mapper/CommonCheckMapper.java

@ -0,0 +1,29 @@
package com.qs.serve.modules.seeyon.mapper;
import com.qs.serve.modules.seeyon.entity.dto.TodoVoQuery;
import com.qs.serve.modules.seeyon.entity.vo.TodoVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author YenHex
* @since 2023/8/10
*/
public interface CommonCheckMapper {
/**
* 查询回退的审批列表
* @param query
* @return
*/
List<TodoVO> pageCallbackList(@Param("query") TodoVoQuery query);
/**
* 合计回退的审批列表
* @param query
* @return
*/
Long countCallback(@Param("query") TodoVoQuery query);
}

4
src/main/java/com/qs/serve/modules/seeyon/service/CommonCheckService.java

@ -1,5 +1,7 @@
package com.qs.serve.modules.seeyon.service;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.modules.seeyon.entity.dto.TodoVoQuery;
import com.qs.serve.modules.seeyon.entity.vo.TodoVO;
import java.util.List;
@ -10,6 +12,8 @@ import java.util.List;
*/
public interface CommonCheckService {
PageVo<TodoVO> pageCallback(TodoVoQuery query);
/**
* 退回列表
* @return

132
src/main/java/com/qs/serve/modules/seeyon/service/impl/CommonCheckServiceImpl.java

@ -1,22 +1,36 @@
package com.qs.serve.modules.seeyon.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.seeyon.entity.dto.TodoVoQuery;
import com.qs.serve.modules.seeyon.entity.vo.TodoVO;
import com.qs.serve.modules.seeyon.enums.CheckTypeEnum;
import com.qs.serve.modules.seeyon.mapper.CommonCheckMapper;
import com.qs.serve.modules.seeyon.service.CommonCheckService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetChange;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.mapper.TbsBudgetChangeMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import com.qs.serve.modules.tzc.common.TzcPolicyStatus;
import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.mapper.TzcPolicyMapper;
import com.qs.serve.modules.tzc.service.TzcPolicyService;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -31,6 +45,112 @@ public class CommonCheckServiceImpl implements CommonCheckService {
private final SysUserService sysUserService;
private final TbsCostApplyMapper costApplyMapper;
private final TzcPolicyService tzcPolicyService;
private final TzcPolicyMapper tzcPolicyMapper;
private final VtbVerificationMapper verificationMapper;
private final TbsBudgetMapper tbsBudgetMapper;
private final TbsBudgetChangeMapper tbsBudgetChangeMapper;
private final CommonCheckMapper commonCheckMapper;
@Override
public PageVo<TodoVO> pageCallback(TodoVoQuery query) {
int pageSize = PageUtil.getPageSize();
int startRow = PageUtil.getStartRow();
query.setUserId(AuthContextUtils.getSysUserId());
query.setPageSize(pageSize);
query.setStartRow(startRow);
PageVo<TodoVO> pageVo = new PageVo<>();
Long count = commonCheckMapper.countCallback(query);
List<TodoVO> todoVOList;
if(count>0){
todoVOList = commonCheckMapper.pageCallbackList(query);
this.initTodoTargetInfo(todoVOList);
}else {
todoVOList = new ArrayList<>();
}
pageVo.initPageByTotal(count);
pageVo.setList(todoVOList);
return pageVo;
}
/**
* 初始化TargetInfo
* @param todoVOList
*/
private void initTodoTargetInfo(List<TodoVO> todoVOList) {
Map<String,List<TodoVO>> todoMap = todoVOList.stream().collect(Collectors.groupingBy(TodoVO::getTargetType));
List<TodoVO> costToDo = todoMap.get(CheckTypeEnum.CostBill.name());
List<TodoVO> policyToDo = todoMap.get(CheckTypeEnum.ReleasePolicy.name());
List<TodoVO> verificationToDo = todoMap.get(CheckTypeEnum.CheckCost.name());
List<TodoVO> budgetToDo = todoMap.get(CheckTypeEnum.budgetAdjust.name());
List<TodoVO> budgetChangeToDo = todoMap.get(CheckTypeEnum.budgetAdjust2.name());
if(CollUtil.isNotEmpty(costToDo)){
List<String> ids = getTodoIds(costToDo);
List<TbsCostApply> dataList = costApplyMapper.selectBatchIds(ids);
for (TodoVO todoVO : costToDo) {
for (TbsCostApply item : dataList) {
if(item.getId().toString().equals(todoVO.getTargetId())){
todoVO.setTargetInfo(item);
break;
}
}
}
}
if(CollUtil.isNotEmpty(policyToDo)){
List<String> ids = getTodoIds(policyToDo);
List<TzcPolicy> dataList = tzcPolicyMapper.selectBatchIds(ids);
for (TodoVO todoVO : costToDo) {
for (TzcPolicy item : dataList) {
if(item.getId().toString().equals(todoVO.getTargetId())){
todoVO.setTargetInfo(item);
break;
}
}
}
}
if(CollUtil.isNotEmpty(verificationToDo)){
List<String> ids = getTodoIds(verificationToDo);
List<VtbVerification> dataList = verificationMapper.selectBatchIds(ids);
for (TodoVO todoVO : costToDo) {
for (VtbVerification item : dataList) {
if(item.getId().toString().equals(todoVO.getTargetId())){
todoVO.setTargetInfo(item);
break;
}
}
}
}
if(CollUtil.isNotEmpty(budgetToDo)){
List<String> ids = getTodoIds(budgetToDo);
List<TbsBudget> dataList = tbsBudgetMapper.selectBatchIds(ids);
for (TodoVO todoVO : costToDo) {
for (TbsBudget item : dataList) {
if(item.getId().toString().equals(todoVO.getTargetId())){
todoVO.setTargetInfo(item);
break;
}
}
}
}
if(CollUtil.isNotEmpty(budgetChangeToDo)){
List<String> ids = getTodoIds(budgetChangeToDo);
List<TbsBudgetChange> dataList = tbsBudgetChangeMapper.selectBatchIds(ids);
for (TodoVO todoVO : costToDo) {
for (TbsBudgetChange item : dataList) {
if(item.getId().toString().equals(todoVO.getTargetId())){
todoVO.setTargetInfo(item);
break;
}
}
}
}
}
@Override
public List<TodoVO> listCallbackList() {
@ -72,4 +192,16 @@ public class CommonCheckServiceImpl implements CommonCheckService {
return result;
}
/**
* 提取todo列表的targetId
* @param todoList
* @return
*/
private List<String> getTodoIds(List<TodoVO> todoList){
if(todoList!=null&&todoList.size()>0){
return todoList.stream().map(TodoVO::getTargetId).collect(Collectors.toList());
}
return null;
}
}

14
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java

@ -101,6 +101,20 @@ public class TbsBudget implements Serializable {
/** 生成底表标识:默认0;同步成功为1 */
private Integer birFlag;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userId;
/** 用户编码 */
@Length(max = 32,message = "长度不能超过32字")
private String userCode;
/** 用户名称 */
@Length(max = 32,message = "长度不能超过32字")
@TableField(condition = SqlCondition.LIKE)
private String userName;
/** 致远表单id */
private String syFormId;

14
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java

@ -110,6 +110,20 @@ public class TbsBudgetChange implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime submitTime;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")
private String userId;
/** 用户编码 */
@Length(max = 32,message = "长度不能超过32字")
private String userCode;
/** 用户名称 */
@Length(max = 32,message = "长度不能超过32字")
@TableField(condition = SqlCondition.LIKE)
private String userName;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

10
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -54,9 +54,9 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
public TbsBudgetChange commitApply(TbsBudgetUpdateAfterStartBo param) {
seeYonService.testConnection();
TbsBudget budget = tbsBudgetMapper.selectById(param.getId());
TbsBudgetChange budgetChange = buildBudgetChange(param, budget);
String templateCode = TbsSeeYonConst.BudgetChangeConf.Code();
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
TbsBudgetChange budgetChange = buildBudgetChange(param, budget,sysUser);
String templateCode = TbsSeeYonConst.BudgetChangeConf.Code();
Map<String,Object> data = new HashMap<>();
data.put("exsp5", budgetChange.getChangeCode());
data.put("orgId", budgetChange.getId().toString());
@ -107,11 +107,15 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
* 创建更变记录
* @param param
* @param budget
* @param sysUser
* @return
*/
private TbsBudgetChange buildBudgetChange(TbsBudgetUpdateAfterStartBo param, TbsBudget budget) {
private TbsBudgetChange buildBudgetChange(TbsBudgetUpdateAfterStartBo param, TbsBudget budget,SysUser sysUser) {
TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget);
budgetChange.setChangeCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.BudgetChange));
budgetChange.setUserId(sysUser.getId());
budgetChange.setUserCode(sysUser.getCode());
budgetChange.setUserName(sysUser.getName());
boolean notChangeTitle = param.getBudgetCode()!=null&& param.getBudgetCode().equals(budget.getBudgetCode());
if(!notChangeTitle){
budgetChange.setNewBudgetTitle(param.getBudgetCode());

3
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -129,6 +129,9 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
tbsBudget.setSubmitTime(LocalDateTime.now());
tbsBudget.setBudgetCheckState(TbsBudgetCheckState.State_1_apply);
tbsBudget.setSyFormId(formId);
tbsBudget.setUserId(sysUser.getId());
tbsBudget.setUserCode(sysUser.getCode());
tbsBudget.setUserName(sysUser.getName());
this.updateById(tbsBudget);
//创建流程后回调

87
src/main/resources/mapper/seeyon/CommonCheckMapper.xml

@ -0,0 +1,87 @@
<?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.qs.serve.modules.seeyon.mapper.CommonCheckMapper">
<select id="pageCallbackList" resultType="com.qs.serve.modules.seeyon.entity.vo.TodoVO">
select
'CostBill' as target_type,
cost.id as target_id,
cost.`code` as target_code,
cost.charge_theme as title,
cost.submit_time
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
UNION
select
'ReleasePolicy' as target_type,
policy.id as target_id,
policy.policy_code as target_code,
policy.title,
policy.submit_time
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
UNION
select
'CheckCost' as target_type,
vtb.id as target_id,
vtb.`verification_code` as target_code,
act.act_title as title,
vtb.create_time as submit_time
from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 4 and vtb.user_id = #{query.userId} and act.del_flag = 0 and vtb.del_flag = 0
UNION
select
'budgetAdjust' as target_type,
budget.id as target_id,
budget.budget_number as target_code,
budget.budget_code as title,
budget.submit_time
from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
UNION
select
'budgetAdjust2' as target_type,
budget_change.id as target_id,
budget_change.change_code as target_code,
budget_change.budget_title as title,
budget_change.submit_time
from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
limit #{query.startRow},#{query.pageSize}
</select>
<select id="countCallback" resultType="java.lang.Long">
select count(0) from (
select
'CostBill' as target_type,
cost.id as target_id
from tbs_cost_apply cost where cost.charge_state = 4 and cost.user_id = #{query.userId} and cost.del_flag = 0
UNION
select
'ReleasePolicy' as target_type,
policy.id as target_id
from tzc_policy policy where policy.policy_status = 4 and policy.user_id = #{query.userId} and policy.del_flag = 0
UNION
select
'CheckCost' as target_type,
vtb.id as target_id
from vtb_verification vtb
left join tbs_activity act on vtb.activity_id = act.id
where vtb.verification_state = 4 and vtb.user_id = #{query.userId} and vtb.del_flag = 0
UNION
select
'budgetAdjust' as target_type,
budget.id as target_id
from tbs_budget budget
where budget.budget_check_state = 3 and budget.user_id = #{query.userId} and budget.del_flag = 0
UNION
select
'budgetAdjust2' as target_type,
budget_change.id as target_id
from tbs_budget_change budget_change
where budget_change.budget_check_state = 3 and budget_change.user_id = #{query.userId} and budget_change.del_flag = 0
) tmp_tb
</select>
</mapper>
Loading…
Cancel
Save